# The set of valid sort keys for the Event query.
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
}

# Possible metafield validation statuses.
enum MetafieldValidationStatus {
    # Any validation status (valid or invalid).
    ANY

    # Valid (according to definition).
    VALID

    # Invalid (according to definition).
    INVALID
}

# Possible types of a metafield's owner resource.
enum MetafieldOwnerType {
    # The Api Permission metafield owner type.
    API_PERMISSION

    # The Article metafield owner type.
    ARTICLE

    # The Blog metafield owner type.
    BLOG

    # The Collection metafield owner type.
    COLLECTION

    # The Customer metafield owner type.
    CUSTOMER

    # The Discount metafield owner type.
    DISCOUNT

    # The Draft Order metafield owner type.
    DRAFTORDER

    # The Location metafield owner type.
    LOCATION

    # The Order metafield owner type.
    ORDER

    # The Page metafield owner type.
    PAGE

    # The Product metafield owner type.
    PRODUCT

    # The Product Image metafield owner type.
    PRODUCTIMAGE

    # The Product Variant metafield owner type.
    PRODUCTVARIANT

    # The Shop metafield owner type.
    SHOP
}

# Possible metafield definition validation statuses.
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
}

# Supported private metafield value types.
enum PrivateMetafieldValueType {
    # A string metafield.
    STRING

    # An integer metafield.
    INTEGER

    # A JSON string metafield.
    JSON_STRING
}

# The part of the image that should remain after cropping.
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
}

# List of supported image content types.
enum ImageContentType {
    # A PNG image.
    PNG

    # A JPG image.
    JPG

    # A WEBP image.
    WEBP
}

# The purpose of a localization extension.
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
}

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 'shipping_credential_cn' for country CN.
    SHIPPING_CREDENTIAL_CN

    # Extension key 'tax_credential_it' for country IT.
    TAX_CREDENTIAL_IT

    # Extension key 'tax_email_it' for country IT.
    TAX_EMAIL_IT

    # Extension key 'shipping_credential_kr' for country KR.
    SHIPPING_CREDENTIAL_KR
}

# Represents the fallback avatar image for a staff member. This is used only if the staff member has no avatar image.
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
}

# Possible metafield definition pinned statuses.
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.
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 set of valid sort keys for the CompanyContactRole query.
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
}

# The set of valid sort keys for the CompanyContact query.
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

    ID
    # Sort by the id value.

    # 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 DraftOrder query.
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 set of valid sort keys for the CompanyLocation query.
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

    ID
    # Sort by the id value.

    # 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 Order query.
enum OrderSortKeys {
    # Sort by the created_at value.
    CREATED_AT

    # Sort by the customer_name value.
    CUSTOMER_NAME

    # 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 by the total_price value.
    TOTAL_PRICE

    # 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 set of valid sort keys for the CompanyContactRoleAssignment query.
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
}

# 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.
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 possible email marketing states for a customer.
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
}

# The possible product subscription states for a customer, as defined by the customer's subscription contracts.
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
}

# The source that collected the customer's consent to receive marketing materials.
enum CustomerConsentCollectedFrom {
    # The customer consent was collected by Shopify.
    SHOPIFY

    # The customer consent was collected outside of Shopify.
    OTHER
}

# The valid SMS marketing states for a customer’s phone number.
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 valid values for the state of a customer's account with a shop.
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
}

# The valid tiers for the predicted spend of a customer with a shop.
enum CustomerPredictedSpendTier {
    # The customer's spend is higher than the 70th percentile of the shop's customer sales.
    HIGH

    # The customer's spend is between the 10th and 70th percentile of the shop's customer sales.
    MEDIUM

    # The customer's spend is lower than the 10th percentile of the shop's customer sales, including customers who didn't repurchase.
    LOW
}

# The valid statuses for a draft order.
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
}

# The valid discount types that can be applied to a draft order.
enum DraftOrderAppliedDiscountType {
    # A fixed amount in the store's currency.
    FIXED_AMOUNT

    # A percentage of the order subtotal.
    PERCENTAGE
}

# The type of line (i.e. line item or shipping line) on an order that the discount is applicable towards.
enum DiscountApplicationTargetType {
    # The discount applies onto line items.
    LINE_ITEM

    # The discount applies onto shipping lines.
    SHIPPING_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.
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 method by which the discount's value is allocated onto its entitled lines.
enum DiscountApplicationAllocationMethod {
    # The value is spread across all entitled lines.
    ACROSS

