Variables dans Shopify Flow

Les variables sont des paramètres fictifs définis dans Liquid qui sont remplacés par des valeurs provenant de GraphQL Admin API lorsqu’un flux de travail s’exécute. Les variables peuvent décrire les attributs des clients, des commandes et des produits qui sont impliqués dans vos flux de travail tels que le numéro de commande, le prix de la commande, le nom du/de la client(e), etc. Les variables peuvent être utilisées dans des états pour contrôler la logique de votre flux de travail ou pour produire des données à partir d’une action.

Ajouter des variables

Grâce à Liquid, vous pouvez ajouter des variables à n’importe quel champ de texte qui contient le lien Ajouter une variable. Cliquez sur le lien Ajouter une variable sous le champ concerné, puis choisissez une variable dans la liste.

image montrant les champs qui acceptent Liquid

Les variables de la liste Ajouter une variable sont filtrées de sorte que vous n’utilisez que les variables qui sont retournées par les étapes antérieures à l’étape actuelle telles que les déclencheurs. Par exemple, le déclencheur Commande créée fournit des ressources de commande et de boutique provenant d’Admin API qui peuvent être insérées sous forme de variables. Après que vous avez choisi une variable dans la liste, elle est ajoutée à la zone de texte sous forme de Liquid correctement formaté.

Vous pouvez également écrire Liquid directement dans le bloc de texte. Par exemple, vous pouvez utiliser la variable {{ order.name }} pour afficher la chaîne de commande qui apparaît dans l’interface administrateur Shopify, par exemple commande-123.

Étant donné que Flow utilise Admin API pour récupérer les données utilisées pour Liquid, la syntaxe de la variable utilise « Camel Case ». Par exemple, pour accéder à la date de création d’un produit, saisissez {{ product.createdAt }}. Si vous utilisez la syntaxe Liquid dans un thème Shopify, vous devez ensuite saisir {{ product.created_at }}.

Balises Liquid de condition et d’itération

Il se peut que vous souhaitiez utiliser des balises Liquid pour effectuer les actions suivantes :

  • Rédiger des énoncés de conditions, par exemple pour déterminer si le montant total d’une commande est supérieur à 100 USD
  • Itérer par le biais d’une liste d’objets, par exemple la production de données pour chaque rubrique d’une commande

Vous pouvez utiliser des balises Liquid pour rédiger ces énoncés et les itérer par le biais d’objets.

Par exemple, le code Liquid suivant affiche le numéro de la commande si le total de la commande est supérieur à 100 USD :

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Vous pouvez également utiliser une balise for loop pour itérer par le biais d’une liste d’objets tels que les rubriques d’une commande. Par exemple, le code Liquid suivant affiche le nom de chacune des rubriques d’une commande :

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow prend en charge les balises Liquid conditionnelles (ou de contrôle du flux) suivantes :

Flow prend également en charge les balises d’itération Liquid suivantes :

Filtres

Les filtres vous permettent de transformer les données en code Liquid. Flow prend en charge tous les filtres Liquid open source.

Par exemple, le code Liquid suivant supprime un préfixe dans un nom de commande et sort ce qui reste : {{ order.name | remove: "Order-" }}

En plus des filtres Liquid standard, Flow fournit des filtres de date pour obtenir une date mise en rapport avec une autre date afin de prendre en charge le déclencheur Date/heure prévues et les fonctionnalités Obtenir les données. Ces filtres sont les suivants : date_minus et date_plus.

Pour renvoyer une date un jour dans le futur :{{ "now" | date_plus: "1 day" }}

Pour renvoyer une date un jour dans le passé :{{ "now" | date_minus: "1 day" }}

Ces filtres acceptent second, minute, day, week, month et year comme unité de durée, à la fois au singulier (p. ex. second) et au pluriel (p. ex. seconds). En plus de ce format, vous pouvez également fournir un nombre entier (nombre de secondes). Par exemple :{{ "now" | date_minus: 3600 }}

