I cannot create a record by performing a POST using Shopify's REST API and Basic Authentication. For example, I tried performing a POST to the following URL:
https://{API Key}:{Password}@{MyStore}.myshopify.com/admin/products/{product-id}/metafields.json
Along with the body:
{
"metafield": {
"namespace": "global",
"key": "Test_Metafield",
"value": "Value for test metafield",
"value_type": "string",
"description": "This is the description"
}
}
When I try sending it no metafield gets created for the product. Instead, I get a status 200 with HTML as the response as shown below:
<html>
<body>
<noscript>
<a
href="https://accounts.shopify.com/oauth/authorize?client_id=xxxxxxxxxxxxxxxxx&destination_uuid=xxxxxx...>
</noscript>
<script type="text/javascript" defer>
window.location = "https:\/\/accounts.shopify.com\/oauth\/authorize?client_id=xxxxxxxxxxxxxxxxxxx\u0026destination_uuid=4xxxxxxxxxxxxxxxxxxxx\u0026nonce=xxxxxxxxxxxxxxxxxxx\u0026prompt=merge\u0026redirect_uri=https%3A%2F%2Fxxxxxxx.myshopify.com%2Fadmin%2Fauth%2Fidentity%2Fcallback\u0026response_type=code\u0026scope=email%20https%3A%2F%2Fapi.shopify.com%2Fauth%2Fdestinations.readonly%20openid%20profile%20https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.collaborator-relationships.readonly%20https%3A%2F%2Fapi.shopify.com%2Fauth%2Fbanking.manage\u0026state=xxxxxxxxxxxxxxxxx\u0026ui_locales=en\u0026ux=shop";
</script>
</body>
</html>
I can perform GETs and PUTs in which I can retrieve metafield records as well as update existing metafields. But anytime I perform a POST (or create a new record), I get the same response as above.
Solved! Go to the solution
This is an accepted solution.
How are you making the request? Is this via the browser? Postman? Something else? I am guessing you're sending cookies in the request so that's being blocked for good security reasons. Remove those cookies and you may find the result differs.
I am currently programming an app that displays orders from Shopify. The program I am using is Delphi (Pascal) and trying to send and receive data using REST. The "GET" commands work without problems but when I try to create an order draft ("POST") for example, it shows me the same error every time as above. What can be done ?
User | Count |
---|---|
13 | |
11 | |
8 | |
7 | |
5 |