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

Lightspeed - Get All Products

See more Lightspeed Examples

Retrieve a list of all product objects from this shop.

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.JsonObject;

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

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  sbResponseBody: TStringBuilder;
  jResp: TJsonObject;
  respStatusCode: Integer;
  id: Integer;
  sortOrder: Integer;
  name: string;
  j: Integer;
  count_j: Integer;
  productId: Integer;
  productCreatedAt: string;
  productUpdatedAt: string;
  productIsVisible: Boolean;
  productVisibility: string;
  productHasMatrix: Boolean;
  productData01: string;
  productData02: string;
  productData03: string;
  productUrl: string;
  productTitle: string;
  productFulltitle: string;
  productDescription: string;
  productContent: string;
  productSetId: Integer;
  productSetCreatedAt: string;
  productSetUpdatedAt: string;
  productSetName: string;
  productBrandResourceId: Integer;
  productBrandResourceUrl: string;
  productBrandResourceLink: string;
  productCategoriesResourceId: Boolean;
  productCategoriesResourceUrl: string;
  productCategoriesResourceLink: string;
  productDeliverydateResourceId: Integer;
  productDeliverydateResourceUrl: string;
  productDeliverydateResourceLink: string;
  productImageCreatedAt: string;
  productImageUpdatedAt: string;
  productImageExtension: string;
  productImageSize: Integer;
  productImageTitle: string;
  productImageThumb: string;
  productImageSrc: string;
  productImagesResourceId: Boolean;
  productImagesResourceUrl: string;
  productImagesResourceLink: string;
  productRelationsResourceId: Boolean;
  productRelationsResourceUrl: string;
  productRelationsResourceLink: string;
  productMetafieldsResourceId: Boolean;
  productMetafieldsResourceUrl: string;
  productMetafieldsResourceLink: string;
  productReviewsResourceId: Boolean;
  productReviewsResourceUrl: string;
  productReviewsResourceLink: string;
  productType: Boolean;
  productAttributesResourceId: Boolean;
  productAttributesResourceUrl: string;
  productAttributesResourceLink: string;
  productSupplierResourceId: Integer;
  productSupplierResourceUrl: string;
  productSupplierResourceLink: string;
  productTagsResourceId: Boolean;
  productTagsResourceUrl: string;
  productTagsResourceLink: string;
  productVariantsResourceId: Boolean;
  productVariantsResourceUrl: string;
  productVariantsResourceLink: string;
  productMovementsResourceId: Boolean;
  productMovementsResourceUrl: string;
  productMovementsResourceLink: string;
  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 https://api.shoplightspeed.com/en/products.json \
  //    -u {key}:{secret}

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

  http.Login := 'API_KEY';
  http.Password := 'API_SECRET';

  //  Use the correct cluster for your shop.  Here are the choices:
  //  eu1 https://api.webshopapp.com/en/
  //  us1 https://api.shoplightspeed.com/en/
  sbResponseBody := TStringBuilder.Create;
  success := http.QuickGetSb('https://api.webshopapp.com/en/products.json',sbResponseBody);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

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

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

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

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

  //  {
  //    "product": {
  //      "id": 20967267,
  //      "createdAt": "2019-05-28T15:25:46+00:00",
  //      "updatedAt": "2019-05-28T17:16:16+00:00",
  //      "isVisible": true,
  //      "visibility": "visible",
  //      "hasMatrix": false,
  //      "data01": "",
  //      "data02": "",
  //      "data03": "",
  //      "url": "lookin-sharp-tee",
  //      "title": "Lookin' Sharp T-Shirt",
  //      "fulltitle": "Lookin' Sharp T-Shirt",
  //      "description": "Description of the Lookin' Sharp T-Shirt",
  //      "content": "<p>Long Description of the Lookin' Sharp T-Shirt</p>",
  //      "set": {
  //        "id": 2785,
  //        "createdAt": "2019-05-28T15:32:12+00:00",
  //        "updatedAt": "2019-05-28T15:42:59+00:00",
  //        "name": "Shirts",
  //        "options": [
  //          {
  //            "id": 4626,
  //            "sortOrder": 1,
  //            "name": "Size",
  //            "values": [
  //              {
  //                "id": 14045,
  //                "sortOrder": 1,
  //                "name": "S"
  //              },
  //              {
  //                "id": 14046,
  //                "sortOrder": 2,
  //                "name": "M"
  //              },
  //              {
  //                "id": 14047,
  //                "sortOrder": 3,
  //                "name": "L"
  //              }
  //            ]
  //          }
  //        ]
  //      },
  //      "brand": {
  //        "resource": {
  //          "id": 1171202,
  //          "url": "brands/1171202",
  //          "link": "https://api.shoplightspeed.com/us/brands/1171202.json"
  //        }
  //      },
  //      "categories": {
  //        "resource": {
  //          "id": false,
  //          "url": "categories/products?product=20967267",
  //          "link": "https://api.shoplightspeed.com/us/categories/products.json?product=20967267"
  //        }
  //      },
  //      "deliverydate": {
  //        "resource": {
  //          "id": 6488,
  //          "url": "deliverydates/6488",
  //          "link": "https://api.shoplightspeed.com/us/deliverydates/6488.json"
  //        }
  //      },
  //      "image": {
  //        "createdAt": "2019-05-28T15:25:46+00:00",
  //        "updatedAt": "2019-05-28T15:25:46+00:00",
  //        "extension": "jpg",
  //        "size": 86649,
  //        "title": "17x35x-jcfk-88na-udwd-5hck-z63u-img-16-e0aa4f57-f4",
  //        "thumb": "https://cdn.shoplightspeed.com/shops/000001/files/14119398/50x50x2/17x35x-jcfk-88na-udwd-5hck-z63u-img-16-e0aa4f57-f4.jpg",
  //        "src": "https://cdn.shoplightspeed.com/shops/000001/files/14119398/17x35x-jcfk-88na-udwd-5hck-z63u-img-16-e0aa4f57-f4.jpg"
  //      },
  //      "images": {
  //        "resource": {
  //          "id": false,
  //          "url": "products/20967267/images",
  //          "link": "https://api.shoplightspeed.com/us/products/20967267/images.json"
  //        }
  //      },
  //      "relations": {
  //        "resource": {
  //          "id": false,
  //          "url": "products/20967267/relations",
  //          "link": "https://api.shoplightspeed.com/us/products/20967267/relations.json"
  //        }
  //      },
  //      "metafields": {
  //        "resource": {
  //          "id": false,
  //          "url": "products/20967267/metafields",
  //          "link": "https://api.shoplightspeed.com/us/products/20967267/metafields.json"
  //        }
  //      },
  //      "reviews": {
  //        "resource": {
  //          "id": false,
  //          "url": "reviews?product=20967267",
  //          "link": "https://api.shoplightspeed.com/us/reviews.json?product=20967267"
  //        }
  //      },
  //      "type": false,
  //      "attributes": {
  //        "resource": {
  //          "id": false,
  //          "url": "products/20967267/attributes",
  //          "link": "https://api.shoplightspeed.com/us/products/20967267/attributes.json"
  //        }
  //      },
  //      "supplier": {
  //        "resource": {
  //          "id": 78794,
  //          "url": "suppliers/78794",
  //          "link": "https://api.shoplightspeed.com/us/suppliers/78794.json"
  //        }
  //      },
  //      "tags": {
  //        "resource": {
  //          "id": false,
  //          "url": "tags/products?product=20967267",
  //          "link": "https://api.shoplightspeed.com/us/tags/products.json?product=20967267"
  //        }
  //      },
  //      "variants": {
  //        "resource": {
  //          "id": false,
  //          "url": "variants?product=20967267",
  //          "link": "https://api.shoplightspeed.com/us/variants.json?product=20967267"
  //        }
  //      },
  //      "movements": {
  //        "resource": {
  //          "id": false,
  //          "url": "variants/movements?product=20967267",
  //          "link": "https://api.shoplightspeed.com/us/variants/movements.json?product=20967267"
  //        }
  //      }
  //    }
  //  }

  //  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.IntOf('product.id');
  productCreatedAt := jResp.StringOf('product.createdAt');
  productUpdatedAt := jResp.StringOf('product.updatedAt');
  productIsVisible := jResp.BoolOf('product.isVisible');
  productVisibility := jResp.StringOf('product.visibility');
  productHasMatrix := jResp.BoolOf('product.hasMatrix');
  productData01 := jResp.StringOf('product.data01');
  productData02 := jResp.StringOf('product.data02');
  productData03 := jResp.StringOf('product.data03');
  productUrl := jResp.StringOf('product.url');
  productTitle := jResp.StringOf('product.title');
  productFulltitle := jResp.StringOf('product.fulltitle');
  productDescription := jResp.StringOf('product.description');
  productContent := jResp.StringOf('product.content');
  productSetId := jResp.IntOf('product.set.id');
  productSetCreatedAt := jResp.StringOf('product.set.createdAt');
  productSetUpdatedAt := jResp.StringOf('product.set.updatedAt');
  productSetName := jResp.StringOf('product.set.name');
  productBrandResourceId := jResp.IntOf('product.brand.resource.id');
  productBrandResourceUrl := jResp.StringOf('product.brand.resource.url');
  productBrandResourceLink := jResp.StringOf('product.brand.resource.link');
  productCategoriesResourceId := jResp.BoolOf('product.categories.resource.id');
  productCategoriesResourceUrl := jResp.StringOf('product.categories.resource.url');
  productCategoriesResourceLink := jResp.StringOf('product.categories.resource.link');
  productDeliverydateResourceId := jResp.IntOf('product.deliverydate.resource.id');
  productDeliverydateResourceUrl := jResp.StringOf('product.deliverydate.resource.url');
  productDeliverydateResourceLink := jResp.StringOf('product.deliverydate.resource.link');
  productImageCreatedAt := jResp.StringOf('product.image.createdAt');
  productImageUpdatedAt := jResp.StringOf('product.image.updatedAt');
  productImageExtension := jResp.StringOf('product.image.extension');
  productImageSize := jResp.IntOf('product.image.size');
  productImageTitle := jResp.StringOf('product.image.title');
  productImageThumb := jResp.StringOf('product.image.thumb');
  productImageSrc := jResp.StringOf('product.image.src');
  productImagesResourceId := jResp.BoolOf('product.images.resource.id');
  productImagesResourceUrl := jResp.StringOf('product.images.resource.url');
  productImagesResourceLink := jResp.StringOf('product.images.resource.link');
  productRelationsResourceId := jResp.BoolOf('product.relations.resource.id');
  productRelationsResourceUrl := jResp.StringOf('product.relations.resource.url');
  productRelationsResourceLink := jResp.StringOf('product.relations.resource.link');
  productMetafieldsResourceId := jResp.BoolOf('product.metafields.resource.id');
  productMetafieldsResourceUrl := jResp.StringOf('product.metafields.resource.url');
  productMetafieldsResourceLink := jResp.StringOf('product.metafields.resource.link');
  productReviewsResourceId := jResp.BoolOf('product.reviews.resource.id');
  productReviewsResourceUrl := jResp.StringOf('product.reviews.resource.url');
  productReviewsResourceLink := jResp.StringOf('product.reviews.resource.link');
  productType := jResp.BoolOf('product.type');
  productAttributesResourceId := jResp.BoolOf('product.attributes.resource.id');
  productAttributesResourceUrl := jResp.StringOf('product.attributes.resource.url');
  productAttributesResourceLink := jResp.StringOf('product.attributes.resource.link');
  productSupplierResourceId := jResp.IntOf('product.supplier.resource.id');
  productSupplierResourceUrl := jResp.StringOf('product.supplier.resource.url');
  productSupplierResourceLink := jResp.StringOf('product.supplier.resource.link');
  productTagsResourceId := jResp.BoolOf('product.tags.resource.id');
  productTagsResourceUrl := jResp.StringOf('product.tags.resource.url');
  productTagsResourceLink := jResp.StringOf('product.tags.resource.link');
  productVariantsResourceId := jResp.BoolOf('product.variants.resource.id');
  productVariantsResourceUrl := jResp.StringOf('product.variants.resource.url');
  productVariantsResourceLink := jResp.StringOf('product.variants.resource.link');
  productMovementsResourceId := jResp.BoolOf('product.movements.resource.id');
  productMovementsResourceUrl := jResp.StringOf('product.movements.resource.url');
  productMovementsResourceLink := jResp.StringOf('product.movements.resource.link');
  i := 0;
  count_i := jResp.SizeOfArray('product.set.options');
  while i < count_i do
    begin
      jResp.I := i;
      id := jResp.IntOf('product.set.options[i].id');
      sortOrder := jResp.IntOf('product.set.options[i].sortOrder');
      name := jResp.StringOf('product.set.options[i].name');
      j := 0;
      count_j := jResp.SizeOfArray('product.set.options[i].values');
      while j < count_j do
        begin
          jResp.J := j;
          id := jResp.IntOf('product.set.options[i].values[j].id');
          sortOrder := jResp.IntOf('product.set.options[i].values[j].sortOrder');
          name := jResp.StringOf('product.set.options[i].values[j].name');
          j := j + 1;
        end;

      i := i + 1;
    end;



  http.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.