Vous pouvez aussi fournir une chaîne de durée ISO8601, où P1Y2D signifie 1 an et 2 jours :{{ "now" | date_minus: "P1Y2D" }}

Considérations sur l’utilisation de variables Liquid dans les filtres

  • Flow ne prend pas en charge la notation par point disponible pour certains filtres. Par exemple, Flow prend en charge {{ order.lineItems | size }}, mais pas {{ order.lineItems.size }}.
  • Flow ne prend pas en charge la notation par point pour les champs méta. Par exemple, vous ne pouvez pas utiliser {{ order.metafields.custom.hold_note }}. Au lieu de cela, vous devez faire une boucle sur les champs méta tel qu’indiqué dans les exemples.
  • Flow ne prend pas en charge l’utilisation d’index pour accéder aux éléments d’une liste. Par exemple, vous ne pouvez pas utiliser {{ order.lineItems[0].title }}. Au lieu de cela, vous devez faire une boucle sur les rubriques tel qu’indiqué dans les exemples.

Exemples

Pour mieux comprendre comment utiliser les variables Liquid, prenons les exemples suivants.

URL de sortie pour les ressources

Vous souhaitez éditer les URL du client, la commande et le produit impliqués dans un flux de travail.

# Output the base Admin URL for your store
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}

# Assign the base Admin url to a variable named base_url:
{%- capture base_url -%}https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}{%- endcapture -%}

# Customer from a Customer trigger:
{{ base_url }}/customers/{{ customer.legacyResourceId }}

# Customer without the base_url:
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}/customers/{{ customer.legacyResourceId }}

# Customer from an Order trigger:
{{ base_url }}/customers/{{ order.customer.legacyResourceId }}

# Order:
{{ base_url }}/orders/{{ order.legacyResourceId }}

# Product:
{{ base_url }}/products/{{ product.legacyResourceId }}

# Product Variant:
{{ base_url }}/products/{{ product.legacyResourceId }}/variants/{{ productVariant.legacyResourceId }}

# Example showing a clickable link in HTML, making use of the URL:
<a href="{{ base_url }}/products/{{ product.legacyResourceId }}">{{ product.title }}</a>

Convertir une liste de balises en champ méta

Vous souhaitez convertir un ensemble de balises en un champ méta qui est une liste de champs de texte à une seule ligne. Vous créez un flux de travail à l’aide du déclencheur Produit ajouté à la boutique et utilisez l’action Mettre à jour un champ méta de produit. Dans la section Valeur de l’action Mettre à jour un champ méta de produit, vous ajoutez le code Liquid suivant. Cet exemple considère que vous ne devez définir les valeurs qu’une seule fois lors de la création du produit et que celui-ci possède deux balises pertinentes : color:red et color:orange.

Exemple de texte Liquid pour définir la liste d’un champ de texte à seule ligne.
EntréeSortie
{% capture mf_value %}
{%- for tags_item in product.tags -%}
{%- if tags_item contains "color:" -%}
"{{- tags_item | remove_first: "color:" | strip -}}",
{%- endif -%}
{%- endfor -%}
{% endcapture -%}
[{{mf_value | remove_last: ","}}]






["red","orange"]
### Rédiger un e-mail dynamique pour une commande {#dynamic-email}

Vous souhaitez créer un flux de travail pour envoyer un e-mail à un employé lorsqu’un client dépense plus de 500 USD sur une commande. Vous créez un flux de travail en utilisant le déclencheur Commande créée, puis vous définissez une condition « vraie » si le total de la commande dépasse 500 USD et vous utilisez l’action Envoyer un e-mail interne. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.

Exemple de variable utilisée pour fournir des détails sur le client.
EntréeSortie
Veuillez envoyer un message de remerciement personnel à {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) pour avoir passé une commande de {{ order.totalPriceSet.shopMoney.amount }}$.Veuillez envoyer un message de remerciement personnel à Jeanne Dupont (jeanne@example.com) pour avoir passé une commande de 763,42 $.
### Rédiger un e-mail dynamique pour un produit dont le stock est bas {#dynamic-email-product}

