Sample code for 30+ languages & platforms
Lua

Shopify List Products

See more Shopify Examples

Receive a list of all Products

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local rest = chilkat.Rest.new()

rest:set_auth_basic("SHOPIFY_API_KEY", "SHOPIFY_API_SECRET_KEY")

local success = rest:connect("chilkat.myshopify.com", 443, true, true)
if not success then
    print(rest.last_error_text)
    return
end

local sbJson = chilkat.StringBuilder.new()
success = rest:full_request_no_body_sb("GET", "/admin/products.json", 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 title = ""
local body_html = ""
local vendor = ""
local product_type = ""
local created_at = ""
local handle = ""
local updated_at = ""
local published_at = ""
local template_suffix = false
local published_scope = ""
local tags = ""
local imageId = 0
local imageProduct_id = 0
local imagePosition = 0
local imageCreated_at = ""
local imageUpdated_at = ""
local imageWidth = 0
local imageHeight = 0
local imageSrc = ""
local image = false
local j = 0
local count_j = 0
local product_id = 0
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 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 k = 0
local count_k = 0
local strVal = ""
local width = 0
local height = 0
local src = ""
local intVal = 0

local i = 0
local count_i = json:size_of_array("products")
while i < count_i do
    json.i = i
    id = json:int_of("products[i].id")
    title = json:string_of("products[i].title")
    body_html = json:string_of("products[i].body_html")
    vendor = json:string_of("products[i].vendor")
    product_type = json:string_of("products[i].product_type")
    created_at = json:string_of("products[i].created_at")
    handle = json:string_of("products[i].handle")
    updated_at = json:string_of("products[i].updated_at")
    published_at = json:string_of("products[i].published_at")
    template_suffix = json:is_null_of("products[i].template_suffix")
    published_scope = json:string_of("products[i].published_scope")
    tags = json:string_of("products[i].tags")
    imageId = json:int_of("products[i].image.id")
    imageProduct_id = json:int_of("products[i].image.product_id")
    imagePosition = json:int_of("products[i].image.position")
    imageCreated_at = json:string_of("products[i].image.created_at")
    imageUpdated_at = json:string_of("products[i].image.updated_at")
    imageWidth = json:int_of("products[i].image.width")
    imageHeight = json:int_of("products[i].image.height")
    imageSrc = json:string_of("products[i].image.src")
    image = json:is_null_of("products[i].image")
    j = 0
    count_j = json:size_of_array("products[i].variants")
    while j < count_j do
        json.j = j
        id = json:int_of("products[i].variants[j].id")
        product_id = json:int_of("products[i].variants[j].product_id")
        title = json:string_of("products[i].variants[j].title")
        price = json:string_of("products[i].variants[j].price")
        sku = json:string_of("products[i].variants[j].sku")
        position = json:int_of("products[i].variants[j].position")
        grams = json:int_of("products[i].variants[j].grams")
        inventory_policy = json:string_of("products[i].variants[j].inventory_policy")
        compare_at_price = json:is_null_of("products[i].variants[j].compare_at_price")
        fulfillment_service = json:string_of("products[i].variants[j].fulfillment_service")
        inventory_management = json:string_of("products[i].variants[j].inventory_management")
        option1 = json:string_of("products[i].variants[j].option1")
        option2 = json:is_null_of("products[i].variants[j].option2")
        option3 = json:is_null_of("products[i].variants[j].option3")
        created_at = json:string_of("products[i].variants[j].created_at")
        updated_at = json:string_of("products[i].variants[j].updated_at")
        taxable = json:bool_of("products[i].variants[j].taxable")
        barcode = json:string_of("products[i].variants[j].barcode")
        image_id = json:int_of("products[i].variants[j].image_id")
        inventory_quantity = json:int_of("products[i].variants[j].inventory_quantity")
        weight = json:int_of("products[i].variants[j].weight")
        weight_unit = json:string_of("products[i].variants[j].weight_unit")
        old_inventory_quantity = json:int_of("products[i].variants[j].old_inventory_quantity")
        requires_shipping = json:bool_of("products[i].variants[j].requires_shipping")
        j = j + 1
    end

    j = 0
    count_j = json:size_of_array("products[i].options")
    while j < count_j do
        json.j = j
        id = json:int_of("products[i].options[j].id")
        product_id = json:int_of("products[i].options[j].product_id")
        name = json:string_of("products[i].options[j].name")
        position = json:int_of("products[i].options[j].position")
        k = 0
        count_k = json:size_of_array("products[i].options[j].values")
        while k < count_k do
            json.k = k
            strVal = json:string_of("products[i].options[j].values[k]")
            k = k + 1
        end

        j = j + 1
    end

    j = 0
    count_j = json:size_of_array("products[i].images")
    while j < count_j do
        json.j = j
        id = json:int_of("products[i].images[j].id")
        product_id = json:int_of("products[i].images[j].product_id")
        position = json:int_of("products[i].images[j].position")
        created_at = json:string_of("products[i].images[j].created_at")
        updated_at = json:string_of("products[i].images[j].updated_at")
        width = json:int_of("products[i].images[j].width")
        height = json:int_of("products[i].images[j].height")
        src = json:string_of("products[i].images[j].src")
        k = 0
        count_k = json:size_of_array("products[i].images[j].variant_ids")
        while k < count_k do
            json.k = k
            intVal = json:int_of("products[i].images[j].variant_ids[k]")
            k = k + 1
        end

        j = j + 1
    end

    j = 0
    count_j = json:size_of_array("products[i].image.variant_ids")
    while j < count_j do
        json.j = j
        j = j + 1
    end

    i = i + 1
end

-- A sample JSON response body that is parsed by the above code:

-- {
--   "products": [
--     {
--       "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:08:02-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:08:02-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": [
--         ]
--       }
--     },
--     {
--       "id": 921728736,
--       "title": "IPod Touch 8GB",
--       "body_html": "<p>The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.<\/p>",
--       "vendor": "Apple",
--       "product_type": "Cult Products",
--       "created_at": "2017-09-22T14:08:02-04:00",
--       "handle": "ipod-touch",
--       "updated_at": "2017-09-22T14:08:02-04:00",
--       "published_at": "2008-09-25T20:00:00-04:00",
--       "template_suffix": null,
--       "published_scope": "global",
--       "tags": "",
--       "variants": [
--         {
--           "id": 447654529,
--           "product_id": 921728736,
--           "title": "Black",
--           "price": "199.00",
--           "sku": "IPOD2009BLACK",
--           "position": 1,
--           "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": 13,
--           "weight": 1.25,
--           "weight_unit": "lb",
--           "old_inventory_quantity": 13,
--           "requires_shipping": true
--         }
--       ],
--       "options": [
--         {
--           "id": 891236591,
--           "product_id": 921728736,
--           "name": "Title",
--           "position": 1,
--           "values": [
--             "Black"
--           ]
--         }
--       ],
--       "images": [
--       ],
--       "image": null
--     }
--   ]
-- }

print("Example Completed.")