    # The value is applied onto every entitled line.
    EACH
}

# The type of a fulfillment service.
enum FulfillmentServiceType {
    # Fulfillment by gift card.
    GIFT_CARD

    # Manual fulfillment by the merchant.
    MANUAL

    # Fullfillment by a third-party fulfillment service.
    THIRD_PARTY
}

# The valid values for the inventory policy of a product variant once it is out of stock.
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
}

# The set of valid sort keys for the Location query.
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
}

# The type of a payment terms or a payment terms template.
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 type of the payment terms or payment terms template is unknown.
    UNKNOWN
}

# The different types of method definitions to filter by.
enum DeliveryMethodDefinitionType {
    # A static merchant-defined rate.
    MERCHANT

    # A dynamic participant rate.
    PARTICIPANT
}

# The set of valid sort keys for the MethodDefinition query.
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
}

# The field type that the condition will be applied to.
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.
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
}

# The category of the selling plan. For the OTHER category,
# you must fill out our request form,
# where we'll review your request for a new purchase option.
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
}

# When to reserve inventory for a selling plan.
enum SellingPlanReserve {
    # Reserve inventory when order is fulfilled.
    ON_FULFILLMENT

    # Reserve inventory at time of sale.
    ON_SALE
}

# The available icons for resource alerts.
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.
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
}

# Represents the reason that the order is being canceled. Valid values are: customer, fraud, inventory, declined, other.
enum OrderCancelReason {
    # The customer wanted to cancel the order.
    CUSTOMER

    # The order was fraudulent.
    FRAUD

    # There was insufficient inventory.
    INVENTORY

    # Payment was declined.
    DECLINED

    # Some other reason not listed.
    OTHER
}

# Possible types of app developer.
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
}

# The set of valid sort keys for the AppUsageRecord query.
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 status of the app subscription.
enum AppSubscriptionStatus {
    # The app subscription is pending approval by the merchant.
    PENDING

    # 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
}

# The public-facing category for an app.
enum AppPublicCategory {
    # The app's public category is private.
    PRIVATE

    # The app's public category is public.
    PUBLIC

    # The app's public category is custom.
    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
}

# The set of valid sort keys for the AppSubscription query.
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 set of valid sort keys for the AppTransaction query.
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
}

# The set of valid sort keys for the AppRevenueAttributionRecord query.
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
}

# 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.
enum AppPurchaseStatus {
    # 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
}

# Represents the billing types of revenue attribution.
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
}

#  Specifies the sort order for the products in the collection.
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
}

# The set of valid sort keys for the ProductCollection query.
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
}

# A standardized error code, independent of the payment provider.
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

    INCORRECT_ADDRESS
    # The address does not match the card number.

    # 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

    CONFIG_ERROR
    # There is an error in the gateway or merchant configuration.

    # 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.
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.
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
}

# The available types of marketing event.
enum MarketingTactic {
    ABANDONED_CART
    # An abandoned cart recovery email.

    # 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

    # Search engine optimization.
    SEO

    # A direct visit to the online store.
    DIRECT

    # A popup on the online store.
    STOREFRONT_APP
}

# The available marketing channels for a marketing activity or event.
# A marketing channel is broad category of marketing, used for reporting aggregation.
enum MarketingChannel {
    # Paid search.
    SEARCH

    # Displayed ads.
    DISPLAY

    # Social media.
    SOCIAL

    # Email.
    EMAIL

    # Referral links.
    REFERRAL
}

# Specifies the kind of the suggested order transaction.
enum SuggestedOrderTransactionKind {
    # A suggested refund transaction for an order.
    SUGGESTED_REFUND
}

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 being identified as a return or cancelation.
    # This value is not accepted when creating new refunds.
    LEGACY_RESTOCK

    # Refund line item was not restocked.
    NO_RESTOCK
}

# The reason a discount on a subscription draft was rejected.
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 revocation reason types for a customer payment method.
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 payment method was replaced with an existing payment method.
    # The associated contracts have been migrated to the other payment method.
    MERGED
}

# The possible status values of a subscription.
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 delivery cycles of the subscriptions were executed.
    EXPIRED

    # The contract ended because billing failed and no further billing attempts are expected.
    FAILED
}

# The possible status values of the last payment on a subscription contract.
enum SubscriptionContractLastPaymentStatus {
    # Successful subscription billing attempt.
    SUCCEEDED

    # Failed subscription billing attempt.
    FAILED
}

