Отправить запрос Admin API

Действие «Отправить запрос Admin API» может использовать большинство мутаций в GraphQL Admin API для внесения изменений в ваш магазин, включая мутации, которые ещё не доступны в качестве действий в Flow.

Поля

Действие «Отправить запрос Admin API» содержит следующие поля.

Поля, используемые в действии «Отправить запрос Admin API».
ПолеОписание
МутацияОбязательное поле. Мутация Shopify GraphQL Admin, которую вы хотите вызвать. Мутация — это вызов API, который выполняет действие или обновляет данные.
Входные данные мутацииОбязательное поле. Данные (в формате JSON), которые необходимо отправить в рамках запроса на мутацию. Для каждой мутации требуется свой набор данных, который описан в документации по ссылке, предоставленной для каждой мутации. Чтобы составить необходимый JSON, можно использовать Liquid или действие «Выполнить код».

Триггеры

Действие «Отправить запрос Admin API» можно использовать в любом рабочем процессе с любым триггером, если рабочий процесс предоставляет данные, необходимые для составления входных данных мутации.

Примеры

Пример 1. Обновление шаблона, используемого для товара

В этом примере мы будем использовать действие «Отправить запрос Admin API» для вызова мутации productUpdate, чтобы обновить шаблон, используемый для товара.

Поле id является обязательным и должно содержать действительный GID товара. Здесь мы задаём его с помощью переменной Liquid {{product.id}}. Это предполагает, что в вашем рабочем процессе есть триггер, предоставляющий объект товара.

Поле templateSuffix — это название шаблона, который вы хотите применить к товару. Например, если вы хотите применить шаблон pre-order, то в качестве значения templateSuffix нужно указать pre-order.

{
  "input": {
    "templateSuffix": "pre-order",
    "id": "{{product.id}}"
  }
}

Пример 2. Обновление статуса освобождения клиента от налогов

В этом примере мы будем использовать действие «Отправить запрос Admin API» для вызова мутации customerUpdate, чтобы обновить статус освобождения клиента от налогов.

Поле id является обязательным и должно содержать действительный GID клиента. Здесь мы задаём его с помощью переменной Liquid {{order.customer.id}}. Это предполагает, что в вашем рабочем процессе есть триггер, предоставляющий объект заказа.

Поле taxExempt — это логическое значение (boolean), которое указывает, освобождён ли клиент от налогов. В этом примере мы устанавливаем для него значение true.

{
  "input": {
    "id": "{{order.customer.id}}",
    "taxExempt": true
  }
}

Пример 3. Обновление локали клиента

В этом примере мы будем использовать действие «Отправить запрос Admin API» для вызова мутации customerUpdate, чтобы обновить локаль клиента.

Поле id является обязательным и должно содержать действительный GID клиента. Здесь мы задаём его с помощью переменной Liquid {{customer.id}}. Это предполагает, что в вашем рабочем процессе есть триггер, предоставляющий объект клиента.

Поле locale — это строка, представляющая локаль клиента. В этом примере мы устанавливаем для него значение en.

{
  "input": {
    "id": "{{customer.id}}",
    "locale": "en"
  }
}

Советы по Liquid

Flow поддерживает фильтр Liquid json, который может быть полезен при составлении входных данных. Во всех следующих примерах используется мутация customerUpdate и предполагается, что в вашем рабочем процессе есть триггер, предоставляющий объект клиента.

Работа со строками

В следующем примере обновляется заметка о клиенте:

{% assign revisedNote = customer.note | append: " Hello from Flow!" %}

{
  "input": {
    "id": "{{ customer.id }}",
    "note": {{ revisedNote | json }},
  }
}

Фильтр json экранирует строку для обеспечения правильного формата JSON. В результате после выполнения рабочего процесса будет получен следующий JSON:

{
  "input": {
    "id": "gid://shopify/Customer/1234",
    "note": "Had a \"great experience\" with their latest order. Hello from Flow!",
  }
}

Работа с массивами

Пример с массивом

