Sample code for 30+ languages & platforms
PureBasic

Shopify List Products

See more Shopify Examples

Receive a list of all Products

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkRest.pb"

Procedure ChilkatExample()

    success.i = 0

    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkRest::ckSetAuthBasic(rest,"SHOPIFY_API_KEY","SHOPIFY_API_SECRET_KEY")

    success = CkRest::ckConnect(rest,"chilkat.myshopify.com",443,1,1)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    sbJson.i = CkStringBuilder::ckCreate()
    If sbJson.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkRest::ckFullRequestNoBodySb(rest,"GET","/admin/products.json",sbJson)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkStringBuilder::ckDispose(sbJson)
        ProcedureReturn
    EndIf

    If CkRest::ckResponseStatusCode(rest) <> 200
        Debug "Received error response code: " + Str(CkRest::ckResponseStatusCode(rest))
        Debug "Response body:"
        Debug CkStringBuilder::ckGetAsString(sbJson)
        CkRest::ckDispose(rest)
        CkStringBuilder::ckDispose(sbJson)
        ProcedureReturn
    EndIf

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(json,sbJson)

    ; The following code parses the JSON response.
    ; A sample JSON response is shown below the sample code.
    i.i
    count_i.i
    id.i
    title.s
    body_html.s
    vendor.s
    product_type.s
    created_at.s
    handle.s
    updated_at.s
    published_at.s
    template_suffix.i
    published_scope.s
    tags.s
    imageId.i
    imageProduct_id.i
    imagePosition.i
    imageCreated_at.s
    imageUpdated_at.s
    imageWidth.i
    imageHeight.i
    imageSrc.s
    image.i
    j.i
    count_j.i
    product_id.i
    price.s
    sku.s
    position.i
    grams.i
    inventory_policy.s
    compare_at_price.i
    fulfillment_service.s
    inventory_management.s
    option1.s
    option2.i
    option3.i
    taxable.i
    barcode.s
    image_id.i
    inventory_quantity.i
    weight.i
    weight_unit.s
    old_inventory_quantity.i
    requires_shipping.i
    name.s
    k.i
    count_k.i
    strVal.s
    width.i
    height.i
    src.s
    intVal.i

    i = 0
    count_i = CkJsonObject::ckSizeOfArray(json,"products")
    While i < count_i
        CkJsonObject::setCkI(json, i)
        id = CkJsonObject::ckIntOf(json,"products[i].id")
        title = CkJsonObject::ckStringOf(json,"products[i].title")
        body_html = CkJsonObject::ckStringOf(json,"products[i].body_html")
        vendor = CkJsonObject::ckStringOf(json,"products[i].vendor")
        product_type = CkJsonObject::ckStringOf(json,"products[i].product_type")
        created_at = CkJsonObject::ckStringOf(json,"products[i].created_at")
        handle = CkJsonObject::ckStringOf(json,"products[i].handle")
        updated_at = CkJsonObject::ckStringOf(json,"products[i].updated_at")
        published_at = CkJsonObject::ckStringOf(json,"products[i].published_at")
        template_suffix = CkJsonObject::ckIsNullOf(json,"products[i].template_suffix")
        published_scope = CkJsonObject::ckStringOf(json,"products[i].published_scope")
        tags = CkJsonObject::ckStringOf(json,"products[i].tags")
        imageId = CkJsonObject::ckIntOf(json,"products[i].image.id")
        imageProduct_id = CkJsonObject::ckIntOf(json,"products[i].image.product_id")
        imagePosition = CkJsonObject::ckIntOf(json,"products[i].image.position")
        imageCreated_at = CkJsonObject::ckStringOf(json,"products[i].image.created_at")
        imageUpdated_at = CkJsonObject::ckStringOf(json,"products[i].image.updated_at")
        imageWidth = CkJsonObject::ckIntOf(json,"products[i].image.width")
        imageHeight = CkJsonObject::ckIntOf(json,"products[i].image.height")
        imageSrc = CkJsonObject::ckStringOf(json,"products[i].image.src")
        image = CkJsonObject::ckIsNullOf(json,"products[i].image")
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(json,"products[i].variants")
        While j < count_j
            CkJsonObject::setCkJ(json, j)
            id = CkJsonObject::ckIntOf(json,"products[i].variants[j].id")
            product_id = CkJsonObject::ckIntOf(json,"products[i].variants[j].product_id")
            title = CkJsonObject::ckStringOf(json,"products[i].variants[j].title")
            price = CkJsonObject::ckStringOf(json,"products[i].variants[j].price")
            sku = CkJsonObject::ckStringOf(json,"products[i].variants[j].sku")
            position = CkJsonObject::ckIntOf(json,"products[i].variants[j].position")
            grams = CkJsonObject::ckIntOf(json,"products[i].variants[j].grams")
            inventory_policy = CkJsonObject::ckStringOf(json,"products[i].variants[j].inventory_policy")
            compare_at_price = CkJsonObject::ckIsNullOf(json,"products[i].variants[j].compare_at_price")
            fulfillment_service = CkJsonObject::ckStringOf(json,"products[i].variants[j].fulfillment_service")
            inventory_management = CkJsonObject::ckStringOf(json,"products[i].variants[j].inventory_management")
            option1 = CkJsonObject::ckStringOf(json,"products[i].variants[j].option1")
            option2 = CkJsonObject::ckIsNullOf(json,"products[i].variants[j].option2")
            option3 = CkJsonObject::ckIsNullOf(json,"products[i].variants[j].option3")
            created_at = CkJsonObject::ckStringOf(json,"products[i].variants[j].created_at")
            updated_at = CkJsonObject::ckStringOf(json,"products[i].variants[j].updated_at")
            taxable = CkJsonObject::ckBoolOf(json,"products[i].variants[j].taxable")
            barcode = CkJsonObject::ckStringOf(json,"products[i].variants[j].barcode")
            image_id = CkJsonObject::ckIntOf(json,"products[i].variants[j].image_id")
            inventory_quantity = CkJsonObject::ckIntOf(json,"products[i].variants[j].inventory_quantity")
            weight = CkJsonObject::ckIntOf(json,"products[i].variants[j].weight")
            weight_unit = CkJsonObject::ckStringOf(json,"products[i].variants[j].weight_unit")
            old_inventory_quantity = CkJsonObject::ckIntOf(json,"products[i].variants[j].old_inventory_quantity")
            requires_shipping = CkJsonObject::ckBoolOf(json,"products[i].variants[j].requires_shipping")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(json,"products[i].options")
        While j < count_j
            CkJsonObject::setCkJ(json, j)
            id = CkJsonObject::ckIntOf(json,"products[i].options[j].id")
            product_id = CkJsonObject::ckIntOf(json,"products[i].options[j].product_id")
            name = CkJsonObject::ckStringOf(json,"products[i].options[j].name")
            position = CkJsonObject::ckIntOf(json,"products[i].options[j].position")
            k = 0
            count_k = CkJsonObject::ckSizeOfArray(json,"products[i].options[j].values")
            While k < count_k
                CkJsonObject::setCkK(json, k)
                strVal = CkJsonObject::ckStringOf(json,"products[i].options[j].values[k]")
                k = k + 1
            Wend
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(json,"products[i].images")
        While j < count_j
            CkJsonObject::setCkJ(json, j)
            id = CkJsonObject::ckIntOf(json,"products[i].images[j].id")
            product_id = CkJsonObject::ckIntOf(json,"products[i].images[j].product_id")
            position = CkJsonObject::ckIntOf(json,"products[i].images[j].position")
            created_at = CkJsonObject::ckStringOf(json,"products[i].images[j].created_at")
            updated_at = CkJsonObject::ckStringOf(json,"products[i].images[j].updated_at")
            width = CkJsonObject::ckIntOf(json,"products[i].images[j].width")
            height = CkJsonObject::ckIntOf(json,"products[i].images[j].height")
            src = CkJsonObject::ckStringOf(json,"products[i].images[j].src")
            k = 0
            count_k = CkJsonObject::ckSizeOfArray(json,"products[i].images[j].variant_ids")
            While k < count_k
                CkJsonObject::setCkK(json, k)
                intVal = CkJsonObject::ckIntOf(json,"products[i].images[j].variant_ids[k]")
                k = k + 1
            Wend
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(json,"products[i].image.variant_ids")
        While j < count_j
            CkJsonObject::setCkJ(json, j)
            j = j + 1
        Wend
        i = i + 1
    Wend

    ; 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
    ;     }
    ;   ]
    ; }

    Debug "Example Completed."


    CkRest::ckDispose(rest)
    CkStringBuilder::ckDispose(sbJson)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure