C# Shopify REST API Examples

 Nguồn: http://rest-examples.chilkat.io/shopify/csharp/chilkat_1.cshtml

Chilkat.Rest rest = new Chilkat.Rest();
bool success;

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

success = rest.Connect("chilkat.myshopify.com",443,true,true);
if (success != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

Chilkat.StringBuilder sbJson = new Chilkat.StringBuilder();
success = rest.FullRequestNoBodySb("GET","/admin/products.json",sbJson);
if (success != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

if (rest.ResponseStatusCode != 200) {
    Debug.WriteLine("Received error response code: " + Convert.ToString(rest.ResponseStatusCode));
    Debug.WriteLine("Response body:");
    Debug.WriteLine(sbJson.GetAsString());
    return;
}

Chilkat.JsonObject json = new Chilkat.JsonObject();
json.LoadSb(sbJson);

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

i = 0;
count_i = json.SizeOfArray("products");
while (i < count_i) {
    json.I = i;
    id = json.IntOf("products[i].id");
    title = json.StringOf("products[i].title");
    body_html = json.StringOf("products[i].body_html");
    vendor = json.StringOf("products[i].vendor");
    product_type = json.StringOf("products[i].product_type");
    created_at = json.StringOf("products[i].created_at");
    handle = json.StringOf("products[i].handle");
    updated_at = json.StringOf("products[i].updated_at");
    published_at = json.StringOf("products[i].published_at");
    template_suffix = json.IsNullOf("products[i].template_suffix");
    published_scope = json.StringOf("products[i].published_scope");
    tags = json.StringOf("products[i].tags");
    imageId = json.IntOf("products[i].image.id");
    imageProduct_id = json.IntOf("products[i].image.product_id");
    imagePosition = json.IntOf("products[i].image.position");
    imageCreated_at = json.StringOf("products[i].image.created_at");
    imageUpdated_at = json.StringOf("products[i].image.updated_at");
    imageWidth = json.IntOf("products[i].image.width");
    imageHeight = json.IntOf("products[i].image.height");
    imageSrc = json.StringOf("products[i].image.src");
    image = json.IsNullOf("products[i].image");
    j = 0;
    count_j = json.SizeOfArray("products[i].variants");
    while (j < count_j) {
        json.J = j;
        id = json.IntOf("products[i].variants[j].id");
        product_id = json.IntOf("products[i].variants[j].product_id");
        title = json.StringOf("products[i].variants[j].title");
        price = json.StringOf("products[i].variants[j].price");
        sku = json.StringOf("products[i].variants[j].sku");
        position = json.IntOf("products[i].variants[j].position");
        grams = json.IntOf("products[i].variants[j].grams");
        inventory_policy = json.StringOf("products[i].variants[j].inventory_policy");
        compare_at_price = json.IsNullOf("products[i].variants[j].compare_at_price");
        fulfillment_service = json.StringOf("products[i].variants[j].fulfillment_service");
        inventory_management = json.StringOf("products[i].variants[j].inventory_management");
        option1 = json.StringOf("products[i].variants[j].option1");
        option2 = json.IsNullOf("products[i].variants[j].option2");
        option3 = json.IsNullOf("products[i].variants[j].option3");
        created_at = json.StringOf("products[i].variants[j].created_at");
        updated_at = json.StringOf("products[i].variants[j].updated_at");
        taxable = json.BoolOf("products[i].variants[j].taxable");
        barcode = json.StringOf("products[i].variants[j].barcode");
        image_id = json.IntOf("products[i].variants[j].image_id");
        inventory_quantity = json.IntOf("products[i].variants[j].inventory_quantity");
        weight = json.IntOf("products[i].variants[j].weight");
        weight_unit = json.StringOf("products[i].variants[j].weight_unit");
        old_inventory_quantity = json.IntOf("products[i].variants[j].old_inventory_quantity");
        requires_shipping = json.BoolOf("products[i].variants[j].requires_shipping");
        j = j + 1;
    }

    j = 0;
    count_j = json.SizeOfArray("products[i].options");
    while (j < count_j) {
        json.J = j;
        id = json.IntOf("products[i].options[j].id");
        product_id = json.IntOf("products[i].options[j].product_id");
        name = json.StringOf("products[i].options[j].name");
        position = json.IntOf("products[i].options[j].position");
        k = 0;
        count_k = json.SizeOfArray("products[i].options[j].values");
        while (k < count_k) {
            json.K = k;
            strVal = json.StringOf("products[i].options[j].values[k]");
            k = k + 1;
        }

        j = j + 1;
    }

    j = 0;
    count_j = json.SizeOfArray("products[i].images");
    while (j < count_j) {
        json.J = j;
        id = json.IntOf("products[i].images[j].id");
        product_id = json.IntOf("products[i].images[j].product_id");
        position = json.IntOf("products[i].images[j].position");
        created_at = json.StringOf("products[i].images[j].created_at");
        updated_at = json.StringOf("products[i].images[j].updated_at");
        width = json.IntOf("products[i].images[j].width");
        height = json.IntOf("products[i].images[j].height");
        src = json.StringOf("products[i].images[j].src");
        k = 0;
        count_k = json.SizeOfArray("products[i].images[j].variant_ids");
        while (k < count_k) {
            json.K = k;
            intVal = json.IntOf("products[i].images[j].variant_ids[k]");
            k = k + 1;
        }

        j = j + 1;
    }

    j = 0;
    count_j = json.SizeOfArray("products[i].image.variant_ids");
    while (j < count_j) {
        json.J = j;
        j = j + 1;
    }

    i = i + 1;
}

Debug.WriteLine("Example Completed.");

Sample JSON Response Body

{
  "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
    }
  ]
}

