Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

WiX Create Product

See more WiX Examples

Creates a new product.

Note: If you get a 403 error response, try refreshing the access token.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.StringBuilder,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  json: TJsonObject;
  resp: THttpResponse;
  sbResponseBody: TStringBuilder;
  jResp: TJsonObject;
  respStatusCode: Integer;
  optionType: string;
  name: string;
  j: Integer;
  count_j: Integer;
  value: string;
  description: string;
  inStock: Boolean;
  visible: Boolean;
  id: string;
  choicesSize: string;
  variantPriceDataCurrency: string;
  variantPriceDataPrice: string;
  variantPriceDataDiscountedPrice: string;
  variantPriceDataFormattedPrice: string;
  variantPriceDataFormattedDiscountedPrice: string;
  variantWeight: Integer;
  variantVisible: Boolean;
  productId: string;
  productName: string;
  productSlug: string;
  productVisible: Boolean;
  productProductType: string;
  productDescription: string;
  productStockTrackInventory: Boolean;
  productStockInStock: Boolean;
  productPriceCurrency: string;
  productPricePrice: string;
  productPriceDiscountedPrice: string;
  productPriceFormattedPrice: string;
  productPriceFormattedDiscountedPrice: string;
  productPriceDataCurrency: string;
  productPriceDataPrice: string;
  productPriceDataDiscountedPrice: string;
  productPriceDataFormattedPrice: string;
  productPriceDataFormattedDiscountedPrice: string;
  productManageVariants: Boolean;
  productProductPageUrlBase: string;
  productProductPageUrlPath: string;
  productNumericId: string;
  productInventoryItemId: string;
  productDiscountType: string;
  productDiscountValue: Integer;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  Implements the following CURL command:

  //  curl -X POST \
  //     'https://www.wixapis.com/stores/v1/products' \
  //      --data-binary '{
  //                       "product": {
  //                         "name": "T-shirt",
  //                         "productType": "physical",
  //                         "priceData": {
  //                           "price": 10.5
  //                         },
  //                         "description": "nice summer t-shirt",
  //                         "sku": "123df",
  //                         "visible": false,
  //                         "weight": 0.2,
  //                         "discount": {
  //                         	"type": "AMOUNT",
  //                         	"value": 1
  //                         },
  //                         "manageVariants": true,
  //                         "productOptions": [
  //                           {
  //                             "name": "Size",
  //                             "choices": [
  //                               {
  //                                 "value": "S",
  //                                 "description": "S"
  //                               },
  //                               {
  //                                 "value": "L",
  //                                 "description": "L"
  //                               }
  //                             ]
  //                           }
  //                         ]
  //                       }
  //                     }' \
  //     -H 'Content-Type: application/json' \
  //     -H 'Authorization: <AUTH>'

  //  Use the following online tool to generate HTTP code from a CURL command
  //  Convert a cURL Command to HTTP Source Code

  //  Use this online tool to generate code from sample JSON:
  //  Generate Code to Create JSON

  //  The following JSON is sent in the request body.

  //  {
  //    "product": {
  //      "name": "T-shirt",
  //      "productType": "physical",
  //      "priceData": {
  //        "price": 10.5
  //      },
  //      "description": "nice summer t-shirt",
  //      "sku": "123df",
  //      "visible": false,
  //      "weight": 0.2,
  //      "discount": {
  //        "type": "AMOUNT",
  //        "value": 1
  //      },
  //      "manageVariants": true,
  //      "productOptions": [
  //        {
  //          "name": "Size",
  //          "choices": [
  //            {
  //              "value": "S",
  //              "description": "S"
  //            },
  //            {
  //              "value": "L",
  //              "description": "L"
  //            }
  //          ]
  //        }
  //      ]
  //    }
  //  }

  json := TJsonObject.Create;
  json.UpdateString('product.name','T-shirt');
  json.UpdateString('product.productType','physical');
  json.UpdateNumber('product.priceData.price','10.5');
  json.UpdateString('product.description','nice summer t-shirt');
  json.UpdateString('product.sku','123df');
  json.UpdateBool('product.visible',False);
  json.UpdateNumber('product.weight','0.2');
  json.UpdateString('product.discount.type','AMOUNT');
  json.UpdateInt('product.discount.value',1);
  json.UpdateBool('product.manageVariants',True);
  json.UpdateString('product.productOptions[0].name','Size');
  json.UpdateString('product.productOptions[0].choices[0].value','S');
  json.UpdateString('product.productOptions[0].choices[0].description','S');
  json.UpdateString('product.productOptions[0].choices[1].value','L');
  json.UpdateString('product.productOptions[0].choices[1].description','L');

  http.AuthToken := 'ACCESS_TOKEN';

  resp := THttpResponse.Create;
  success := http.HttpJson('POST','https://www.wixapis.com/stores/v1/products',json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  sbResponseBody := TStringBuilder.Create;
  resp.GetBodySb(sbResponseBody);
  jResp := TJsonObject.Create;
  jResp.LoadSb(sbResponseBody);
  jResp.EmitCompact := False;

  WriteLn('Response Body:');
  WriteLn(jResp.Emit());

  respStatusCode := resp.StatusCode;
  WriteLn('Response Status Code = ' + respStatusCode);
  if (respStatusCode >= 400) then
    begin
      WriteLn('Response Header:');
      WriteLn(resp.Header);
      WriteLn('Failed.');
      Exit;
    end;

  //  Sample JSON response:
  //  (Sample code for parsing the JSON response is shown below)

  //  {
  //    "product": {
  //      "id": "e28e4ddd-6ed0-4098-a5e5-cf4bd9c4f7b5",
  //      "name": "T-shirt",
  //      "slug": "t-shirt-1",
  //      "visible": false,
  //      "productType": "physical",
  //      "description": "nice summer t-shirt",
  //      "stock": {
  //        "trackInventory": false,
  //        "inStock": true
  //      },
  //      "price": {
  //        "currency": "ILS",
  //        "price": 10.5,
  //        "discountedPrice": 9.5,
  //        "formatted": {
  //          "price": "10.50",
  //          "discountedPrice": "9.50"
  //        }
  //      },
  //      "priceData": {
  //        "currency": "ILS",
  //        "price": 10.5,
  //        "discountedPrice": 9.5,
  //        "formatted": {
  //          "price": "10.50",
  //          "discountedPrice": "9.50"
  //        }
  //      },
  //      "additionalInfoSections": [
  //      ],
  //      "ribbons": [
  //      ],
  //      "media": {
  //        "items": [
  //        ]
  //      },
  //      "customTextFields": [
  //      ],
  //      "manageVariants": true,
  //      "productOptions": [
  //        {
  //          "optionType": "drop_down",
  //          "name": "Size",
  //          "choices": [
  //            {
  //              "value": "S",
  //              "description": "S",
  //              "inStock": true,
  //              "visible": true
  //            },
  //            {
  //              "value": "L",
  //              "description": "L",
  //              "inStock": true,
  //              "visible": true
  //            }
  //          ]
  //        }
  //      ],
  //      "productPageUrl": {
  //        "base": "https://www.itsjusttooeasy123.com/",
  //        "path": "/product-page/t-shirt-1"
  //      },
  //      "numericId": "1567588455405000",
  //      "inventoryItemId": "1d71b222-912f-bf67-5a1a-30b4263b084a",
  //      "discount": {
  //        "type": "AMOUNT",
  //        "value": 1
  //      },
  //      "collectionIds": [
  //      ],
  //      "variants": [
  //        {
  //          "id": "00000000-0000-0001-0005-93fc95e0514a",
  //          "choices": {
  //            "Size": "S"
  //          },
  //          "variant": {
  //            "priceData": {
  //              "currency": "ILS",
  //              "price": 10.5,
  //              "discountedPrice": 9.5,
  //              "formatted": {
  //                "price": "10.50",
  //                "discountedPrice": "9.50"
  //              }
  //            },
  //            "weight": 10,
  //            "visible": true
  //          }
  //        },
  //        {
  //          "id": "00000000-0000-0002-0005-93fc95e0514a",
  //          "choices": {
  //            "Size": "L"
  //          },
  //          "variant": {
  //            "priceData": {
  //              "currency": "ILS",
  //              "price": 10.5,
  //              "discountedPrice": 9.5,
  //              "formatted": {
  //                "price": "10.50",
  //                "discountedPrice": "9.50"
  //              }
  //            },
  //            "visible": true
  //          }
  //        }
  //      ]
  //    }
  //  }

  //  Sample code for parsing the JSON response...
  //  Use the following online tool to generate parsing code from sample JSON:
  //  Generate Parsing Code from JSON

  productId := jResp.StringOf('product.id');
  productName := jResp.StringOf('product.name');
  productSlug := jResp.StringOf('product.slug');
  productVisible := jResp.BoolOf('product.visible');
  productProductType := jResp.StringOf('product.productType');
  productDescription := jResp.StringOf('product.description');
  productStockTrackInventory := jResp.BoolOf('product.stock.trackInventory');
  productStockInStock := jResp.BoolOf('product.stock.inStock');
  productPriceCurrency := jResp.StringOf('product.price.currency');
  productPricePrice := jResp.StringOf('product.price.price');
  productPriceDiscountedPrice := jResp.StringOf('product.price.discountedPrice');
  productPriceFormattedPrice := jResp.StringOf('product.price.formatted.price');
  productPriceFormattedDiscountedPrice := jResp.StringOf('product.price.formatted.discountedPrice');
  productPriceDataCurrency := jResp.StringOf('product.priceData.currency');
  productPriceDataPrice := jResp.StringOf('product.priceData.price');
  productPriceDataDiscountedPrice := jResp.StringOf('product.priceData.discountedPrice');
  productPriceDataFormattedPrice := jResp.StringOf('product.priceData.formatted.price');
  productPriceDataFormattedDiscountedPrice := jResp.StringOf('product.priceData.formatted.discountedPrice');
  productManageVariants := jResp.BoolOf('product.manageVariants');
  productProductPageUrlBase := jResp.StringOf('product.productPageUrl.base');
  productProductPageUrlPath := jResp.StringOf('product.productPageUrl.path');
  productNumericId := jResp.StringOf('product.numericId');
  productInventoryItemId := jResp.StringOf('product.inventoryItemId');
  productDiscountType := jResp.StringOf('product.discount.type');
  productDiscountValue := jResp.IntOf('product.discount.value');
  i := 0;
  count_i := jResp.SizeOfArray('product.additionalInfoSections');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.ribbons');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.media.items');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.customTextFields');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.productOptions');
  while i < count_i do
    begin
      jResp.I := i;
      optionType := jResp.StringOf('product.productOptions[i].optionType');
      name := jResp.StringOf('product.productOptions[i].name');
      j := 0;
      count_j := jResp.SizeOfArray('product.productOptions[i].choices');
      while j < count_j do
        begin
          jResp.J := j;
          value := jResp.StringOf('product.productOptions[i].choices[j].value');
          description := jResp.StringOf('product.productOptions[i].choices[j].description');
          inStock := jResp.BoolOf('product.productOptions[i].choices[j].inStock');
          visible := jResp.BoolOf('product.productOptions[i].choices[j].visible');
          j := j + 1;
        end;

      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.collectionIds');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('product.variants');
  while i < count_i do
    begin
      jResp.I := i;
      id := jResp.StringOf('product.variants[i].id');
      choicesSize := jResp.StringOf('product.variants[i].choices.Size');
      variantPriceDataCurrency := jResp.StringOf('product.variants[i].variant.priceData.currency');
      variantPriceDataPrice := jResp.StringOf('product.variants[i].variant.priceData.price');
      variantPriceDataDiscountedPrice := jResp.StringOf('product.variants[i].variant.priceData.discountedPrice');
      variantPriceDataFormattedPrice := jResp.StringOf('product.variants[i].variant.priceData.formatted.price');
      variantPriceDataFormattedDiscountedPrice := jResp.StringOf('product.variants[i].variant.priceData.formatted.discountedPrice');
      variantWeight := jResp.IntOf('product.variants[i].variant.weight');
      variantVisible := jResp.BoolOf('product.variants[i].variant.visible');
      i := i + 1;
    end;



  http.Free;
  json.Free;
  resp.Free;
  sbResponseBody.Free;
  jResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.