Sample code for 30+ languages & platforms
Go

Shopify Create a new product with multiple product variants

See more Shopify Examples

Create a new product with multiple product variants

Chilkat Go Downloads

Go
    success := false

    rest := chilkat.NewRest()

    rest.SetAuthBasic("SHOPIFY_PRIVATE_API_KEY","SHOPIFY_PRIVATE_API_KEY")

    success = rest.Connect("chilkat.myshopify.com",443,true,true)
    if success != true {
        fmt.Println(rest.LastErrorText())
        rest.DisposeRest()
        return
    }

    // The following code creates the JSON request body.
    // The JSON created by this code is shown below.
    jsonReq := chilkat.NewJsonObject()
    jsonReq.UpdateString("product.title","Burton Custom Freestyle 151")
    jsonReq.UpdateString("product.body_html","<strong>Good snowboard!</strong>")
    jsonReq.UpdateString("product.vendor","Burton")
    jsonReq.UpdateString("product.product_type","Snowboard")
    jsonReq.UpdateString("product.variants[0].option1","First")
    jsonReq.UpdateString("product.variants[0].price","10.00")
    jsonReq.UpdateString("product.variants[0].sku","123")
    jsonReq.UpdateString("product.variants[1].option1","Second")
    jsonReq.UpdateString("product.variants[1].price","20.00")
    jsonReq.UpdateString("product.variants[1].sku","123")

    // The JSON request body created by the above code:

    // {
    //   "product": {
    //     "title": "Burton Custom Freestyle 151",
    //     "body_html": "<strong>Good snowboard!<\/strong>",
    //     "vendor": "Burton",
    //     "product_type": "Snowboard",
    //     "variants": [
    //       {
    //         "option1": "First",
    //         "price": "10.00",
    //         "sku": "123"
    //       },
    //       {
    //         "option1": "Second",
    //         "price": "20.00",
    //         "sku": "123"
    //       }
    //     ]
    //   }
    // }

    sbReq := chilkat.NewStringBuilder()
    jsonReq.EmitSb(sbReq)

    rest.AddHeader("Content-Type","application/json")

    sbJson := chilkat.NewStringBuilder()
    success = rest.FullRequestSb("POST","/admin/products.json ",sbReq,sbJson)
    if success != true {
        fmt.Println(rest.LastErrorText())
        rest.DisposeRest()
        jsonReq.DisposeJsonObject()
        sbReq.DisposeStringBuilder()
        sbJson.DisposeStringBuilder()
        return
    }

    if rest.ResponseStatusCode() != 201 {
        fmt.Println("Received error response code: ", rest.ResponseStatusCode())
        fmt.Println("Response body:")
        fmt.Println(*sbJson.GetAsString())
        rest.DisposeRest()
        jsonReq.DisposeJsonObject()
        sbReq.DisposeStringBuilder()
        sbJson.DisposeStringBuilder()
        return
    }

    json := chilkat.NewJsonObject()
    json.LoadSb(sbJson)

    // The following code parses the JSON response.
    // A sample JSON response is shown below the sample code.
    var productId int
    var productTitle *string = new(string)
    var productBody_html *string = new(string)
    var productVendor *string = new(string)
    var productProduct_type *string = new(string)
    var productCreated_at *string = new(string)
    var productHandle *string = new(string)
    var productUpdated_at *string = new(string)
    var productPublished_at *string = new(string)
    var productTemplate_suffix bool
    var productPublished_scope *string = new(string)
    var productTags *string = new(string)
    var productImage bool
    var i int
    var count_i int
    var id int
    var product_id int
    var title *string = new(string)
    var price *string = new(string)
    var sku *string = new(string)
    var position int
    var grams int
    var inventory_policy *string = new(string)
    var compare_at_price bool
    var fulfillment_service *string = new(string)
    var inventory_management bool
    var option1 *string = new(string)
    var option2 bool
    var option3 bool
    var created_at *string = new(string)
    var updated_at *string = new(string)
    var taxable bool
    var barcode bool
    var image_id bool
    var inventory_quantity int
    var weight int
    var weight_unit *string = new(string)
    var old_inventory_quantity int
    var requires_shipping bool
    var name *string = new(string)
    var j int
    var count_j int
    var strVal *string = new(string)

    productId = json.IntOf("product.id")
    productTitle = json.StringOf("product.title")
    productBody_html = json.StringOf("product.body_html")
    productVendor = json.StringOf("product.vendor")
    productProduct_type = json.StringOf("product.product_type")
    productCreated_at = json.StringOf("product.created_at")
    productHandle = json.StringOf("product.handle")
    productUpdated_at = json.StringOf("product.updated_at")
    productPublished_at = json.StringOf("product.published_at")
    productTemplate_suffix = json.IsNullOf("product.template_suffix")
    productPublished_scope = json.StringOf("product.published_scope")
    productTags = json.StringOf("product.tags")
    productImage = json.IsNullOf("product.image")
    i = 0
    count_i = json.SizeOfArray("product.variants")
    for i < count_i {
        json.SetI(i)
        id = json.IntOf("product.variants[i].id")
        product_id = json.IntOf("product.variants[i].product_id")
        title = json.StringOf("product.variants[i].title")
        price = json.StringOf("product.variants[i].price")
        sku = json.StringOf("product.variants[i].sku")
        position = json.IntOf("product.variants[i].position")
        grams = json.IntOf("product.variants[i].grams")
        inventory_policy = json.StringOf("product.variants[i].inventory_policy")
        compare_at_price = json.IsNullOf("product.variants[i].compare_at_price")
        fulfillment_service = json.StringOf("product.variants[i].fulfillment_service")
        inventory_management = json.IsNullOf("product.variants[i].inventory_management")
        option1 = json.StringOf("product.variants[i].option1")
        option2 = json.IsNullOf("product.variants[i].option2")
        option3 = json.IsNullOf("product.variants[i].option3")
        created_at = json.StringOf("product.variants[i].created_at")
        updated_at = json.StringOf("product.variants[i].updated_at")
        taxable = json.BoolOf("product.variants[i].taxable")
        barcode = json.IsNullOf("product.variants[i].barcode")
        image_id = json.IsNullOf("product.variants[i].image_id")
        inventory_quantity = json.IntOf("product.variants[i].inventory_quantity")
        weight = json.IntOf("product.variants[i].weight")
        weight_unit = json.StringOf("product.variants[i].weight_unit")
        old_inventory_quantity = json.IntOf("product.variants[i].old_inventory_quantity")
        requires_shipping = json.BoolOf("product.variants[i].requires_shipping")
        i = i + 1
    }

    i = 0
    count_i = json.SizeOfArray("product.options")
    for i < count_i {
        json.SetI(i)
        id = json.IntOf("product.options[i].id")
        product_id = json.IntOf("product.options[i].product_id")
        name = json.StringOf("product.options[i].name")
        position = json.IntOf("product.options[i].position")
        j = 0
        count_j = json.SizeOfArray("product.options[i].values")
        for j < count_j {
            json.SetJ(j)
            strVal = json.StringOf("product.options[i].values[j]")
            j = j + 1
        }

        i = i + 1
    }

    i = 0
    count_i = json.SizeOfArray("product.images")
    for i < count_i {
        json.SetI(i)
        i = i + 1
    }

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

    // {
    //   "product": {
    //     "id": 1071559755,
    //     "title": "Burton Custom Freestyle 151",
    //     "body_html": "<strong>Good snowboard!<\/strong>",
    //     "vendor": "Burton",
    //     "product_type": "Snowboard",
    //     "created_at": "2017-09-22T14:48:54-04:00",
    //     "handle": "burton-custom-freestyle-151",
    //     "updated_at": "2017-09-22T14:48:55-04:00",
    //     "published_at": "2017-09-22T14:48:54-04:00",
    //     "template_suffix": null,
    //     "published_scope": "global",
    //     "tags": "",
    //     "variants": [
    //       {
    //         "id": 1070325225,
    //         "product_id": 1071559755,
    //         "title": "First",
    //         "price": "10.00",
    //         "sku": "123",
    //         "position": 1,
    //         "grams": 0,
    //         "inventory_policy": "deny",
    //         "compare_at_price": null,
    //         "fulfillment_service": "manual",
    //         "inventory_management": null,
    //         "option1": "First",
    //         "option2": null,
    //         "option3": null,
    //         "created_at": "2017-09-22T14:48:54-04:00",
    //         "updated_at": "2017-09-22T14:48:54-04:00",
    //         "taxable": true,
    //         "barcode": null,
    //         "image_id": null,
    //         "inventory_quantity": 1,
    //         "weight": 0.0,
    //         "weight_unit": "lb",
    //         "old_inventory_quantity": 1,
    //         "requires_shipping": true
    //       },
    //       {
    //         "id": 1070325226,
    //         "product_id": 1071559755,
    //         "title": "Second",
    //         "price": "20.00",
    //         "sku": "123",
    //         "position": 2,
    //         "grams": 0,
    //         "inventory_policy": "deny",
    //         "compare_at_price": null,
    //         "fulfillment_service": "manual",
    //         "inventory_management": null,
    //         "option1": "Second",
    //         "option2": null,
    //         "option3": null,
    //         "created_at": "2017-09-22T14:48:54-04:00",
    //         "updated_at": "2017-09-22T14:48:54-04:00",
    //         "taxable": true,
    //         "barcode": null,
    //         "image_id": null,
    //         "inventory_quantity": 1,
    //         "weight": 0.0,
    //         "weight_unit": "lb",
    //         "old_inventory_quantity": 1,
    //         "requires_shipping": true
    //       }
    //     ],
    //     "options": [
    //       {
    //         "id": 1022828915,
    //         "product_id": 1071559755,
    //         "name": "Title",
    //         "position": 1,
    //         "values": [
    //           "First",
    //           "Second"
    //         ]
    //       }
    //     ],
    //     "images": [
    //     ],
    //     "image": null
    //   }
    // }

    fmt.Println("Example Completed.")

    rest.DisposeRest()
    jsonReq.DisposeJsonObject()
    sbReq.DisposeStringBuilder()
    sbJson.DisposeStringBuilder()
    json.DisposeJsonObject()