Lua
Lua
Shopify Add a metafield to an existing product
See more Shopify Examples
Add a metafield to an existing productChilkat Lua Downloads
local chilkat = require("chilkat")
local rest = chilkat.Rest.new()
rest:set_auth_basic("SHOPIFY_PRIVATE_API_KEY", "SHOPIFY_PRIVATE_API_KEY")
local success = rest:connect("chilkat.myshopify.com", 443, true, true)
if not success then
print(rest.last_error_text)
return
end
-- The following code creates the JSON request body.
-- The JSON created by this code is shown below.
local jsonReq = chilkat.JsonObject.new()
jsonReq:update_number("product.id", "632910392")
jsonReq:update_string("product.metafields[0].key", "new")
jsonReq:update_string("product.metafields[0].value", "newvalue")
jsonReq:update_string("product.metafields[0].value_type", "string")
jsonReq:update_string("product.metafields[0].namespace", "global")
-- The JSON request body created by the above code:
-- {
-- "product": {
-- "id": 632910392,
-- "metafields": [
-- {
-- "key": "new",
-- "value": "newvalue",
-- "value_type": "string",
-- "namespace": "global"
-- }
-- ]
-- }
-- }
local sbReq = chilkat.StringBuilder.new()
jsonReq:emit_sb(sbReq)
rest:add_header("Content-Type", "application/json")
local sbJson = chilkat.StringBuilder.new()
success = rest:full_request_sb("PUT", "/admin/products/#{id}.json", sbReq, sbJson)
if not success then
print(rest.last_error_text)
return
end
if rest.response_status_code ~= 200 then
print("Received error response code: " .. rest.response_status_code)
print("Response body:")
print(sbJson:get_as_string())
return
end
local json = chilkat.JsonObject.new()
json:load_sb(sbJson)
-- The following code parses the JSON response.
-- A sample JSON response is shown below the sample code.
local id = 0
local product_id = 0
local title = ""
local price = ""
local sku = ""
local position = 0
local grams = 0
local inventory_policy = ""
local compare_at_price = false
local fulfillment_service = ""
local inventory_management = ""
local option1 = ""
local option2 = false
local option3 = false
local created_at = ""
local updated_at = ""
local taxable = false
local barcode = ""
local image_id = 0
local inventory_quantity = 0
local weight = 0
local weight_unit = ""
local old_inventory_quantity = 0
local requires_shipping = false
local name = ""
local j = 0
local count_j = 0
local strVal = ""
local width = 0
local height = 0
local src = ""
local intVal = 0
local productId = json:int_of("product.id")
local productTitle = json:string_of("product.title")
local productBody_html = json:string_of("product.body_html")
local productVendor = json:string_of("product.vendor")
local productProduct_type = json:string_of("product.product_type")
local productCreated_at = json:string_of("product.created_at")
local productHandle = json:string_of("product.handle")
local productUpdated_at = json:string_of("product.updated_at")
local productPublished_at = json:string_of("product.published_at")
local productTemplate_suffix = json:is_null_of("product.template_suffix")
local productPublished_scope = json:string_of("product.published_scope")
local productTags = json:string_of("product.tags")
local productImageId = json:int_of("product.image.id")
local productImageProduct_id = json:int_of("product.image.product_id")
local productImagePosition = json:int_of("product.image.position")
local productImageCreated_at = json:string_of("product.image.created_at")
local productImageUpdated_at = json:string_of("product.image.updated_at")
local productImageWidth = json:int_of("product.image.width")
local productImageHeight = json:int_of("product.image.height")
local productImageSrc = json:string_of("product.image.src")
local i = 0
local count_i = json:size_of_array("product.variants")
while i < count_i do
json.i = i
id = json:int_of("product.variants[i].id")
product_id = json:int_of("product.variants[i].product_id")
title = json:string_of("product.variants[i].title")
price = json:string_of("product.variants[i].price")
sku = json:string_of("product.variants[i].sku")
position = json:int_of("product.variants[i].position")
grams = json:int_of("product.variants[i].grams")
inventory_policy = json:string_of("product.variants[i].inventory_policy")
compare_at_price = json:is_null_of("product.variants[i].compare_at_price")
fulfillment_service = json:string_of("product.variants[i].fulfillment_service")
inventory_management = json:string_of("product.variants[i].inventory_management")
option1 = json:string_of("product.variants[i].option1")
option2 = json:is_null_of("product.variants[i].option2")
option3 = json:is_null_of("product.variants[i].option3")
created_at = json:string_of("product.variants[i].created_at")
updated_at = json:string_of("product.variants[i].updated_at")
taxable = json:bool_of("product.variants[i].taxable")
barcode = json:string_of("product.variants[i].barcode")
image_id = json:int_of("product.variants[i].image_id")
inventory_quantity = json:int_of("product.variants[i].inventory_quantity")
weight = json:int_of("product.variants[i].weight")
weight_unit = json:string_of("product.variants[i].weight_unit")
old_inventory_quantity = json:int_of("product.variants[i].old_inventory_quantity")
requires_shipping = json:bool_of("product.variants[i].requires_shipping")
i = i + 1
end
i = 0
count_i = json:size_of_array("product.options")
while i < count_i do
json.i = i
id = json:int_of("product.options[i].id")
product_id = json:int_of("product.options[i].product_id")
name = json:string_of("product.options[i].name")
position = json:int_of("product.options[i].position")
j = 0
count_j = json:size_of_array("product.options[i].values")
while j < count_j do
json.j = j
strVal = json:string_of("product.options[i].values[j]")
j = j + 1
end
i = i + 1
end
i = 0
count_i = json:size_of_array("product.images")
while i < count_i do
json.i = i
id = json:int_of("product.images[i].id")
product_id = json:int_of("product.images[i].product_id")
position = json:int_of("product.images[i].position")
created_at = json:string_of("product.images[i].created_at")
updated_at = json:string_of("product.images[i].updated_at")
width = json:int_of("product.images[i].width")
height = json:int_of("product.images[i].height")
src = json:string_of("product.images[i].src")
j = 0
count_j = json:size_of_array("product.images[i].variant_ids")
while j < count_j do
json.j = j
intVal = json:int_of("product.images[i].variant_ids[j]")
j = j + 1
end
i = i + 1
end
i = 0
count_i = json:size_of_array("image.product.variant_ids")
while i < count_i do
json.i = i
i = i + 1
end
-- A sample JSON response body that is parsed by the above code:
-- {
-- "product": {
-- "id": 632910392,
-- "title": "IPod Nano - 8GB",
-- "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.<\/p>",
-- "vendor": "Apple",
-- "product_type": "Cult Products",
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "handle": "ipod-nano",
-- "updated_at": "2017-09-22T14:48:57-04:00",
-- "published_at": "2007-12-31T19:00:00-05:00",
-- "template_suffix": null,
-- "published_scope": "web",
-- "tags": "Emotive, Flash Memory, MP3, Music",
-- "variants": [
-- {
-- "id": 808950810,
-- "product_id": 632910392,
-- "title": "Pink",
-- "price": "199.00",
-- "sku": "IPOD2008PINK",
-- "position": 1,
-- "grams": 567,
-- "inventory_policy": "continue",
-- "compare_at_price": null,
-- "fulfillment_service": "manual",
-- "inventory_management": "shopify",
-- "option1": "Pink",
-- "option2": null,
-- "option3": null,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:48:57-04:00",
-- "taxable": true,
-- "barcode": "1234_pink",
-- "image_id": 562641783,
-- "inventory_quantity": 10,
-- "weight": 1.25,
-- "weight_unit": "lb",
-- "old_inventory_quantity": 10,
-- "requires_shipping": true
-- },
-- {
-- "id": 49148385,
-- "product_id": 632910392,
-- "title": "Red",
-- "price": "199.00",
-- "sku": "IPOD2008RED",
-- "position": 2,
-- "grams": 567,
-- "inventory_policy": "continue",
-- "compare_at_price": null,
-- "fulfillment_service": "manual",
-- "inventory_management": "shopify",
-- "option1": "Red",
-- "option2": null,
-- "option3": null,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "taxable": true,
-- "barcode": "1234_red",
-- "image_id": null,
-- "inventory_quantity": 20,
-- "weight": 1.25,
-- "weight_unit": "lb",
-- "old_inventory_quantity": 20,
-- "requires_shipping": true
-- },
-- {
-- "id": 39072856,
-- "product_id": 632910392,
-- "title": "Green",
-- "price": "199.00",
-- "sku": "IPOD2008GREEN",
-- "position": 3,
-- "grams": 567,
-- "inventory_policy": "continue",
-- "compare_at_price": null,
-- "fulfillment_service": "manual",
-- "inventory_management": "shopify",
-- "option1": "Green",
-- "option2": null,
-- "option3": null,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "taxable": true,
-- "barcode": "1234_green",
-- "image_id": null,
-- "inventory_quantity": 30,
-- "weight": 1.25,
-- "weight_unit": "lb",
-- "old_inventory_quantity": 30,
-- "requires_shipping": true
-- },
-- {
-- "id": 457924702,
-- "product_id": 632910392,
-- "title": "Black",
-- "price": "199.00",
-- "sku": "IPOD2008BLACK",
-- "position": 4,
-- "grams": 567,
-- "inventory_policy": "continue",
-- "compare_at_price": null,
-- "fulfillment_service": "manual",
-- "inventory_management": "shopify",
-- "option1": "Black",
-- "option2": null,
-- "option3": null,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "taxable": true,
-- "barcode": "1234_black",
-- "image_id": null,
-- "inventory_quantity": 40,
-- "weight": 1.25,
-- "weight_unit": "lb",
-- "old_inventory_quantity": 40,
-- "requires_shipping": true
-- }
-- ],
-- "options": [
-- {
-- "id": 594680422,
-- "product_id": 632910392,
-- "name": "Color",
-- "position": 1,
-- "values": [
-- "Pink",
-- "Red",
-- "Green",
-- "Black"
-- ]
-- }
-- ],
-- "images": [
-- {
-- "id": 850703190,
-- "product_id": 632910392,
-- "position": 1,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "width": 123,
-- "height": 456,
-- "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
-- "variant_ids": [
-- ]
-- },
-- {
-- "id": 562641783,
-- "product_id": 632910392,
-- "position": 2,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "width": 123,
-- "height": 456,
-- "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano-2.png?v=1506103682",
-- "variant_ids": [
-- 808950810
-- ]
-- }
-- ],
-- "image": {
-- "id": 850703190,
-- "product_id": 632910392,
-- "position": 1,
-- "created_at": "2017-09-22T14:08:02-04:00",
-- "updated_at": "2017-09-22T14:08:02-04:00",
-- "width": 123,
-- "height": 456,
-- "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
-- "variant_ids": [
-- ]
-- }
-- }
-- }
print("Example Completed.")