Vous décidez que vous devez informer un employé lorsque le stock de produit est en baisse et qu’une commande doit être passée pour en avoir plus. Créez un flux de travail qui commence par le déclencheur quantité de stock modifiée et définissez une condition vraie si la quantité de stock avant est inférieure ou égale à 10. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.

Exemple d'utilisation de variable pour fournir des détails sur l'article.
EntréeSortie
Veuillez renouveler la commande {{ product.title }}. Envoyez un e-mail à owner@store.com pour vérifier qu’il a reçu le bon de commande.Veuillez renouveler la commande de leggings taille haute - noir. Envoyez un e-mail à owner@example.com pour vérifier qu’il a reçu le bon de commande.
### Rédiger un e-mail dynamique pour avertir les employés d’une commande frauduleuse {#dynamic-email-fraud}

Vous souhaitez annuler des commandes qui ont un niveau de risque élevé, mais préférez que vos employés annulent la commande manuellement. Créez un flux de travail qui commence par le déclencheur commande créée et définissez une condition qui est vraie si le niveau de risque de la commande est égal à élevé. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.

Exemple de variable utilisée pour fournir des informations sur une commande frauduleuse.
EntréeSortie
Notre boutique Shopify a reçu une commande avec un risque élevé de fraude. Nous aimerions annuler cette commande immédiatement, avant son envoi à la production :

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Veuillez confirmer le statut de la nouvelle commande. Merci !





Notre boutique Shopify a reçu une commande avec un risque élevé de fraude. Nous aimerions annuler cette commande immédiatement, avant son envoi à la production :

#1001
Dupont, Jeanne
jeanne@example.com

Veuillez confirmer le statut de la nouvelle commande. Merci !





### Sortie des rubriques d’une commande à l’aide d’une boucle for {#output-line-items}

Lorsqu’une commande est reçue, il peut être utile d’envoyer un message contenant les produits commandés. Pour ce faire, vous pouvez utiliser for loop, qui exécutent de façon répétée un bloc de code. Les champs de texte qui prennent en charge les variables prennent également en charge les boucles for et l’objet forloop.

Par exemple, vous souhaitez créer un flux de travail qui retourne une liste de tous les SKU et les quantités d’une commande. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.

Exemple d’utilisation de boucle for pour fournir des informations sur la commande.
EntréeSortie
Résumé de la commande :
{% for a in order.lineItems %}
unités de gestion de stock : {{a.sku}} ( {{a.quantity}} ),
{% endfor %}


Résumé de la commande :
8987097979 (50)
8877778887 (3)
8889988988B (1)


### Sortie des rubriques d’une commande à l’aide d’une boucle for avec des informations supplémentaires {#output-line-items-additional}

Vous décidez d’ajouter plus d’informations à l’e-mail, notamment le nom du produit, les SKU, le prix par article et les informations d’expédition du client. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.

Exemple d’utilisation de boucle for pour fournir de plus amples informations sur la commande.
EntréeSortie
Résumé de la commande :
{% for a in order.lineItems %}
produit : {{a.title}}
unité de gestion de stock : {{a.sku}}
(par unité) : $ {{a.originalUnitPriceSet.shopMoney.amount}}
quantité : {{a.quantity}}
{% endfor %}





Résumé de la commande :
Produit : leggings taille haute - Noir
Unité de gestion de stock : 8987097979
Prix (à l’unité) : 8,49 $
Quantité : 5
Produit : Chaussettes de sport – Bleu
Unité de gestion de stock : 88899889898B
Prix (à l’unité) : 5,61 $
Quantité : 2







### Sortie de certaines rubriques en combinant une boucle for et une condition si {#output-line-items-if}

Vous devez suivre les articles vendus fournis par un fournisseur spécifique. Dans la section messages de l’action envoyer un e-mail interne, vous utilisez les variables suivantes et incluez un énoncé if dans votre for loop.

Exemple de boucle for et d'énoncé si utilisé pour fournir des informations sur la commande pour des fournisseurs spécifiques.
EntréeSortie
Produit Acme vendu :
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Nom du produit : {{x.title}}
Unité de gestion de stock : {{x.sku}}
{% endif %}
{% endfor %}





