GraphiQL App から draftOrderCreate を実行したところアクセス拒否となってしまう

Shopify GraphiQL App から draftOrderCreate を実行したところ、下記のようなエラー文が

返ってきてしまいました。

draftOrderCreateを実行したスタッフの権限はフル権限となっており、アプリの権限も

下記のエラーで要求されている「write_draft_orders」は設定されている状態です。

他に設定するべき権限や、管理画面で確認するべき項目等、何か糸口となる情報が

ありましたら、ご教示頂けますと助かります。

エラー文(レスポンスから抜粋)

      "message": "Access denied for draftOrderCreate field. Required access: `write_draft_orders` access scope. Also: The user must have access to manage draft orders.",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "draftOrderCreate"
      ],
      "extensions": {
        "code": "ACCESS_DENIED",
        "documentation": "https://shopify.dev/api/usage/access-scopes",
        "requiredAccess": "`write_draft_orders` access scope. Also: The user must have access to manage draft orders."
      }
    }
  ],

実行文

mutation draftOrderCreate($input: DraftOrderInput!) {
  draftOrderCreate(input: $input) {
    draftOrder {
      id
    }
    userErrors {
      field
      message
    }
  }
}

input(一部パラメータは問い合わせのため日本語に置き換え済み)

{
    "input": {
      "appliedDiscount": null,
      "billingAddress": null,
      "customAttributes": [
        {
          "key": "物流担当者へのメモ",
          "value": "テスト"
        }
      ],
      "email": "担当のアドレス",
      "lineItems": [
        {
              "appliedDiscount": {
              	"amount": "16000",
                "value": 8000,
                "valueType": "FIXED_AMOUNT"
              },
              "customAttributes": [],
              "originalUnitPrice": "12500",
              "quantity": 2,
              "requiresShipping": true,
              "sku": "YTK1X310RA",
              "taxable": true,
              "title": "商品名",
              "variantId": "gid://shopify/ProductVariant/ID番号",
              "weight": {
                "unit": "KILOGRAMS",
                "value": 2.6
        	}
        }
      ],
      "localizationExtensions": [],
      "marketRegionCountryCode": "JP",
      "metafields": [],
      "note": null,
      "paymentTerms": {
        "paymentSchedules": null
      },
      "phone": null,
      "presentmentCurrencyCode": "JPY",
      "purchasingEntity": {
        "customerId": "gid://shopify/Customer/顧客ID",
        "purchasingCompany": null
      },
      "reserveInventoryUntil": null,
      "shippingAddress": null,
      "shippingLine": null,
      "taxExempt": false,
      "useCustomerDefaultAddress": false,
      "visibleToCustomer": false
    }
}

興味があり調査してみました。

APIに詳しいわけではないので、こうすると成功した、ということしかできないのですが、

inputを下記のようにしたところ、下書き注文を作成できました。

{
    "input": {
      "appliedDiscount": null,
      "billingAddress": null,
      "customAttributes": [
        {
          "key": "物流担当者へのメモ",
          "value": "テスト"
        }
      ],
      "email": "担当のアドレス",
      "lineItems": [
        {
              "appliedDiscount": {
              	"amount": "16000",
                "value": 8000,
                "valueType": "FIXED_AMOUNT"
              },
              "customAttributes": [],
              "originalUnitPrice": "12500",
              "quantity": 2,
              "requiresShipping": true,
              "sku": "YTK1X310RA",
              "taxable": true,
              "title": "商品名",
              "variantId": "gid://shopify/ProductVariant/ID番号",
              "weight": {
                "unit": "KILOGRAMS",
                "value": 2.6
        	}
        }
      ],
      "localizationExtensions": [],
      "marketRegionCountryCode": "JP",
      "metafields": [],
      "note": null,
      "phone": null,
      "presentmentCurrencyCode": "JPY",
      "purchasingEntity": {
        "customerId": "gid://shopify/Customer/顧客ID"
      },
      "reserveInventoryUntil": null,
      "shippingAddress": null,
      "shippingLine": null,
      "taxExempt": false,
      "useCustomerDefaultAddress": false,
      "visibleToCustomer": false
    }
}

下記2つを削除しました。

paymentTerms

purchasingEntity.purchasingCompany

例えnullであっても、

paymentTermsを設定していると、

なぜかパーミッションエラーが出るようです。

purchasingEntity.purchasingCompany

についても、nullであっても、

purchasingEntity.customerId

と同時に設定することができないようです。

ご参考まで。

(キュー田辺)

1 Like

ご回答いただきありがとうございます。

対象項目を削除してみたところ、こちらでもアクセス拒否が出なくなったことを確認できました。

適格かつ早急なご回答、改めて誠にありがとうございました。

1 Like