hilkat.Rest rest = new Chilkat.Rest();
bool success;

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

success = rest.Connect("chilkat.myshopify.com",443,true,true);
if (success != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

//  The following code creates the JSON request body.
//  The JSON created by this code is shown below.
Chilkat.JsonObject jsonReq = new Chilkat.JsonObject();
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.images[0].attachment","R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");

Chilkat.StringBuilder sbReq = new Chilkat.StringBuilder();
jsonReq.EmitSb(sbReq);

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

Chilkat.StringBuilder sbJson = new Chilkat.StringBuilder();
success = rest.FullRequestSb("POST","/admin/products.json",sbReq,sbJson);
if (success != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

if (rest.ResponseStatusCode != 200) {
    Debug.WriteLine("Received error response code: " + Convert.ToString(rest.ResponseStatusCode));
    Debug.WriteLine("Response body:");
    Debug.WriteLine(sbJson.GetAsString());
    return;
}

Chilkat.JsonObject json = new Chilkat.JsonObject();
json.LoadSb(sbJson);

//  The following code parses the JSON response.
//  A sample JSON response is shown below the sample code.
int productId;
string productTitle;
string productBody_html;
string productVendor;
string productProduct_type;
string productCreated_at;
string productHandle;
string productUpdated_at;
string productPublished_at;
bool productTemplate_suffix;
string productPublished_scope;
string productTags;
int productImageId;
int productImageProduct_id;
int productImagePosition;
string productImageCreated_at;
string productImageUpdated_at;
int productImageWidth;
int productImageHeight;
string productImageSrc;
int i;
int count_i;
int id;
int product_id;
string title;
string price;
string sku;
int position;
int grams;
string inventory_policy;
bool compare_at_price;
string fulfillment_service;
bool inventory_management;
string option1;
bool option2;
bool option3;
string created_at;
string updated_at;
bool taxable;
bool barcode;
bool image_id;
int inventory_quantity;
int weight;
string weight_unit;
int old_inventory_quantity;
bool requires_shipping;
string name;
int j;
int count_j;
string strVal;
int width;
int height;
string src;

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");
productImageId = json.IntOf("product.image.id");
productImageProduct_id = json.IntOf("product.image.product_id");
productImagePosition = json.IntOf("product.image.position");
productImageCreated_at = json.StringOf("product.image.created_at");
productImageUpdated_at = json.StringOf("product.image.updated_at");
productImageWidth = json.IntOf("product.image.width");
productImageHeight = json.IntOf("product.image.height");
productImageSrc = json.StringOf("product.image.src");
i = 0;
count_i = json.SizeOfArray("product.variants");
while (i < count_i) {
    json.I = 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");
while (i < count_i) {
    json.I = 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");
    while (j < count_j) {
        json.J = j;
        strVal = json.StringOf("product.options[i].values[j]");
        j = j + 1;
    }

    i = i + 1;
}

i = 0;
count_i = json.SizeOfArray("product.images");
while (i < count_i) {
    json.I = i;
    id = json.IntOf("product.images[i].id");
    product_id = json.IntOf("product.images[i].product_id");
    position = json.IntOf("product.images[i].position");
    created_at = json.StringOf("product.images[i].created_at");
    updated_at = json.StringOf("product.images[i].updated_at");
    width = json.IntOf("product.images[i].width");
    height = json.IntOf("product.images[i].height");
    src = json.StringOf("product.images[i].src");
    j = 0;
    count_j = json.SizeOfArray("product.images[i].variant_ids");
    while (j < count_j) {
        json.J = j;
        j = j + 1;
    }

    i = i + 1;
}

i = 0;
count_i = json.SizeOfArray("image.product.variant_ids");
while (i < count_i) {
    json.I = i;
    i = i + 1;
}

Debug.WriteLine("Example Completed.");

Sample JSON Request Body

{
  "product": {
    "title": "Burton Custom Freestyle 151",
    "body_html": "<strong>Good snowboard!<\/strong>",
    "vendor": "Burton",
    "product_type": "Snowboard",
    "images": [
      {
        "attachment": "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
      }
    ]
  }
}

Sample JSON Response Body

{
  "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": [
      ]
    }
  }
}

Comments

Popular posts from this blog

Data Import Best Practices in Power BI

TRIGGER AUDIT TABLE SQL SERVER

Power BI Performance Tips and Techniques