发送 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。在这里,我们使用 {{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 请求操作有以下限制:

  • 该操作将显示 Flow 使用的 Admin API 版本中的 MutationsMutation inputs 列表。
  • 在发布新的 API 版本时,如果此操作使用了已更改或已弃用的变更或字段,则该操作可能会失败。
  • 该操作不支持 GraphQL 查询,仅支持变更。
  • 该操作不支持已弃用的变更。
  • 该操作不支持特定于某些应用的某些变更,包括一些订阅、营销活动和折扣变更。
  • 该操作不支持异步变更或返回 Job 类型的变更。
  • 该操作不支持未实现 Node 界面的变更。

模板

将免费(100% 折扣)商品添加到新订单

如果商品有库存,此模板会向新订单中添加一件免费的折扣商品。它会检查库存、应用 100% 折扣并更新订单,而无需通知客户。此自动化在以下方面很有用:(1) 通过在客户订单中添加惊喜的免费商品来提高客户满意度;(2) 通过将新产品或不太知名的产品作为免费样品添加到订单中来进行推广;(3) 通过自动添加免费商品并为其提供折扣来简化促销活动。查看模板

允许通过公司账户请求创建的公司进行订购

当通过公司账户请求创建公司时,分配订购权限。查看模板

当多属性缺货或重新有货时更改产品模板

根据产品多属性的库存更新产品模板。此工作流允许您在用于有货(商店的默认模板)、缺货以及一个或多个多属性缺货情况的模板之间切换。查看模板

为订单中的所有数字商品发货

为新订单中所有无需实际配送(例如数字商品)或与 SKU 列表匹配的商品发货。此工作流会针对每个发货地点(即“发货订单”)运行一次。查看模板