Creating metafields on product via REST api

We are having issues using the metafields on a product on the /admin/api/2020-07/products.json rest api endpoint.
If “metafields” is either not included, or is set to an empty array, the product is creating without issue.
However when trying to create a product with metafields we are receiving the following error :

{"errors":{"metafields":"expected Hash to be a Array"}}

This is happening on both creates and updates.

Sample request payload :

{
    "product": {
        "product_type": "Physical Product",
        "title": "Metafield Example Product",
        "body_html": "",
        "variants": [],
        "images": [],
        "tags": "",
        "metafields": [
            {
                "key": "option_one",
                "field": "metaOptionOne",
                "value": "Wishlist potential: High",
                "namespace": "custom_fields",
                "value_type": "string"
            },
        ],
        "published": true,
    },
}

Hello @BillyH ,

I’ve tried to replicate the issue without success. Looking at the application logs, I’ve noticed four 400 Bad Request from Sep 22 through Sep 24 on this endpoint.

These bad requests and the error message you’ve received can be explained if the payload sent metafields as a JSON object rather than an array.

Payload:

{
	"product": {
		"product_type": "Physical Product",
		"title": "Metafield Example Product",
		"body_html": "",
		"variants": [],
		"images": [],
		"tags": "",
		"metafields": {
			"key": "option_one",
			"field": "metaOptionOne",
			"value": "Wishlist potential: High",
			"namespace": "custom_fields",
			"value_type": "string"
		},
		"published": true
	}
}

Response:

{
  "errors": {
    "metafields": "expected Hash to be a Array"
  }
}
1 Like

Welcome the forums @edaroit strong start hitting it out the park with a first post.

1 Like