# Available customer tax exemptions.
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 valid selling plan interval.
enum SellingPlanInterval {
    # Day interval.
    DAY

    # Week interval.
    WEEK

    # Month interval.
    MONTH

    # Year interval.
    YEAR
}

# Represents the anchor type.
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 a selling plan pricing policy adjustment type.
enum SellingPlanPricingPolicyAdjustmentType {
    # Percentage off adjustment.
    PERCENTAGE

    # Fixed amount off adjustment.
    FIXED_AMOUNT

    # Price of the policy.
    PRICE
}

# The type of line (line item or shipping line) on an order that the subscription discount is applicable towards.
enum DiscountTargetType {
    # The discount applies onto line items.
    LINE_ITEM

    # The discount applies onto shipping lines.
    SHIPPING_LINE
}

# The type of the subscription discount.
enum DiscountType {
    # Manual discount type.
    MANUAL

    # Code discount type.
    CODE_DISCOUNT
}

# The type of refund to perform for a particular refund duty.
enum RefundDutyRefundType {
    # The duty is proportionally refunded based on the quantity of the refunded line item.
    PROPORTIONAL

    # The duty is fully refunded.
    FULL
}

# The likelihood that an order is fraudulent.
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
}

# The set of valid sort keys for the FulfillmentEvent query.
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 display status of a fulfillment.
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
}

# The status of a fulfillment.
enum FulfillmentStatus {
    # 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
}

# The possible types for a dispute.
enum DisputeType {
    # The dispute has turned into a chargeback.
    CHARGEBACK

    # The dispute is in the inquiry phase.
    INQUIRY
}

# The possible statuses of a dispute.
enum DisputeStatus {
    NEEDS_RESPONSE
    UNDER_REVIEW
    CHARGE_REFUNDED
    ACCEPTED
    WON
    LOST
}

# Represents the order's current financial status.
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.
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
}

# The possible order action types for a sales agreement.
enum OrderActionType {
    # An order with a purchase or charge.
    ORDER

    # An edit to the order.
    ORDER_EDIT

    # A refund on the order.
    REFUND

    # An unknown agreement action. Represents new actions that may be added in future versions.
    UNKNOWN
}

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 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.
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 unknown sale line. Represents new types that may be added in future versions.
    UNKNOWN

    # A sale adjustment.
    ADJUSTMENT
}

# 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.
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
}

# Possible method types that a delivery method can have.
enum DeliveryMethodType {
    # The order is shipped.
    SHIPPING

    # The order is picked up by the customer.
    PICK_UP

    # No delivery is needed.
    NONE

    # The order is delivered to a retail store.
    RETAIL

    # The order is delivered using a local delivery service.
    LOCAL
}

# The reason for a fulfillment hold.
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 for another reason.
    OTHER
}

# The kinds of request merchants can make to a fulfillment service.
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
}

# The request status of a fulfillment order.
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
}

# The status of a fulfillment order.
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
}

# The actions that can be taken on a fulfillment order.
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
}

# The status that describes a fulfillment or delivery event.
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
}

# Represents a percentage price adjustment type.
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 the origin of a price, either fixed (defined on the price list)
# or relative (calculated using a price list adjustment configuration).
enum PriceListPriceOriginType {
    # The price is defined on the price list.
    FIXED

    # The price is relative to the adjustment type and value.
    RELATIVE
}

# The set of valid sort keys for the Collection query.
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
}

# The set of valid sort keys for the ProductImage query.
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
}

# The set of valid sort keys for the ProductMedia query.
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
}

# The possible product statuses.
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
}

# The set of valid sort keys for the ProductVariant query.
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 the inventory_levels.available value.
    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
}

# The possible content types for a media object.
enum MediaContentType {
    # A Shopify-hosted video.
    VIDEO

    # An externally hosted video.
    EXTERNAL_VIDEO

    # A 3d model.
    MODEL_3D

    # A Shopify-hosted image.
    IMAGE
}

# Error types for media.
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

    # 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
}

# Warning types for media.
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
}

# The possible statuses for a media preview image.
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.
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
}

# The error types for a file.
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

    # 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
}

# The possible statuses for a file object.
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
}

# When to capture the payment for the remaining amount due.
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
}

# The checkout charge when the full amount isn't charged at checkout.
enum SellingPlanCheckoutChargeType {
    # The checkout charge is a percentage of the product or variant price.
    PERCENTAGE