Produit Acme vendu :
Nom du produit : Leggings taille haute
Unité de gestion de stock : 8987097979

## Objets de données complexes dans Shopify Flow {#complex-data-objects}

Flow vous permet d’accéder à presque toutes les données de l’API GraphQL Admin. Cela inclut des objets de données complexes, tels que des listes et des objets. Toutefois, il existe certaines limites à ce que vous pouvez faire avec ces objets. Cette section décrit ces restrictions et explique comment les utiliser.

Au lieu d’appeler directement des listes et des objets, faites une boucle sur la liste et incluez uniquement les champs que vous souhaitez.

Par exemple, au lieu d’appeler directement {{ order.lineItems }}, utilisez le format suivant pour appeler des champs spécifiques. Ces exemples comprennent tous les champs qui seraient inclus en appelant directement la liste ou l’objet. Copiez et collez les champs dont vous avez besoin.

Text
{% for li in order.lineItems %}
    {% comment %}li.contract - omitted{% endcomment %}

{% for ca in li.customAttributes %}
    {{ ca.key }}
    {{ ca.value }}
{% endfor %}

{% for da in li.discountAllocations %}
    {{ da.allocatedAmountSet.presentmentMoney.amount }}
    {{ da.allocatedAmountSet.presentmentMoney.currencyCode }}
    {{ da.allocatedAmountSet.shopMoney.amount }}
    {{ da.allocatedAmountSet.shopMoney.currencyCode }}
{% endfor %}

{{ li.discountedTotalSet.presentmentMoney.amount }}
{{ li.discountedTotalSet.presentmentMoney.currencyCode }}
{{ li.discountedTotalSet.shopMoney.amount }}
{{ li.discountedTotalSet.shopMoney.currencyCode }}

{{ li.discountedUnitPriceSet.presentmentMoney.amount }}
{{ li.discountedUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.discountedUnitPriceSet.shopMoney.amount }}
{{ li.discountedUnitPriceSet.shopMoney.currencyCode }}

{% comment %}li.duties - omitted {% endcomment %}

{{ li.fulfillableQuantity }}

{{ li.fulfillmentService.callbackUrl }}
{{ li.fulfillmentService.fulfillmentOrdersOptIn }}
{{ li.fulfillmentService.handle }}
{{ li.fulfillmentService.id }}
{{ li.fulfillmentService.inventoryManagement }}
{% comment %}rest of location omitted{% endcomment %}
{{ li.fulfillmentService.location.name }}
{{ li.fulfillmentService.productBased }}
{{ li.fulfillmentService.serviceName }}
{% for sm in li.fulfillmentService.shippingMethods %}
    {{ sm.code }}
    {{ sm.label }}
{% endfor %}
{{ li.fulfillmentService.type }}

{{ li.fulfillmentStatus }}
{{ li.id }}

{{ li.image.altText }}
{{ li.image.height }}
{{ li.image.id }}
{% comment %}li.image.metafield omitted{% endcomment %}
{% comment %}li.image.privateMetafield omitted{% endcomment %}
{{ li.image.width }}

{{ li.merchantEditable }}
{{ li.name }}
{{ li.nonFulfillableQuantity }}

{{ li.originalTotalSet.presentmentMoney.amount }}
{{ li.originalTotalSet.presentmentMoney.currencyCode }}
{{ li.originalTotalSet.shopMoney.amount }}
{{ li.originalTotalSet.shopMoney.currencyCode }}

{{ li.originalUnitPriceSet.presentmentMoney.amount }}
{{ li.originalUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.originalUnitPriceSet.shopMoney.amount }}
{{ li.originalUnitPriceSet.shopMoney.currencyCode }}

{% comment %}rest of product omitted{% endcomment %}
{{ li.product.title }}

{{ li.quantity }}
{{ li.refundableQuantity }}
{{ li.requiresShipping }}
{{ li.restockable }}

