Swift
Swift
Shopify Create New Product
See more Shopify Examples
Create a new productChilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
let rest = CkoRest()!
rest.setAuthBasic(username: "SHOPIFY_PRIVATE_API_KEY", password: "SHOPIFY_PRIVATE_API_SECRET_KEY")
success = rest.connect(hostname: "chilkat.myshopify.com", port: 443, tls: true, autoReconnect: true)
if success != true {
print("\(rest.lastErrorText!)")
return
}
// The following code creates the JSON request body.
// The JSON created by this code is shown below.
let jsonReq = CkoJsonObject()!
jsonReq.updateString(jsonPath: "product.title", value: "Burton Custom Freestyle 151")
jsonReq.updateString(jsonPath: "product.body_html", value: "<strong>Good snowboard!</strong>")
jsonReq.updateString(jsonPath: "product.vendor", value: "Burton")
jsonReq.updateString(jsonPath: "product.product_type", value: "Snowboard")
jsonReq.updateString(jsonPath: "product.images[0].attachment", value: "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")
// 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",
// "images": [
// {
// "attachment": "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
// }
// ]
// }
// }
let sbReq = CkoStringBuilder()!
jsonReq.emitSb(sb: sbReq)
rest.addHeader(name: "Content-Type", value: "application/json")
let sbJson = CkoStringBuilder()!
success = rest.fullRequestSb(httpVerb: "POST", uriPath: "/admin/products.json", requestBody: sbReq, responseBody: sbJson)
if success != true {
print("\(rest.lastErrorText!)")
return
}
if rest.responseStatusCode.intValue != 201 {
print("Received error response code: \(rest.responseStatusCode.intValue)")
print("Response body:")
print("\(sbJson.getAsString()!)")
return
}
let json = CkoJsonObject()!
json.loadSb(sb: sbJson)
// The following code parses the JSON response.
// A sample JSON response is shown below the sample code.
var productId: Int
var productTitle: String?
var productBody_html: String?
var productVendor: String?
var productProduct_type: String?
var productCreated_at: String?
var productHandle: String?
var productUpdated_at: String?
var productPublished_at: String?
var productTemplate_suffix: Bool
var productPublished_scope: String?
var productTags: String?
var productImageId: Int
var productImageProduct_id: Int
var productImagePosition: Int
var productImageCreated_at: String?
var productImageUpdated_at: String?
var productImageWidth: Int
var productImageHeight: Int
var productImageSrc: String?
var i: Int
var count_i: Int
var id: Int
var product_id: Int
var title: String?
var price: String?
var sku: String?
var position: Int
var grams: Int
var inventory_policy: String?
var compare_at_price: Bool
var fulfillment_service: String?
var inventory_management: Bool
var option1: String?
var option2: Bool
var option3: Bool
var created_at: String?
var updated_at: String?
var taxable: Bool
var barcode: Bool
var image_id: Bool
var inventory_quantity: Int
var weight: Int
var weight_unit: String?
var old_inventory_quantity: Int
var requires_shipping: Bool
var name: String?
var j: Int
var count_j: Int
var strVal: String?
var width: Int
var height: Int
var src: String?
productId = json.int(of: "product.id").intValue
productTitle = json.string(of: "product.title")
productBody_html = json.string(of: "product.body_html")
productVendor = json.string(of: "product.vendor")
productProduct_type = json.string(of: "product.product_type")
productCreated_at = json.string(of: "product.created_at")
productHandle = json.string(of: "product.handle")
productUpdated_at = json.string(of: "product.updated_at")
productPublished_at = json.string(of: "product.published_at")
productTemplate_suffix = json.isNull(of: "product.template_suffix")
productPublished_scope = json.string(of: "product.published_scope")
productTags = json.string(of: "product.tags")
productImageId = json.int(of: "product.image.id").intValue
productImageProduct_id = json.int(of: "product.image.product_id").intValue
productImagePosition = json.int(of: "product.image.position").intValue
productImageCreated_at = json.string(of: "product.image.created_at")
productImageUpdated_at = json.string(of: "product.image.updated_at")
productImageWidth = json.int(of: "product.image.width").intValue
productImageHeight = json.int(of: "product.image.height").intValue
productImageSrc = json.string(of: "product.image.src")
i = 0
count_i = json.size(ofArray: "product.variants").intValue
while i < count_i {
json.i = i
id = json.int(of: "product.variants[i].id").intValue
product_id = json.int(of: "product.variants[i].product_id").intValue
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").intValue
grams = json.int(of: "product.variants[i].grams").intValue
inventory_policy = json.string(of: "product.variants[i].inventory_policy")
compare_at_price = json.isNull(of: "product.variants[i].compare_at_price")
fulfillment_service = json.string(of: "product.variants[i].fulfillment_service")
inventory_management = json.isNull(of: "product.variants[i].inventory_management")
option1 = json.string(of: "product.variants[i].option1")
option2 = json.isNull(of: "product.variants[i].option2")
option3 = json.isNull(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.isNull(of: "product.variants[i].barcode")
image_id = json.isNull(of: "product.variants[i].image_id")
inventory_quantity = json.int(of: "product.variants[i].inventory_quantity").intValue
weight = json.int(of: "product.variants[i].weight").intValue
weight_unit = json.string(of: "product.variants[i].weight_unit")
old_inventory_quantity = json.int(of: "product.variants[i].old_inventory_quantity").intValue
requires_shipping = json.bool(of: "product.variants[i].requires_shipping")
i = i + 1
}
i = 0
count_i = json.size(ofArray: "product.options").intValue
while i < count_i {
json.i = i
id = json.int(of: "product.options[i].id").intValue
product_id = json.int(of: "product.options[i].product_id").intValue
name = json.string(of: "product.options[i].name")
position = json.int(of: "product.options[i].position").intValue
j = 0
count_j = json.size(ofArray: "product.options[i].values").intValue
while j < count_j {
json.j = j
strVal = json.string(of: "product.options[i].values[j]")
j = j + 1
}
i = i + 1
}
i = 0
count_i = json.size(ofArray: "product.images").intValue
while i < count_i {
json.i = i
id = json.int(of: "product.images[i].id").intValue
product_id = json.int(of: "product.images[i].product_id").intValue
position = json.int(of: "product.images[i].position").intValue
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").intValue
height = json.int(of: "product.images[i].height").intValue
src = json.string(of: "product.images[i].src")
j = 0
count_j = json.size(ofArray: "product.images[i].variant_ids").intValue
while j < count_j {
json.j = j
j = j + 1
}
i = i + 1
}
i = 0
count_i = json.size(ofArray: "image.product.variant_ids").intValue
while i < count_i {
json.i = i
i = i + 1
}
// A sample JSON response body that is parsed by the above code:
// {
// "product": {
// "id": 1071559747,
// "title": "Burton Custom Freestyle 151",
// "body_html": "<strong>Good snowboard!<\/strong>",
// "vendor": "Burton",
// "product_type": "Snowboard",
// "created_at": "2017-09-22T14:48:43-04:00",
// "handle": "burton-custom-freestyle-151",
// "updated_at": "2017-09-22T14:48:44-04:00",
// "published_at": "2017-09-22T14:48:43-04:00",
// "template_suffix": null,
// "published_scope": "global",
// "tags": "",
// "variants": [
// {
// "id": 1070325218,
// "product_id": 1071559747,
// "title": "Default Title",
// "price": "0.00",
// "sku": "",
// "position": 1,
// "grams": 0,
// "inventory_policy": "deny",
// "compare_at_price": null,
// "fulfillment_service": "manual",
// "inventory_management": null,
// "option1": "Default Title",
// "option2": null,
// "option3": null,
// "created_at": "2017-09-22T14:48:44-04:00",
// "updated_at": "2017-09-22T14:48:44-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": 1022828903,
// "product_id": 1071559747,
// "name": "Title",
// "position": 1,
// "values": [
// "Default Title"
// ]
// }
// ],
// "images": [
// {
// "id": 1001473945,
// "product_id": 1071559747,
// "position": 1,
// "created_at": "2017-09-22T14:48:43-04:00",
// "updated_at": "2017-09-22T14:48:43-04:00",
// "width": 1,
// "height": 1,
// "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/df3e567d6f16d040326c7a0ea29a4f41.gif?v=1506106123",
// "variant_ids": [
// ]
// }
// ],
// "image": {
// "id": 1001473945,
// "product_id": 1071559747,
// "position": 1,
// "created_at": "2017-09-22T14:48:43-04:00",
// "updated_at": "2017-09-22T14:48:43-04:00",
// "width": 1,
// "height": 1,
// "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/df3e567d6f16d040326c7a0ea29a4f41.gif?v=1506106123",
// "variant_ids": [
// ]
// }
// }
// }
print("Example Completed.")
}