    # The checkout charge is a fixed price amount.
    PRICE
}

# Describes what triggers fulfillment.
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
}

# Possible intentions of a Delivery Policy.
enum SellingPlanFixedDeliveryPolicyIntent {
    # A merchant-centric delivery policy.
    # Mark this delivery policy to define when the merchant should start fulfillment.
    FULFILLMENT_BEGIN
}

# Whether the delivery policy is merchant or buyer-centric.
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 behavior of the first fulfillment when the orderis placed before the anchor.
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
}

# The fulfillment or delivery behaviors of the first fulfillment when the orderis placed before the anchor.
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
}

# The frequency at which the shop is billed for an app subscription.
enum AppPricingInterval {
    # The app subscription bills the shop annually.
    ANNUAL

    # The app subscription bills the shop every 30 days.
    EVERY_30_DAYS
}

# The set of valid sort keys for the Product query.
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.
    RELEVANCE
}

# Possible error codes that can be returned by ProductChangeStatusUserError.
enum ProductChangeStatusUserErrorCode {
    # Product could not be found.
    PRODUCT_NOT_FOUND
}

# The assigment status to be used to filter fulfillment orders.
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
}

# The set of valid sort keys for the FulfillmentOrder query.
enum FulfillmentOrderSortKeys {
    # 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 shop's customer account requirement preference.
enum ShopCustomerAccountsSetting {
    REQUIRED
    OPTIONAL
    DISABLED
}

# Possible sort of tags.
enum ShopTagSort {
    # Alphabetical sort.
    ALPHABETICAL

    # Popularity sort.
    POPULAR
}

# Digital wallet, such as Apple Pay, which can be used for accelerated checkouts.
enum DigitalWallet {
    # Apple Pay.
    APPLE_PAY

    # Android Pay.
    ANDROID_PAY

    # Google Pay.
    GOOGLE_PAY

    # Shopify Pay.
    SHOPIFY_PAY
}

# Specifies the type of resources to be returned from a search.
enum SearchResultType {
    CUSTOMER

    DRAFT_ORDER

    PRODUCT

    COLLECTION

    # A file.
    FILE

    ONLINE_STORE_PAGE

    ONLINE_STORE_BLOG

    ONLINE_STORE_ARTICLE

    # A URL redirect.
    URL_REDIRECT

    PRICE_RULE

    # A code discount redeem code.
    DISCOUNT_REDEEM_CODE

    ORDER
}

# Available shop policy types.
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
}

# 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.
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
}

# Systems of weights and measures.
enum UnitSystem {
    # Imperial system of weights and measures.
    IMPERIAL_SYSTEM

    # Metric system of weights and measures.
    METRIC_SYSTEM
}

# Represents a valid PayPal Express subscriptions gateway status.
enum PaypalExpressSubscriptionsGatewayStatus {
    # The status is enabled.
    ENABLED

    # The status is disabled.
    DISABLED

    # The status is pending.
    PENDING
}

# Possible error codes that can be returned by MediaUserError.
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
}

# Possible error codes that can be returned by SellingPlanGroupUserError.
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
}

# Possible error codes that can be returned by ProductVariantsBulkCreateUserError.
enum ProductVariantsBulkCreateUserErrorCode {
    # 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
}

# Possible error codes that can be returned by ProductVariantsBulkDeleteUserError.
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
}

# Possible error codes that can be returned by ProductVariantsBulkReorderUserError.
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
}

# Possible error codes that can be returned by ProductVariantsBulkUpdateUserError.
enum ProductVariantsBulkUpdateUserErrorCode {
    # 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

    # Inventory quantities cannot be updated with variants API.
    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
}

# The state of the resource feedback.
enum ResourceFeedbackState {
    # No action required from merchant.
    ACCEPTED

    # The merchant needs to resolve an issue with the resource.
    REQUIRES_ACTION
}

# ISO 639-1 language codes supported by Shopify.
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

    # Czech
    CS

    # Church Slavic
    CU

    # 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

    # 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

    QU
    # Quechua.

    # Romansh.
    RM

    # Rundi.
    RN

    # Romanian.
    RO

    # Russian.
    RU

    # Kinyarwanda.
    RW

    # 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

    # Volapük.
    VO
}

# 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.
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

    # Turkey.
    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 three-letter currency codes that represent the world currencies used in stores. These include standard ISO 4217 codes, legacy codes, and non-standard codes.
enum CurrencyCode {
    # United Arab Emirates Dirham (AED).
    AED

