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

Akeneo: Create New Attribute

See more HTTP Misc Examples

Demonstrates how to create a new attribute.

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.HttpResponse,
  Chilkat.JsonObject;

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

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  json: TJsonObject;
  url: string;
  resp: THttpResponse;

begin
  success := False;

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

  http := THttp.Create;

  //  Use your previously obtained access token.
  //  See Get Akeneo Access Token
  http.AuthToken := 'access_token';

  //  Build the following JSON to be sent in the request body:
  //  Use this online tool to generate the code from sample JSON: 
  //  Generate Code to Create JSON

  //  {
  //    "code": "release_date",
  //    "type": "pim_catalog_date",
  //    "group": "marketing",
  //    "unique": false,
  //    "useable_as_grid_filter": true,
  //    "allowed_extensions": [],
  //    "metric_family": null,
  //    "default_metric_unit": null,
  //    "reference_data_name": null,
  //    "available_locales": [],
  //    "max_characters": null,
  //    "validation_rule": null,
  //    "validation_regexp": null,
  //    "wysiwyg_enabled": null,
  //    "number_min": null,
  //    "number_max": null,
  //    "decimals_allowed": null,
  //    "negative_allowed": null,
  //    "date_min": "2017-06-28T08:00:00",
  //    "date_max": "2017-08-08T22:00:00",
  //    "max_file_size": null,
  //    "minimum_input_length": null,
  //    "sort_order": 1,
  //    "localizable": false,
  //    "scopable": false,
  //    "labels": {
  //      "en_US": "Sale date",
  //      "fr_FR": "Date des soldes"
  //    }
  //  }

  json := TJsonObject.Create;
  json.UpdateString('code','release_date');
  json.UpdateString('type','pim_catalog_date');
  json.UpdateString('group','marketing');
  json.UpdateBool('unique',False);
  json.UpdateBool('useable_as_grid_filter',True);
  json.UpdateNewArray('allowed_extensions');
  json.UpdateNull('metric_family');
  json.UpdateNull('default_metric_unit');
  json.UpdateNull('reference_data_name');
  json.UpdateNewArray('available_locales');
  json.UpdateNull('max_characters');
  json.UpdateNull('validation_rule');
  json.UpdateNull('validation_regexp');
  json.UpdateNull('wysiwyg_enabled');
  json.UpdateNull('number_min');
  json.UpdateNull('number_max');
  json.UpdateNull('decimals_allowed');
  json.UpdateNull('negative_allowed');
  json.UpdateString('date_min','2017-06-28T08:00:00');
  json.UpdateString('date_max','2017-08-08T22:00:00');
  json.UpdateNull('max_file_size');
  json.UpdateNull('minimum_input_length');
  json.UpdateNumber('sort_order','1');
  json.UpdateBool('localizable',False);
  json.UpdateBool('scopable',False);
  json.UpdateString('labels.en_US','Sale date');
  json.UpdateString('labels.fr_FR','Date des soldes');

  json.EmitCompact := False;
  //  Show the JSON to be sent..
  WriteLn(json.Emit());

  url := 'http://pim.my-akeneo-site.com/api/rest/v1/attributes';
  resp := THttpResponse.Create;
  success := http.HttpJson('POST',url,json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('Response Status Code: ' + resp.StatusCode);
  WriteLn('Response Body: ');
  WriteLn(resp.BodyStr);


  http.Free;
  json.Free;
  resp.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.