{{ li.sellingPlan.name }}

{{ li.sku }}

{% for tl in li.taxLines %}
    {{ tl.priceSet.presentmentMoney.amount | json }}
    {{ tl.priceSet.presentmentMoney.currencyCode | json }}
    {{ tl.priceSet.shopMoney.amount | json }}
    {{ tl.priceSet.shopMoney.currencyCode | json }}
    {{ tl.rate | json }}
    {{ tl.ratePercentage | json }}
    {{ tl.title | json }}
{% endfor %}

{{ li.taxable }}
{{ li.title }}

{{ li.totalDiscountSet.presentmentMoney.amount }}
{{ li.totalDiscountSet.presentmentMoney.currencyCode }}
{{ li.totalDiscountSet.shopMoney.amount }}
{{ li.totalDiscountSet.shopMoney.currencyCode }}

{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode }}

{{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode }}

{{ li.unfulfilledQuantity }}

{% comment %}rest of variant omitted{% endcomment %}
{{ li.variant.title }}

{{ li.variantTitle }}
{{ li.vendor }}

{% endfor %}

json
{
    "lineItems": [
        {% for li in order.lineItems %}
            {% if forloop.first != true %},{% endif %}
        {
            "contract": {
                {% comment %}rest of contract omitted{% endcomment %}
                "id": {{ li.contract.id | json }}
            },
            "customAttributes": [
                {% for ca in li.customAttributes %}
                    {% if forloop.first != true %},{% endif %}
                    {
                        "key":{{ ca.key | json }},
                        "value":{{ ca.value | json }}
                    }
                {% endfor %}
            ],
&#x22;discountAllocations&#x22;: [
            {% for da in li.discountAllocations %}
                {% if forloop.first != true %},{% endif %}
                &#x22;allocatedAmountSet&#x22;: {
                    &#x22;presentmentMoney&#x22; : {
                        &#x22;amount&#x22;: {{ da.allocatedAmountSet.presentmentMoney.amount | json }},
                        &#x22;currencyCode&#x22;: {{ da.allocatedAmountSet.presentmentMoney.currencyCode | json }}
                    },
                    &#x22;shopMoney&#x22;: {
                        &#x22;amount&#x22;: {{ da.allocatedAmountSet.shopMoney.amount | json }},
                        &#x22;currencyCode&#x22;: {{ da.allocatedAmountSet.shopMoney.currencyCode | json }}
                    }
                }
            {% endfor %}
        ],

        &#x22;discountedTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.discountedTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.discountedTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;discountedUnitPriceSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.discountedUnitPriceSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedUnitPriceSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.discountedUnitPriceSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedUnitPriceSet.shopMoney.currencyCode | json }}
            }
        },
        &#x22;duties&#x22;: [
            {% for duty li.duties %}
            {% if forloop.first != true %},{% endif %}
            {
                {% comment %}rest of duties omitted{% endcomment %}
                &#x22;id&#x22;: {{ duty.id | json }}
            }
            {% endfor %}
        ],
        &#x22;fulfillableQuantity&#x22;: {{ li.fulfillableQuantity | json }},

        &#x22;fulfillmentService&#x22;: {
            &#x22;callbackUrl&#x22;:{{ li.fulfillmentService.callbackUrl | json }},
            &#x22;fulfillmentOrdersOptIn&#x22;: {{ li.fulfillmentService.fulfillmentOrdersOptIn | json }},
            &#x22;handle&#x22;: {{ li.fulfillmentService.handle | json }},
            &#x22;id&#x22;: {{ li.fulfillmentService.id | json }},
            &#x22;inventoryManagement&#x22;: {{ li.fulfillmentService.inventoryManagement | json }},
            {% comment %}fulfillmentService.inventoryManagement - omitted {% endcomment %}
            &#x22;productBased&#x22;: {{ li.fulfillmentService.productBased | json }},
            &#x22;serviceName&#x22;: {{ li.fulfillmentService.serviceName | json }},
            &#x22;shippingMethods&#x22;: [
                {% for sm in li.fulfillmentService.shippingMethods %}
                    {% if forloop.first != true %},{% endif %}
                    {
                        &#x22;code&#x22;: {{ sm.code | json }},
                        &#x22;label&#x22;: {{ sm.label | json }}
                    }
                {% endfor %}
            ],
            &#x22;type&#x22;: {{ li.fulfillmentService.type | json }}

        },
        &#x22;fulfillmentStatus&#x22;: {{ li.fulfillmentStatus | json }},
        &#x22;id&#x22;: {{ li.id | json }},
        &#x22;image&#x22;: {
            &#x22;altText&#x22;: {{ li.image.altText | json }},
            &#x22;height&#x22;: {{ li.image.height | json }},
            &#x22;id&#x22;: {{ li.image.id | json }},
            {% comment %}li.image.metafield omitted{% endcomment %}
            {% comment %}li.image.privateMetafield omitted{% endcomment %}
            &#x22;width&#x22;:{{ li.image.width | json }}
        },
        &#x22;merchantEditable&#x22;: {{ li.merchantEditable | json }},
        &#x22;name&#x22;: {{ li.name | json }},
        &#x22;nonFulfillableQuantity&#x22;: {{ li.nonFulfillableQuantity | json }},

        &#x22;originalTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.originalTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.originalTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;originalUnitPriceSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.originalUnitPriceSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalUnitPriceSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.originalUnitPriceSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalUnitPriceSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;product&#x22;: {
            {% comment %}rest of Product omitted{% endcomment %}
            &#x22;title&#x22;: {{ li.product.title | json }}
        },

        &#x22;quantity&#x22;: {{ li.quantity | json }},
        &#x22;refundableQuantity&#x22;: {{ li.refundableQuantity | json }},
        &#x22;requiresShipping&#x22;: {{ li.requiresShipping | json }},
        &#x22;restockable&#x22;: {{ li.restockable | json }},

        &#x22;sellingPlan&#x22;: {
            &#x22;name&#x22;: {{ li.sellingPlan.name | json }}
        },

        &#x22;sku&#x22;: {{ li.sku | json }},

        &#x22;taxLines&#x22;: [
            {% for tl in li.taxLines %}
                {% if forloop.first != true %},{% endif %}
                {
                    &#x22;priceSet&#x22;: {
                        &#x22;presentmentMoney&#x22; : {
                            &#x22;amount&#x22;: {{ tl.priceSet.presentmentMoney.amount | json }},
                            &#x22;currencyCode&#x22;: {{ tl.priceSet.presentmentMoney.currencyCode | json }}
                        },
                        &#x22;shopMoney&#x22;: {
                            &#x22;amount&#x22;: {{ tl.priceSet.shopMoney.amount | json }},
                            &#x22;currencyCode&#x22;: {{ tl.priceSet.shopMoney.currencyCode | json }}
                        }
                    },
                    &#x22;rate&#x22;: {{ tl.rate | json }},
                    &#x22;ratePercentage&#x22;: {{ tl.ratePercentage | json }},
                    &#x22;title&#x22;: {{ tl.title | json }}
                }
            {% endfor %}
        ],
        &#x22;taxable&#x22;:{{ li.taxable | json }},
        &#x22;title&#x22;:{{ li.title | json }},

        &#x22;totalDiscountSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.totalDiscountSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.totalDiscountSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.totalDiscountSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.totalDiscountSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledDiscountedTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.unfulfilledDiscountedTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledOriginalTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.unfulfilledOriginalTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledQuantity&#x22;: {{ li.unfulfilledQuantity | json }},

        &#x22;variant&#x22;: {
            {% comment %}rest of variant omitted {% endcomment %}
            &#x22;title&#x22;: {{ li.variant.title | json }}
        },

        &#x22;variantTitle&#x22;: {{ li.variantTitle | json }},
        &#x22;vendor&#x22;: {{ li.vendor | json }}
    }
{% endfor %}
]

}

Vous ne trouvez pas les réponses que vous recherchez ? Nous sommes là pour vous aider.