    # Afghan Afghani (AFN).
    AFN

    # Albanian Lek (ALL).
    ALL

    # Armenian Dram (AMD).
    AMD

    # Netherlands Antillean Guilder.
    ANG

    # Angolan Kwanza (AOA).
    AOA

    # Argentine Pesos (ARS).
    ARS

    # Australian Dollars (AUD).
    AUD

    # Aruban Florin (AWG).
    AWG

    # Azerbaijani Manat (AZN).
    AZN

    # Bosnia and Herzegovina Convertible Mark (BAM).
    BAM

    # Barbadian Dollar (BBD).
    BBD

    # Bangladesh Taka (BDT).
    BDT

    # Bulgarian Lev (BGN).
    BGN

    # Bahraini Dinar (BHD).
    BHD

    # Burundian Franc (BIF).
    BIF

    # Bermudian Dollar (BMD).
    BMD

    # Brunei Dollar (BND).
    BND

    # Bolivian Boliviano (BOB).
    BOB

    # Brazilian Real (BRL).
    BRL

    # Bahamian Dollar (BSD).
    BSD

    # Bhutanese Ngultrum (BTN).
    BTN

    # Botswana Pula (BWP).
    BWP

    # Belarusian Ruble (BYN).
    BYN

    # Belize Dollar (BZD).
    BZD

    # Canadian Dollars (CAD).
    CAD

    # Congolese franc (CDF).
    CDF

    # Swiss Francs (CHF).
    CHF

    # Chilean Peso (CLP).
    CLP

    # Chinese Yuan Renminbi (CNY).
    CNY

    # Colombian Peso (COP).
    COP

    # Costa Rican Colones (CRC).
    CRC

    # Cape Verdean escudo (CVE).
    CVE

    # Czech Koruny (CZK).
    CZK

    # Djiboutian Franc (DJF).
    DJF

    # Danish Kroner (DKK).
    DKK

    # Dominican Peso (DOP).
    DOP

    # Algerian Dinar (DZD).
    DZD

    # Egyptian Pound (EGP).
    EGP

    # Eritrean Nakfa (ERN).
    ERN

    # Ethiopian Birr (ETB).
    ETB

    # Euro (EUR).
    EUR

    # Fijian Dollars (FJD).
    FJD

    # Falkland Islands Pounds (FKP).
    FKP

    # United Kingdom Pounds (GBP).
    GBP

    # Georgian Lari (GEL).
    GEL

    # Ghanaian Cedi (GHS).
    GHS

    # Gibraltar Pounds (GIP).
    GIP

    # Gambian Dalasi (GMD).
    GMD

    # Guinean Franc (GNF).
    GNF

    # Guatemalan Quetzal (GTQ).
    GTQ

    # Guyanese Dollar (GYD).
    GYD

    # Hong Kong Dollars (HKD).
    HKD

    # Honduran Lempira (HNL).
    HNL

    # Croatian Kuna (HRK).
    HRK

    # Haitian Gourde (HTG).
    HTG

    # Hungarian Forint (HUF).
    HUF

    # Indonesian Rupiah (IDR).
    IDR

    # Israeli New Shekel (NIS).
    ILS

    # Indian Rupees (INR).
    INR

    # Iraqi Dinar (IQD).
    IQD

    # Iranian Rial (IRR).
    IRR

    # Icelandic Kronur (ISK).
    ISK

    # Jersey Pound.
    JEP

    # Jamaican Dollars (JMD).
    JMD

    # Jordanian Dinar (JOD).
    JOD

    # Japanese Yen (JPY).
    JPY

    # Kenyan Shilling (KES).
    KES

    # Kyrgyzstani Som (KGS).
    KGS

    # Cambodian Riel.
    KHR

    # Kiribati Dollar (KID).
    KID

    # Comorian Franc (KMF).
    KMF

    # South Korean Won (KRW).
    KRW

    # Kuwaiti Dinar (KWD).
    KWD

    # Cayman Dollars (KYD).
    KYD

    # Kazakhstani Tenge (KZT).
    KZT

    # Laotian Kip (LAK).
    LAK

    # Lebanese Pounds (LBP).
    LBP

    # Sri Lankan Rupees (LKR).
    LKR

    # Liberian Dollar (LRD).
    LRD

    # Lesotho Loti (LSL).
    LSL

    # Lithuanian Litai (LTL).
    LTL

    # Latvian Lati (LVL).
    LVL

