发送 Admin API 请求

发送 Admin API 请求操作可向 Shopify GraphQL Admin API 发送更改。这样一来,您几乎可以使用 Flow 执行 API 允许的任何操作。

字段

发送 Admin API 请求操作包含以下字段。

“发送 Admin API 请求”操作中使用的字段。
字段 描述
更改 必填。您要调用的 Shopify GraphQL Admin 更改。更改是执行操作或更新数据的 API。
更改输入 必填。您需要在更改请求中发送的数据(采用 JSON 格式)。每个更改都需要一组不同的数据,这些数据记录在为每个更改提供的链接中。若要构建所需的 JSON,您可以使用 Liquid 或运行代码操作

触发器

只要工作流提供了构建更改输入所需的数据,发送 Admin API 请求操作便可用于使用任何触发器的任何工作流。

示例

示例 1:更新用于产品的模板

在此示例中,我们将使用发送 Admin API 请求操作来调用 productUpdate 更改,以更新用于产品的模板。

id 字段为必填项,并且必须是有效的产品 GID。在此处,我们用 {{product.id}} Liquid 变量对其进行设置。这假定您的工作流有一个提供产品对象的触发器。

templateSuffix 是要应用于产品的模板的名称。例如,如果要应用 pre-order 模板,那么您需要将 templateSuffix 设置为 pre-order

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

示例 2:更新客户的免税状态

在此示例中,我们将使用发送 Admin API 请求操作来调用 customerUpdate 更改,以更新客户的免税状态。

id 字段为必填项,并且必须是有效的客户 GID。在此处,我们用 {{order.customer.id}} Liquid 变量对其进行设置。假定您的工作流有一个提供订单对象的触发器。

taxExempt 字段是一个布尔值,用于指示客户是否免税。在此示例中,我们将其设置为 true

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

示例 3:更新客户的区域设置

在此示例中,我们将使用发送 Admin API 请求操作来调用 customerUpdate 更改,以更新客户的区域设置。

id 字段为必填项,并且必须是有效的客户 GID。在此处,我们用 {{customer.id}} Liquid 变量对其进行设置。这假定您的工作流有一个提供客户对象的触发器。

locale 字段是表示客户区域设置的字符串。在此示例中,我们将其设置为 en

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

Liquid 提示

Flow 支持 json liquid 筛选器,这可帮助构建输入。下面的示例都使用了 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 请求操作具有以下限制:

  • 此操作不支持 GraphQL 查询,仅支持更改。
  • 此操作不支持异步更改或返回 Job 类型的更改。
  • 此操作不支持不实现节点接口的更改。
  • 此操作不支持特定于某些应用的变更,包括订阅和折扣变更。
  • 目前不支持以下更改:checkoutBrandingUpsertdraftOrderCalculatefileAcknowledgeUpdateFailedfileCreatefileUpdatepriceListFixedPricesAddpriceListFixedPricesUpdateproductAppendImagesproductCreateMediaproductImageUpdateproductUpdateMediapublishablePublishpublishablePublishToCurrentChannelpublishableUnpublishpublishableUnpublishToCurrentChannel subscriptionBillingCycleEditDeletesubscriptionBillingCycleEditsDeletesubscriptionBillingCycleScheduleEditsubscriptionBillingCycleSkipsubscriptionBillingCycleUnskipsubscriptionContractProductChange
  • 此操作将显示一个 Shopify API 版本中的 MutationsMutation inputs 的列表,该版本目前为 2024-01
  • 当 API 版本升级并包含重大更改时,如果您依赖于该字段,则可能会导致此操作失败。

准备好开始使用 Shopify 进行销售了吗?

免费试用