Фильтр json преобразует массив Liquid в массив JSON. В следующем примере при передаче массива Liquid выводится массив JSON:

{% assign tags = "tag1,tag2,tag3" | split: "," %}

{
  "input": {
    "id": "{{ customer.id }}",
    "tags": {{ tags | json }}
  }
}

В результате после выполнения рабочего процесса будет получен следующий JSON:

{
  "input": {
    "id": "gid://shopify/Customer/1234",
    "tags": ["tag1","tag2","tag3"]
  }
}

Пример с циклом for

В следующем примере используется цикл для вывода элементов массива, разделённых запятыми:

{% assign tags = "tag1,tag2,tag3" | split: "," %}

{
  "input": {
    "id": "{{ customer.id }}",
    "tags": [
      {% for tag in tags %}
        "{{ tag }}"{% unless forloop.last %},{% endunless %}
      {% endfor %}
    ]
  }
}

В результате при выполнении рабочего процесса будет получен следующий JSON:

{
  "input": {
    "id": "gid://shopify/Customer/1234",
    "tags": [
        "tag1",
        "tag2",
        "tag3"
    ]
  }
}

Пример с map

Фильтр map можно использовать для получения массива определённого свойства из массива объектов. В следующем примере из массива адресов клиентов извлекается массив свойств city:

{
  "input": {
    "id": "{{ customer.id }}",
    "tags": {{ customer.addresses | map: "city" | json }}
  }
}

В результате после выполнения рабочего процесса будет получен следующий JSON:

{
  "input": {
    "id": "gid://shopify/Customer/1234",
    "tags": ["Ottawa","Toronto"]
  }
}

Ограничения

Действие «Отправить запрос Admin API» имеет следующие ограничения:

  • Действие будет отображать список мутаций и входных данных мутаций из версии Admin API, используемой в Flow.
  • При выпуске новых версий API это действие может завершиться сбоем, если оно использует мутацию или поле, которые были изменены или объявлены устаревшими.
  • Действие не поддерживает запросы GraphQL, только мутации.
  • Действие не поддерживает мутации, которые были объявлены устаревшими.
  • Действие не поддерживает некоторые мутации, специфичные для определённых приложений, включая некоторые мутации подписок, маркетинговых активностей и скидок.
  • Действие не поддерживает асинхронные мутации или мутации, возвращающие тип Job.
  • Действие не поддерживает мутации, которые не реализуют интерфейс Node.

Шаблоны

Добавление бесплатного товара (со 100-процентной скидкой) в новые заказы

Этот шаблон добавляет бесплатный товар со скидкой в новые заказы, если товар есть в наличии. Он проверяет товарные запасы, применяет 100-процентную скидку и обновляет заказ, не уведомляя клиента. Эта автоматизация будет полезна, чтобы: 1) повысить удовлетворённость клиентов, добавив в их заказ бесплатный товар-сюрприз; 2) продвигать новые или менее известные товары, добавляя их в качестве бесплатных образцов в заказы; 3) оптимизировать рекламные акции за счёт автоматического добавления бесплатных товаров и применения к ним скидки. Просмотреть шаблон

Разрешение на оформление заказов для компаний, созданных по запросам на создание аккаунта компании

Назначение разрешения на оформление заказов при создании компании из запроса на аккаунт. Просмотреть шаблон

Изменение шаблона товара, когда варианты отсутствуют или снова появляются в наличии.

Обновление шаблона товара в зависимости от товарных запасов его вариантов. Рабочий процесс позволяет переключаться между шаблонами для статусов «в наличии» (шаблон магазина по умолчанию), «нет в наличии», а также для случаев, когда один или несколько вариантов отсутствуют. Просмотреть шаблон

Выполнение всех цифровых товаров в заказе.

Выполнение заказов на товары, не требующие физической доставки (например, цифровые), или соответствующие списку артикулов. Запускается по одному разу для каждого места выполнения заказа (т. е. для каждого «заказа на выполнение») в новом заказе. Просмотреть шаблон