    # Libyan Dinar (LYD).
    LYD

    # Moroccan Dirham.
    MAD

    # Moldovan Leu (MDL).
    MDL

    # Malagasy Ariary (MGA).
    MGA

    # Macedonia Denar (MKD).
    MKD

    # Burmese Kyat (MMK).
    MMK

    # Mongolian Tugrik.
    MNT

    # Macanese Pataca (MOP).
    MOP

    # Mauritanian Ouguiya (MRU).
    MRU

    # Mauritian Rupee (MUR).
    MUR

    # Maldivian Rufiyaa (MVR).
    MVR

    # Malawian Kwacha (MWK).
    MWK

    # Mexican Pesos (MXN).
    MXN

    # Malaysian Ringgits (MYR).
    MYR

    # Mozambican Metical.
    MZN

    # Namibian Dollar.
    NAD

    # Nigerian Naira (NGN).
    NGN

    # Nicaraguan Córdoba (NIO).
    NIO

    # Norwegian Kroner (NOK).
    NOK

    # Nepalese Rupee (NPR).
    NPR

    # New Zealand Dollars (NZD).
    NZD

    # Omani Rial (OMR).
    OMR

    # Panamian Balboa (PAB).
    PAB

    # Peruvian Nuevo Sol (PEN).
    PEN

    # Papua New Guinean Kina (PGK).
    PGK

    # Philippine Peso (PHP).
    PHP

    # Pakistani Rupee (PKR).
    PKR

    # Polish Zlotych (PLN).
    PLN

    # Paraguayan Guarani (PYG).
    PYG

    # Qatari Rial (QAR).
    QAR

    # Romanian Lei (RON).
    RON

    # Serbian dinar (RSD).
    RSD

    # Russian Rubles (RUB).
    RUB

    # Rwandan Franc (RWF).
    RWF

    # Saudi Riyal (SAR).
    SAR

    # Solomon Islands Dollar (SBD).
    SBD

    # Seychellois Rupee (SCR).
    SCR

    # Sudanese Pound (SDG).
    SDG

    # Swedish Kronor (SEK).
    SEK

    # Singapore Dollars (SGD).
    SGD

    # Saint Helena Pounds (SHP).
    SHP

    # Sierra Leonean Leone (SLL).
    SLL

    # Somali Shilling (SOS).
    SOS

    # Surinamese Dollar (SRD).
    SRD

    # South Sudanese Pound (SSP).
    SSP

    # Sao Tome And Principe Dobra (STN).
    STN

    # Syrian Pound (SYP).
    SYP

    # Swazi Lilangeni (SZL).
    SZL

    # Thai baht (THB).
    THB

    # Tajikistani Somoni (TJS).
    TJS

    # Turkmenistani Manat (TMT).
    TMT

    # Tunisian Dinar (TND).
    TND

    # Tongan Pa'anga (TOP).
    TOP

    # Turkish Lira (TRY).
    TRY

    # Trinidad and Tobago Dollars (TTD).
    TTD

    # Taiwan Dollars (TWD).
    TWD

    # Tanzanian Shilling (TZS).
    TZS

    # Ukrainian Hryvnia (UAH).
    UAH

    # Ugandan Shilling (UGX).
    UGX

    # United States Dollars (USD).
    USD

    # Uruguayan Pesos (UYU).
    UYU

    # Uzbekistan som (UZS).
    UZS

    # Venezuelan Bolivares (VED).
    VED

    # Venezuelan Bolivares (VES).
    VES

    # Vietnamese đồng (VND).
    VND

    # Vanuatu Vatu (VUV).
    VUV

    # Samoan Tala (WST).
    WST

    # Central African CFA Franc (XAF).
    XAF

    # East Caribbean Dollar (XCD).
    XCD

    # West African CFA franc (XOF).
    XOF

    # CFP Franc (XPF).
    XPF

    # Unrecognized currency.
    XXX

    # Yemeni Rial (YER).
    YER

    # South African Rand (ZAR).
    ZAR

    # Zambian Kwacha (ZMW).
    ZMW

    # Belarusian Ruble (BYR).
    BYR @deprecated
}

# Units of measurement for weight.
enum WeightUnit {
    # 1 kilogram equals 1000 grams.
    KILOGRAMS

    # Metric system unit of mass.
    GRAMS

    # 1 pound equals 16 ounces.
    POUNDS

    # Imperial system unit of mass.
    OUNCES
}
