Browse Source

# revisions: 30794,30828,30829,30830,30831,30832,30859,30867,31019,32725,33294,33774,33775,33776,33777

git-svn-id: branches/fixes_3_0@33785 -
marco 9 years ago
parent
commit
2f1caeb364
100 changed files with 88522 additions and 34786 deletions
  1. 38 6
      .gitattributes
  2. 1 1
      packages/googleapi/Makefile
  3. 1 1
      packages/googleapi/Makefile.fpc
  4. 79 0
      packages/googleapi/README.txt
  5. 0 5
      packages/googleapi/examples/generator/googleapiconv.lpi
  6. 91 38
      packages/googleapi/examples/generator/googleapiconv.pp
  7. 38 7
      packages/googleapi/fpmake.pp
  8. 493 0
      packages/googleapi/src/googleacceleratedmobilepageurl.pp
  9. 624 345
      packages/googleapi/src/googleadexchangebuyer.pp
  10. 1252 0
      packages/googleapi/src/googleadexchangebuyer2.pp
  11. 469 492
      packages/googleapi/src/googleadexchangeseller.pp
  12. 368 412
      packages/googleapi/src/googleadmin.pp
  13. 327 471
      packages/googleapi/src/googleadsense.pp
  14. 409 461
      packages/googleapi/src/googleadsensehost.pp
  15. 340 476
      packages/googleapi/src/googleanalytics.pp
  16. 3021 0
      packages/googleapi/src/googleanalyticsreporting.pp
  17. 653 448
      packages/googleapi/src/googleandroidenterprise.pp
  18. 309 391
      packages/googleapi/src/googleandroidpublisher.pp
  19. 4370 0
      packages/googleapi/src/googleappengine.pp
  20. 237 327
      packages/googleapi/src/googleappsactivity.pp
  21. 69 99
      packages/googleapi/src/googleappstate.pp
  22. 239 222
      packages/googleapi/src/googleaudit.pp
  23. 313 387
      packages/googleapi/src/googleautoscaler.pp
  24. 14 1
      packages/googleapi/src/googlebase.pp
  25. 498 315
      packages/googleapi/src/googlebigquery.pp
  26. 347 430
      packages/googleapi/src/googleblogger.pp
  27. 351 432
      packages/googleapi/src/googlebooks.pp
  28. 311 525
      packages/googleapi/src/googlecalendar.pp
  29. 340 634
      packages/googleapi/src/googlecivicinfo.pp
  30. 4445 0
      packages/googleapi/src/googleclassroom.pp
  31. 10 3
      packages/googleapi/src/googleclient.pp
  32. 776 0
      packages/googleapi/src/googlecloudbilling.pp
  33. 1492 0
      packages/googleapi/src/googlecloudbuild.pp
  34. 2920 0
      packages/googleapi/src/googleclouddebugger.pp
  35. 1494 0
      packages/googleapi/src/googleclouderrorreporting.pp
  36. 97 174
      packages/googleapi/src/googlecloudlatencytest.pp
  37. 247 332
      packages/googleapi/src/googlecloudmonitoring.pp
  38. 1015 0
      packages/googleapi/src/googlecloudresourcemanager.pp
  39. 777 0
      packages/googleapi/src/googlecloudtrace.pp
  40. 3420 0
      packages/googleapi/src/googleclouduseraccounts.pp
  41. 477 521
      packages/googleapi/src/googlecompute.pp
  42. 347 480
      packages/googleapi/src/googlecomputeaccounts.pp
  43. 1716 0
      packages/googleapi/src/googleconsumersurveys.pp
  44. 490 247
      packages/googleapi/src/googlecontainer.pp
  45. 406 476
      packages/googleapi/src/googlecontent.pp
  46. 274 400
      packages/googleapi/src/googlecoordinate.pp
  47. 387 420
      packages/googleapi/src/googlecustomsearch.pp
  48. 520 397
      packages/googleapi/src/googledataflow.pp
  49. 4471 0
      packages/googleapi/src/googledataproc.pp
  50. 588 1227
      packages/googleapi/src/googledatastore.pp
  51. 596 249
      packages/googleapi/src/googledeploymentmanager.pp
  52. 356 584
      packages/googleapi/src/googledfareporting.pp
  53. 378 570
      packages/googleapi/src/googlediscovery.pp
  54. 616 150
      packages/googleapi/src/googlediscoverytopas.pp
  55. 241 317
      packages/googleapi/src/googledns.pp
  56. 314 356
      packages/googleapi/src/googledoubleclickbidmanager.pp
  57. 363 452
      packages/googleapi/src/googledoubleclicksearch.pp
  58. 933 2058
      packages/googleapi/src/googledrive.pp
  59. 1244 0
      packages/googleapi/src/googlefirebaserules.pp
  60. 922 286
      packages/googleapi/src/googlefitness.pp
  61. 153 184
      packages/googleapi/src/googlefreebase.pp
  62. 329 498
      packages/googleapi/src/googlefusiontables.pp
  63. 344 457
      packages/googleapi/src/googlegames.pp
  64. 216 259
      packages/googleapi/src/googlegamesconfiguration.pp
  65. 256 316
      packages/googleapi/src/googlegamesmanagement.pp
  66. 400 605
      packages/googleapi/src/googlegan.pp
  67. 430 487
      packages/googleapi/src/googlegenomics.pp
  68. 613 513
      packages/googleapi/src/googlegmail.pp
  69. 13 38
      packages/googleapi/src/googlegroupsmigration.pp
  70. 129 141
      packages/googleapi/src/googlegroupssettings.pp
  71. 1937 0
      packages/googleapi/src/googleiam.pp
  72. 516 278
      packages/googleapi/src/googleidentitytoolkit.pp
  73. 370 0
      packages/googleapi/src/googlekgsearch.pp
  74. 72 102
      packages/googleapi/src/googlelicensing.pp
  75. 618 277
      packages/googleapi/src/googlelogging.pp
  76. 247 406
      packages/googleapi/src/googlemanager.pp
  77. 256 437
      packages/googleapi/src/googlemapsengine.pp
  78. 337 575
      packages/googleapi/src/googlemirror.pp
  79. 3702 0
      packages/googleapi/src/googlemonitoring.pp
  80. 374 163
      packages/googleapi/src/googleoauth2.pp
  81. 341 308
      packages/googleapi/src/googlepagespeedonline.pp
  82. 2690 0
      packages/googleapi/src/googlepartners.pp
  83. 3517 0
      packages/googleapi/src/googlepeople.pp
  84. 3570 0
      packages/googleapi/src/googleplaymoviespartner.pp
  85. 586 847
      packages/googleapi/src/googleplus.pp
  86. 0 6011
      packages/googleapi/src/googleplusDomains.pp
  87. 6386 0
      packages/googleapi/src/googleplusdomains.pp
  88. 358 411
      packages/googleapi/src/googleprediction.pp
  89. 2506 0
      packages/googleapi/src/googleproximitybeacon.pp
  90. 453 306
      packages/googleapi/src/googlepubsub.pp
  91. 0 3028
      packages/googleapi/src/googleqpxExpress.pp
  92. 2777 0
      packages/googleapi/src/googleqpxexpress.pp
  93. 313 360
      packages/googleapi/src/googlereplicapool.pp
  94. 372 340
      packages/googleapi/src/googlereplicapoolupdater.pp
  95. 383 340
      packages/googleapi/src/googlereseller.pp
  96. 306 432
      packages/googleapi/src/googleresourceviews.pp
  97. 1862 0
      packages/googleapi/src/googleruntimeconfig.pp
  98. 2011 0
      packages/googleapi/src/googlesafebrowsing.pp
  99. 809 0
      packages/googleapi/src/googlescript.pp
  100. 36 42
      packages/googleapi/src/googleservice.pp

+ 38 - 6
.gitattributes

@@ -3548,17 +3548,22 @@ packages/gnome1/src/zvt/vt.inc svneol=native#text/plain
 packages/gnome1/src/zvt/vtx.inc svneol=native#text/plain
 packages/googleapi/Makefile svneol=native#text/plain
 packages/googleapi/Makefile.fpc svneol=native#text/plain
+packages/googleapi/README.txt svneol=native#text/plain
 packages/googleapi/examples/generator/googleapiconv.lpi svneol=native#text/plain
 packages/googleapi/examples/generator/googleapiconv.pp svneol=native#text/plain
 packages/googleapi/fpmake.pp svneol=native#text/plain
+packages/googleapi/src/googleacceleratedmobilepageurl.pp svneol=native#text/plain
 packages/googleapi/src/googleadexchangebuyer.pp svneol=native#text/plain
+packages/googleapi/src/googleadexchangebuyer2.pp svneol=native#text/plain
 packages/googleapi/src/googleadexchangeseller.pp svneol=native#text/plain
 packages/googleapi/src/googleadmin.pp svneol=native#text/plain
 packages/googleapi/src/googleadsense.pp svneol=native#text/plain
 packages/googleapi/src/googleadsensehost.pp svneol=native#text/plain
 packages/googleapi/src/googleanalytics.pp svneol=native#text/plain
+packages/googleapi/src/googleanalyticsreporting.pp svneol=native#text/plain
 packages/googleapi/src/googleandroidenterprise.pp svneol=native#text/plain
 packages/googleapi/src/googleandroidpublisher.pp svneol=native#text/plain
+packages/googleapi/src/googleappengine.pp svneol=native#text/plain
 packages/googleapi/src/googleappsactivity.pp svneol=native#text/plain
 packages/googleapi/src/googleappstate.pp svneol=native#text/plain
 packages/googleapi/src/googleaudit.pp svneol=native#text/plain
@@ -3569,17 +3574,27 @@ packages/googleapi/src/googleblogger.pp svneol=native#text/plain
 packages/googleapi/src/googlebooks.pp svneol=native#text/plain
 packages/googleapi/src/googlecalendar.pp svneol=native#text/plain
 packages/googleapi/src/googlecivicinfo.pp svneol=native#text/plain
+packages/googleapi/src/googleclassroom.pp svneol=native#text/plain
 packages/googleapi/src/googleclient.pp svneol=native#text/plain
+packages/googleapi/src/googlecloudbilling.pp svneol=native#text/plain
+packages/googleapi/src/googlecloudbuild.pp svneol=native#text/plain
+packages/googleapi/src/googleclouddebugger.pp svneol=native#text/plain
+packages/googleapi/src/googleclouderrorreporting.pp svneol=native#text/plain
 packages/googleapi/src/googlecloudlatencytest.pp svneol=native#text/plain
 packages/googleapi/src/googlecloudmonitoring.pp svneol=native#text/plain
+packages/googleapi/src/googlecloudresourcemanager.pp svneol=native#text/plain
 packages/googleapi/src/googlecloudsearch.pp svneol=native#text/plain
+packages/googleapi/src/googlecloudtrace.pp svneol=native#text/plain
+packages/googleapi/src/googleclouduseraccounts.pp svneol=native#text/plain
 packages/googleapi/src/googlecompute.pp svneol=native#text/plain
 packages/googleapi/src/googlecomputeaccounts.pp svneol=native#text/plain
+packages/googleapi/src/googleconsumersurveys.pp svneol=native#text/plain
 packages/googleapi/src/googlecontainer.pp svneol=native#text/plain
 packages/googleapi/src/googlecontent.pp svneol=native#text/plain
 packages/googleapi/src/googlecoordinate.pp svneol=native#text/plain
 packages/googleapi/src/googlecustomsearch.pp svneol=native#text/plain
 packages/googleapi/src/googledataflow.pp svneol=native#text/plain
+packages/googleapi/src/googledataproc.pp svneol=native#text/plain
 packages/googleapi/src/googledatastore.pp svneol=native#text/plain
 packages/googleapi/src/googledeploymentmanager.pp svneol=native#text/plain
 packages/googleapi/src/googledfareporting.pp svneol=native#text/plain
@@ -3589,48 +3604,65 @@ packages/googleapi/src/googledns.pp svneol=native#text/plain
 packages/googleapi/src/googledoubleclickbidmanager.pp svneol=native#text/plain
 packages/googleapi/src/googledoubleclicksearch.pp svneol=native#text/plain
 packages/googleapi/src/googledrive.pp svneol=native#text/plain
+packages/googleapi/src/googlefirebaserules.pp svneol=native#text/plain
 packages/googleapi/src/googlefitness.pp svneol=native#text/plain
 packages/googleapi/src/googlefreebase.pp svneol=native#text/plain
 packages/googleapi/src/googlefusiontables.pp svneol=native#text/plain
 packages/googleapi/src/googlegames.pp svneol=native#text/plain
-packages/googleapi/src/googlegamesConfiguration.pp svneol=native#text/plain
-packages/googleapi/src/googlegamesManagement.pp svneol=native#text/plain
+packages/googleapi/src/googlegamesconfiguration.pp svneol=native#text/plain
+packages/googleapi/src/googlegamesmanagement.pp svneol=native#text/plain
 packages/googleapi/src/googlegan.pp svneol=native#text/plain
 packages/googleapi/src/googlegenomics.pp svneol=native#text/plain
 packages/googleapi/src/googlegmail.pp svneol=native#text/plain
 packages/googleapi/src/googlegroupsmigration.pp svneol=native#text/plain
 packages/googleapi/src/googlegroupssettings.pp svneol=native#text/plain
+packages/googleapi/src/googleiam.pp svneol=native#text/plain
 packages/googleapi/src/googleidentitytoolkit.pp svneol=native#text/plain
+packages/googleapi/src/googlekgsearch.pp svneol=native#text/plain
 packages/googleapi/src/googlelicensing.pp svneol=native#text/plain
 packages/googleapi/src/googlelogging.pp svneol=native#text/plain
 packages/googleapi/src/googlemanager.pp svneol=native#text/plain
 packages/googleapi/src/googlemapsengine.pp svneol=native#text/plain
 packages/googleapi/src/googlemirror.pp svneol=native#text/plain
+packages/googleapi/src/googlemonitoring.pp svneol=native#text/plain
 packages/googleapi/src/googleoauth2.pp svneol=native#text/plain
 packages/googleapi/src/googlepagespeedonline.pp svneol=native#text/plain
+packages/googleapi/src/googlepartners.pp svneol=native#text/plain
+packages/googleapi/src/googlepeople.pp svneol=native#text/plain
+packages/googleapi/src/googleplaymoviespartner.pp svneol=native#text/plain
 packages/googleapi/src/googleplus.pp svneol=native#text/plain
-packages/googleapi/src/googleplusDomains.pp svneol=native#text/plain
+packages/googleapi/src/googleplusdomains.pp svneol=native#text/plain
 packages/googleapi/src/googleprediction.pp svneol=native#text/plain
+packages/googleapi/src/googleproximitybeacon.pp svneol=native#text/plain
 packages/googleapi/src/googlepubsub.pp svneol=native#text/plain
-packages/googleapi/src/googleqpxExpress.pp svneol=native#text/plain
+packages/googleapi/src/googleqpxexpress.pp svneol=native#text/plain
 packages/googleapi/src/googlereplicapool.pp svneol=native#text/plain
 packages/googleapi/src/googlereplicapoolupdater.pp svneol=native#text/plain
 packages/googleapi/src/googlereseller.pp svneol=native#text/plain
 packages/googleapi/src/googleresourceviews.pp svneol=native#text/plain
+packages/googleapi/src/googleruntimeconfig.pp svneol=native#text/plain
+packages/googleapi/src/googlesafebrowsing.pp svneol=native#text/plain
+packages/googleapi/src/googlescript.pp svneol=native#text/plain
 packages/googleapi/src/googleservice.pp svneol=native#text/plain
-packages/googleapi/src/googlesiteVerification.pp svneol=native#text/plain
+packages/googleapi/src/googleserviceregistry.pp svneol=native#text/plain
+packages/googleapi/src/googlesheets.pp svneol=native#text/plain
+packages/googleapi/src/googlesiteverification.pp svneol=native#text/plain
 packages/googleapi/src/googlespectrum.pp svneol=native#text/plain
 packages/googleapi/src/googlesqladmin.pp svneol=native#text/plain
 packages/googleapi/src/googlestorage.pp svneol=native#text/plain
+packages/googleapi/src/googlestoragetransfer.pp svneol=native#text/plain
 packages/googleapi/src/googletagmanager.pp svneol=native#text/plain
 packages/googleapi/src/googletaskqueue.pp svneol=native#text/plain
 packages/googleapi/src/googletasks.pp svneol=native#text/plain
+packages/googleapi/src/googletoolresults.pp svneol=native#text/plain
 packages/googleapi/src/googletranslate.pp svneol=native#text/plain
 packages/googleapi/src/googleurlshortener.pp svneol=native#text/plain
+packages/googleapi/src/googlevision.pp svneol=native#text/plain
 packages/googleapi/src/googlewebfonts.pp svneol=native#text/plain
 packages/googleapi/src/googlewebmasters.pp svneol=native#text/plain
 packages/googleapi/src/googleyoutube.pp svneol=native#text/plain
-packages/googleapi/src/googleyoutubeAnalytics.pp svneol=native#text/plain
+packages/googleapi/src/googleyoutubeanalytics.pp svneol=native#text/plain
+packages/googleapi/src/googleyoutubereporting.pp svneol=native#text/plain
 packages/graph/Makefile svneol=native#text/plain
 packages/graph/Makefile.fpc svneol=native#text/plain
 packages/graph/Makefile.fpc.fpcmake svneol=native#text/plain

+ 1 - 1
packages/googleapi/Makefile

@@ -325,7 +325,7 @@ FPMAKE_SKIP_CONFIG=-n
 FPCFPMAKE=$(FPC)
 endif
 endif
-override PACKAGE_NAME=fcl-db
+override PACKAGE_NAME=googleapi
 override PACKAGE_VERSION=3.1.1
 FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
 ifdef OS_TARGET

+ 1 - 1
packages/googleapi/Makefile.fpc

@@ -3,7 +3,7 @@
 #
 
 [package]
-name=fcl-db
+name=googleapi
 version=3.1.1
 
 [require]

+ 79 - 0
packages/googleapi/README.txt

@@ -0,0 +1,79 @@
+This package offers support for the Google REST APIs.
+
+Each Google Service API is a REST API that offers multiple resources.
+
+All Google Service APIs are described in the Google Discovery service:
+https://developers.google.com/discovery/
+The Google APIS use JSON, JSON-Schema and OAuth2 to do their work.
+
+These services can be converted to a object pascal implementation with the
+googleapiconv program (see directory examples/generator)
+
+It will fetch the JSON describing a REST API from the Google discovery server:
+
+googleapiconv -s calendar/v3 -o calendar.pp
+
+It can also download the rest description through an URL:
+
+http://www.googleapis.com/discovery/v1/apis/calendar/v3/rest -o calendar.pp
+
+It can also use downloaded versions of the JSON files.
+
+The program has many options, running it without options gives an overview.
+
+A Google API breaks down in 4 parts, all of which have a base class in the
+following units:
+
+TGoogleClient - unit googleclient
+---------------------------------
+
+This is a simple component that handles the transport and authorization, 
+it needs a TFPWebClient descendent (such as TFPHTTPWebClient) and a 
+TFPOauth2Handler descendent to communicate with Google servers.
+These 2 classes are part of fcl-web, a synapse-based TFPWebclient descendant is
+available separately.
+
+TGoogleAPI - unit googleservice
+-------------------------------
+
+There is a descendent of this component for each Google service API, which 
+handles all calls to the service. It uses a TGoogleClient component to handle 
+actual communication. 
+
+This class contains a method called ServiceCall which is used by all
+resources in the API to execute service requests. It will use the client to
+do the actual HTTP request.
+
+Each unit google*.pp in this package contains a single component that
+descends from the TGoogleAPI component.
+
+TGoogleResource - unit googleservice
+------------------------------------
+
+For each resource exposed by the service, a descendent of this class is generated 
+that has all the methods for that resource, as described in the REST service description.
+
+TGoogleResource uses an instance of the TGoogleAPI class to handle all calls to 
+the service. 
+
+Each API unit google*.pp in this package contains one or more TGoogleResource
+descendents, used in the API of that unit.
+
+TGoogleBaseObject - unit googlebase
+-----------------------------------
+
+For each data type used in the API, a descendent of this class is used: it is a 
+descendent of TBaseObject (unit restbase, part of fcl-web) and handles
+loading from and saving to JSON.
+
+Unit googlediscoverytopas
+-------------------------
+
+This unit contains the code to convert a Google REST API description to a
+object pascal unit.
+
+Authentication happens using OAuth2, the units for this are available in the
+fcl-web package (fpjwt, fpoauth2, fpoauth2ini).
+
+Example programs for Lazarus will be published separately.
+

+ 0 - 5
packages/googleapi/examples/generator/googleapiconv.lpi

@@ -38,27 +38,22 @@
       <Unit0>
         <Filename Value="googleapiconv.pp"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="googleapiconv"/>
       </Unit0>
       <Unit1>
         <Filename Value="../../src/googleadexchangebuyer.pp"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="googleadexchangebuyer"/>
       </Unit1>
       <Unit2>
         <Filename Value="../../src/googlebase.pp"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="googlebase"/>
       </Unit2>
       <Unit3>
         <Filename Value="../../src/googleclient.pp"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="googleclient"/>
       </Unit3>
       <Unit4>
         <Filename Value="../../src/googlediscoverytopas.pp"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="googlediscoverytopas"/>
       </Unit4>
     </Units>
   </ProjectOptions>

+ 91 - 38
packages/googleapi/examples/generator/googleapiconv.pp

@@ -1,16 +1,23 @@
 {$mode objfpc}
 {$h+}
-{ $define USESYNAPSE}
+
+{ $DEFINE USESYNAPSE}
+
+{$IFDEF VER2_6}
+{$DEFINE USESYNAPSE}
+{$ENDIF}
+
 program googleapiconv;
 
 uses
-  custapp, classes, sysutils, fpjson, jsonparser, googleadexchangebuyer,
-  googlebase, googleclient, googlediscoverytopas, fpwebclient,
+  custapp, classes, sysutils, fpjson, jsonparser, fpwebclient,
 {$IFDEF USESYNAPSE}
   ssl_openssl,
   synapsewebclient,
 {$ELSE}
-  fphttpwebclient;
+  fphttpwebclient,
+{$ENDIF}
+  googlediscoverytopas, googleservice, restbase, restcodegen;
 
 Const
   BaseDiscoveryURL = 'https://www.googleapis.com/discovery/v1/apis/';
@@ -47,6 +54,11 @@ Type
 
   TGoogleAPIConverter = CLass(TCustomApplication)
   private
+    FDownloadOnly: Boolean;
+    FKeepJSON: Boolean;
+    FUnitPrefix: String;
+    FVerbose: Boolean;
+    procedure ConversionLog(Sender: TObject; LogType: TCodegenLogType; const Msg: String);
     procedure CreateFPMake(FileName: String; L: TAPIEntries);
     procedure DoAll(LocalFile, URL, OFN: String; AllVersions: Boolean);
     Procedure DoConversion(JS: TStream; AEntry : TAPIEntry) ;
@@ -59,6 +71,10 @@ Type
     Constructor Create(AOwner: TComponent); override;
     Destructor Destroy; override;
     Procedure DoRun; override;
+    Property KeepJSON : Boolean Read FKeepJSON Write FKeepJSON;
+    Property Verbose : Boolean Read FVerbose Write FVerbose;
+    Property DownloadOnly : Boolean Read FDownloadOnly Write FDownloadOnly;
+    Property UnitPrefix : String Read FUnitPrefix Write FUnitPrefix;
   end;
 
 { TAPIEntries }
@@ -73,19 +89,21 @@ begin
   Result:=Add as TAPIEntry;
 end;
 
-constructor TGoogleAPIConverter.Create(AOwner: TComponent);
+Constructor TGoogleAPIConverter.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
   StopOnException:=True;
   TDiscoveryJSONToPas.RegisterAllObjects;
+  UnitPrefix:='google';
 end;
 
-destructor TGoogleAPIConverter.Destroy;
+Destructor TGoogleAPIConverter.Destroy;
 begin
   inherited Destroy;
 end;
 
-function TGoogleAPIConverter.HttpGetJSON(const URL: String; Response: TStream): Boolean;
+Function TGoogleAPIConverter.HttpGetJSON(Const URL: String; Response: TStream
+  ): Boolean;
 
 Var
   Webclient : TAbstractWebClient;
@@ -104,6 +122,7 @@ begin
   try
     Req:=WebClient.CreateRequest;
     Req.ResponseContent:=Response;
+    ConversionLog(Self,cltInfo,'Downloading: '+URL);
     Resp:=WebClient.ExecuteRequest('GET',URL,Req);
     Result:=(Resp<>Nil);
   finally
@@ -139,8 +158,14 @@ begin
   Writeln('-p --classprefix=prefix    Prefix to use in class names for all classes.');
   Writeln('-r --resourcesuffix=suffix Suffix to use for resource names. Default is Resource.');
   Writeln('-R --register=unit         Register unit for Lazarus.');
+  Writeln('-t --timestamp             Add timestamp to generated unit.');
   Writeln('-u --url=URL               URL to download the REST description from.');
   Writeln('-v --serviceversion=v      Service version to download the REST description for.');
+  Writeln('-V --verbose               Write some diagnostic messages');
+  Writeln('-k --keepjson              Keep the downloaded JSON files');
+  Writeln('-d --onlydownload          Just download the files, do not actually convert.');
+  Writeln('                           Only effective if -k or --keepjson is also specified.');
+  Writeln('-f --unitprefix            Prefix for generated unit names. Default is "google"');
   Writeln('If the outputfilename is empty and cannot be determined, an error is returned');
   Halt(Ord(Msg<>''));
 end;
@@ -242,6 +267,13 @@ begin
     end;
 end;
 
+procedure TGoogleAPIConverter.ConversionLog(Sender: TObject;
+  LogType: TCodegenLogType; const Msg: String);
+begin
+  if Verbose then
+    Writeln(StdErr,Msg);
+end;
+
 procedure TGoogleAPIConverter.CreateFPMake(FileName :String; L : TAPIEntries);
 
 Var
@@ -334,7 +366,7 @@ begin
       if AllVersions or O.Get('preferred',false) then
         begin
         RU:=O.get('discoveryRestUrl');
-        LFN:=O.get('name');
+        LFN:=UnitPrefix+O.get('name');
         if AllVersions then
           LFN:=LFN+'_'+StringReplace(O.get('version'),'.','',[rfReplaceAll]);
         if (OFN='') then
@@ -345,44 +377,48 @@ begin
         try
           if not HttpGetJSON(RU,RS) then
             Raise Exception.Create('Could not download rest description from URL: '+RU);
-          Writeln('Converting service "',O.get('name'),'" to unit: ',LFN);
-          With TFIleStream.Create(ChangeFileExt(LFN,'.json'),fmCreate) do
-            try
-              CopyFrom(RS,0);
-            finally
-              Free;
-            end;
-//          Writeln('Downloaded : ',RS.DataString);
+          ConversionLog(Self,cltInfo,Format('Converting service "%s" to unit: %s',[O.get('name'),LFN]));
+          if KeepJSON then
+            With TFIleStream.Create(ChangeFileExt(LFN,'.json'),fmCreate) do
+              try
+                CopyFrom(RS,0);
+              finally
+                Free;
+              end;
           RS.Position:=0;
           U:=UL.AddEntry;
           U.FileName:=LFN;
-          DoConversion(RS,U);
+          if not DownloadOnly then
+            DoConversion(RS,U);
         finally
           RS.Free;
         end;
         end;
       end;
-    if HasOption('R','register') then
-      RegisterUnit(GetOptionValue('R','register'),UL);
-    if HasOption('m','fpmake') then
-      CreateFpMake(GetOptionValue('m','fpmake'),UL);
+    if not DownloadOnly then
+      begin
+      if HasOption('R','register') then
+        RegisterUnit(GetOptionValue('R','register'),UL);
+      if HasOption('m','fpmake') then
+        CreateFpMake(GetOptionValue('m','fpmake'),UL);
+      end;
     if HasOption('I','icon') then
       For I:=0 to UL.Count-1 do
         DownloadIcon(UL[i]);
-
   finally
     UL.Free;
     D.Free;
   end;
 end;
 
-procedure TGoogleAPIConverter.DoRun;
+Procedure TGoogleAPIConverter.DoRun;
 
 Const
-  MyO : Array[1..16] of ansistring
+  MyO : Array[1..21] of ansistring
       =  ('help','input:','output:','extraunits:','baseclass:','classprefix:',
           'url:','service:','serviceversion:','resourcesuffix:','license:',
-          'All','all','register','icon','fpmake:');
+          'All','all','register','icon','fpmake:','timestamp','verbose','keepjson',
+          'onlydownload','unitprefix');
 
 Var
   O,NonOpts : TStrings;
@@ -398,7 +434,7 @@ begin
   try
     O:=TStringList.Create;
     For S in MyO do O.Add(S);
-    S:=Checkoptions('hi:o:e:b:p:u:s:v:r:L:aAR:Im:',O,TStrings(Nil),NonOpts,True);
+    S:=Checkoptions('hi:o:e:b:p:u:s:v:r:L:aAR:Im:tVkdf',O,TStrings(Nil),NonOpts,True);
     if NonOpts.Count>0 then
       IFN:=NonOpts[0];
     if NonOpts.Count>1 then
@@ -407,6 +443,12 @@ begin
     O.Free;
     NonOpts.Free;
   end;
+  FVerbose:=HasOption('V','verbose');
+  FKeepJSON:=HasOption('k','keepjson');
+  if HasOption('f','unitprefix') then
+    UnitPrefix:=GetOptionValue('f','unitprefix');
+  If FKeepJSON Then
+    FDownLoadOnly:=HasOption('d','onlydownload');
   if (S<>'') or HasOption('h','help') then
     Usage(S);
   DoAllServices:=HasOption('a','all') or HasOption('A','All');
@@ -432,7 +474,7 @@ begin
     if (IFN<>'') then
       OFN:=ChangeFileExt(IFN,'.pp')
     else if getOptionValue('s','service')<>'' then
-      OFN:='google'+getOptionValue('s','service')+'.pp';
+      OFN:=UnitPrefix+getOptionValue('s','service')+'.pp';
   if (OFN='') and Not DoAllServices then
     Usage('Need an output filename');
   if DoAllServices then
@@ -445,20 +487,28 @@ begin
       JS:=TMemoryStream.Create;
       if not HttpGetJSON(URL,JS) then
         Raise Exception.Create('Could not download from URL: '+URL);
+      if KeepJSON then
+        With TFIleStream.Create(ChangeFileExt(OFN,'.json'),fmCreate) do
+          try
+            CopyFrom(JS,0);
+          finally
+            Free;
+          end;
       JS.POsition:=0;
       end
     else
       JS:=TFileStream.Create(IFN,fmOpenRead or fmShareDenyWrite);
     try
-      APIEntry:=TAPIEntry.Create(Nil);
-      try
-        APIEntry.FileName:=OFN;
-        DoConversion(JS,APIEntry);
-        if HasOption('I','icon') then
-          DownloadIcon(APIEntry);
-      finally
-        APIEntry.Free;
-      end;
+      if not DownLoadOnly then
+        APIEntry:=TAPIEntry.Create(Nil);
+        try
+          APIEntry.FileName:=OFN;
+          DoConversion(JS,APIEntry);
+          if HasOption('I','icon') then
+            DownloadIcon(APIEntry);
+        finally
+          APIEntry.Free;
+        end;
     finally
       JS.Free;
     end;
@@ -478,7 +528,8 @@ begin
     FN:=ExtractFilePath(APIEntry.FileName)+APIEntry.APIName+ExtractFileExt(APIEntry.APIIcon);
     FS:=TFileStream.Create(FN,fmCreate);
     try
-      Writeln(Format('Downloading icon %s to %s',[APIEntry.APIIcon,FN]));
+      if HasOption('V','verbose') then
+        Writeln(Format('Downloading icon %s to %s',[APIEntry.APIIcon,FN]));
       HttpGetJSON(APIEntry.APIIcon,FS);
     finally
       FS.Free;
@@ -486,7 +537,7 @@ begin
     end;
 end;
 
-procedure TGoogleAPIConverter.DoConversion(JS: TStream; AEntry: TAPIEntry);
+Procedure TGoogleAPIConverter.DoConversion(JS: TStream; AEntry: TAPIEntry);
 
 Var
   L: String;
@@ -506,6 +557,7 @@ begin
           LicenseText.LoadFromFile(L);
           end;
         end;
+      OnLog:=@ConversionLog;
       ExtraUnits:=GetOptionValue('e','extraunits');
       if HasOption('b','baseclass') then
         BaseClassName:=GetOptionValue('b','baseclass');
@@ -513,6 +565,7 @@ begin
         ClassPrefix:=GetOptionValue('p','classprefix');
       if HasOption('r','resourcesuffix') then
         ResourceSuffix:=GetOptionValue('r','resourcesuffix');
+      AddTimeStamp:=HasOption('t','timestamp');
       LoadFromStream(JS);
       AEntry.APIUnitName:=ChangeFileExt(ExtractFileName(AEntry.FileName),'');
       AEntry.APIName:=APIClassName;

+ 38 - 7
packages/googleapi/fpmake.pp

@@ -22,7 +22,7 @@ Var
 begin
   With Installer do
     begin
-    P:=AddPackage('googleapis');
+    P:=AddPackage('googleapi');
     P.ShortName:='googleap';
     P.Author := 'Michael Van Canneyt';
     P.License := 'LGPL with modification, ';
@@ -82,8 +82,8 @@ begin
     T:=StdDep(P.Targets.AddUnit('googlefreebase.pp'));
     T:=StdDep(P.Targets.AddUnit('googlefusiontables.pp'));
     T:=StdDep(P.Targets.AddUnit('googlegames.pp'));
-    T:=StdDep(P.Targets.AddUnit('googlegamesConfiguration.pp'));
-    T:=StdDep(P.Targets.AddUnit('googlegamesManagement.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlegamesconfiguration.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlegamesmanagement.pp'));
     T:=StdDep(P.Targets.AddUnit('googlegan.pp'));
     T:=StdDep(P.Targets.AddUnit('googlegenomics.pp'));
     T:=StdDep(P.Targets.AddUnit('googlegmail.pp'));
@@ -97,15 +97,15 @@ begin
     T:=StdDep(P.Targets.AddUnit('googleoauth2.pp'));
     T:=StdDep(P.Targets.AddUnit('googlepagespeedonline.pp'));
     T:=StdDep(P.Targets.AddUnit('googleplus.pp'));
-    T:=StdDep(P.Targets.AddUnit('googleplusDomains.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleplusdomains.pp'));
     T:=StdDep(P.Targets.AddUnit('googleprediction.pp'));
     T:=StdDep(P.Targets.AddUnit('googlepubsub.pp'));
-    T:=StdDep(P.Targets.AddUnit('googleqpxExpress.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleqpxexpress.pp'));
     T:=StdDep(P.Targets.AddUnit('googlereplicapool.pp'));
     T:=StdDep(P.Targets.AddUnit('googlereplicapoolupdater.pp'));
     T:=StdDep(P.Targets.AddUnit('googlereseller.pp'));
     T:=StdDep(P.Targets.AddUnit('googleresourceviews.pp'));
-    T:=StdDep(P.Targets.AddUnit('googlesiteVerification.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlesiteverification.pp'));
     T:=StdDep(P.Targets.AddUnit('googlespectrum.pp'));
     T:=StdDep(P.Targets.AddUnit('googlesqladmin.pp'));
     T:=StdDep(P.Targets.AddUnit('googlestorage.pp'));
@@ -117,10 +117,41 @@ begin
     T:=StdDep(P.Targets.AddUnit('googlewebfonts.pp'));
     T:=StdDep(P.Targets.AddUnit('googlewebmasters.pp'));
     T:=StdDep(P.Targets.AddUnit('googleyoutube.pp'));
-    T:=StdDep(P.Targets.AddUnit('googleyoutubeAnalytics.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleyoutubeanalytics.pp'));
     T:=StdDep(P.Targets.AddUnit('googlecloudlatencytest.pp'));
     T:=StdDep(P.Targets.AddUnit('googlecloudsearch.pp'));
     T:=StdDep(P.Targets.AddUnit('googlelogging.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleacceleratedmobilepageurl.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleadexchangebuyer2.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleanalyticsreporting.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleappengine.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleclassroom.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlecloudbilling.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlecloudbuild.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleclouddebugger.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleclouderrorreporting.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlecloudresourcemanager.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlecloudtrace.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleclouduseraccounts.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleconsumersurveys.pp'));
+    T:=StdDep(P.Targets.AddUnit('googledataproc.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlefirebaserules.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleiam.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlekgsearch.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlemonitoring.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlepartners.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlepeople.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleplaymoviespartner.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleproximitybeacon.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleruntimeconfig.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlesafebrowsing.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlescript.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleserviceregistry.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlesheets.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlestoragetransfer.pp'));
+    T:=StdDep(P.Targets.AddUnit('googletoolresults.pp'));
+    T:=StdDep(P.Targets.AddUnit('googlevision.pp'));
+    T:=StdDep(P.Targets.AddUnit('googleyoutubereporting.pp'));
     end;
 end;
 

+ 493 - 0
packages/googleapi/src/googleacceleratedmobilepageurl.pp

@@ -0,0 +1,493 @@
+unit googleacceleratedmobilepageurl;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAmpUrl = Class;
+  TAmpUrlError = Class;
+  TBatchGetAmpUrlsRequest = Class;
+  TBatchGetAmpUrlsResponse = Class;
+  TAmpUrlArray = Array of TAmpUrl;
+  TAmpUrlErrorArray = Array of TAmpUrlError;
+  TBatchGetAmpUrlsRequestArray = Array of TBatchGetAmpUrlsRequest;
+  TBatchGetAmpUrlsResponseArray = Array of TBatchGetAmpUrlsResponse;
+  //Anonymous types, using auto-generated names
+  TBatchGetAmpUrlsResponseTypeurlErrorsArray = Array of TAmpUrlError;
+  TBatchGetAmpUrlsResponseTypeampUrlsArray = Array of TAmpUrl;
+  
+  { --------------------------------------------------------------------
+    TAmpUrl
+    --------------------------------------------------------------------}
+  
+  TAmpUrl = Class(TGoogleBaseObject)
+  Private
+    FampUrl : String;
+    ForiginalUrl : String;
+    FcdnAmpUrl : String;
+  Protected
+    //Property setters
+    Procedure SetampUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoriginalUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcdnAmpUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property ampUrl : String Index 0 Read FampUrl Write SetampUrl;
+    Property originalUrl : String Index 8 Read ForiginalUrl Write SetoriginalUrl;
+    Property cdnAmpUrl : String Index 16 Read FcdnAmpUrl Write SetcdnAmpUrl;
+  end;
+  TAmpUrlClass = Class of TAmpUrl;
+  
+  { --------------------------------------------------------------------
+    TAmpUrlError
+    --------------------------------------------------------------------}
+  
+  TAmpUrlError = Class(TGoogleBaseObject)
+  Private
+    ForiginalUrl : String;
+    FerrorCode : String;
+    FerrorMessage : String;
+  Protected
+    //Property setters
+    Procedure SetoriginalUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorMessage(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property originalUrl : String Index 0 Read ForiginalUrl Write SetoriginalUrl;
+    Property errorCode : String Index 8 Read FerrorCode Write SeterrorCode;
+    Property errorMessage : String Index 16 Read FerrorMessage Write SeterrorMessage;
+  end;
+  TAmpUrlErrorClass = Class of TAmpUrlError;
+  
+  { --------------------------------------------------------------------
+    TBatchGetAmpUrlsRequest
+    --------------------------------------------------------------------}
+  
+  TBatchGetAmpUrlsRequest = Class(TGoogleBaseObject)
+  Private
+    Furls : TStringArray;
+  Protected
+    //Property setters
+    Procedure Seturls(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property urls : TStringArray Index 0 Read Furls Write Seturls;
+  end;
+  TBatchGetAmpUrlsRequestClass = Class of TBatchGetAmpUrlsRequest;
+  
+  { --------------------------------------------------------------------
+    TBatchGetAmpUrlsResponse
+    --------------------------------------------------------------------}
+  
+  TBatchGetAmpUrlsResponse = Class(TGoogleBaseObject)
+  Private
+    FurlErrors : TBatchGetAmpUrlsResponseTypeurlErrorsArray;
+    FampUrls : TBatchGetAmpUrlsResponseTypeampUrlsArray;
+  Protected
+    //Property setters
+    Procedure SeturlErrors(AIndex : Integer; const AValue : TBatchGetAmpUrlsResponseTypeurlErrorsArray); virtual;
+    Procedure SetampUrls(AIndex : Integer; const AValue : TBatchGetAmpUrlsResponseTypeampUrlsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property urlErrors : TBatchGetAmpUrlsResponseTypeurlErrorsArray Index 0 Read FurlErrors Write SeturlErrors;
+    Property ampUrls : TBatchGetAmpUrlsResponseTypeampUrlsArray Index 8 Read FampUrls Write SetampUrls;
+  end;
+  TBatchGetAmpUrlsResponseClass = Class of TBatchGetAmpUrlsResponse;
+  
+  { --------------------------------------------------------------------
+    TAmpUrlsResource
+    --------------------------------------------------------------------}
+  
+  TAmpUrlsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function BatchGet(aBatchGetAmpUrlsRequest : TBatchGetAmpUrlsRequest) : TBatchGetAmpUrlsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAcceleratedmobilepageurlAPI
+    --------------------------------------------------------------------}
+  
+  TAcceleratedmobilepageurlAPI = Class(TGoogleAPI)
+  Private
+    FAmpUrlsInstance : TAmpUrlsResource;
+    Function GetAmpUrlsInstance : TAmpUrlsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateAmpUrlsResource(AOwner : TComponent) : TAmpUrlsResource;virtual;overload;
+    Function CreateAmpUrlsResource : TAmpUrlsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property AmpUrlsResource : TAmpUrlsResource Read GetAmpUrlsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAmpUrl
+  --------------------------------------------------------------------}
+
+
+Procedure TAmpUrl.SetampUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FampUrl=AValue) then exit;
+  FampUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAmpUrl.SetoriginalUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginalUrl=AValue) then exit;
+  ForiginalUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAmpUrl.SetcdnAmpUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcdnAmpUrl=AValue) then exit;
+  FcdnAmpUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAmpUrlError
+  --------------------------------------------------------------------}
+
+
+Procedure TAmpUrlError.SetoriginalUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginalUrl=AValue) then exit;
+  ForiginalUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAmpUrlError.SeterrorCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorCode=AValue) then exit;
+  FerrorCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAmpUrlError.SeterrorMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorMessage=AValue) then exit;
+  FerrorMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchGetAmpUrlsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchGetAmpUrlsRequest.Seturls(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Furls=AValue) then exit;
+  Furls:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchGetAmpUrlsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'urls' : SetLength(Furls,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchGetAmpUrlsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchGetAmpUrlsResponse.SeturlErrors(AIndex : Integer; const AValue : TBatchGetAmpUrlsResponseTypeurlErrorsArray); 
+
+begin
+  If (FurlErrors=AValue) then exit;
+  FurlErrors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchGetAmpUrlsResponse.SetampUrls(AIndex : Integer; const AValue : TBatchGetAmpUrlsResponseTypeampUrlsArray); 
+
+begin
+  If (FampUrls=AValue) then exit;
+  FampUrls:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchGetAmpUrlsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'urlerrors' : SetLength(FurlErrors,ALength);
+  'ampurls' : SetLength(FampUrls,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAmpUrlsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAmpUrlsResource.ResourceName : String;
+
+begin
+  Result:='ampUrls';
+end;
+
+Class Function TAmpUrlsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TacceleratedmobilepageurlAPI;
+end;
+
+Function TAmpUrlsResource.BatchGet(aBatchGetAmpUrlsRequest : TBatchGetAmpUrlsRequest) : TBatchGetAmpUrlsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/ampUrls:batchGet';
+  _Methodid   = 'acceleratedmobilepageurl.ampUrls.batchGet';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aBatchGetAmpUrlsRequest,TBatchGetAmpUrlsResponse) as TBatchGetAmpUrlsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAcceleratedmobilepageurlAPI
+  --------------------------------------------------------------------}
+
+Class Function TAcceleratedmobilepageurlAPI.APIName : String;
+
+begin
+  Result:='acceleratedmobilepageurl';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIRevision : String;
+
+begin
+  Result:='20160518';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIID : String;
+
+begin
+  Result:='acceleratedmobilepageurl:v1';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APITitle : String;
+
+begin
+  Result:='Accelerated Mobile Page (AMP) URL API';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIDescription : String;
+
+begin
+  Result:='This API contains a single method, [batchGet](/amp/cache/reference/acceleratedmobilepageurl/rest/v1/ampUrls/batchGet). Call this method to retrieve the AMP URL (and equivalent AMP Cache URL) for given public URL(s). For more information, see [Link to AMP Content](/amp/cache/use-amp-url).';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/amp/cache/';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIrootUrl : string;
+
+begin
+  Result:='https://acceleratedmobilepageurl.googleapis.com/';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIbaseURL : String;
+
+begin
+  Result:='https://acceleratedmobilepageurl.googleapis.com/';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,0);
+  
+end;
+
+Class Function TAcceleratedmobilepageurlAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=False;
+end;
+
+Class Procedure TAcceleratedmobilepageurlAPI.RegisterAPIResources;
+
+begin
+  TAmpUrl.RegisterObject;
+  TAmpUrlError.RegisterObject;
+  TBatchGetAmpUrlsRequest.RegisterObject;
+  TBatchGetAmpUrlsResponse.RegisterObject;
+end;
+
+
+Function TAcceleratedmobilepageurlAPI.GetAmpUrlsInstance : TAmpUrlsResource;
+
+begin
+  if (FAmpUrlsInstance=Nil) then
+    FAmpUrlsInstance:=CreateAmpUrlsResource;
+  Result:=FAmpUrlsInstance;
+end;
+
+Function TAcceleratedmobilepageurlAPI.CreateAmpUrlsResource : TAmpUrlsResource;
+
+begin
+  Result:=CreateAmpUrlsResource(Self);
+end;
+
+
+Function TAcceleratedmobilepageurlAPI.CreateAmpUrlsResource(AOwner : TComponent) : TAmpUrlsResource;
+
+begin
+  Result:=TAmpUrlsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TAcceleratedmobilepageurlAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 624 - 345
packages/googleapi/src/googleadexchangebuyer.pp


+ 1252 - 0
packages/googleapi/src/googleadexchangebuyer2.pp

@@ -0,0 +1,1252 @@
+unit googleadexchangebuyer2;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TClientUser = Class;
+  TClientUserInvitation = Class;
+  TListClientUserInvitationsResponse = Class;
+  TListClientUsersResponse = Class;
+  TClient = Class;
+  TListClientsResponse = Class;
+  TClientUserArray = Array of TClientUser;
+  TClientUserInvitationArray = Array of TClientUserInvitation;
+  TListClientUserInvitationsResponseArray = Array of TListClientUserInvitationsResponse;
+  TListClientUsersResponseArray = Array of TListClientUsersResponse;
+  TClientArray = Array of TClient;
+  TListClientsResponseArray = Array of TListClientsResponse;
+  //Anonymous types, using auto-generated names
+  TListClientUserInvitationsResponseTypeinvitationsArray = Array of TClientUserInvitation;
+  TListClientUsersResponseTypeusersArray = Array of TClientUser;
+  TListClientsResponseTypeclientsArray = Array of TClient;
+  
+  { --------------------------------------------------------------------
+    TClientUser
+    --------------------------------------------------------------------}
+  
+  TClientUser = Class(TGoogleBaseObject)
+  Private
+    Femail : String;
+    FclientAccountId : String;
+    Fstatus : String;
+    FuserId : String;
+  Protected
+    //Property setters
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientAccountId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property email : String Index 0 Read Femail Write Setemail;
+    Property clientAccountId : String Index 8 Read FclientAccountId Write SetclientAccountId;
+    Property status : String Index 16 Read Fstatus Write Setstatus;
+    Property userId : String Index 24 Read FuserId Write SetuserId;
+  end;
+  TClientUserClass = Class of TClientUser;
+  
+  { --------------------------------------------------------------------
+    TClientUserInvitation
+    --------------------------------------------------------------------}
+  
+  TClientUserInvitation = Class(TGoogleBaseObject)
+  Private
+    Femail : String;
+    FclientAccountId : String;
+    FinvitationId : String;
+  Protected
+    //Property setters
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientAccountId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinvitationId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property email : String Index 0 Read Femail Write Setemail;
+    Property clientAccountId : String Index 8 Read FclientAccountId Write SetclientAccountId;
+    Property invitationId : String Index 16 Read FinvitationId Write SetinvitationId;
+  end;
+  TClientUserInvitationClass = Class of TClientUserInvitation;
+  
+  { --------------------------------------------------------------------
+    TListClientUserInvitationsResponse
+    --------------------------------------------------------------------}
+  
+  TListClientUserInvitationsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Finvitations : TListClientUserInvitationsResponseTypeinvitationsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setinvitations(AIndex : Integer; const AValue : TListClientUserInvitationsResponseTypeinvitationsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property invitations : TListClientUserInvitationsResponseTypeinvitationsArray Index 8 Read Finvitations Write Setinvitations;
+  end;
+  TListClientUserInvitationsResponseClass = Class of TListClientUserInvitationsResponse;
+  
+  { --------------------------------------------------------------------
+    TListClientUsersResponse
+    --------------------------------------------------------------------}
+  
+  TListClientUsersResponse = Class(TGoogleBaseObject)
+  Private
+    Fusers : TListClientUsersResponseTypeusersArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setusers(AIndex : Integer; const AValue : TListClientUsersResponseTypeusersArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property users : TListClientUsersResponseTypeusersArray Index 0 Read Fusers Write Setusers;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListClientUsersResponseClass = Class of TListClientUsersResponse;
+  
+  { --------------------------------------------------------------------
+    TClient
+    --------------------------------------------------------------------}
+  
+  TClient = Class(TGoogleBaseObject)
+  Private
+    FvisibleToSeller : boolean;
+    Fstatus : String;
+    FentityType : String;
+    Frole : String;
+    FclientName : String;
+    FclientAccountId : String;
+    FentityId : String;
+    FentityName : String;
+  Protected
+    //Property setters
+    Procedure SetvisibleToSeller(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetentityType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientAccountId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetentityId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetentityName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property visibleToSeller : boolean Index 0 Read FvisibleToSeller Write SetvisibleToSeller;
+    Property status : String Index 8 Read Fstatus Write Setstatus;
+    Property entityType : String Index 16 Read FentityType Write SetentityType;
+    Property role : String Index 24 Read Frole Write Setrole;
+    Property clientName : String Index 32 Read FclientName Write SetclientName;
+    Property clientAccountId : String Index 40 Read FclientAccountId Write SetclientAccountId;
+    Property entityId : String Index 48 Read FentityId Write SetentityId;
+    Property entityName : String Index 56 Read FentityName Write SetentityName;
+  end;
+  TClientClass = Class of TClient;
+  
+  { --------------------------------------------------------------------
+    TListClientsResponse
+    --------------------------------------------------------------------}
+  
+  TListClientsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fclients : TListClientsResponseTypeclientsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setclients(AIndex : Integer; const AValue : TListClientsResponseTypeclientsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property clients : TListClientsResponseTypeclientsArray Index 8 Read Fclients Write Setclients;
+  end;
+  TListClientsResponseClass = Class of TListClientsResponse;
+  
+  { --------------------------------------------------------------------
+    TAccountsClientsUsersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsClientsUsersResource, method List
+  
+  TAccountsClientsUsersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TAccountsClientsUsersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(clientAccountId: string; userId: string; accountId: string; aClientUser : TClientUser) : TClientUser;
+    Function Get(clientAccountId: string; userId: string; accountId: string) : TClientUser;
+    Function List(clientAccountId: string; accountId: string; AQuery : string  = '') : TListClientUsersResponse;
+    Function List(clientAccountId: string; accountId: string; AQuery : TAccountsClientsUserslistOptions) : TListClientUsersResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsClientsInvitationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsClientsInvitationsResource, method List
+  
+  TAccountsClientsInvitationsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TAccountsClientsInvitationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(clientAccountId: string; accountId: string; aClientUserInvitation : TClientUserInvitation) : TClientUserInvitation;overload;
+    Function Get(clientAccountId: string; invitationId: string; accountId: string) : TClientUserInvitation;
+    Function List(clientAccountId: string; accountId: string; AQuery : string  = '') : TListClientUserInvitationsResponse;
+    Function List(clientAccountId: string; accountId: string; AQuery : TAccountsClientsInvitationslistOptions) : TListClientUserInvitationsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsClientsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsClientsResource, method List
+  
+  TAccountsClientsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TAccountsClientsResource = Class(TGoogleResource)
+  Private
+    FUsersInstance : TAccountsClientsUsersResource;
+    FInvitationsInstance : TAccountsClientsInvitationsResource;
+    Function GetUsersInstance : TAccountsClientsUsersResource;virtual;
+    Function GetInvitationsInstance : TAccountsClientsInvitationsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(clientAccountId: string; accountId: string; aClient : TClient) : TClient;
+    Function Get(clientAccountId: string; accountId: string) : TClient;
+    Function Create(accountId: string; aClient : TClient) : TClient;overload;
+    Function List(accountId: string; AQuery : string  = '') : TListClientsResponse;
+    Function List(accountId: string; AQuery : TAccountsClientslistOptions) : TListClientsResponse;
+    Function CreateUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateUsersResource : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;virtual;overload;
+    Function CreateInvitationsResource : TAccountsClientsInvitationsResource;virtual;overload;
+    Property UsersResource : TAccountsClientsUsersResource Read GetUsersInstance;
+    Property InvitationsResource : TAccountsClientsInvitationsResource Read GetInvitationsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsResource
+    --------------------------------------------------------------------}
+  
+  TAccountsResource = Class(TGoogleResource)
+  Private
+    FClientsUsersInstance : TAccountsClientsUsersResource;
+    FClientsInvitationsInstance : TAccountsClientsInvitationsResource;
+    FClientsInstance : TAccountsClientsResource;
+    Function GetClientsUsersInstance : TAccountsClientsUsersResource;virtual;
+    Function GetClientsInvitationsInstance : TAccountsClientsInvitationsResource;virtual;
+    Function GetClientsInstance : TAccountsClientsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateClientsUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateClientsUsersResource : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateClientsInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;virtual;overload;
+    Function CreateClientsInvitationsResource : TAccountsClientsInvitationsResource;virtual;overload;
+    Function CreateClientsResource(AOwner : TComponent) : TAccountsClientsResource;virtual;overload;
+    Function CreateClientsResource : TAccountsClientsResource;virtual;overload;
+    Property ClientsUsersResource : TAccountsClientsUsersResource Read GetClientsUsersInstance;
+    Property ClientsInvitationsResource : TAccountsClientsInvitationsResource Read GetClientsInvitationsInstance;
+    Property ClientsResource : TAccountsClientsResource Read GetClientsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAdexchangebuyer2API
+    --------------------------------------------------------------------}
+  
+  TAdexchangebuyer2API = Class(TGoogleAPI)
+  Private
+    FAccountsClientsUsersInstance : TAccountsClientsUsersResource;
+    FAccountsClientsInvitationsInstance : TAccountsClientsInvitationsResource;
+    FAccountsClientsInstance : TAccountsClientsResource;
+    FAccountsInstance : TAccountsResource;
+    Function GetAccountsClientsUsersInstance : TAccountsClientsUsersResource;virtual;
+    Function GetAccountsClientsInvitationsInstance : TAccountsClientsInvitationsResource;virtual;
+    Function GetAccountsClientsInstance : TAccountsClientsResource;virtual;
+    Function GetAccountsInstance : TAccountsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateAccountsClientsUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateAccountsClientsUsersResource : TAccountsClientsUsersResource;virtual;overload;
+    Function CreateAccountsClientsInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;virtual;overload;
+    Function CreateAccountsClientsInvitationsResource : TAccountsClientsInvitationsResource;virtual;overload;
+    Function CreateAccountsClientsResource(AOwner : TComponent) : TAccountsClientsResource;virtual;overload;
+    Function CreateAccountsClientsResource : TAccountsClientsResource;virtual;overload;
+    Function CreateAccountsResource(AOwner : TComponent) : TAccountsResource;virtual;overload;
+    Function CreateAccountsResource : TAccountsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property AccountsClientsUsersResource : TAccountsClientsUsersResource Read GetAccountsClientsUsersInstance;
+    Property AccountsClientsInvitationsResource : TAccountsClientsInvitationsResource Read GetAccountsClientsInvitationsInstance;
+    Property AccountsClientsResource : TAccountsClientsResource Read GetAccountsClientsInstance;
+    Property AccountsResource : TAccountsResource Read GetAccountsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TClientUser
+  --------------------------------------------------------------------}
+
+
+Procedure TClientUser.Setemail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Femail=AValue) then exit;
+  Femail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientUser.SetclientAccountId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientAccountId=AValue) then exit;
+  FclientAccountId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientUser.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientUser.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TClientUserInvitation
+  --------------------------------------------------------------------}
+
+
+Procedure TClientUserInvitation.Setemail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Femail=AValue) then exit;
+  Femail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientUserInvitation.SetclientAccountId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientAccountId=AValue) then exit;
+  FclientAccountId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientUserInvitation.SetinvitationId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinvitationId=AValue) then exit;
+  FinvitationId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListClientUserInvitationsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListClientUserInvitationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListClientUserInvitationsResponse.Setinvitations(AIndex : Integer; const AValue : TListClientUserInvitationsResponseTypeinvitationsArray); 
+
+begin
+  If (Finvitations=AValue) then exit;
+  Finvitations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListClientUserInvitationsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'invitations' : SetLength(Finvitations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListClientUsersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListClientUsersResponse.Setusers(AIndex : Integer; const AValue : TListClientUsersResponseTypeusersArray); 
+
+begin
+  If (Fusers=AValue) then exit;
+  Fusers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListClientUsersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListClientUsersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'users' : SetLength(Fusers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TClient
+  --------------------------------------------------------------------}
+
+
+Procedure TClient.SetvisibleToSeller(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FvisibleToSeller=AValue) then exit;
+  FvisibleToSeller:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.SetentityType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FentityType=AValue) then exit;
+  FentityType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.Setrole(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frole=AValue) then exit;
+  Frole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.SetclientName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientName=AValue) then exit;
+  FclientName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.SetclientAccountId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientAccountId=AValue) then exit;
+  FclientAccountId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.SetentityId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FentityId=AValue) then exit;
+  FentityId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClient.SetentityName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FentityName=AValue) then exit;
+  FentityName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListClientsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListClientsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListClientsResponse.Setclients(AIndex : Integer; const AValue : TListClientsResponseTypeclientsArray); 
+
+begin
+  If (Fclients=AValue) then exit;
+  Fclients:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListClientsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'clients' : SetLength(Fclients,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsClientsUsersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsClientsUsersResource.ResourceName : String;
+
+begin
+  Result:='users';
+end;
+
+Class Function TAccountsClientsUsersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Tadexchangebuyer2API;
+end;
+
+Function TAccountsClientsUsersResource.Update(clientAccountId: string; userId: string; accountId: string; aClientUser : TClientUser) : TClientUser;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.users.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'userId',userId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aClientUser,TClientUser) as TClientUser;
+end;
+
+Function TAccountsClientsUsersResource.Get(clientAccountId: string; userId: string; accountId: string) : TClientUser;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.users.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'userId',userId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TClientUser) as TClientUser;
+end;
+
+Function TAccountsClientsUsersResource.List(clientAccountId: string; accountId: string; AQuery : string = '') : TListClientUsersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/users';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.users.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListClientUsersResponse) as TListClientUsersResponse;
+end;
+
+
+Function TAccountsClientsUsersResource.List(clientAccountId: string; accountId: string; AQuery : TAccountsClientsUserslistOptions) : TListClientUsersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(clientAccountId,accountId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsClientsInvitationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsClientsInvitationsResource.ResourceName : String;
+
+begin
+  Result:='invitations';
+end;
+
+Class Function TAccountsClientsInvitationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Tadexchangebuyer2API;
+end;
+
+Function TAccountsClientsInvitationsResource.Create(clientAccountId: string; accountId: string; aClientUserInvitation : TClientUserInvitation) : TClientUserInvitation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.invitations.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aClientUserInvitation,TClientUserInvitation) as TClientUserInvitation;
+end;
+
+Function TAccountsClientsInvitationsResource.Get(clientAccountId: string; invitationId: string; accountId: string) : TClientUserInvitation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.invitations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'invitationId',invitationId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TClientUserInvitation) as TClientUserInvitation;
+end;
+
+Function TAccountsClientsInvitationsResource.List(clientAccountId: string; accountId: string; AQuery : string = '') : TListClientUserInvitationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.invitations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListClientUserInvitationsResponse) as TListClientUserInvitationsResponse;
+end;
+
+
+Function TAccountsClientsInvitationsResource.List(clientAccountId: string; accountId: string; AQuery : TAccountsClientsInvitationslistOptions) : TListClientUserInvitationsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(clientAccountId,accountId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsClientsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsClientsResource.ResourceName : String;
+
+begin
+  Result:='clients';
+end;
+
+Class Function TAccountsClientsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Tadexchangebuyer2API;
+end;
+
+Function TAccountsClientsResource.Update(clientAccountId: string; accountId: string; aClient : TClient) : TClient;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aClient,TClient) as TClient;
+end;
+
+Function TAccountsClientsResource.Get(clientAccountId: string; accountId: string) : TClient;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients/{clientAccountId}';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['clientAccountId',clientAccountId,'accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TClient) as TClient;
+end;
+
+Function TAccountsClientsResource.Create(accountId: string; aClient : TClient) : TClient;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2beta1/accounts/{accountId}/clients';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aClient,TClient) as TClient;
+end;
+
+Function TAccountsClientsResource.List(accountId: string; AQuery : string = '') : TListClientsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2beta1/accounts/{accountId}/clients';
+  _Methodid   = 'adexchangebuyer2.accounts.clients.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListClientsResponse) as TListClientsResponse;
+end;
+
+
+Function TAccountsClientsResource.List(accountId: string; AQuery : TAccountsClientslistOptions) : TListClientsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+Function TAccountsClientsResource.GetUsersInstance : TAccountsClientsUsersResource;
+
+begin
+  if (FUsersInstance=Nil) then
+    FUsersInstance:=CreateUsersResource;
+  Result:=FUsersInstance;
+end;
+
+Function TAccountsClientsResource.CreateUsersResource : TAccountsClientsUsersResource;
+
+begin
+  Result:=CreateUsersResource(Self);
+end;
+
+
+Function TAccountsClientsResource.CreateUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;
+
+begin
+  Result:=TAccountsClientsUsersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsClientsResource.GetInvitationsInstance : TAccountsClientsInvitationsResource;
+
+begin
+  if (FInvitationsInstance=Nil) then
+    FInvitationsInstance:=CreateInvitationsResource;
+  Result:=FInvitationsInstance;
+end;
+
+Function TAccountsClientsResource.CreateInvitationsResource : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=CreateInvitationsResource(Self);
+end;
+
+
+Function TAccountsClientsResource.CreateInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=TAccountsClientsInvitationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsResource.ResourceName : String;
+
+begin
+  Result:='accounts';
+end;
+
+Class Function TAccountsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Tadexchangebuyer2API;
+end;
+
+
+
+Function TAccountsResource.GetClientsUsersInstance : TAccountsClientsUsersResource;
+
+begin
+  if (FClientsUsersInstance=Nil) then
+    FClientsUsersInstance:=CreateClientsUsersResource;
+  Result:=FClientsUsersInstance;
+end;
+
+Function TAccountsResource.CreateClientsUsersResource : TAccountsClientsUsersResource;
+
+begin
+  Result:=CreateClientsUsersResource(Self);
+end;
+
+
+Function TAccountsResource.CreateClientsUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;
+
+begin
+  Result:=TAccountsClientsUsersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetClientsInvitationsInstance : TAccountsClientsInvitationsResource;
+
+begin
+  if (FClientsInvitationsInstance=Nil) then
+    FClientsInvitationsInstance:=CreateClientsInvitationsResource;
+  Result:=FClientsInvitationsInstance;
+end;
+
+Function TAccountsResource.CreateClientsInvitationsResource : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=CreateClientsInvitationsResource(Self);
+end;
+
+
+Function TAccountsResource.CreateClientsInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=TAccountsClientsInvitationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetClientsInstance : TAccountsClientsResource;
+
+begin
+  if (FClientsInstance=Nil) then
+    FClientsInstance:=CreateClientsResource;
+  Result:=FClientsInstance;
+end;
+
+Function TAccountsResource.CreateClientsResource : TAccountsClientsResource;
+
+begin
+  Result:=CreateClientsResource(Self);
+end;
+
+
+Function TAccountsResource.CreateClientsResource(AOwner : TComponent) : TAccountsClientsResource;
+
+begin
+  Result:=TAccountsClientsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAdexchangebuyer2API
+  --------------------------------------------------------------------}
+
+Class Function TAdexchangebuyer2API.APIName : String;
+
+begin
+  Result:='adexchangebuyer2';
+end;
+
+Class Function TAdexchangebuyer2API.APIVersion : String;
+
+begin
+  Result:='v2beta1';
+end;
+
+Class Function TAdexchangebuyer2API.APIRevision : String;
+
+begin
+  Result:='20160519';
+end;
+
+Class Function TAdexchangebuyer2API.APIID : String;
+
+begin
+  Result:='adexchangebuyer2:v2beta1';
+end;
+
+Class Function TAdexchangebuyer2API.APITitle : String;
+
+begin
+  Result:='Ad Exchange Buyer API II';
+end;
+
+Class Function TAdexchangebuyer2API.APIDescription : String;
+
+begin
+  Result:='Accesses the latest features for managing Ad Exchange accounts and Real-Time Bidding configurations.';
+end;
+
+Class Function TAdexchangebuyer2API.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TAdexchangebuyer2API.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TAdexchangebuyer2API.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TAdexchangebuyer2API.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TAdexchangebuyer2API.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/ad-exchange/buyer-rest/guides/client-access/';
+end;
+
+Class Function TAdexchangebuyer2API.APIrootUrl : string;
+
+begin
+  Result:='https://adexchangebuyer.googleapis.com/';
+end;
+
+Class Function TAdexchangebuyer2API.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAdexchangebuyer2API.APIbaseURL : String;
+
+begin
+  Result:='https://adexchangebuyer.googleapis.com/';
+end;
+
+Class Function TAdexchangebuyer2API.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TAdexchangebuyer2API.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAdexchangebuyer2API.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TAdexchangebuyer2API.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/adexchange.buyer';
+  Result[0].Description:='Manage your Ad Exchange buyer account configuration';
+  
+end;
+
+Class Function TAdexchangebuyer2API.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TAdexchangebuyer2API.RegisterAPIResources;
+
+begin
+  TClientUser.RegisterObject;
+  TClientUserInvitation.RegisterObject;
+  TListClientUserInvitationsResponse.RegisterObject;
+  TListClientUsersResponse.RegisterObject;
+  TClient.RegisterObject;
+  TListClientsResponse.RegisterObject;
+end;
+
+
+Function TAdexchangebuyer2API.GetAccountsClientsUsersInstance : TAccountsClientsUsersResource;
+
+begin
+  if (FAccountsClientsUsersInstance=Nil) then
+    FAccountsClientsUsersInstance:=CreateAccountsClientsUsersResource;
+  Result:=FAccountsClientsUsersInstance;
+end;
+
+Function TAdexchangebuyer2API.CreateAccountsClientsUsersResource : TAccountsClientsUsersResource;
+
+begin
+  Result:=CreateAccountsClientsUsersResource(Self);
+end;
+
+
+Function TAdexchangebuyer2API.CreateAccountsClientsUsersResource(AOwner : TComponent) : TAccountsClientsUsersResource;
+
+begin
+  Result:=TAccountsClientsUsersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAdexchangebuyer2API.GetAccountsClientsInvitationsInstance : TAccountsClientsInvitationsResource;
+
+begin
+  if (FAccountsClientsInvitationsInstance=Nil) then
+    FAccountsClientsInvitationsInstance:=CreateAccountsClientsInvitationsResource;
+  Result:=FAccountsClientsInvitationsInstance;
+end;
+
+Function TAdexchangebuyer2API.CreateAccountsClientsInvitationsResource : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=CreateAccountsClientsInvitationsResource(Self);
+end;
+
+
+Function TAdexchangebuyer2API.CreateAccountsClientsInvitationsResource(AOwner : TComponent) : TAccountsClientsInvitationsResource;
+
+begin
+  Result:=TAccountsClientsInvitationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAdexchangebuyer2API.GetAccountsClientsInstance : TAccountsClientsResource;
+
+begin
+  if (FAccountsClientsInstance=Nil) then
+    FAccountsClientsInstance:=CreateAccountsClientsResource;
+  Result:=FAccountsClientsInstance;
+end;
+
+Function TAdexchangebuyer2API.CreateAccountsClientsResource : TAccountsClientsResource;
+
+begin
+  Result:=CreateAccountsClientsResource(Self);
+end;
+
+
+Function TAdexchangebuyer2API.CreateAccountsClientsResource(AOwner : TComponent) : TAccountsClientsResource;
+
+begin
+  Result:=TAccountsClientsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAdexchangebuyer2API.GetAccountsInstance : TAccountsResource;
+
+begin
+  if (FAccountsInstance=Nil) then
+    FAccountsInstance:=CreateAccountsResource;
+  Result:=FAccountsInstance;
+end;
+
+Function TAdexchangebuyer2API.CreateAccountsResource : TAccountsResource;
+
+begin
+  Result:=CreateAccountsResource(Self);
+end;
+
+
+Function TAdexchangebuyer2API.CreateAccountsResource(AOwner : TComponent) : TAccountsResource;
+
+begin
+  Result:=TAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TAdexchangebuyer2API.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 469 - 492
packages/googleapi/src/googleadexchangeseller.pp


File diff suppressed because it is too large
+ 368 - 412
packages/googleapi/src/googleadmin.pp


File diff suppressed because it is too large
+ 327 - 471
packages/googleapi/src/googleadsense.pp


File diff suppressed because it is too large
+ 409 - 461
packages/googleapi/src/googleadsensehost.pp


File diff suppressed because it is too large
+ 340 - 476
packages/googleapi/src/googleanalytics.pp


+ 3021 - 0
packages/googleapi/src/googleanalyticsreporting.pp

@@ -0,0 +1,3021 @@
+unit googleanalyticsreporting;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TPivotHeader = Class;
+  TMetric = Class;
+  TColumnHeader = Class;
+  TDynamicSegment = Class;
+  TMetricHeader = Class;
+  TReport = Class;
+  TSegmentFilterClause = Class;
+  TDimensionFilter = Class;
+  TSegmentDimensionFilter = Class;
+  TReportRequest = Class;
+  TSimpleSegment = Class;
+  TSegmentDefinition = Class;
+  TSegmentMetricFilter = Class;
+  TReportData = Class;
+  TGetReportsRequest = Class;
+  TOrderBy = Class;
+  TCohort = Class;
+  TOrFiltersForSegment = Class;
+  TSequenceSegment = Class;
+  TSegmentFilter = Class;
+  TPivotHeaderEntry = Class;
+  TDimensionFilterClause = Class;
+  TSegmentSequenceStep = Class;
+  TPivot = Class;
+  TDateRangeValues = Class;
+  TMetricFilterClause = Class;
+  TSegment = Class;
+  TDateRange = Class;
+  TReportRow = Class;
+  TCohortGroup = Class;
+  TGetReportsResponse = Class;
+  TMetricHeaderEntry = Class;
+  TMetricFilter = Class;
+  TDimension = Class;
+  TPivotValueRegion = Class;
+  TPivotHeaderArray = Array of TPivotHeader;
+  TMetricArray = Array of TMetric;
+  TColumnHeaderArray = Array of TColumnHeader;
+  TDynamicSegmentArray = Array of TDynamicSegment;
+  TMetricHeaderArray = Array of TMetricHeader;
+  TReportArray = Array of TReport;
+  TSegmentFilterClauseArray = Array of TSegmentFilterClause;
+  TDimensionFilterArray = Array of TDimensionFilter;
+  TSegmentDimensionFilterArray = Array of TSegmentDimensionFilter;
+  TReportRequestArray = Array of TReportRequest;
+  TSimpleSegmentArray = Array of TSimpleSegment;
+  TSegmentDefinitionArray = Array of TSegmentDefinition;
+  TSegmentMetricFilterArray = Array of TSegmentMetricFilter;
+  TReportDataArray = Array of TReportData;
+  TGetReportsRequestArray = Array of TGetReportsRequest;
+  TOrderByArray = Array of TOrderBy;
+  TCohortArray = Array of TCohort;
+  TOrFiltersForSegmentArray = Array of TOrFiltersForSegment;
+  TSequenceSegmentArray = Array of TSequenceSegment;
+  TSegmentFilterArray = Array of TSegmentFilter;
+  TPivotHeaderEntryArray = Array of TPivotHeaderEntry;
+  TDimensionFilterClauseArray = Array of TDimensionFilterClause;
+  TSegmentSequenceStepArray = Array of TSegmentSequenceStep;
+  TPivotArray = Array of TPivot;
+  TDateRangeValuesArray = Array of TDateRangeValues;
+  TMetricFilterClauseArray = Array of TMetricFilterClause;
+  TSegmentArray = Array of TSegment;
+  TDateRangeArray = Array of TDateRange;
+  TReportRowArray = Array of TReportRow;
+  TCohortGroupArray = Array of TCohortGroup;
+  TGetReportsResponseArray = Array of TGetReportsResponse;
+  TMetricHeaderEntryArray = Array of TMetricHeaderEntry;
+  TMetricFilterArray = Array of TMetricFilter;
+  TDimensionArray = Array of TDimension;
+  TPivotValueRegionArray = Array of TPivotValueRegion;
+  //Anonymous types, using auto-generated names
+  TPivotHeaderTypepivotHeaderEntriesArray = Array of TPivotHeaderEntry;
+  TMetricHeaderTypemetricHeaderEntriesArray = Array of TMetricHeaderEntry;
+  TMetricHeaderTypepivotHeadersArray = Array of TPivotHeader;
+  TReportRequestTypedimensionsArray = Array of TDimension;
+  TReportRequestTypemetricFilterClausesArray = Array of TMetricFilterClause;
+  TReportRequestTypedimensionFilterClausesArray = Array of TDimensionFilterClause;
+  TReportRequestTypepivotsArray = Array of TPivot;
+  TReportRequestTypedateRangesArray = Array of TDateRange;
+  TReportRequestTypesegmentsArray = Array of TSegment;
+  TReportRequestTypemetricsArray = Array of TMetric;
+  TReportRequestTypeorderBysArray = Array of TOrderBy;
+  TSimpleSegmentTypeorFiltersForSegmentArray = Array of TOrFiltersForSegment;
+  TSegmentDefinitionTypesegmentFiltersArray = Array of TSegmentFilter;
+  TReportDataTypemaximumsArray = Array of TDateRangeValues;
+  TReportDataTypeminimumsArray = Array of TDateRangeValues;
+  TReportDataTyperowsArray = Array of TReportRow;
+  TReportDataTypetotalsArray = Array of TDateRangeValues;
+  TGetReportsRequestTypereportRequestsArray = Array of TReportRequest;
+  TOrFiltersForSegmentTypesegmentFilterClausesArray = Array of TSegmentFilterClause;
+  TSequenceSegmentTypesegmentSequenceStepsArray = Array of TSegmentSequenceStep;
+  TDimensionFilterClauseTypefiltersArray = Array of TDimensionFilter;
+  TSegmentSequenceStepTypeorFiltersForSegmentArray = Array of TOrFiltersForSegment;
+  TPivotTypedimensionsArray = Array of TDimension;
+  TPivotTypemetricsArray = Array of TMetric;
+  TPivotTypedimensionFilterClausesArray = Array of TDimensionFilterClause;
+  TDateRangeValuesTypepivotValueRegionsArray = Array of TPivotValueRegion;
+  TMetricFilterClauseTypefiltersArray = Array of TMetricFilter;
+  TReportRowTypemetricsArray = Array of TDateRangeValues;
+  TCohortGroupTypecohortsArray = Array of TCohort;
+  TGetReportsResponseTypereportsArray = Array of TReport;
+  
+  { --------------------------------------------------------------------
+    TPivotHeader
+    --------------------------------------------------------------------}
+  
+  TPivotHeader = Class(TGoogleBaseObject)
+  Private
+    FtotalPivotGroupsCount : integer;
+    FpivotHeaderEntries : TPivotHeaderTypepivotHeaderEntriesArray;
+  Protected
+    //Property setters
+    Procedure SettotalPivotGroupsCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetpivotHeaderEntries(AIndex : Integer; const AValue : TPivotHeaderTypepivotHeaderEntriesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property totalPivotGroupsCount : integer Index 0 Read FtotalPivotGroupsCount Write SettotalPivotGroupsCount;
+    Property pivotHeaderEntries : TPivotHeaderTypepivotHeaderEntriesArray Index 8 Read FpivotHeaderEntries Write SetpivotHeaderEntries;
+  end;
+  TPivotHeaderClass = Class of TPivotHeader;
+  
+  { --------------------------------------------------------------------
+    TMetric
+    --------------------------------------------------------------------}
+  
+  TMetric = Class(TGoogleBaseObject)
+  Private
+    Falias : String;
+    FformattingType : String;
+    Fexpression : String;
+  Protected
+    //Property setters
+    Procedure Setalias(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattingType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpression(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property alias : String Index 0 Read Falias Write Setalias;
+    Property formattingType : String Index 8 Read FformattingType Write SetformattingType;
+    Property expression : String Index 16 Read Fexpression Write Setexpression;
+  end;
+  TMetricClass = Class of TMetric;
+  
+  { --------------------------------------------------------------------
+    TColumnHeader
+    --------------------------------------------------------------------}
+  
+  TColumnHeader = Class(TGoogleBaseObject)
+  Private
+    Fdimensions : TStringArray;
+    FmetricHeader : TMetricHeader;
+  Protected
+    //Property setters
+    Procedure Setdimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetmetricHeader(AIndex : Integer; const AValue : TMetricHeader); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property dimensions : TStringArray Index 0 Read Fdimensions Write Setdimensions;
+    Property metricHeader : TMetricHeader Index 8 Read FmetricHeader Write SetmetricHeader;
+  end;
+  TColumnHeaderClass = Class of TColumnHeader;
+  
+  { --------------------------------------------------------------------
+    TDynamicSegment
+    --------------------------------------------------------------------}
+  
+  TDynamicSegment = Class(TGoogleBaseObject)
+  Private
+    FsessionSegment : TSegmentDefinition;
+    Fname : String;
+    FuserSegment : TSegmentDefinition;
+  Protected
+    //Property setters
+    Procedure SetsessionSegment(AIndex : Integer; const AValue : TSegmentDefinition); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserSegment(AIndex : Integer; const AValue : TSegmentDefinition); virtual;
+  Public
+  Published
+    Property sessionSegment : TSegmentDefinition Index 0 Read FsessionSegment Write SetsessionSegment;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property userSegment : TSegmentDefinition Index 16 Read FuserSegment Write SetuserSegment;
+  end;
+  TDynamicSegmentClass = Class of TDynamicSegment;
+  
+  { --------------------------------------------------------------------
+    TMetricHeader
+    --------------------------------------------------------------------}
+  
+  TMetricHeader = Class(TGoogleBaseObject)
+  Private
+    FmetricHeaderEntries : TMetricHeaderTypemetricHeaderEntriesArray;
+    FpivotHeaders : TMetricHeaderTypepivotHeadersArray;
+  Protected
+    //Property setters
+    Procedure SetmetricHeaderEntries(AIndex : Integer; const AValue : TMetricHeaderTypemetricHeaderEntriesArray); virtual;
+    Procedure SetpivotHeaders(AIndex : Integer; const AValue : TMetricHeaderTypepivotHeadersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property metricHeaderEntries : TMetricHeaderTypemetricHeaderEntriesArray Index 0 Read FmetricHeaderEntries Write SetmetricHeaderEntries;
+    Property pivotHeaders : TMetricHeaderTypepivotHeadersArray Index 8 Read FpivotHeaders Write SetpivotHeaders;
+  end;
+  TMetricHeaderClass = Class of TMetricHeader;
+  
+  { --------------------------------------------------------------------
+    TReport
+    --------------------------------------------------------------------}
+  
+  TReport = Class(TGoogleBaseObject)
+  Private
+    FcolumnHeader : TColumnHeader;
+    Fdata : TReportData;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetcolumnHeader(AIndex : Integer; const AValue : TColumnHeader); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : TReportData); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property columnHeader : TColumnHeader Index 0 Read FcolumnHeader Write SetcolumnHeader;
+    Property data : TReportData Index 8 Read Fdata Write Setdata;
+    Property nextPageToken : String Index 16 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TReportClass = Class of TReport;
+  
+  { --------------------------------------------------------------------
+    TSegmentFilterClause
+    --------------------------------------------------------------------}
+  
+  TSegmentFilterClause = Class(TGoogleBaseObject)
+  Private
+    FdimensionFilter : TSegmentDimensionFilter;
+    FmetricFilter : TSegmentMetricFilter;
+    F_not : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetdimensionFilter(AIndex : Integer; const AValue : TSegmentDimensionFilter); virtual;
+    Procedure SetmetricFilter(AIndex : Integer; const AValue : TSegmentMetricFilter); virtual;
+    Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property dimensionFilter : TSegmentDimensionFilter Index 0 Read FdimensionFilter Write SetdimensionFilter;
+    Property metricFilter : TSegmentMetricFilter Index 8 Read FmetricFilter Write SetmetricFilter;
+    Property _not : boolean Index 16 Read F_not Write Set_not;
+  end;
+  TSegmentFilterClauseClass = Class of TSegmentFilterClause;
+  
+  { --------------------------------------------------------------------
+    TDimensionFilter
+    --------------------------------------------------------------------}
+  
+  TDimensionFilter = Class(TGoogleBaseObject)
+  Private
+    FdimensionName : String;
+    F_operator : String;
+    FcaseSensitive : boolean;
+    Fexpressions : TStringArray;
+    F_not : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetdimensionName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcaseSensitive(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setexpressions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property dimensionName : String Index 0 Read FdimensionName Write SetdimensionName;
+    Property _operator : String Index 8 Read F_operator Write Set_operator;
+    Property caseSensitive : boolean Index 16 Read FcaseSensitive Write SetcaseSensitive;
+    Property expressions : TStringArray Index 24 Read Fexpressions Write Setexpressions;
+    Property _not : boolean Index 32 Read F_not Write Set_not;
+  end;
+  TDimensionFilterClass = Class of TDimensionFilter;
+  
+  { --------------------------------------------------------------------
+    TSegmentDimensionFilter
+    --------------------------------------------------------------------}
+  
+  TSegmentDimensionFilter = Class(TGoogleBaseObject)
+  Private
+    FmaxComparisonValue : String;
+    FdimensionName : String;
+    FcaseSensitive : boolean;
+    F_operator : String;
+    Fexpressions : TStringArray;
+    FminComparisonValue : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetmaxComparisonValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdimensionName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcaseSensitive(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpressions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetminComparisonValue(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property maxComparisonValue : String Index 0 Read FmaxComparisonValue Write SetmaxComparisonValue;
+    Property dimensionName : String Index 8 Read FdimensionName Write SetdimensionName;
+    Property caseSensitive : boolean Index 16 Read FcaseSensitive Write SetcaseSensitive;
+    Property _operator : String Index 24 Read F_operator Write Set_operator;
+    Property expressions : TStringArray Index 32 Read Fexpressions Write Setexpressions;
+    Property minComparisonValue : String Index 40 Read FminComparisonValue Write SetminComparisonValue;
+  end;
+  TSegmentDimensionFilterClass = Class of TSegmentDimensionFilter;
+  
+  { --------------------------------------------------------------------
+    TReportRequest
+    --------------------------------------------------------------------}
+  
+  TReportRequest = Class(TGoogleBaseObject)
+  Private
+    FcohortGroup : TCohortGroup;
+    Fdimensions : TReportRequestTypedimensionsArray;
+    FmetricFilterClauses : TReportRequestTypemetricFilterClausesArray;
+    FhideTotals : boolean;
+    FincludeEmptyRows : boolean;
+    FdimensionFilterClauses : TReportRequestTypedimensionFilterClausesArray;
+    Fpivots : TReportRequestTypepivotsArray;
+    FdateRanges : TReportRequestTypedateRangesArray;
+    Fsegments : TReportRequestTypesegmentsArray;
+    FsamplingLevel : String;
+    Fmetrics : TReportRequestTypemetricsArray;
+    FpageSize : integer;
+    ForderBys : TReportRequestTypeorderBysArray;
+    FfiltersExpression : String;
+    FhideValueRanges : boolean;
+    FviewId : String;
+    FpageToken : String;
+  Protected
+    //Property setters
+    Procedure SetcohortGroup(AIndex : Integer; const AValue : TCohortGroup); virtual;
+    Procedure Setdimensions(AIndex : Integer; const AValue : TReportRequestTypedimensionsArray); virtual;
+    Procedure SetmetricFilterClauses(AIndex : Integer; const AValue : TReportRequestTypemetricFilterClausesArray); virtual;
+    Procedure SethideTotals(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetincludeEmptyRows(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdimensionFilterClauses(AIndex : Integer; const AValue : TReportRequestTypedimensionFilterClausesArray); virtual;
+    Procedure Setpivots(AIndex : Integer; const AValue : TReportRequestTypepivotsArray); virtual;
+    Procedure SetdateRanges(AIndex : Integer; const AValue : TReportRequestTypedateRangesArray); virtual;
+    Procedure Setsegments(AIndex : Integer; const AValue : TReportRequestTypesegmentsArray); virtual;
+    Procedure SetsamplingLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetrics(AIndex : Integer; const AValue : TReportRequestTypemetricsArray); virtual;
+    Procedure SetpageSize(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetorderBys(AIndex : Integer; const AValue : TReportRequestTypeorderBysArray); virtual;
+    Procedure SetfiltersExpression(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethideValueRanges(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetviewId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property cohortGroup : TCohortGroup Index 0 Read FcohortGroup Write SetcohortGroup;
+    Property dimensions : TReportRequestTypedimensionsArray Index 8 Read Fdimensions Write Setdimensions;
+    Property metricFilterClauses : TReportRequestTypemetricFilterClausesArray Index 16 Read FmetricFilterClauses Write SetmetricFilterClauses;
+    Property hideTotals : boolean Index 24 Read FhideTotals Write SethideTotals;
+    Property includeEmptyRows : boolean Index 32 Read FincludeEmptyRows Write SetincludeEmptyRows;
+    Property dimensionFilterClauses : TReportRequestTypedimensionFilterClausesArray Index 40 Read FdimensionFilterClauses Write SetdimensionFilterClauses;
+    Property pivots : TReportRequestTypepivotsArray Index 48 Read Fpivots Write Setpivots;
+    Property dateRanges : TReportRequestTypedateRangesArray Index 56 Read FdateRanges Write SetdateRanges;
+    Property segments : TReportRequestTypesegmentsArray Index 64 Read Fsegments Write Setsegments;
+    Property samplingLevel : String Index 72 Read FsamplingLevel Write SetsamplingLevel;
+    Property metrics : TReportRequestTypemetricsArray Index 80 Read Fmetrics Write Setmetrics;
+    Property pageSize : integer Index 88 Read FpageSize Write SetpageSize;
+    Property orderBys : TReportRequestTypeorderBysArray Index 96 Read ForderBys Write SetorderBys;
+    Property filtersExpression : String Index 104 Read FfiltersExpression Write SetfiltersExpression;
+    Property hideValueRanges : boolean Index 112 Read FhideValueRanges Write SethideValueRanges;
+    Property viewId : String Index 120 Read FviewId Write SetviewId;
+    Property pageToken : String Index 128 Read FpageToken Write SetpageToken;
+  end;
+  TReportRequestClass = Class of TReportRequest;
+  
+  { --------------------------------------------------------------------
+    TSimpleSegment
+    --------------------------------------------------------------------}
+  
+  TSimpleSegment = Class(TGoogleBaseObject)
+  Private
+    ForFiltersForSegment : TSimpleSegmentTypeorFiltersForSegmentArray;
+  Protected
+    //Property setters
+    Procedure SetorFiltersForSegment(AIndex : Integer; const AValue : TSimpleSegmentTypeorFiltersForSegmentArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property orFiltersForSegment : TSimpleSegmentTypeorFiltersForSegmentArray Index 0 Read ForFiltersForSegment Write SetorFiltersForSegment;
+  end;
+  TSimpleSegmentClass = Class of TSimpleSegment;
+  
+  { --------------------------------------------------------------------
+    TSegmentDefinition
+    --------------------------------------------------------------------}
+  
+  TSegmentDefinition = Class(TGoogleBaseObject)
+  Private
+    FsegmentFilters : TSegmentDefinitionTypesegmentFiltersArray;
+  Protected
+    //Property setters
+    Procedure SetsegmentFilters(AIndex : Integer; const AValue : TSegmentDefinitionTypesegmentFiltersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property segmentFilters : TSegmentDefinitionTypesegmentFiltersArray Index 0 Read FsegmentFilters Write SetsegmentFilters;
+  end;
+  TSegmentDefinitionClass = Class of TSegmentDefinition;
+  
+  { --------------------------------------------------------------------
+    TSegmentMetricFilter
+    --------------------------------------------------------------------}
+  
+  TSegmentMetricFilter = Class(TGoogleBaseObject)
+  Private
+    FmetricName : String;
+    F_operator : String;
+    FcomparisonValue : String;
+    Fscope : String;
+    FmaxComparisonValue : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetmetricName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcomparisonValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setscope(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxComparisonValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metricName : String Index 0 Read FmetricName Write SetmetricName;
+    Property _operator : String Index 8 Read F_operator Write Set_operator;
+    Property comparisonValue : String Index 16 Read FcomparisonValue Write SetcomparisonValue;
+    Property scope : String Index 24 Read Fscope Write Setscope;
+    Property maxComparisonValue : String Index 32 Read FmaxComparisonValue Write SetmaxComparisonValue;
+  end;
+  TSegmentMetricFilterClass = Class of TSegmentMetricFilter;
+  
+  { --------------------------------------------------------------------
+    TReportData
+    --------------------------------------------------------------------}
+  
+  TReportData = Class(TGoogleBaseObject)
+  Private
+    FrowCount : integer;
+    FsamplingSpaceSizes : TStringArray;
+    Fmaximums : TReportDataTypemaximumsArray;
+    FsamplesReadCounts : TStringArray;
+    Fminimums : TReportDataTypeminimumsArray;
+    Frows : TReportDataTyperowsArray;
+    Ftotals : TReportDataTypetotalsArray;
+    FisDataGolden : boolean;
+  Protected
+    //Property setters
+    Procedure SetrowCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsamplingSpaceSizes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmaximums(AIndex : Integer; const AValue : TReportDataTypemaximumsArray); virtual;
+    Procedure SetsamplesReadCounts(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setminimums(AIndex : Integer; const AValue : TReportDataTypeminimumsArray); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TReportDataTyperowsArray); virtual;
+    Procedure Settotals(AIndex : Integer; const AValue : TReportDataTypetotalsArray); virtual;
+    Procedure SetisDataGolden(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property rowCount : integer Index 0 Read FrowCount Write SetrowCount;
+    Property samplingSpaceSizes : TStringArray Index 8 Read FsamplingSpaceSizes Write SetsamplingSpaceSizes;
+    Property maximums : TReportDataTypemaximumsArray Index 16 Read Fmaximums Write Setmaximums;
+    Property samplesReadCounts : TStringArray Index 24 Read FsamplesReadCounts Write SetsamplesReadCounts;
+    Property minimums : TReportDataTypeminimumsArray Index 32 Read Fminimums Write Setminimums;
+    Property rows : TReportDataTyperowsArray Index 40 Read Frows Write Setrows;
+    Property totals : TReportDataTypetotalsArray Index 48 Read Ftotals Write Settotals;
+    Property isDataGolden : boolean Index 56 Read FisDataGolden Write SetisDataGolden;
+  end;
+  TReportDataClass = Class of TReportData;
+  
+  { --------------------------------------------------------------------
+    TGetReportsRequest
+    --------------------------------------------------------------------}
+  
+  TGetReportsRequest = Class(TGoogleBaseObject)
+  Private
+    FreportRequests : TGetReportsRequestTypereportRequestsArray;
+  Protected
+    //Property setters
+    Procedure SetreportRequests(AIndex : Integer; const AValue : TGetReportsRequestTypereportRequestsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property reportRequests : TGetReportsRequestTypereportRequestsArray Index 0 Read FreportRequests Write SetreportRequests;
+  end;
+  TGetReportsRequestClass = Class of TGetReportsRequest;
+  
+  { --------------------------------------------------------------------
+    TOrderBy
+    --------------------------------------------------------------------}
+  
+  TOrderBy = Class(TGoogleBaseObject)
+  Private
+    FsortOrder : String;
+    ForderType : String;
+    FfieldName : String;
+  Protected
+    //Property setters
+    Procedure SetsortOrder(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetorderType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfieldName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sortOrder : String Index 0 Read FsortOrder Write SetsortOrder;
+    Property orderType : String Index 8 Read ForderType Write SetorderType;
+    Property fieldName : String Index 16 Read FfieldName Write SetfieldName;
+  end;
+  TOrderByClass = Class of TOrderBy;
+  
+  { --------------------------------------------------------------------
+    TCohort
+    --------------------------------------------------------------------}
+  
+  TCohort = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    FdateRange : TDateRange;
+    Fname : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdateRange(AIndex : Integer; const AValue : TDateRange); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property dateRange : TDateRange Index 8 Read FdateRange Write SetdateRange;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TCohortClass = Class of TCohort;
+  
+  { --------------------------------------------------------------------
+    TOrFiltersForSegment
+    --------------------------------------------------------------------}
+  
+  TOrFiltersForSegment = Class(TGoogleBaseObject)
+  Private
+    FsegmentFilterClauses : TOrFiltersForSegmentTypesegmentFilterClausesArray;
+  Protected
+    //Property setters
+    Procedure SetsegmentFilterClauses(AIndex : Integer; const AValue : TOrFiltersForSegmentTypesegmentFilterClausesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property segmentFilterClauses : TOrFiltersForSegmentTypesegmentFilterClausesArray Index 0 Read FsegmentFilterClauses Write SetsegmentFilterClauses;
+  end;
+  TOrFiltersForSegmentClass = Class of TOrFiltersForSegment;
+  
+  { --------------------------------------------------------------------
+    TSequenceSegment
+    --------------------------------------------------------------------}
+  
+  TSequenceSegment = Class(TGoogleBaseObject)
+  Private
+    FfirstStepShouldMatchFirstHit : boolean;
+    FsegmentSequenceSteps : TSequenceSegmentTypesegmentSequenceStepsArray;
+  Protected
+    //Property setters
+    Procedure SetfirstStepShouldMatchFirstHit(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsegmentSequenceSteps(AIndex : Integer; const AValue : TSequenceSegmentTypesegmentSequenceStepsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property firstStepShouldMatchFirstHit : boolean Index 0 Read FfirstStepShouldMatchFirstHit Write SetfirstStepShouldMatchFirstHit;
+    Property segmentSequenceSteps : TSequenceSegmentTypesegmentSequenceStepsArray Index 8 Read FsegmentSequenceSteps Write SetsegmentSequenceSteps;
+  end;
+  TSequenceSegmentClass = Class of TSequenceSegment;
+  
+  { --------------------------------------------------------------------
+    TSegmentFilter
+    --------------------------------------------------------------------}
+  
+  TSegmentFilter = Class(TGoogleBaseObject)
+  Private
+    FsequenceSegment : TSequenceSegment;
+    F_not : boolean;
+    FsimpleSegment : TSimpleSegment;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetsequenceSegment(AIndex : Integer; const AValue : TSequenceSegment); virtual;
+    Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsimpleSegment(AIndex : Integer; const AValue : TSimpleSegment); virtual;
+  Public
+  Published
+    Property sequenceSegment : TSequenceSegment Index 0 Read FsequenceSegment Write SetsequenceSegment;
+    Property _not : boolean Index 8 Read F_not Write Set_not;
+    Property simpleSegment : TSimpleSegment Index 16 Read FsimpleSegment Write SetsimpleSegment;
+  end;
+  TSegmentFilterClass = Class of TSegmentFilter;
+  
+  { --------------------------------------------------------------------
+    TPivotHeaderEntry
+    --------------------------------------------------------------------}
+  
+  TPivotHeaderEntry = Class(TGoogleBaseObject)
+  Private
+    FdimensionNames : TStringArray;
+    FdimensionValues : TStringArray;
+    Fmetric : TMetricHeaderEntry;
+  Protected
+    //Property setters
+    Procedure SetdimensionNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetdimensionValues(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmetric(AIndex : Integer; const AValue : TMetricHeaderEntry); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property dimensionNames : TStringArray Index 0 Read FdimensionNames Write SetdimensionNames;
+    Property dimensionValues : TStringArray Index 8 Read FdimensionValues Write SetdimensionValues;
+    Property metric : TMetricHeaderEntry Index 16 Read Fmetric Write Setmetric;
+  end;
+  TPivotHeaderEntryClass = Class of TPivotHeaderEntry;
+  
+  { --------------------------------------------------------------------
+    TDimensionFilterClause
+    --------------------------------------------------------------------}
+  
+  TDimensionFilterClause = Class(TGoogleBaseObject)
+  Private
+    F_operator : String;
+    Ffilters : TDimensionFilterClauseTypefiltersArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfilters(AIndex : Integer; const AValue : TDimensionFilterClauseTypefiltersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property _operator : String Index 0 Read F_operator Write Set_operator;
+    Property filters : TDimensionFilterClauseTypefiltersArray Index 8 Read Ffilters Write Setfilters;
+  end;
+  TDimensionFilterClauseClass = Class of TDimensionFilterClause;
+  
+  { --------------------------------------------------------------------
+    TSegmentSequenceStep
+    --------------------------------------------------------------------}
+  
+  TSegmentSequenceStep = Class(TGoogleBaseObject)
+  Private
+    FmatchType : String;
+    ForFiltersForSegment : TSegmentSequenceStepTypeorFiltersForSegmentArray;
+  Protected
+    //Property setters
+    Procedure SetmatchType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetorFiltersForSegment(AIndex : Integer; const AValue : TSegmentSequenceStepTypeorFiltersForSegmentArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property matchType : String Index 0 Read FmatchType Write SetmatchType;
+    Property orFiltersForSegment : TSegmentSequenceStepTypeorFiltersForSegmentArray Index 8 Read ForFiltersForSegment Write SetorFiltersForSegment;
+  end;
+  TSegmentSequenceStepClass = Class of TSegmentSequenceStep;
+  
+  { --------------------------------------------------------------------
+    TPivot
+    --------------------------------------------------------------------}
+  
+  TPivot = Class(TGoogleBaseObject)
+  Private
+    Fdimensions : TPivotTypedimensionsArray;
+    Fmetrics : TPivotTypemetricsArray;
+    FmaxGroupCount : integer;
+    FdimensionFilterClauses : TPivotTypedimensionFilterClausesArray;
+    FstartGroup : integer;
+  Protected
+    //Property setters
+    Procedure Setdimensions(AIndex : Integer; const AValue : TPivotTypedimensionsArray); virtual;
+    Procedure Setmetrics(AIndex : Integer; const AValue : TPivotTypemetricsArray); virtual;
+    Procedure SetmaxGroupCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetdimensionFilterClauses(AIndex : Integer; const AValue : TPivotTypedimensionFilterClausesArray); virtual;
+    Procedure SetstartGroup(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property dimensions : TPivotTypedimensionsArray Index 0 Read Fdimensions Write Setdimensions;
+    Property metrics : TPivotTypemetricsArray Index 8 Read Fmetrics Write Setmetrics;
+    Property maxGroupCount : integer Index 16 Read FmaxGroupCount Write SetmaxGroupCount;
+    Property dimensionFilterClauses : TPivotTypedimensionFilterClausesArray Index 24 Read FdimensionFilterClauses Write SetdimensionFilterClauses;
+    Property startGroup : integer Index 32 Read FstartGroup Write SetstartGroup;
+  end;
+  TPivotClass = Class of TPivot;
+  
+  { --------------------------------------------------------------------
+    TDateRangeValues
+    --------------------------------------------------------------------}
+  
+  TDateRangeValues = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TStringArray;
+    FpivotValueRegions : TDateRangeValuesTypepivotValueRegionsArray;
+  Protected
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetpivotValueRegions(AIndex : Integer; const AValue : TDateRangeValuesTypepivotValueRegionsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property values : TStringArray Index 0 Read Fvalues Write Setvalues;
+    Property pivotValueRegions : TDateRangeValuesTypepivotValueRegionsArray Index 8 Read FpivotValueRegions Write SetpivotValueRegions;
+  end;
+  TDateRangeValuesClass = Class of TDateRangeValues;
+  
+  { --------------------------------------------------------------------
+    TMetricFilterClause
+    --------------------------------------------------------------------}
+  
+  TMetricFilterClause = Class(TGoogleBaseObject)
+  Private
+    F_operator : String;
+    Ffilters : TMetricFilterClauseTypefiltersArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfilters(AIndex : Integer; const AValue : TMetricFilterClauseTypefiltersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property _operator : String Index 0 Read F_operator Write Set_operator;
+    Property filters : TMetricFilterClauseTypefiltersArray Index 8 Read Ffilters Write Setfilters;
+  end;
+  TMetricFilterClauseClass = Class of TMetricFilterClause;
+  
+  { --------------------------------------------------------------------
+    TSegment
+    --------------------------------------------------------------------}
+  
+  TSegment = Class(TGoogleBaseObject)
+  Private
+    FdynamicSegment : TDynamicSegment;
+    FsegmentId : String;
+  Protected
+    //Property setters
+    Procedure SetdynamicSegment(AIndex : Integer; const AValue : TDynamicSegment); virtual;
+    Procedure SetsegmentId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property dynamicSegment : TDynamicSegment Index 0 Read FdynamicSegment Write SetdynamicSegment;
+    Property segmentId : String Index 8 Read FsegmentId Write SetsegmentId;
+  end;
+  TSegmentClass = Class of TSegment;
+  
+  { --------------------------------------------------------------------
+    TDateRange
+    --------------------------------------------------------------------}
+  
+  TDateRange = Class(TGoogleBaseObject)
+  Private
+    FstartDate : String;
+    FendDate : String;
+  Protected
+    //Property setters
+    Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property startDate : String Index 0 Read FstartDate Write SetstartDate;
+    Property endDate : String Index 8 Read FendDate Write SetendDate;
+  end;
+  TDateRangeClass = Class of TDateRange;
+  
+  { --------------------------------------------------------------------
+    TReportRow
+    --------------------------------------------------------------------}
+  
+  TReportRow = Class(TGoogleBaseObject)
+  Private
+    Fdimensions : TStringArray;
+    Fmetrics : TReportRowTypemetricsArray;
+  Protected
+    //Property setters
+    Procedure Setdimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmetrics(AIndex : Integer; const AValue : TReportRowTypemetricsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property dimensions : TStringArray Index 0 Read Fdimensions Write Setdimensions;
+    Property metrics : TReportRowTypemetricsArray Index 8 Read Fmetrics Write Setmetrics;
+  end;
+  TReportRowClass = Class of TReportRow;
+  
+  { --------------------------------------------------------------------
+    TCohortGroup
+    --------------------------------------------------------------------}
+  
+  TCohortGroup = Class(TGoogleBaseObject)
+  Private
+    FlifetimeValue : boolean;
+    Fcohorts : TCohortGroupTypecohortsArray;
+  Protected
+    //Property setters
+    Procedure SetlifetimeValue(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setcohorts(AIndex : Integer; const AValue : TCohortGroupTypecohortsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property lifetimeValue : boolean Index 0 Read FlifetimeValue Write SetlifetimeValue;
+    Property cohorts : TCohortGroupTypecohortsArray Index 8 Read Fcohorts Write Setcohorts;
+  end;
+  TCohortGroupClass = Class of TCohortGroup;
+  
+  { --------------------------------------------------------------------
+    TGetReportsResponse
+    --------------------------------------------------------------------}
+  
+  TGetReportsResponse = Class(TGoogleBaseObject)
+  Private
+    Freports : TGetReportsResponseTypereportsArray;
+  Protected
+    //Property setters
+    Procedure Setreports(AIndex : Integer; const AValue : TGetReportsResponseTypereportsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property reports : TGetReportsResponseTypereportsArray Index 0 Read Freports Write Setreports;
+  end;
+  TGetReportsResponseClass = Class of TGetReportsResponse;
+  
+  { --------------------------------------------------------------------
+    TMetricHeaderEntry
+    --------------------------------------------------------------------}
+  
+  TMetricHeaderEntry = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fname : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TMetricHeaderEntryClass = Class of TMetricHeaderEntry;
+  
+  { --------------------------------------------------------------------
+    TMetricFilter
+    --------------------------------------------------------------------}
+  
+  TMetricFilter = Class(TGoogleBaseObject)
+  Private
+    FmetricName : String;
+    F_operator : String;
+    FcomparisonValue : String;
+    F_not : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetmetricName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcomparisonValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_not(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property metricName : String Index 0 Read FmetricName Write SetmetricName;
+    Property _operator : String Index 8 Read F_operator Write Set_operator;
+    Property comparisonValue : String Index 16 Read FcomparisonValue Write SetcomparisonValue;
+    Property _not : boolean Index 24 Read F_not Write Set_not;
+  end;
+  TMetricFilterClass = Class of TMetricFilter;
+  
+  { --------------------------------------------------------------------
+    TDimension
+    --------------------------------------------------------------------}
+  
+  TDimension = Class(TGoogleBaseObject)
+  Private
+    FhistogramBuckets : TStringArray;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SethistogramBuckets(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property histogramBuckets : TStringArray Index 0 Read FhistogramBuckets Write SethistogramBuckets;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TDimensionClass = Class of TDimension;
+  
+  { --------------------------------------------------------------------
+    TPivotValueRegion
+    --------------------------------------------------------------------}
+  
+  TPivotValueRegion = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property values : TStringArray Index 0 Read Fvalues Write Setvalues;
+  end;
+  TPivotValueRegionClass = Class of TPivotValueRegion;
+  
+  { --------------------------------------------------------------------
+    TReportsResource
+    --------------------------------------------------------------------}
+  
+  TReportsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function BatchGet(aGetReportsRequest : TGetReportsRequest) : TGetReportsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAnalyticsreportingAPI
+    --------------------------------------------------------------------}
+  
+  TAnalyticsreportingAPI = Class(TGoogleAPI)
+  Private
+    FReportsInstance : TReportsResource;
+    Function GetReportsInstance : TReportsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateReportsResource(AOwner : TComponent) : TReportsResource;virtual;overload;
+    Function CreateReportsResource : TReportsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ReportsResource : TReportsResource Read GetReportsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TPivotHeader
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotHeader.SettotalPivotGroupsCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalPivotGroupsCount=AValue) then exit;
+  FtotalPivotGroupsCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotHeader.SetpivotHeaderEntries(AIndex : Integer; const AValue : TPivotHeaderTypepivotHeaderEntriesArray); 
+
+begin
+  If (FpivotHeaderEntries=AValue) then exit;
+  FpivotHeaderEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotHeader.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'pivotheaderentries' : SetLength(FpivotHeaderEntries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetric
+  --------------------------------------------------------------------}
+
+
+Procedure TMetric.Setalias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Falias=AValue) then exit;
+  Falias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetric.SetformattingType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattingType=AValue) then exit;
+  FformattingType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetric.Setexpression(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fexpression=AValue) then exit;
+  Fexpression:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TColumnHeader
+  --------------------------------------------------------------------}
+
+
+Procedure TColumnHeader.Setdimensions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColumnHeader.SetmetricHeader(AIndex : Integer; const AValue : TMetricHeader); 
+
+begin
+  If (FmetricHeader=AValue) then exit;
+  FmetricHeader:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TColumnHeader.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensions' : SetLength(Fdimensions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDynamicSegment
+  --------------------------------------------------------------------}
+
+
+Procedure TDynamicSegment.SetsessionSegment(AIndex : Integer; const AValue : TSegmentDefinition); 
+
+begin
+  If (FsessionSegment=AValue) then exit;
+  FsessionSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDynamicSegment.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDynamicSegment.SetuserSegment(AIndex : Integer; const AValue : TSegmentDefinition); 
+
+begin
+  If (FuserSegment=AValue) then exit;
+  FuserSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricHeader
+  --------------------------------------------------------------------}
+
+
+Procedure TMetricHeader.SetmetricHeaderEntries(AIndex : Integer; const AValue : TMetricHeaderTypemetricHeaderEntriesArray); 
+
+begin
+  If (FmetricHeaderEntries=AValue) then exit;
+  FmetricHeaderEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricHeader.SetpivotHeaders(AIndex : Integer; const AValue : TMetricHeaderTypepivotHeadersArray); 
+
+begin
+  If (FpivotHeaders=AValue) then exit;
+  FpivotHeaders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMetricHeader.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'metricheaderentries' : SetLength(FmetricHeaderEntries,ALength);
+  'pivotheaders' : SetLength(FpivotHeaders,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TReport
+  --------------------------------------------------------------------}
+
+
+Procedure TReport.SetcolumnHeader(AIndex : Integer; const AValue : TColumnHeader); 
+
+begin
+  If (FcolumnHeader=AValue) then exit;
+  FcolumnHeader:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReport.Setdata(AIndex : Integer; const AValue : TReportData); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReport.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentFilterClause
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentFilterClause.SetdimensionFilter(AIndex : Integer; const AValue : TSegmentDimensionFilter); 
+
+begin
+  If (FdimensionFilter=AValue) then exit;
+  FdimensionFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentFilterClause.SetmetricFilter(AIndex : Integer; const AValue : TSegmentMetricFilter); 
+
+begin
+  If (FmetricFilter=AValue) then exit;
+  FmetricFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentFilterClause.Set_not(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_not=AValue) then exit;
+  F_not:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSegmentFilterClause.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_not' : Result:='not';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TDimensionFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TDimensionFilter.SetdimensionName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdimensionName=AValue) then exit;
+  FdimensionName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionFilter.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionFilter.SetcaseSensitive(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcaseSensitive=AValue) then exit;
+  FcaseSensitive:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionFilter.Setexpressions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fexpressions=AValue) then exit;
+  Fexpressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionFilter.Set_not(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_not=AValue) then exit;
+  F_not:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TDimensionFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  '_not' : Result:='not';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDimensionFilter.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'expressions' : SetLength(Fexpressions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentDimensionFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentDimensionFilter.SetmaxComparisonValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxComparisonValue=AValue) then exit;
+  FmaxComparisonValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentDimensionFilter.SetdimensionName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdimensionName=AValue) then exit;
+  FdimensionName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentDimensionFilter.SetcaseSensitive(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcaseSensitive=AValue) then exit;
+  FcaseSensitive:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentDimensionFilter.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentDimensionFilter.Setexpressions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fexpressions=AValue) then exit;
+  Fexpressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentDimensionFilter.SetminComparisonValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FminComparisonValue=AValue) then exit;
+  FminComparisonValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSegmentDimensionFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSegmentDimensionFilter.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'expressions' : SetLength(Fexpressions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TReportRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TReportRequest.SetcohortGroup(AIndex : Integer; const AValue : TCohortGroup); 
+
+begin
+  If (FcohortGroup=AValue) then exit;
+  FcohortGroup:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.Setdimensions(AIndex : Integer; const AValue : TReportRequestTypedimensionsArray); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetmetricFilterClauses(AIndex : Integer; const AValue : TReportRequestTypemetricFilterClausesArray); 
+
+begin
+  If (FmetricFilterClauses=AValue) then exit;
+  FmetricFilterClauses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SethideTotals(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhideTotals=AValue) then exit;
+  FhideTotals:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetincludeEmptyRows(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FincludeEmptyRows=AValue) then exit;
+  FincludeEmptyRows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetdimensionFilterClauses(AIndex : Integer; const AValue : TReportRequestTypedimensionFilterClausesArray); 
+
+begin
+  If (FdimensionFilterClauses=AValue) then exit;
+  FdimensionFilterClauses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.Setpivots(AIndex : Integer; const AValue : TReportRequestTypepivotsArray); 
+
+begin
+  If (Fpivots=AValue) then exit;
+  Fpivots:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetdateRanges(AIndex : Integer; const AValue : TReportRequestTypedateRangesArray); 
+
+begin
+  If (FdateRanges=AValue) then exit;
+  FdateRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.Setsegments(AIndex : Integer; const AValue : TReportRequestTypesegmentsArray); 
+
+begin
+  If (Fsegments=AValue) then exit;
+  Fsegments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetsamplingLevel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsamplingLevel=AValue) then exit;
+  FsamplingLevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.Setmetrics(AIndex : Integer; const AValue : TReportRequestTypemetricsArray); 
+
+begin
+  If (Fmetrics=AValue) then exit;
+  Fmetrics:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetpageSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FpageSize=AValue) then exit;
+  FpageSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetorderBys(AIndex : Integer; const AValue : TReportRequestTypeorderBysArray); 
+
+begin
+  If (ForderBys=AValue) then exit;
+  ForderBys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetfiltersExpression(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfiltersExpression=AValue) then exit;
+  FfiltersExpression:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SethideValueRanges(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhideValueRanges=AValue) then exit;
+  FhideValueRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetviewId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FviewId=AValue) then exit;
+  FviewId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRequest.SetpageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpageToken=AValue) then exit;
+  FpageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TReportRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensions' : SetLength(Fdimensions,ALength);
+  'metricfilterclauses' : SetLength(FmetricFilterClauses,ALength);
+  'dimensionfilterclauses' : SetLength(FdimensionFilterClauses,ALength);
+  'pivots' : SetLength(Fpivots,ALength);
+  'dateranges' : SetLength(FdateRanges,ALength);
+  'segments' : SetLength(Fsegments,ALength);
+  'metrics' : SetLength(Fmetrics,ALength);
+  'orderbys' : SetLength(ForderBys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSimpleSegment
+  --------------------------------------------------------------------}
+
+
+Procedure TSimpleSegment.SetorFiltersForSegment(AIndex : Integer; const AValue : TSimpleSegmentTypeorFiltersForSegmentArray); 
+
+begin
+  If (ForFiltersForSegment=AValue) then exit;
+  ForFiltersForSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSimpleSegment.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'orfiltersforsegment' : SetLength(ForFiltersForSegment,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentDefinition
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentDefinition.SetsegmentFilters(AIndex : Integer; const AValue : TSegmentDefinitionTypesegmentFiltersArray); 
+
+begin
+  If (FsegmentFilters=AValue) then exit;
+  FsegmentFilters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSegmentDefinition.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'segmentfilters' : SetLength(FsegmentFilters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentMetricFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentMetricFilter.SetmetricName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmetricName=AValue) then exit;
+  FmetricName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentMetricFilter.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentMetricFilter.SetcomparisonValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcomparisonValue=AValue) then exit;
+  FcomparisonValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentMetricFilter.Setscope(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fscope=AValue) then exit;
+  Fscope:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentMetricFilter.SetmaxComparisonValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxComparisonValue=AValue) then exit;
+  FmaxComparisonValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSegmentMetricFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TReportData
+  --------------------------------------------------------------------}
+
+
+Procedure TReportData.SetrowCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrowCount=AValue) then exit;
+  FrowCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.SetsamplingSpaceSizes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FsamplingSpaceSizes=AValue) then exit;
+  FsamplingSpaceSizes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.Setmaximums(AIndex : Integer; const AValue : TReportDataTypemaximumsArray); 
+
+begin
+  If (Fmaximums=AValue) then exit;
+  Fmaximums:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.SetsamplesReadCounts(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FsamplesReadCounts=AValue) then exit;
+  FsamplesReadCounts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.Setminimums(AIndex : Integer; const AValue : TReportDataTypeminimumsArray); 
+
+begin
+  If (Fminimums=AValue) then exit;
+  Fminimums:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.Setrows(AIndex : Integer; const AValue : TReportDataTyperowsArray); 
+
+begin
+  If (Frows=AValue) then exit;
+  Frows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.Settotals(AIndex : Integer; const AValue : TReportDataTypetotalsArray); 
+
+begin
+  If (Ftotals=AValue) then exit;
+  Ftotals:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportData.SetisDataGolden(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisDataGolden=AValue) then exit;
+  FisDataGolden:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TReportData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'samplingspacesizes' : SetLength(FsamplingSpaceSizes,ALength);
+  'maximums' : SetLength(Fmaximums,ALength);
+  'samplesreadcounts' : SetLength(FsamplesReadCounts,ALength);
+  'minimums' : SetLength(Fminimums,ALength);
+  'rows' : SetLength(Frows,ALength);
+  'totals' : SetLength(Ftotals,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetReportsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TGetReportsRequest.SetreportRequests(AIndex : Integer; const AValue : TGetReportsRequestTypereportRequestsArray); 
+
+begin
+  If (FreportRequests=AValue) then exit;
+  FreportRequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGetReportsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'reportrequests' : SetLength(FreportRequests,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOrderBy
+  --------------------------------------------------------------------}
+
+
+Procedure TOrderBy.SetsortOrder(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsortOrder=AValue) then exit;
+  FsortOrder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrderBy.SetorderType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForderType=AValue) then exit;
+  ForderType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrderBy.SetfieldName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfieldName=AValue) then exit;
+  FfieldName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCohort
+  --------------------------------------------------------------------}
+
+
+Procedure TCohort.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCohort.SetdateRange(AIndex : Integer; const AValue : TDateRange); 
+
+begin
+  If (FdateRange=AValue) then exit;
+  FdateRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCohort.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TCohort.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TOrFiltersForSegment
+  --------------------------------------------------------------------}
+
+
+Procedure TOrFiltersForSegment.SetsegmentFilterClauses(AIndex : Integer; const AValue : TOrFiltersForSegmentTypesegmentFilterClausesArray); 
+
+begin
+  If (FsegmentFilterClauses=AValue) then exit;
+  FsegmentFilterClauses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOrFiltersForSegment.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'segmentfilterclauses' : SetLength(FsegmentFilterClauses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSequenceSegment
+  --------------------------------------------------------------------}
+
+
+Procedure TSequenceSegment.SetfirstStepShouldMatchFirstHit(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FfirstStepShouldMatchFirstHit=AValue) then exit;
+  FfirstStepShouldMatchFirstHit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSequenceSegment.SetsegmentSequenceSteps(AIndex : Integer; const AValue : TSequenceSegmentTypesegmentSequenceStepsArray); 
+
+begin
+  If (FsegmentSequenceSteps=AValue) then exit;
+  FsegmentSequenceSteps:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSequenceSegment.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'segmentsequencesteps' : SetLength(FsegmentSequenceSteps,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentFilter.SetsequenceSegment(AIndex : Integer; const AValue : TSequenceSegment); 
+
+begin
+  If (FsequenceSegment=AValue) then exit;
+  FsequenceSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentFilter.Set_not(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_not=AValue) then exit;
+  F_not:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentFilter.SetsimpleSegment(AIndex : Integer; const AValue : TSimpleSegment); 
+
+begin
+  If (FsimpleSegment=AValue) then exit;
+  FsimpleSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSegmentFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_not' : Result:='not';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotHeaderEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotHeaderEntry.SetdimensionNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FdimensionNames=AValue) then exit;
+  FdimensionNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotHeaderEntry.SetdimensionValues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FdimensionValues=AValue) then exit;
+  FdimensionValues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotHeaderEntry.Setmetric(AIndex : Integer; const AValue : TMetricHeaderEntry); 
+
+begin
+  If (Fmetric=AValue) then exit;
+  Fmetric:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotHeaderEntry.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensionnames' : SetLength(FdimensionNames,ALength);
+  'dimensionvalues' : SetLength(FdimensionValues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDimensionFilterClause
+  --------------------------------------------------------------------}
+
+
+Procedure TDimensionFilterClause.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionFilterClause.Setfilters(AIndex : Integer; const AValue : TDimensionFilterClauseTypefiltersArray); 
+
+begin
+  If (Ffilters=AValue) then exit;
+  Ffilters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TDimensionFilterClause.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDimensionFilterClause.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'filters' : SetLength(Ffilters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentSequenceStep
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentSequenceStep.SetmatchType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmatchType=AValue) then exit;
+  FmatchType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentSequenceStep.SetorFiltersForSegment(AIndex : Integer; const AValue : TSegmentSequenceStepTypeorFiltersForSegmentArray); 
+
+begin
+  If (ForFiltersForSegment=AValue) then exit;
+  ForFiltersForSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSegmentSequenceStep.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'orfiltersforsegment' : SetLength(ForFiltersForSegment,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivot
+  --------------------------------------------------------------------}
+
+
+Procedure TPivot.Setdimensions(AIndex : Integer; const AValue : TPivotTypedimensionsArray); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivot.Setmetrics(AIndex : Integer; const AValue : TPivotTypemetricsArray); 
+
+begin
+  If (Fmetrics=AValue) then exit;
+  Fmetrics:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivot.SetmaxGroupCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxGroupCount=AValue) then exit;
+  FmaxGroupCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivot.SetdimensionFilterClauses(AIndex : Integer; const AValue : TPivotTypedimensionFilterClausesArray); 
+
+begin
+  If (FdimensionFilterClauses=AValue) then exit;
+  FdimensionFilterClauses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivot.SetstartGroup(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartGroup=AValue) then exit;
+  FstartGroup:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivot.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensions' : SetLength(Fdimensions,ALength);
+  'metrics' : SetLength(Fmetrics,ALength);
+  'dimensionfilterclauses' : SetLength(FdimensionFilterClauses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDateRangeValues
+  --------------------------------------------------------------------}
+
+
+Procedure TDateRangeValues.Setvalues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDateRangeValues.SetpivotValueRegions(AIndex : Integer; const AValue : TDateRangeValuesTypepivotValueRegionsArray); 
+
+begin
+  If (FpivotValueRegions=AValue) then exit;
+  FpivotValueRegions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDateRangeValues.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  'pivotvalueregions' : SetLength(FpivotValueRegions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricFilterClause
+  --------------------------------------------------------------------}
+
+
+Procedure TMetricFilterClause.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricFilterClause.Setfilters(AIndex : Integer; const AValue : TMetricFilterClauseTypefiltersArray); 
+
+begin
+  If (Ffilters=AValue) then exit;
+  Ffilters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMetricFilterClause.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMetricFilterClause.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'filters' : SetLength(Ffilters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegment
+  --------------------------------------------------------------------}
+
+
+Procedure TSegment.SetdynamicSegment(AIndex : Integer; const AValue : TDynamicSegment); 
+
+begin
+  If (FdynamicSegment=AValue) then exit;
+  FdynamicSegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegment.SetsegmentId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsegmentId=AValue) then exit;
+  FsegmentId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDateRange
+  --------------------------------------------------------------------}
+
+
+Procedure TDateRange.SetstartDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartDate=AValue) then exit;
+  FstartDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDateRange.SetendDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendDate=AValue) then exit;
+  FendDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TReportRow
+  --------------------------------------------------------------------}
+
+
+Procedure TReportRow.Setdimensions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReportRow.Setmetrics(AIndex : Integer; const AValue : TReportRowTypemetricsArray); 
+
+begin
+  If (Fmetrics=AValue) then exit;
+  Fmetrics:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TReportRow.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensions' : SetLength(Fdimensions,ALength);
+  'metrics' : SetLength(Fmetrics,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCohortGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TCohortGroup.SetlifetimeValue(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FlifetimeValue=AValue) then exit;
+  FlifetimeValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCohortGroup.Setcohorts(AIndex : Integer; const AValue : TCohortGroupTypecohortsArray); 
+
+begin
+  If (Fcohorts=AValue) then exit;
+  Fcohorts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCohortGroup.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'cohorts' : SetLength(Fcohorts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetReportsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TGetReportsResponse.Setreports(AIndex : Integer; const AValue : TGetReportsResponseTypereportsArray); 
+
+begin
+  If (Freports=AValue) then exit;
+  Freports:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGetReportsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'reports' : SetLength(Freports,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricHeaderEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TMetricHeaderEntry.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricHeaderEntry.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMetricHeaderEntry.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TMetricFilter.SetmetricName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmetricName=AValue) then exit;
+  FmetricName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricFilter.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricFilter.SetcomparisonValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcomparisonValue=AValue) then exit;
+  FcomparisonValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricFilter.Set_not(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_not=AValue) then exit;
+  F_not:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMetricFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  '_not' : Result:='not';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TDimension
+  --------------------------------------------------------------------}
+
+
+Procedure TDimension.SethistogramBuckets(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FhistogramBuckets=AValue) then exit;
+  FhistogramBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimension.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDimension.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'histogrambuckets' : SetLength(FhistogramBuckets,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotValueRegion
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotValueRegion.Setvalues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotValueRegion.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TReportsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TReportsResource.ResourceName : String;
+
+begin
+  Result:='reports';
+end;
+
+Class Function TReportsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TanalyticsreportingAPI;
+end;
+
+Function TReportsResource.BatchGet(aGetReportsRequest : TGetReportsRequest) : TGetReportsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/reports:batchGet';
+  _Methodid   = 'analyticsreporting.reports.batchGet';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aGetReportsRequest,TGetReportsResponse) as TGetReportsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAnalyticsreportingAPI
+  --------------------------------------------------------------------}
+
+Class Function TAnalyticsreportingAPI.APIName : String;
+
+begin
+  Result:='analyticsreporting';
+end;
+
+Class Function TAnalyticsreportingAPI.APIVersion : String;
+
+begin
+  Result:='v4';
+end;
+
+Class Function TAnalyticsreportingAPI.APIRevision : String;
+
+begin
+  Result:='20160512';
+end;
+
+Class Function TAnalyticsreportingAPI.APIID : String;
+
+begin
+  Result:='analyticsreporting:v4';
+end;
+
+Class Function TAnalyticsreportingAPI.APITitle : String;
+
+begin
+  Result:='Google Analytics Reporting API';
+end;
+
+Class Function TAnalyticsreportingAPI.APIDescription : String;
+
+begin
+  Result:='Accesses Analytics report data.';
+end;
+
+Class Function TAnalyticsreportingAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TAnalyticsreportingAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TAnalyticsreportingAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TAnalyticsreportingAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TAnalyticsreportingAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/analytics/devguides/reporting/core/v4/';
+end;
+
+Class Function TAnalyticsreportingAPI.APIrootUrl : string;
+
+begin
+  Result:='https://analyticsreporting.googleapis.com/';
+end;
+
+Class Function TAnalyticsreportingAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAnalyticsreportingAPI.APIbaseURL : String;
+
+begin
+  Result:='https://analyticsreporting.googleapis.com/';
+end;
+
+Class Function TAnalyticsreportingAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TAnalyticsreportingAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAnalyticsreportingAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TAnalyticsreportingAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,2);
+  Result[0].Name:='https://www.googleapis.com/auth/analytics.readonly';
+  Result[0].Description:='View your Google Analytics data';
+  Result[1].Name:='https://www.googleapis.com/auth/analytics';
+  Result[1].Description:='View and manage your Google Analytics data';
+  
+end;
+
+Class Function TAnalyticsreportingAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TAnalyticsreportingAPI.RegisterAPIResources;
+
+begin
+  TPivotHeader.RegisterObject;
+  TMetric.RegisterObject;
+  TColumnHeader.RegisterObject;
+  TDynamicSegment.RegisterObject;
+  TMetricHeader.RegisterObject;
+  TReport.RegisterObject;
+  TSegmentFilterClause.RegisterObject;
+  TDimensionFilter.RegisterObject;
+  TSegmentDimensionFilter.RegisterObject;
+  TReportRequest.RegisterObject;
+  TSimpleSegment.RegisterObject;
+  TSegmentDefinition.RegisterObject;
+  TSegmentMetricFilter.RegisterObject;
+  TReportData.RegisterObject;
+  TGetReportsRequest.RegisterObject;
+  TOrderBy.RegisterObject;
+  TCohort.RegisterObject;
+  TOrFiltersForSegment.RegisterObject;
+  TSequenceSegment.RegisterObject;
+  TSegmentFilter.RegisterObject;
+  TPivotHeaderEntry.RegisterObject;
+  TDimensionFilterClause.RegisterObject;
+  TSegmentSequenceStep.RegisterObject;
+  TPivot.RegisterObject;
+  TDateRangeValues.RegisterObject;
+  TMetricFilterClause.RegisterObject;
+  TSegment.RegisterObject;
+  TDateRange.RegisterObject;
+  TReportRow.RegisterObject;
+  TCohortGroup.RegisterObject;
+  TGetReportsResponse.RegisterObject;
+  TMetricHeaderEntry.RegisterObject;
+  TMetricFilter.RegisterObject;
+  TDimension.RegisterObject;
+  TPivotValueRegion.RegisterObject;
+end;
+
+
+Function TAnalyticsreportingAPI.GetReportsInstance : TReportsResource;
+
+begin
+  if (FReportsInstance=Nil) then
+    FReportsInstance:=CreateReportsResource;
+  Result:=FReportsInstance;
+end;
+
+Function TAnalyticsreportingAPI.CreateReportsResource : TReportsResource;
+
+begin
+  Result:=CreateReportsResource(Self);
+end;
+
+
+Function TAnalyticsreportingAPI.CreateReportsResource(AOwner : TComponent) : TReportsResource;
+
+begin
+  Result:=TReportsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TAnalyticsreportingAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 653 - 448
packages/googleapi/src/googleandroidenterprise.pp


File diff suppressed because it is too large
+ 309 - 391
packages/googleapi/src/googleandroidpublisher.pp


+ 4370 - 0
packages/googleapi/src/googleappengine.pp

@@ -0,0 +1,4370 @@
+unit googleappengine;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TOperation = Class;
+  TStatus = Class;
+  TListOperationsResponse = Class;
+  TApplication = Class;
+  TUrlDispatchRule = Class;
+  TVersion = Class;
+  TAutomaticScaling = Class;
+  TCpuUtilization = Class;
+  TRequestUtilization = Class;
+  TDiskUtilization = Class;
+  TNetworkUtilization = Class;
+  TBasicScaling = Class;
+  TManualScaling = Class;
+  TNetwork = Class;
+  TResources = Class;
+  TUrlMap = Class;
+  TStaticFilesHandler = Class;
+  TScriptHandler = Class;
+  TApiEndpointHandler = Class;
+  TErrorHandler = Class;
+  TLibrary = Class;
+  TApiConfigHandler = Class;
+  THealthCheck = Class;
+  TDeployment = Class;
+  TFileInfo = Class;
+  TContainerInfo = Class;
+  TSourceReference = Class;
+  TListVersionsResponse = Class;
+  TService = Class;
+  TTrafficSplit = Class;
+  TListServicesResponse = Class;
+  TListInstancesResponse = Class;
+  TInstance = Class;
+  TOperationMetadata = Class;
+  TOperationMetadataV1Beta5 = Class;
+  TOperationArray = Array of TOperation;
+  TStatusArray = Array of TStatus;
+  TListOperationsResponseArray = Array of TListOperationsResponse;
+  TApplicationArray = Array of TApplication;
+  TUrlDispatchRuleArray = Array of TUrlDispatchRule;
+  TVersionArray = Array of TVersion;
+  TAutomaticScalingArray = Array of TAutomaticScaling;
+  TCpuUtilizationArray = Array of TCpuUtilization;
+  TRequestUtilizationArray = Array of TRequestUtilization;
+  TDiskUtilizationArray = Array of TDiskUtilization;
+  TNetworkUtilizationArray = Array of TNetworkUtilization;
+  TBasicScalingArray = Array of TBasicScaling;
+  TManualScalingArray = Array of TManualScaling;
+  TNetworkArray = Array of TNetwork;
+  TResourcesArray = Array of TResources;
+  TUrlMapArray = Array of TUrlMap;
+  TStaticFilesHandlerArray = Array of TStaticFilesHandler;
+  TScriptHandlerArray = Array of TScriptHandler;
+  TApiEndpointHandlerArray = Array of TApiEndpointHandler;
+  TErrorHandlerArray = Array of TErrorHandler;
+  TLibraryArray = Array of TLibrary;
+  TApiConfigHandlerArray = Array of TApiConfigHandler;
+  THealthCheckArray = Array of THealthCheck;
+  TDeploymentArray = Array of TDeployment;
+  TFileInfoArray = Array of TFileInfo;
+  TContainerInfoArray = Array of TContainerInfo;
+  TSourceReferenceArray = Array of TSourceReference;
+  TListVersionsResponseArray = Array of TListVersionsResponse;
+  TServiceArray = Array of TService;
+  TTrafficSplitArray = Array of TTrafficSplit;
+  TListServicesResponseArray = Array of TListServicesResponse;
+  TListInstancesResponseArray = Array of TListInstancesResponse;
+  TInstanceArray = Array of TInstance;
+  TOperationMetadataArray = Array of TOperationMetadata;
+  TOperationMetadataV1Beta5Array = Array of TOperationMetadataV1Beta5;
+  //Anonymous types, using auto-generated names
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsItem = Class;
+  TVersionTypebetaSettings = Class;
+  TVersionTypeenvVariables = Class;
+  TStaticFilesHandlerTypehttpHeaders = Class;
+  TDeploymentTypefiles = Class;
+  TTrafficSplitTypeallocations = Class;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TListOperationsResponseTypeoperationsArray = Array of TOperation;
+  TApplicationTypedispatchRulesArray = Array of TUrlDispatchRule;
+  TVersionTypehandlersArray = Array of TUrlMap;
+  TVersionTypeerrorHandlersArray = Array of TErrorHandler;
+  TVersionTypelibrariesArray = Array of TLibrary;
+  TDeploymentTypesourceReferencesArray = Array of TSourceReference;
+  TListVersionsResponseTypeversionsArray = Array of TVersion;
+  TListServicesResponseTypeservicesArray = Array of TService;
+  TListInstancesResponseTypeinstancesArray = Array of TInstance;
+  
+  { --------------------------------------------------------------------
+    TOperationTypemetadata
+    --------------------------------------------------------------------}
+  
+  TOperationTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTypemetadataClass = Class of TOperationTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationTyperesponse
+    --------------------------------------------------------------------}
+  
+  TOperationTyperesponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTyperesponseClass = Class of TOperationTyperesponse;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fmetadata : TOperationTypemetadata;
+    Fdone : boolean;
+    Ferror : TStatus;
+    Fresponse : TOperationTyperesponse;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property metadata : TOperationTypemetadata Index 8 Read Fmetadata Write Setmetadata;
+    Property done : boolean Index 16 Read Fdone Write Setdone;
+    Property error : TStatus Index 24 Read Ferror Write Seterror;
+    Property response : TOperationTyperesponse Index 32 Read Fresponse Write Setresponse;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TStatusTypedetailsItem
+    --------------------------------------------------------------------}
+  
+  TStatusTypedetailsItem = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
+  
+  { --------------------------------------------------------------------
+    TStatus
+    --------------------------------------------------------------------}
+  
+  TStatus = Class(TGoogleBaseObject)
+  Private
+    Fcode : integer;
+    Fmessage : String;
+    Fdetails : TStatusTypedetailsArray;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : integer Index 0 Read Fcode Write Setcode;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+    Property details : TStatusTypedetailsArray Index 16 Read Fdetails Write Setdetails;
+  end;
+  TStatusClass = Class of TStatus;
+  
+  { --------------------------------------------------------------------
+    TListOperationsResponse
+    --------------------------------------------------------------------}
+  
+  TListOperationsResponse = Class(TGoogleBaseObject)
+  Private
+    Foperations : TListOperationsResponseTypeoperationsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property operations : TListOperationsResponseTypeoperationsArray Index 0 Read Foperations Write Setoperations;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListOperationsResponseClass = Class of TListOperationsResponse;
+  
+  { --------------------------------------------------------------------
+    TApplication
+    --------------------------------------------------------------------}
+  
+  TApplication = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fid : String;
+    FdispatchRules : TApplicationTypedispatchRulesArray;
+    FauthDomain : String;
+    Flocation : String;
+    FcodeBucket : String;
+    FdefaultCookieExpiration : String;
+    FdefaultHostname : String;
+    FdefaultBucket : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdispatchRules(AIndex : Integer; const AValue : TApplicationTypedispatchRulesArray); virtual;
+    Procedure SetauthDomain(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcodeBucket(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultCookieExpiration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultHostname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultBucket(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property dispatchRules : TApplicationTypedispatchRulesArray Index 16 Read FdispatchRules Write SetdispatchRules;
+    Property authDomain : String Index 24 Read FauthDomain Write SetauthDomain;
+    Property location : String Index 32 Read Flocation Write Setlocation;
+    Property codeBucket : String Index 40 Read FcodeBucket Write SetcodeBucket;
+    Property defaultCookieExpiration : String Index 48 Read FdefaultCookieExpiration Write SetdefaultCookieExpiration;
+    Property defaultHostname : String Index 56 Read FdefaultHostname Write SetdefaultHostname;
+    Property defaultBucket : String Index 64 Read FdefaultBucket Write SetdefaultBucket;
+  end;
+  TApplicationClass = Class of TApplication;
+  
+  { --------------------------------------------------------------------
+    TUrlDispatchRule
+    --------------------------------------------------------------------}
+  
+  TUrlDispatchRule = Class(TGoogleBaseObject)
+  Private
+    Fdomain : String;
+    Fpath : String;
+    Fservice : String;
+  Protected
+    //Property setters
+    Procedure Setdomain(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setservice(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property domain : String Index 0 Read Fdomain Write Setdomain;
+    Property path : String Index 8 Read Fpath Write Setpath;
+    Property service : String Index 16 Read Fservice Write Setservice;
+  end;
+  TUrlDispatchRuleClass = Class of TUrlDispatchRule;
+  
+  { --------------------------------------------------------------------
+    TVersionTypebetaSettings
+    --------------------------------------------------------------------}
+  
+  TVersionTypebetaSettings = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TVersionTypebetaSettingsClass = Class of TVersionTypebetaSettings;
+  
+  { --------------------------------------------------------------------
+    TVersionTypeenvVariables
+    --------------------------------------------------------------------}
+  
+  TVersionTypeenvVariables = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TVersionTypeenvVariablesClass = Class of TVersionTypeenvVariables;
+  
+  { --------------------------------------------------------------------
+    TVersion
+    --------------------------------------------------------------------}
+  
+  TVersion = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fid : String;
+    FautomaticScaling : TAutomaticScaling;
+    FbasicScaling : TBasicScaling;
+    FmanualScaling : TManualScaling;
+    FinboundServices : TStringArray;
+    FinstanceClass : String;
+    Fnetwork : TNetwork;
+    Fresources : TResources;
+    Fruntime : String;
+    Fthreadsafe : boolean;
+    Fvm : boolean;
+    FbetaSettings : TVersionTypebetaSettings;
+    Fenv : String;
+    FservingStatus : String;
+    Fdeployer : String;
+    FcreationTime : String;
+    FdiskUsageBytes : String;
+    Fhandlers : TVersionTypehandlersArray;
+    FerrorHandlers : TVersionTypeerrorHandlersArray;
+    Flibraries : TVersionTypelibrariesArray;
+    FapiConfig : TApiConfigHandler;
+    FenvVariables : TVersionTypeenvVariables;
+    FdefaultExpiration : String;
+    FhealthCheck : THealthCheck;
+    FnobuildFilesRegex : String;
+    Fdeployment : TDeployment;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetautomaticScaling(AIndex : Integer; const AValue : TAutomaticScaling); virtual;
+    Procedure SetbasicScaling(AIndex : Integer; const AValue : TBasicScaling); virtual;
+    Procedure SetmanualScaling(AIndex : Integer; const AValue : TManualScaling); virtual;
+    Procedure SetinboundServices(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetinstanceClass(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnetwork(AIndex : Integer; const AValue : TNetwork); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TResources); virtual;
+    Procedure Setruntime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setthreadsafe(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setvm(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetbetaSettings(AIndex : Integer; const AValue : TVersionTypebetaSettings); virtual;
+    Procedure Setenv(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetservingStatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdeployer(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdiskUsageBytes(AIndex : Integer; const AValue : String); virtual;
+    Procedure Sethandlers(AIndex : Integer; const AValue : TVersionTypehandlersArray); virtual;
+    Procedure SeterrorHandlers(AIndex : Integer; const AValue : TVersionTypeerrorHandlersArray); virtual;
+    Procedure Setlibraries(AIndex : Integer; const AValue : TVersionTypelibrariesArray); virtual;
+    Procedure SetapiConfig(AIndex : Integer; const AValue : TApiConfigHandler); virtual;
+    Procedure SetenvVariables(AIndex : Integer; const AValue : TVersionTypeenvVariables); virtual;
+    Procedure SetdefaultExpiration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethealthCheck(AIndex : Integer; const AValue : THealthCheck); virtual;
+    Procedure SetnobuildFilesRegex(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdeployment(AIndex : Integer; const AValue : TDeployment); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property automaticScaling : TAutomaticScaling Index 16 Read FautomaticScaling Write SetautomaticScaling;
+    Property basicScaling : TBasicScaling Index 24 Read FbasicScaling Write SetbasicScaling;
+    Property manualScaling : TManualScaling Index 32 Read FmanualScaling Write SetmanualScaling;
+    Property inboundServices : TStringArray Index 40 Read FinboundServices Write SetinboundServices;
+    Property instanceClass : String Index 48 Read FinstanceClass Write SetinstanceClass;
+    Property network : TNetwork Index 56 Read Fnetwork Write Setnetwork;
+    Property resources : TResources Index 64 Read Fresources Write Setresources;
+    Property runtime : String Index 72 Read Fruntime Write Setruntime;
+    Property threadsafe : boolean Index 80 Read Fthreadsafe Write Setthreadsafe;
+    Property vm : boolean Index 88 Read Fvm Write Setvm;
+    Property betaSettings : TVersionTypebetaSettings Index 96 Read FbetaSettings Write SetbetaSettings;
+    Property env : String Index 104 Read Fenv Write Setenv;
+    Property servingStatus : String Index 112 Read FservingStatus Write SetservingStatus;
+    Property deployer : String Index 120 Read Fdeployer Write Setdeployer;
+    Property creationTime : String Index 128 Read FcreationTime Write SetcreationTime;
+    Property diskUsageBytes : String Index 136 Read FdiskUsageBytes Write SetdiskUsageBytes;
+    Property handlers : TVersionTypehandlersArray Index 144 Read Fhandlers Write Sethandlers;
+    Property errorHandlers : TVersionTypeerrorHandlersArray Index 152 Read FerrorHandlers Write SeterrorHandlers;
+    Property libraries : TVersionTypelibrariesArray Index 160 Read Flibraries Write Setlibraries;
+    Property apiConfig : TApiConfigHandler Index 168 Read FapiConfig Write SetapiConfig;
+    Property envVariables : TVersionTypeenvVariables Index 176 Read FenvVariables Write SetenvVariables;
+    Property defaultExpiration : String Index 184 Read FdefaultExpiration Write SetdefaultExpiration;
+    Property healthCheck : THealthCheck Index 192 Read FhealthCheck Write SethealthCheck;
+    Property nobuildFilesRegex : String Index 200 Read FnobuildFilesRegex Write SetnobuildFilesRegex;
+    Property deployment : TDeployment Index 208 Read Fdeployment Write Setdeployment;
+  end;
+  TVersionClass = Class of TVersion;
+  
+  { --------------------------------------------------------------------
+    TAutomaticScaling
+    --------------------------------------------------------------------}
+  
+  TAutomaticScaling = Class(TGoogleBaseObject)
+  Private
+    FcoolDownPeriod : String;
+    FcpuUtilization : TCpuUtilization;
+    FmaxConcurrentRequests : integer;
+    FmaxIdleInstances : integer;
+    FmaxTotalInstances : integer;
+    FmaxPendingLatency : String;
+    FminIdleInstances : integer;
+    FminTotalInstances : integer;
+    FminPendingLatency : String;
+    FrequestUtilization : TRequestUtilization;
+    FdiskUtilization : TDiskUtilization;
+    FnetworkUtilization : TNetworkUtilization;
+  Protected
+    //Property setters
+    Procedure SetcoolDownPeriod(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcpuUtilization(AIndex : Integer; const AValue : TCpuUtilization); virtual;
+    Procedure SetmaxConcurrentRequests(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxIdleInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxTotalInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxPendingLatency(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetminIdleInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetminTotalInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetminPendingLatency(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrequestUtilization(AIndex : Integer; const AValue : TRequestUtilization); virtual;
+    Procedure SetdiskUtilization(AIndex : Integer; const AValue : TDiskUtilization); virtual;
+    Procedure SetnetworkUtilization(AIndex : Integer; const AValue : TNetworkUtilization); virtual;
+  Public
+  Published
+    Property coolDownPeriod : String Index 0 Read FcoolDownPeriod Write SetcoolDownPeriod;
+    Property cpuUtilization : TCpuUtilization Index 8 Read FcpuUtilization Write SetcpuUtilization;
+    Property maxConcurrentRequests : integer Index 16 Read FmaxConcurrentRequests Write SetmaxConcurrentRequests;
+    Property maxIdleInstances : integer Index 24 Read FmaxIdleInstances Write SetmaxIdleInstances;
+    Property maxTotalInstances : integer Index 32 Read FmaxTotalInstances Write SetmaxTotalInstances;
+    Property maxPendingLatency : String Index 40 Read FmaxPendingLatency Write SetmaxPendingLatency;
+    Property minIdleInstances : integer Index 48 Read FminIdleInstances Write SetminIdleInstances;
+    Property minTotalInstances : integer Index 56 Read FminTotalInstances Write SetminTotalInstances;
+    Property minPendingLatency : String Index 64 Read FminPendingLatency Write SetminPendingLatency;
+    Property requestUtilization : TRequestUtilization Index 72 Read FrequestUtilization Write SetrequestUtilization;
+    Property diskUtilization : TDiskUtilization Index 80 Read FdiskUtilization Write SetdiskUtilization;
+    Property networkUtilization : TNetworkUtilization Index 88 Read FnetworkUtilization Write SetnetworkUtilization;
+  end;
+  TAutomaticScalingClass = Class of TAutomaticScaling;
+  
+  { --------------------------------------------------------------------
+    TCpuUtilization
+    --------------------------------------------------------------------}
+  
+  TCpuUtilization = Class(TGoogleBaseObject)
+  Private
+    FaggregationWindowLength : String;
+    FtargetUtilization : double;
+  Protected
+    //Property setters
+    Procedure SetaggregationWindowLength(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettargetUtilization(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property aggregationWindowLength : String Index 0 Read FaggregationWindowLength Write SetaggregationWindowLength;
+    Property targetUtilization : double Index 8 Read FtargetUtilization Write SettargetUtilization;
+  end;
+  TCpuUtilizationClass = Class of TCpuUtilization;
+  
+  { --------------------------------------------------------------------
+    TRequestUtilization
+    --------------------------------------------------------------------}
+  
+  TRequestUtilization = Class(TGoogleBaseObject)
+  Private
+    FtargetRequestCountPerSec : integer;
+    FtargetConcurrentRequests : integer;
+  Protected
+    //Property setters
+    Procedure SettargetRequestCountPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetConcurrentRequests(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property targetRequestCountPerSec : integer Index 0 Read FtargetRequestCountPerSec Write SettargetRequestCountPerSec;
+    Property targetConcurrentRequests : integer Index 8 Read FtargetConcurrentRequests Write SettargetConcurrentRequests;
+  end;
+  TRequestUtilizationClass = Class of TRequestUtilization;
+  
+  { --------------------------------------------------------------------
+    TDiskUtilization
+    --------------------------------------------------------------------}
+  
+  TDiskUtilization = Class(TGoogleBaseObject)
+  Private
+    FtargetWriteBytesPerSec : integer;
+    FtargetWriteOpsPerSec : integer;
+    FtargetReadBytesPerSec : integer;
+    FtargetReadOpsPerSec : integer;
+  Protected
+    //Property setters
+    Procedure SettargetWriteBytesPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetWriteOpsPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetReadBytesPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetReadOpsPerSec(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property targetWriteBytesPerSec : integer Index 0 Read FtargetWriteBytesPerSec Write SettargetWriteBytesPerSec;
+    Property targetWriteOpsPerSec : integer Index 8 Read FtargetWriteOpsPerSec Write SettargetWriteOpsPerSec;
+    Property targetReadBytesPerSec : integer Index 16 Read FtargetReadBytesPerSec Write SettargetReadBytesPerSec;
+    Property targetReadOpsPerSec : integer Index 24 Read FtargetReadOpsPerSec Write SettargetReadOpsPerSec;
+  end;
+  TDiskUtilizationClass = Class of TDiskUtilization;
+  
+  { --------------------------------------------------------------------
+    TNetworkUtilization
+    --------------------------------------------------------------------}
+  
+  TNetworkUtilization = Class(TGoogleBaseObject)
+  Private
+    FtargetSentBytesPerSec : integer;
+    FtargetSentPacketsPerSec : integer;
+    FtargetReceivedBytesPerSec : integer;
+    FtargetReceivedPacketsPerSec : integer;
+  Protected
+    //Property setters
+    Procedure SettargetSentBytesPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetSentPacketsPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetReceivedBytesPerSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettargetReceivedPacketsPerSec(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property targetSentBytesPerSec : integer Index 0 Read FtargetSentBytesPerSec Write SettargetSentBytesPerSec;
+    Property targetSentPacketsPerSec : integer Index 8 Read FtargetSentPacketsPerSec Write SettargetSentPacketsPerSec;
+    Property targetReceivedBytesPerSec : integer Index 16 Read FtargetReceivedBytesPerSec Write SettargetReceivedBytesPerSec;
+    Property targetReceivedPacketsPerSec : integer Index 24 Read FtargetReceivedPacketsPerSec Write SettargetReceivedPacketsPerSec;
+  end;
+  TNetworkUtilizationClass = Class of TNetworkUtilization;
+  
+  { --------------------------------------------------------------------
+    TBasicScaling
+    --------------------------------------------------------------------}
+  
+  TBasicScaling = Class(TGoogleBaseObject)
+  Private
+    FidleTimeout : String;
+    FmaxInstances : integer;
+  Protected
+    //Property setters
+    Procedure SetidleTimeout(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxInstances(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property idleTimeout : String Index 0 Read FidleTimeout Write SetidleTimeout;
+    Property maxInstances : integer Index 8 Read FmaxInstances Write SetmaxInstances;
+  end;
+  TBasicScalingClass = Class of TBasicScaling;
+  
+  { --------------------------------------------------------------------
+    TManualScaling
+    --------------------------------------------------------------------}
+  
+  TManualScaling = Class(TGoogleBaseObject)
+  Private
+    Finstances : integer;
+  Protected
+    //Property setters
+    Procedure Setinstances(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property instances : integer Index 0 Read Finstances Write Setinstances;
+  end;
+  TManualScalingClass = Class of TManualScaling;
+  
+  { --------------------------------------------------------------------
+    TNetwork
+    --------------------------------------------------------------------}
+  
+  TNetwork = Class(TGoogleBaseObject)
+  Private
+    FforwardedPorts : TStringArray;
+    FinstanceTag : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SetforwardedPorts(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetinstanceTag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property forwardedPorts : TStringArray Index 0 Read FforwardedPorts Write SetforwardedPorts;
+    Property instanceTag : String Index 8 Read FinstanceTag Write SetinstanceTag;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TNetworkClass = Class of TNetwork;
+  
+  { --------------------------------------------------------------------
+    TResources
+    --------------------------------------------------------------------}
+  
+  TResources = Class(TGoogleBaseObject)
+  Private
+    Fcpu : double;
+    FdiskGb : double;
+    FmemoryGb : double;
+  Protected
+    //Property setters
+    Procedure Setcpu(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetdiskGb(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetmemoryGb(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property cpu : double Index 0 Read Fcpu Write Setcpu;
+    Property diskGb : double Index 8 Read FdiskGb Write SetdiskGb;
+    Property memoryGb : double Index 16 Read FmemoryGb Write SetmemoryGb;
+  end;
+  TResourcesClass = Class of TResources;
+  
+  { --------------------------------------------------------------------
+    TUrlMap
+    --------------------------------------------------------------------}
+  
+  TUrlMap = Class(TGoogleBaseObject)
+  Private
+    FurlRegex : String;
+    FstaticFiles : TStaticFilesHandler;
+    Fscript : TScriptHandler;
+    FapiEndpoint : TApiEndpointHandler;
+    FsecurityLevel : String;
+    Flogin : String;
+    FauthFailAction : String;
+    FredirectHttpResponseCode : String;
+  Protected
+    //Property setters
+    Procedure SeturlRegex(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstaticFiles(AIndex : Integer; const AValue : TStaticFilesHandler); virtual;
+    Procedure Setscript(AIndex : Integer; const AValue : TScriptHandler); virtual;
+    Procedure SetapiEndpoint(AIndex : Integer; const AValue : TApiEndpointHandler); virtual;
+    Procedure SetsecurityLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlogin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetauthFailAction(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetredirectHttpResponseCode(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property urlRegex : String Index 0 Read FurlRegex Write SeturlRegex;
+    Property staticFiles : TStaticFilesHandler Index 8 Read FstaticFiles Write SetstaticFiles;
+    Property script : TScriptHandler Index 16 Read Fscript Write Setscript;
+    Property apiEndpoint : TApiEndpointHandler Index 24 Read FapiEndpoint Write SetapiEndpoint;
+    Property securityLevel : String Index 32 Read FsecurityLevel Write SetsecurityLevel;
+    Property login : String Index 40 Read Flogin Write Setlogin;
+    Property authFailAction : String Index 48 Read FauthFailAction Write SetauthFailAction;
+    Property redirectHttpResponseCode : String Index 56 Read FredirectHttpResponseCode Write SetredirectHttpResponseCode;
+  end;
+  TUrlMapClass = Class of TUrlMap;
+  
+  { --------------------------------------------------------------------
+    TStaticFilesHandlerTypehttpHeaders
+    --------------------------------------------------------------------}
+  
+  TStaticFilesHandlerTypehttpHeaders = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStaticFilesHandlerTypehttpHeadersClass = Class of TStaticFilesHandlerTypehttpHeaders;
+  
+  { --------------------------------------------------------------------
+    TStaticFilesHandler
+    --------------------------------------------------------------------}
+  
+  TStaticFilesHandler = Class(TGoogleBaseObject)
+  Private
+    Fpath : String;
+    FuploadPathRegex : String;
+    FhttpHeaders : TStaticFilesHandlerTypehttpHeaders;
+    FmimeType : String;
+    Fexpiration : String;
+    FrequireMatchingFile : boolean;
+    FapplicationReadable : boolean;
+  Protected
+    //Property setters
+    Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuploadPathRegex(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethttpHeaders(AIndex : Integer; const AValue : TStaticFilesHandlerTypehttpHeaders); virtual;
+    Procedure SetmimeType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpiration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrequireMatchingFile(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetapplicationReadable(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property path : String Index 0 Read Fpath Write Setpath;
+    Property uploadPathRegex : String Index 8 Read FuploadPathRegex Write SetuploadPathRegex;
+    Property httpHeaders : TStaticFilesHandlerTypehttpHeaders Index 16 Read FhttpHeaders Write SethttpHeaders;
+    Property mimeType : String Index 24 Read FmimeType Write SetmimeType;
+    Property expiration : String Index 32 Read Fexpiration Write Setexpiration;
+    Property requireMatchingFile : boolean Index 40 Read FrequireMatchingFile Write SetrequireMatchingFile;
+    Property applicationReadable : boolean Index 48 Read FapplicationReadable Write SetapplicationReadable;
+  end;
+  TStaticFilesHandlerClass = Class of TStaticFilesHandler;
+  
+  { --------------------------------------------------------------------
+    TScriptHandler
+    --------------------------------------------------------------------}
+  
+  TScriptHandler = Class(TGoogleBaseObject)
+  Private
+    FscriptPath : String;
+  Protected
+    //Property setters
+    Procedure SetscriptPath(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property scriptPath : String Index 0 Read FscriptPath Write SetscriptPath;
+  end;
+  TScriptHandlerClass = Class of TScriptHandler;
+  
+  { --------------------------------------------------------------------
+    TApiEndpointHandler
+    --------------------------------------------------------------------}
+  
+  TApiEndpointHandler = Class(TGoogleBaseObject)
+  Private
+    FscriptPath : String;
+  Protected
+    //Property setters
+    Procedure SetscriptPath(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property scriptPath : String Index 0 Read FscriptPath Write SetscriptPath;
+  end;
+  TApiEndpointHandlerClass = Class of TApiEndpointHandler;
+  
+  { --------------------------------------------------------------------
+    TErrorHandler
+    --------------------------------------------------------------------}
+  
+  TErrorHandler = Class(TGoogleBaseObject)
+  Private
+    FerrorCode : String;
+    FstaticFile : String;
+    FmimeType : String;
+  Protected
+    //Property setters
+    Procedure SeterrorCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstaticFile(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmimeType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property errorCode : String Index 0 Read FerrorCode Write SeterrorCode;
+    Property staticFile : String Index 8 Read FstaticFile Write SetstaticFile;
+    Property mimeType : String Index 16 Read FmimeType Write SetmimeType;
+  end;
+  TErrorHandlerClass = Class of TErrorHandler;
+  
+  { --------------------------------------------------------------------
+    TLibrary
+    --------------------------------------------------------------------}
+  
+  TLibrary = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fversion : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setversion(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property version : String Index 8 Read Fversion Write Setversion;
+  end;
+  TLibraryClass = Class of TLibrary;
+  
+  { --------------------------------------------------------------------
+    TApiConfigHandler
+    --------------------------------------------------------------------}
+  
+  TApiConfigHandler = Class(TGoogleBaseObject)
+  Private
+    FauthFailAction : String;
+    Flogin : String;
+    Fscript : String;
+    FsecurityLevel : String;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure SetauthFailAction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlogin(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setscript(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsecurityLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property authFailAction : String Index 0 Read FauthFailAction Write SetauthFailAction;
+    Property login : String Index 8 Read Flogin Write Setlogin;
+    Property script : String Index 16 Read Fscript Write Setscript;
+    Property securityLevel : String Index 24 Read FsecurityLevel Write SetsecurityLevel;
+    Property url : String Index 32 Read Furl Write Seturl;
+  end;
+  TApiConfigHandlerClass = Class of TApiConfigHandler;
+  
+  { --------------------------------------------------------------------
+    THealthCheck
+    --------------------------------------------------------------------}
+  
+  THealthCheck = Class(TGoogleBaseObject)
+  Private
+    FdisableHealthCheck : boolean;
+    Fhost : String;
+    FhealthyThreshold : integer;
+    FunhealthyThreshold : integer;
+    FrestartThreshold : integer;
+    FcheckInterval : String;
+    Ftimeout : String;
+  Protected
+    //Property setters
+    Procedure SetdisableHealthCheck(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Sethost(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethealthyThreshold(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetunhealthyThreshold(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrestartThreshold(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetcheckInterval(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settimeout(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property disableHealthCheck : boolean Index 0 Read FdisableHealthCheck Write SetdisableHealthCheck;
+    Property host : String Index 8 Read Fhost Write Sethost;
+    Property healthyThreshold : integer Index 16 Read FhealthyThreshold Write SethealthyThreshold;
+    Property unhealthyThreshold : integer Index 24 Read FunhealthyThreshold Write SetunhealthyThreshold;
+    Property restartThreshold : integer Index 32 Read FrestartThreshold Write SetrestartThreshold;
+    Property checkInterval : String Index 40 Read FcheckInterval Write SetcheckInterval;
+    Property timeout : String Index 48 Read Ftimeout Write Settimeout;
+  end;
+  THealthCheckClass = Class of THealthCheck;
+  
+  { --------------------------------------------------------------------
+    TDeploymentTypefiles
+    --------------------------------------------------------------------}
+  
+  TDeploymentTypefiles = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TDeploymentTypefilesClass = Class of TDeploymentTypefiles;
+  
+  { --------------------------------------------------------------------
+    TDeployment
+    --------------------------------------------------------------------}
+  
+  TDeployment = Class(TGoogleBaseObject)
+  Private
+    Ffiles : TDeploymentTypefiles;
+    Fcontainer : TContainerInfo;
+    FsourceReferences : TDeploymentTypesourceReferencesArray;
+  Protected
+    //Property setters
+    Procedure Setfiles(AIndex : Integer; const AValue : TDeploymentTypefiles); virtual;
+    Procedure Setcontainer(AIndex : Integer; const AValue : TContainerInfo); virtual;
+    Procedure SetsourceReferences(AIndex : Integer; const AValue : TDeploymentTypesourceReferencesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property files : TDeploymentTypefiles Index 0 Read Ffiles Write Setfiles;
+    Property container : TContainerInfo Index 8 Read Fcontainer Write Setcontainer;
+    Property sourceReferences : TDeploymentTypesourceReferencesArray Index 16 Read FsourceReferences Write SetsourceReferences;
+  end;
+  TDeploymentClass = Class of TDeployment;
+  
+  { --------------------------------------------------------------------
+    TFileInfo
+    --------------------------------------------------------------------}
+  
+  TFileInfo = Class(TGoogleBaseObject)
+  Private
+    FsourceUrl : String;
+    Fsha1Sum : String;
+    FmimeType : String;
+  Protected
+    //Property setters
+    Procedure SetsourceUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsha1Sum(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmimeType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sourceUrl : String Index 0 Read FsourceUrl Write SetsourceUrl;
+    Property sha1Sum : String Index 8 Read Fsha1Sum Write Setsha1Sum;
+    Property mimeType : String Index 16 Read FmimeType Write SetmimeType;
+  end;
+  TFileInfoClass = Class of TFileInfo;
+  
+  { --------------------------------------------------------------------
+    TContainerInfo
+    --------------------------------------------------------------------}
+  
+  TContainerInfo = Class(TGoogleBaseObject)
+  Private
+    Fimage : String;
+  Protected
+    //Property setters
+    Procedure Setimage(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property image : String Index 0 Read Fimage Write Setimage;
+  end;
+  TContainerInfoClass = Class of TContainerInfo;
+  
+  { --------------------------------------------------------------------
+    TSourceReference
+    --------------------------------------------------------------------}
+  
+  TSourceReference = Class(TGoogleBaseObject)
+  Private
+    Frepository : String;
+    FrevisionId : String;
+  Protected
+    //Property setters
+    Procedure Setrepository(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrevisionId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property repository : String Index 0 Read Frepository Write Setrepository;
+    Property revisionId : String Index 8 Read FrevisionId Write SetrevisionId;
+  end;
+  TSourceReferenceClass = Class of TSourceReference;
+  
+  { --------------------------------------------------------------------
+    TListVersionsResponse
+    --------------------------------------------------------------------}
+  
+  TListVersionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fversions : TListVersionsResponseTypeversionsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setversions(AIndex : Integer; const AValue : TListVersionsResponseTypeversionsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property versions : TListVersionsResponseTypeversionsArray Index 0 Read Fversions Write Setversions;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListVersionsResponseClass = Class of TListVersionsResponse;
+  
+  { --------------------------------------------------------------------
+    TService
+    --------------------------------------------------------------------}
+  
+  TService = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fid : String;
+    Fsplit : TTrafficSplit;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsplit(AIndex : Integer; const AValue : TTrafficSplit); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property split : TTrafficSplit Index 16 Read Fsplit Write Setsplit;
+  end;
+  TServiceClass = Class of TService;
+  
+  { --------------------------------------------------------------------
+    TTrafficSplitTypeallocations
+    --------------------------------------------------------------------}
+  
+  TTrafficSplitTypeallocations = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TTrafficSplitTypeallocationsClass = Class of TTrafficSplitTypeallocations;
+  
+  { --------------------------------------------------------------------
+    TTrafficSplit
+    --------------------------------------------------------------------}
+  
+  TTrafficSplit = Class(TGoogleBaseObject)
+  Private
+    FshardBy : String;
+    Fallocations : TTrafficSplitTypeallocations;
+  Protected
+    //Property setters
+    Procedure SetshardBy(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setallocations(AIndex : Integer; const AValue : TTrafficSplitTypeallocations); virtual;
+  Public
+  Published
+    Property shardBy : String Index 0 Read FshardBy Write SetshardBy;
+    Property allocations : TTrafficSplitTypeallocations Index 8 Read Fallocations Write Setallocations;
+  end;
+  TTrafficSplitClass = Class of TTrafficSplit;
+  
+  { --------------------------------------------------------------------
+    TListServicesResponse
+    --------------------------------------------------------------------}
+  
+  TListServicesResponse = Class(TGoogleBaseObject)
+  Private
+    Fservices : TListServicesResponseTypeservicesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setservices(AIndex : Integer; const AValue : TListServicesResponseTypeservicesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property services : TListServicesResponseTypeservicesArray Index 0 Read Fservices Write Setservices;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListServicesResponseClass = Class of TListServicesResponse;
+  
+  { --------------------------------------------------------------------
+    TListInstancesResponse
+    --------------------------------------------------------------------}
+  
+  TListInstancesResponse = Class(TGoogleBaseObject)
+  Private
+    Finstances : TListInstancesResponseTypeinstancesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setinstances(AIndex : Integer; const AValue : TListInstancesResponseTypeinstancesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property instances : TListInstancesResponseTypeinstancesArray Index 0 Read Finstances Write Setinstances;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListInstancesResponseClass = Class of TListInstancesResponse;
+  
+  { --------------------------------------------------------------------
+    TInstance
+    --------------------------------------------------------------------}
+  
+  TInstance = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fid : String;
+    FappEngineRelease : String;
+    Favailability : String;
+    FvmName : String;
+    FvmZoneName : String;
+    FvmId : String;
+    FstartTimestamp : String;
+    Frequests : integer;
+    Ferrors : integer;
+    Fqps : integer;
+    FaverageLatency : integer;
+    FmemoryUsage : String;
+    FvmStatus : String;
+    FvmUnlocked : boolean;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetappEngineRelease(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setavailability(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvmName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvmZoneName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvmId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrequests(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setqps(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetaverageLatency(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmemoryUsage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvmStatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvmUnlocked(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property appEngineRelease : String Index 16 Read FappEngineRelease Write SetappEngineRelease;
+    Property availability : String Index 24 Read Favailability Write Setavailability;
+    Property vmName : String Index 32 Read FvmName Write SetvmName;
+    Property vmZoneName : String Index 40 Read FvmZoneName Write SetvmZoneName;
+    Property vmId : String Index 48 Read FvmId Write SetvmId;
+    Property startTimestamp : String Index 56 Read FstartTimestamp Write SetstartTimestamp;
+    Property requests : integer Index 64 Read Frequests Write Setrequests;
+    Property errors : integer Index 72 Read Ferrors Write Seterrors;
+    Property qps : integer Index 80 Read Fqps Write Setqps;
+    Property averageLatency : integer Index 88 Read FaverageLatency Write SetaverageLatency;
+    Property memoryUsage : String Index 96 Read FmemoryUsage Write SetmemoryUsage;
+    Property vmStatus : String Index 104 Read FvmStatus Write SetvmStatus;
+    Property vmUnlocked : boolean Index 112 Read FvmUnlocked Write SetvmUnlocked;
+  end;
+  TInstanceClass = Class of TInstance;
+  
+  { --------------------------------------------------------------------
+    TOperationMetadata
+    --------------------------------------------------------------------}
+  
+  TOperationMetadata = Class(TGoogleBaseObject)
+  Private
+    FoperationType : String;
+    FinsertTime : String;
+    FendTime : String;
+    Fuser : String;
+    Ftarget : String;
+    Fmethod : String;
+  Protected
+    //Property setters
+    Procedure SetoperationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinsertTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settarget(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmethod(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property operationType : String Index 0 Read FoperationType Write SetoperationType;
+    Property insertTime : String Index 8 Read FinsertTime Write SetinsertTime;
+    Property endTime : String Index 16 Read FendTime Write SetendTime;
+    Property user : String Index 24 Read Fuser Write Setuser;
+    Property target : String Index 32 Read Ftarget Write Settarget;
+    Property method : String Index 40 Read Fmethod Write Setmethod;
+  end;
+  TOperationMetadataClass = Class of TOperationMetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationMetadataV1Beta5
+    --------------------------------------------------------------------}
+  
+  TOperationMetadataV1Beta5 = Class(TGoogleBaseObject)
+  Private
+    Fmethod : String;
+    FinsertTime : String;
+    FendTime : String;
+    Fuser : String;
+    Ftarget : String;
+  Protected
+    //Property setters
+    Procedure Setmethod(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinsertTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settarget(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property method : String Index 0 Read Fmethod Write Setmethod;
+    Property insertTime : String Index 8 Read FinsertTime Write SetinsertTime;
+    Property endTime : String Index 16 Read FendTime Write SetendTime;
+    Property user : String Index 24 Read Fuser Write Setuser;
+    Property target : String Index 32 Read Ftarget Write Settarget;
+  end;
+  TOperationMetadataV1Beta5Class = Class of TOperationMetadataV1Beta5;
+  
+  { --------------------------------------------------------------------
+    TAppsOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAppsOperationsResource, method List
+  
+  TAppsOperationsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TAppsOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(appsId: string; operationsId: string) : TOperation;
+    Function List(appsId: string; AQuery : string  = '') : TListOperationsResponse;
+    Function List(appsId: string; AQuery : TAppsOperationslistOptions) : TListOperationsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAppsServicesVersionsInstancesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAppsServicesVersionsInstancesResource, method List
+  
+  TAppsServicesVersionsInstancesListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TAppsServicesVersionsInstancesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(appsId: string; servicesId: string; versionsId: string; AQuery : string  = '') : TListInstancesResponse;
+    Function List(appsId: string; servicesId: string; versionsId: string; AQuery : TAppsServicesVersionsInstanceslistOptions) : TListInstancesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAppsServicesVersionsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAppsServicesVersionsResource, method Get
+  
+  TAppsServicesVersionsGetOptions = Record
+    view : String;
+  end;
+  
+  
+  //Optional query Options for TAppsServicesVersionsResource, method List
+  
+  TAppsServicesVersionsListOptions = Record
+    view : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TAppsServicesVersionsResource, method Patch
+  
+  TAppsServicesVersionsPatchOptions = Record
+    mask : String;
+  end;
+  
+  TAppsServicesVersionsResource = Class(TGoogleResource)
+  Private
+    FInstancesInstance : TAppsServicesVersionsInstancesResource;
+    Function GetInstancesInstance : TAppsServicesVersionsInstancesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(appsId: string; servicesId: string; aVersion : TVersion) : TOperation;overload;
+    Function Delete(appsId: string; servicesId: string; versionsId: string) : TOperation;
+    Function Get(appsId: string; servicesId: string; versionsId: string; AQuery : string  = '') : TVersion;
+    Function Get(appsId: string; servicesId: string; versionsId: string; AQuery : TAppsServicesVersionsgetOptions) : TVersion;
+    Function List(appsId: string; servicesId: string; AQuery : string  = '') : TListVersionsResponse;
+    Function List(appsId: string; servicesId: string; AQuery : TAppsServicesVersionslistOptions) : TListVersionsResponse;
+    Function Patch(appsId: string; servicesId: string; versionsId: string; aVersion : TVersion; AQuery : string  = '') : TOperation;
+    Function Patch(appsId: string; servicesId: string; versionsId: string; aVersion : TVersion; AQuery : TAppsServicesVersionspatchOptions) : TOperation;
+    Function CreateInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateInstancesResource : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Property InstancesResource : TAppsServicesVersionsInstancesResource Read GetInstancesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAppsServicesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAppsServicesResource, method List
+  
+  TAppsServicesListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TAppsServicesResource, method Patch
+  
+  TAppsServicesPatchOptions = Record
+    mask : String;
+    migrateTraffic : boolean;
+  end;
+  
+  TAppsServicesResource = Class(TGoogleResource)
+  Private
+    FVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+    FVersionsInstance : TAppsServicesVersionsResource;
+    Function GetVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;virtual;
+    Function GetVersionsInstance : TAppsServicesVersionsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Delete(appsId: string; servicesId: string) : TOperation;
+    Function Get(appsId: string; servicesId: string) : TService;
+    Function List(appsId: string; AQuery : string  = '') : TListServicesResponse;
+    Function List(appsId: string; AQuery : TAppsServiceslistOptions) : TListServicesResponse;
+    Function Patch(appsId: string; servicesId: string; aService : TService; AQuery : string  = '') : TOperation;
+    Function Patch(appsId: string; servicesId: string; aService : TService; AQuery : TAppsServicespatchOptions) : TOperation;
+    Function CreateVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateVersionsInstancesResource : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;virtual;overload;
+    Function CreateVersionsResource : TAppsServicesVersionsResource;virtual;overload;
+    Property VersionsInstancesResource : TAppsServicesVersionsInstancesResource Read GetVersionsInstancesInstance;
+    Property VersionsResource : TAppsServicesVersionsResource Read GetVersionsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAppsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAppsResource, method Get
+  
+  TAppsGetOptions = Record
+    ensureResourcesExist : boolean;
+  end;
+  
+  TAppsResource = Class(TGoogleResource)
+  Private
+    FOperationsInstance : TAppsOperationsResource;
+    FServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+    FServicesVersionsInstance : TAppsServicesVersionsResource;
+    FServicesInstance : TAppsServicesResource;
+    Function GetOperationsInstance : TAppsOperationsResource;virtual;
+    Function GetServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;virtual;
+    Function GetServicesVersionsInstance : TAppsServicesVersionsResource;virtual;
+    Function GetServicesInstance : TAppsServicesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(appsId: string; AQuery : string  = '') : TApplication;
+    Function Get(appsId: string; AQuery : TAppsgetOptions) : TApplication;
+    Function CreateOperationsResource(AOwner : TComponent) : TAppsOperationsResource;virtual;overload;
+    Function CreateOperationsResource : TAppsOperationsResource;virtual;overload;
+    Function CreateServicesVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateServicesVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;virtual;overload;
+    Function CreateServicesVersionsResource : TAppsServicesVersionsResource;virtual;overload;
+    Function CreateServicesResource(AOwner : TComponent) : TAppsServicesResource;virtual;overload;
+    Function CreateServicesResource : TAppsServicesResource;virtual;overload;
+    Property OperationsResource : TAppsOperationsResource Read GetOperationsInstance;
+    Property ServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource Read GetServicesVersionsInstancesInstance;
+    Property ServicesVersionsResource : TAppsServicesVersionsResource Read GetServicesVersionsInstance;
+    Property ServicesResource : TAppsServicesResource Read GetServicesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAppengineAPI
+    --------------------------------------------------------------------}
+  
+  TAppengineAPI = Class(TGoogleAPI)
+  Private
+    FAppsOperationsInstance : TAppsOperationsResource;
+    FAppsServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+    FAppsServicesVersionsInstance : TAppsServicesVersionsResource;
+    FAppsServicesInstance : TAppsServicesResource;
+    FAppsInstance : TAppsResource;
+    Function GetAppsOperationsInstance : TAppsOperationsResource;virtual;
+    Function GetAppsServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;virtual;
+    Function GetAppsServicesVersionsInstance : TAppsServicesVersionsResource;virtual;
+    Function GetAppsServicesInstance : TAppsServicesResource;virtual;
+    Function GetAppsInstance : TAppsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateAppsOperationsResource(AOwner : TComponent) : TAppsOperationsResource;virtual;overload;
+    Function CreateAppsOperationsResource : TAppsOperationsResource;virtual;overload;
+    Function CreateAppsServicesVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateAppsServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource;virtual;overload;
+    Function CreateAppsServicesVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;virtual;overload;
+    Function CreateAppsServicesVersionsResource : TAppsServicesVersionsResource;virtual;overload;
+    Function CreateAppsServicesResource(AOwner : TComponent) : TAppsServicesResource;virtual;overload;
+    Function CreateAppsServicesResource : TAppsServicesResource;virtual;overload;
+    Function CreateAppsResource(AOwner : TComponent) : TAppsResource;virtual;overload;
+    Function CreateAppsResource : TAppsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property AppsOperationsResource : TAppsOperationsResource Read GetAppsOperationsInstance;
+    Property AppsServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource Read GetAppsServicesVersionsInstancesInstance;
+    Property AppsServicesVersionsResource : TAppsServicesVersionsResource Read GetAppsServicesVersionsInstance;
+    Property AppsServicesResource : TAppsServicesResource Read GetAppsServicesInstance;
+    Property AppsResource : TAppsResource Read GetAppsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TOperationTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTyperesponse
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStatusTypedetailsItem
+  --------------------------------------------------------------------}
+
+
+Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'details' : SetLength(Fdetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListOperationsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListOperationsResponse.Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); 
+
+begin
+  If (Foperations=AValue) then exit;
+  Foperations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListOperationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListOperationsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'operations' : SetLength(Foperations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TApplication
+  --------------------------------------------------------------------}
+
+
+Procedure TApplication.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetdispatchRules(AIndex : Integer; const AValue : TApplicationTypedispatchRulesArray); 
+
+begin
+  If (FdispatchRules=AValue) then exit;
+  FdispatchRules:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetauthDomain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FauthDomain=AValue) then exit;
+  FauthDomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.Setlocation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetcodeBucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcodeBucket=AValue) then exit;
+  FcodeBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetdefaultCookieExpiration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultCookieExpiration=AValue) then exit;
+  FdefaultCookieExpiration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetdefaultHostname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultHostname=AValue) then exit;
+  FdefaultHostname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApplication.SetdefaultBucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultBucket=AValue) then exit;
+  FdefaultBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TApplication.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dispatchrules' : SetLength(FdispatchRules,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUrlDispatchRule
+  --------------------------------------------------------------------}
+
+
+Procedure TUrlDispatchRule.Setdomain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdomain=AValue) then exit;
+  Fdomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlDispatchRule.Setpath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpath=AValue) then exit;
+  Fpath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlDispatchRule.Setservice(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fservice=AValue) then exit;
+  Fservice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TVersionTypebetaSettings
+  --------------------------------------------------------------------}
+
+
+Class Function TVersionTypebetaSettings.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TVersionTypeenvVariables
+  --------------------------------------------------------------------}
+
+
+Class Function TVersionTypeenvVariables.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TVersion
+  --------------------------------------------------------------------}
+
+
+Procedure TVersion.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetautomaticScaling(AIndex : Integer; const AValue : TAutomaticScaling); 
+
+begin
+  If (FautomaticScaling=AValue) then exit;
+  FautomaticScaling:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetbasicScaling(AIndex : Integer; const AValue : TBasicScaling); 
+
+begin
+  If (FbasicScaling=AValue) then exit;
+  FbasicScaling:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetmanualScaling(AIndex : Integer; const AValue : TManualScaling); 
+
+begin
+  If (FmanualScaling=AValue) then exit;
+  FmanualScaling:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetinboundServices(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FinboundServices=AValue) then exit;
+  FinboundServices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetinstanceClass(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinstanceClass=AValue) then exit;
+  FinstanceClass:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setnetwork(AIndex : Integer; const AValue : TNetwork); 
+
+begin
+  If (Fnetwork=AValue) then exit;
+  Fnetwork:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setresources(AIndex : Integer; const AValue : TResources); 
+
+begin
+  If (Fresources=AValue) then exit;
+  Fresources:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setruntime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fruntime=AValue) then exit;
+  Fruntime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setthreadsafe(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fthreadsafe=AValue) then exit;
+  Fthreadsafe:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setvm(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fvm=AValue) then exit;
+  Fvm:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetbetaSettings(AIndex : Integer; const AValue : TVersionTypebetaSettings); 
+
+begin
+  If (FbetaSettings=AValue) then exit;
+  FbetaSettings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setenv(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fenv=AValue) then exit;
+  Fenv:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetservingStatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FservingStatus=AValue) then exit;
+  FservingStatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setdeployer(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdeployer=AValue) then exit;
+  Fdeployer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetcreationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetdiskUsageBytes(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdiskUsageBytes=AValue) then exit;
+  FdiskUsageBytes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Sethandlers(AIndex : Integer; const AValue : TVersionTypehandlersArray); 
+
+begin
+  If (Fhandlers=AValue) then exit;
+  Fhandlers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SeterrorHandlers(AIndex : Integer; const AValue : TVersionTypeerrorHandlersArray); 
+
+begin
+  If (FerrorHandlers=AValue) then exit;
+  FerrorHandlers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setlibraries(AIndex : Integer; const AValue : TVersionTypelibrariesArray); 
+
+begin
+  If (Flibraries=AValue) then exit;
+  Flibraries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetapiConfig(AIndex : Integer; const AValue : TApiConfigHandler); 
+
+begin
+  If (FapiConfig=AValue) then exit;
+  FapiConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetenvVariables(AIndex : Integer; const AValue : TVersionTypeenvVariables); 
+
+begin
+  If (FenvVariables=AValue) then exit;
+  FenvVariables:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetdefaultExpiration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultExpiration=AValue) then exit;
+  FdefaultExpiration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SethealthCheck(AIndex : Integer; const AValue : THealthCheck); 
+
+begin
+  If (FhealthCheck=AValue) then exit;
+  FhealthCheck:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.SetnobuildFilesRegex(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnobuildFilesRegex=AValue) then exit;
+  FnobuildFilesRegex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVersion.Setdeployment(AIndex : Integer; const AValue : TDeployment); 
+
+begin
+  If (Fdeployment=AValue) then exit;
+  Fdeployment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TVersion.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'inboundservices' : SetLength(FinboundServices,ALength);
+  'handlers' : SetLength(Fhandlers,ALength);
+  'errorhandlers' : SetLength(FerrorHandlers,ALength);
+  'libraries' : SetLength(Flibraries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAutomaticScaling
+  --------------------------------------------------------------------}
+
+
+Procedure TAutomaticScaling.SetcoolDownPeriod(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcoolDownPeriod=AValue) then exit;
+  FcoolDownPeriod:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetcpuUtilization(AIndex : Integer; const AValue : TCpuUtilization); 
+
+begin
+  If (FcpuUtilization=AValue) then exit;
+  FcpuUtilization:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetmaxConcurrentRequests(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxConcurrentRequests=AValue) then exit;
+  FmaxConcurrentRequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetmaxIdleInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxIdleInstances=AValue) then exit;
+  FmaxIdleInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetmaxTotalInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxTotalInstances=AValue) then exit;
+  FmaxTotalInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetmaxPendingLatency(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxPendingLatency=AValue) then exit;
+  FmaxPendingLatency:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetminIdleInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FminIdleInstances=AValue) then exit;
+  FminIdleInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetminTotalInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FminTotalInstances=AValue) then exit;
+  FminTotalInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetminPendingLatency(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FminPendingLatency=AValue) then exit;
+  FminPendingLatency:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetrequestUtilization(AIndex : Integer; const AValue : TRequestUtilization); 
+
+begin
+  If (FrequestUtilization=AValue) then exit;
+  FrequestUtilization:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetdiskUtilization(AIndex : Integer; const AValue : TDiskUtilization); 
+
+begin
+  If (FdiskUtilization=AValue) then exit;
+  FdiskUtilization:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutomaticScaling.SetnetworkUtilization(AIndex : Integer; const AValue : TNetworkUtilization); 
+
+begin
+  If (FnetworkUtilization=AValue) then exit;
+  FnetworkUtilization:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCpuUtilization
+  --------------------------------------------------------------------}
+
+
+Procedure TCpuUtilization.SetaggregationWindowLength(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaggregationWindowLength=AValue) then exit;
+  FaggregationWindowLength:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCpuUtilization.SettargetUtilization(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FtargetUtilization=AValue) then exit;
+  FtargetUtilization:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRequestUtilization
+  --------------------------------------------------------------------}
+
+
+Procedure TRequestUtilization.SettargetRequestCountPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetRequestCountPerSec=AValue) then exit;
+  FtargetRequestCountPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequestUtilization.SettargetConcurrentRequests(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetConcurrentRequests=AValue) then exit;
+  FtargetConcurrentRequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiskUtilization
+  --------------------------------------------------------------------}
+
+
+Procedure TDiskUtilization.SettargetWriteBytesPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetWriteBytesPerSec=AValue) then exit;
+  FtargetWriteBytesPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiskUtilization.SettargetWriteOpsPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetWriteOpsPerSec=AValue) then exit;
+  FtargetWriteOpsPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiskUtilization.SettargetReadBytesPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetReadBytesPerSec=AValue) then exit;
+  FtargetReadBytesPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiskUtilization.SettargetReadOpsPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetReadOpsPerSec=AValue) then exit;
+  FtargetReadOpsPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNetworkUtilization
+  --------------------------------------------------------------------}
+
+
+Procedure TNetworkUtilization.SettargetSentBytesPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetSentBytesPerSec=AValue) then exit;
+  FtargetSentBytesPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNetworkUtilization.SettargetSentPacketsPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetSentPacketsPerSec=AValue) then exit;
+  FtargetSentPacketsPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNetworkUtilization.SettargetReceivedBytesPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetReceivedBytesPerSec=AValue) then exit;
+  FtargetReceivedBytesPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNetworkUtilization.SettargetReceivedPacketsPerSec(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtargetReceivedPacketsPerSec=AValue) then exit;
+  FtargetReceivedPacketsPerSec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicScaling
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicScaling.SetidleTimeout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FidleTimeout=AValue) then exit;
+  FidleTimeout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicScaling.SetmaxInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxInstances=AValue) then exit;
+  FmaxInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TManualScaling
+  --------------------------------------------------------------------}
+
+
+Procedure TManualScaling.Setinstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Finstances=AValue) then exit;
+  Finstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNetwork
+  --------------------------------------------------------------------}
+
+
+Procedure TNetwork.SetforwardedPorts(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FforwardedPorts=AValue) then exit;
+  FforwardedPorts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNetwork.SetinstanceTag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinstanceTag=AValue) then exit;
+  FinstanceTag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNetwork.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TNetwork.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'forwardedports' : SetLength(FforwardedPorts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TResources
+  --------------------------------------------------------------------}
+
+
+Procedure TResources.Setcpu(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fcpu=AValue) then exit;
+  Fcpu:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResources.SetdiskGb(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FdiskGb=AValue) then exit;
+  FdiskGb:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResources.SetmemoryGb(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FmemoryGb=AValue) then exit;
+  FmemoryGb:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUrlMap
+  --------------------------------------------------------------------}
+
+
+Procedure TUrlMap.SeturlRegex(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FurlRegex=AValue) then exit;
+  FurlRegex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.SetstaticFiles(AIndex : Integer; const AValue : TStaticFilesHandler); 
+
+begin
+  If (FstaticFiles=AValue) then exit;
+  FstaticFiles:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.Setscript(AIndex : Integer; const AValue : TScriptHandler); 
+
+begin
+  If (Fscript=AValue) then exit;
+  Fscript:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.SetapiEndpoint(AIndex : Integer; const AValue : TApiEndpointHandler); 
+
+begin
+  If (FapiEndpoint=AValue) then exit;
+  FapiEndpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.SetsecurityLevel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsecurityLevel=AValue) then exit;
+  FsecurityLevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.Setlogin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flogin=AValue) then exit;
+  Flogin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.SetauthFailAction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FauthFailAction=AValue) then exit;
+  FauthFailAction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrlMap.SetredirectHttpResponseCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FredirectHttpResponseCode=AValue) then exit;
+  FredirectHttpResponseCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStaticFilesHandlerTypehttpHeaders
+  --------------------------------------------------------------------}
+
+
+Class Function TStaticFilesHandlerTypehttpHeaders.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStaticFilesHandler
+  --------------------------------------------------------------------}
+
+
+Procedure TStaticFilesHandler.Setpath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpath=AValue) then exit;
+  Fpath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.SetuploadPathRegex(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuploadPathRegex=AValue) then exit;
+  FuploadPathRegex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.SethttpHeaders(AIndex : Integer; const AValue : TStaticFilesHandlerTypehttpHeaders); 
+
+begin
+  If (FhttpHeaders=AValue) then exit;
+  FhttpHeaders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.SetmimeType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmimeType=AValue) then exit;
+  FmimeType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.Setexpiration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fexpiration=AValue) then exit;
+  Fexpiration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.SetrequireMatchingFile(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FrequireMatchingFile=AValue) then exit;
+  FrequireMatchingFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStaticFilesHandler.SetapplicationReadable(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FapplicationReadable=AValue) then exit;
+  FapplicationReadable:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TScriptHandler
+  --------------------------------------------------------------------}
+
+
+Procedure TScriptHandler.SetscriptPath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FscriptPath=AValue) then exit;
+  FscriptPath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TApiEndpointHandler
+  --------------------------------------------------------------------}
+
+
+Procedure TApiEndpointHandler.SetscriptPath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FscriptPath=AValue) then exit;
+  FscriptPath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorHandler
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorHandler.SeterrorCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorCode=AValue) then exit;
+  FerrorCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorHandler.SetstaticFile(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstaticFile=AValue) then exit;
+  FstaticFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorHandler.SetmimeType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmimeType=AValue) then exit;
+  FmimeType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLibrary
+  --------------------------------------------------------------------}
+
+
+Procedure TLibrary.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLibrary.Setversion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fversion=AValue) then exit;
+  Fversion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TApiConfigHandler
+  --------------------------------------------------------------------}
+
+
+Procedure TApiConfigHandler.SetauthFailAction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FauthFailAction=AValue) then exit;
+  FauthFailAction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiConfigHandler.Setlogin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flogin=AValue) then exit;
+  Flogin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiConfigHandler.Setscript(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fscript=AValue) then exit;
+  Fscript:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiConfigHandler.SetsecurityLevel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsecurityLevel=AValue) then exit;
+  FsecurityLevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiConfigHandler.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  THealthCheck
+  --------------------------------------------------------------------}
+
+
+Procedure THealthCheck.SetdisableHealthCheck(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdisableHealthCheck=AValue) then exit;
+  FdisableHealthCheck:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.Sethost(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fhost=AValue) then exit;
+  Fhost:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.SethealthyThreshold(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FhealthyThreshold=AValue) then exit;
+  FhealthyThreshold:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.SetunhealthyThreshold(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FunhealthyThreshold=AValue) then exit;
+  FunhealthyThreshold:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.SetrestartThreshold(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrestartThreshold=AValue) then exit;
+  FrestartThreshold:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.SetcheckInterval(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcheckInterval=AValue) then exit;
+  FcheckInterval:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THealthCheck.Settimeout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftimeout=AValue) then exit;
+  Ftimeout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeploymentTypefiles
+  --------------------------------------------------------------------}
+
+
+Class Function TDeploymentTypefiles.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDeployment
+  --------------------------------------------------------------------}
+
+
+Procedure TDeployment.Setfiles(AIndex : Integer; const AValue : TDeploymentTypefiles); 
+
+begin
+  If (Ffiles=AValue) then exit;
+  Ffiles:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDeployment.Setcontainer(AIndex : Integer; const AValue : TContainerInfo); 
+
+begin
+  If (Fcontainer=AValue) then exit;
+  Fcontainer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDeployment.SetsourceReferences(AIndex : Integer; const AValue : TDeploymentTypesourceReferencesArray); 
+
+begin
+  If (FsourceReferences=AValue) then exit;
+  FsourceReferences:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDeployment.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sourcereferences' : SetLength(FsourceReferences,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFileInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TFileInfo.SetsourceUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsourceUrl=AValue) then exit;
+  FsourceUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFileInfo.Setsha1Sum(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsha1Sum=AValue) then exit;
+  Fsha1Sum:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFileInfo.SetmimeType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmimeType=AValue) then exit;
+  FmimeType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TContainerInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TContainerInfo.Setimage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourceReference
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceReference.Setrepository(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frepository=AValue) then exit;
+  Frepository:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceReference.SetrevisionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrevisionId=AValue) then exit;
+  FrevisionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListVersionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListVersionsResponse.Setversions(AIndex : Integer; const AValue : TListVersionsResponseTypeversionsArray); 
+
+begin
+  If (Fversions=AValue) then exit;
+  Fversions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListVersionsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListVersionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'versions' : SetLength(Fversions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TService
+  --------------------------------------------------------------------}
+
+
+Procedure TService.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TService.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TService.Setsplit(AIndex : Integer; const AValue : TTrafficSplit); 
+
+begin
+  If (Fsplit=AValue) then exit;
+  Fsplit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTrafficSplitTypeallocations
+  --------------------------------------------------------------------}
+
+
+Class Function TTrafficSplitTypeallocations.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TTrafficSplit
+  --------------------------------------------------------------------}
+
+
+Procedure TTrafficSplit.SetshardBy(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FshardBy=AValue) then exit;
+  FshardBy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTrafficSplit.Setallocations(AIndex : Integer; const AValue : TTrafficSplitTypeallocations); 
+
+begin
+  If (Fallocations=AValue) then exit;
+  Fallocations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListServicesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListServicesResponse.Setservices(AIndex : Integer; const AValue : TListServicesResponseTypeservicesArray); 
+
+begin
+  If (Fservices=AValue) then exit;
+  Fservices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListServicesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListServicesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'services' : SetLength(Fservices,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListInstancesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListInstancesResponse.Setinstances(AIndex : Integer; const AValue : TListInstancesResponseTypeinstancesArray); 
+
+begin
+  If (Finstances=AValue) then exit;
+  Finstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListInstancesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListInstancesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'instances' : SetLength(Finstances,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TInstance
+  --------------------------------------------------------------------}
+
+
+Procedure TInstance.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetappEngineRelease(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FappEngineRelease=AValue) then exit;
+  FappEngineRelease:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.Setavailability(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Favailability=AValue) then exit;
+  Favailability:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetvmName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvmName=AValue) then exit;
+  FvmName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetvmZoneName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvmZoneName=AValue) then exit;
+  FvmZoneName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetvmId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvmId=AValue) then exit;
+  FvmId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetstartTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTimestamp=AValue) then exit;
+  FstartTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.Setrequests(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Frequests=AValue) then exit;
+  Frequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.Seterrors(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Ferrors=AValue) then exit;
+  Ferrors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.Setqps(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fqps=AValue) then exit;
+  Fqps:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetaverageLatency(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FaverageLatency=AValue) then exit;
+  FaverageLatency:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetmemoryUsage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmemoryUsage=AValue) then exit;
+  FmemoryUsage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetvmStatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvmStatus=AValue) then exit;
+  FvmStatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstance.SetvmUnlocked(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FvmUnlocked=AValue) then exit;
+  FvmUnlocked:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationMetadata.SetoperationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoperationType=AValue) then exit;
+  FoperationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetinsertTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinsertTime=AValue) then exit;
+  FinsertTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Setuser(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fuser=AValue) then exit;
+  Fuser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Settarget(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftarget=AValue) then exit;
+  Ftarget:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Setmethod(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmethod=AValue) then exit;
+  Fmethod:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationMetadataV1Beta5
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationMetadataV1Beta5.Setmethod(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmethod=AValue) then exit;
+  Fmethod:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadataV1Beta5.SetinsertTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinsertTime=AValue) then exit;
+  FinsertTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadataV1Beta5.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadataV1Beta5.Setuser(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fuser=AValue) then exit;
+  Fuser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadataV1Beta5.Settarget(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftarget=AValue) then exit;
+  Ftarget:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAppsOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAppsOperationsResource.ResourceName : String;
+
+begin
+  Result:='operations';
+end;
+
+Class Function TAppsOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TappengineAPI;
+end;
+
+Function TAppsOperationsResource.Get(appsId: string; operationsId: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/operations/{operationsId}';
+  _Methodid   = 'appengine.apps.operations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'operationsId',operationsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TAppsOperationsResource.List(appsId: string; AQuery : string = '') : TListOperationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/operations';
+  _Methodid   = 'appengine.apps.operations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListOperationsResponse) as TListOperationsResponse;
+end;
+
+
+Function TAppsOperationsResource.List(appsId: string; AQuery : TAppsOperationslistOptions) : TListOperationsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(appsId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAppsServicesVersionsInstancesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAppsServicesVersionsInstancesResource.ResourceName : String;
+
+begin
+  Result:='instances';
+end;
+
+Class Function TAppsServicesVersionsInstancesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TappengineAPI;
+end;
+
+Function TAppsServicesVersionsInstancesResource.List(appsId: string; servicesId: string; versionsId: string; AQuery : string = '') : TListInstancesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances';
+  _Methodid   = 'appengine.apps.services.versions.instances.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId,'versionsId',versionsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListInstancesResponse) as TListInstancesResponse;
+end;
+
+
+Function TAppsServicesVersionsInstancesResource.List(appsId: string; servicesId: string; versionsId: string; AQuery : TAppsServicesVersionsInstanceslistOptions) : TListInstancesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(appsId,servicesId,versionsId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAppsServicesVersionsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAppsServicesVersionsResource.ResourceName : String;
+
+begin
+  Result:='versions';
+end;
+
+Class Function TAppsServicesVersionsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TappengineAPI;
+end;
+
+Function TAppsServicesVersionsResource.Create(appsId: string; servicesId: string; aVersion : TVersion) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions';
+  _Methodid   = 'appengine.apps.services.versions.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aVersion,TOperation) as TOperation;
+end;
+
+Function TAppsServicesVersionsResource.Delete(appsId: string; servicesId: string; versionsId: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}';
+  _Methodid   = 'appengine.apps.services.versions.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId,'versionsId',versionsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TAppsServicesVersionsResource.Get(appsId: string; servicesId: string; versionsId: string; AQuery : string = '') : TVersion;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}';
+  _Methodid   = 'appengine.apps.services.versions.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId,'versionsId',versionsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TVersion) as TVersion;
+end;
+
+
+Function TAppsServicesVersionsResource.Get(appsId: string; servicesId: string; versionsId: string; AQuery : TAppsServicesVersionsgetOptions) : TVersion;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'view',AQuery.view);
+  Result:=Get(appsId,servicesId,versionsId,_Q);
+end;
+
+Function TAppsServicesVersionsResource.List(appsId: string; servicesId: string; AQuery : string = '') : TListVersionsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions';
+  _Methodid   = 'appengine.apps.services.versions.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListVersionsResponse) as TListVersionsResponse;
+end;
+
+
+Function TAppsServicesVersionsResource.List(appsId: string; servicesId: string; AQuery : TAppsServicesVersionslistOptions) : TListVersionsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'view',AQuery.view);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(appsId,servicesId,_Q);
+end;
+
+Function TAppsServicesVersionsResource.Patch(appsId: string; servicesId: string; versionsId: string; aVersion : TVersion; AQuery : string = '') : TOperation;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}';
+  _Methodid   = 'appengine.apps.services.versions.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId,'versionsId',versionsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aVersion,TOperation) as TOperation;
+end;
+
+
+Function TAppsServicesVersionsResource.Patch(appsId: string; servicesId: string; versionsId: string; aVersion : TVersion; AQuery : TAppsServicesVersionspatchOptions) : TOperation;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'mask',AQuery.mask);
+  Result:=Patch(appsId,servicesId,versionsId,aVersion,_Q);
+end;
+
+
+
+Function TAppsServicesVersionsResource.GetInstancesInstance : TAppsServicesVersionsInstancesResource;
+
+begin
+  if (FInstancesInstance=Nil) then
+    FInstancesInstance:=CreateInstancesResource;
+  Result:=FInstancesInstance;
+end;
+
+Function TAppsServicesVersionsResource.CreateInstancesResource : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=CreateInstancesResource(Self);
+end;
+
+
+Function TAppsServicesVersionsResource.CreateInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=TAppsServicesVersionsInstancesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAppsServicesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAppsServicesResource.ResourceName : String;
+
+begin
+  Result:='services';
+end;
+
+Class Function TAppsServicesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TappengineAPI;
+end;
+
+Function TAppsServicesResource.Delete(appsId: string; servicesId: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}';
+  _Methodid   = 'appengine.apps.services.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TAppsServicesResource.Get(appsId: string; servicesId: string) : TService;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}';
+  _Methodid   = 'appengine.apps.services.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TService) as TService;
+end;
+
+Function TAppsServicesResource.List(appsId: string; AQuery : string = '') : TListServicesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}/services';
+  _Methodid   = 'appengine.apps.services.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListServicesResponse) as TListServicesResponse;
+end;
+
+
+Function TAppsServicesResource.List(appsId: string; AQuery : TAppsServiceslistOptions) : TListServicesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(appsId,_Q);
+end;
+
+Function TAppsServicesResource.Patch(appsId: string; servicesId: string; aService : TService; AQuery : string = '') : TOperation;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1beta5/apps/{appsId}/services/{servicesId}';
+  _Methodid   = 'appengine.apps.services.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId,'servicesId',servicesId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aService,TOperation) as TOperation;
+end;
+
+
+Function TAppsServicesResource.Patch(appsId: string; servicesId: string; aService : TService; AQuery : TAppsServicespatchOptions) : TOperation;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'mask',AQuery.mask);
+  AddToQuery(_Q,'migrateTraffic',AQuery.migrateTraffic);
+  Result:=Patch(appsId,servicesId,aService,_Q);
+end;
+
+
+
+Function TAppsServicesResource.GetVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+
+begin
+  if (FVersionsInstancesInstance=Nil) then
+    FVersionsInstancesInstance:=CreateVersionsInstancesResource;
+  Result:=FVersionsInstancesInstance;
+end;
+
+Function TAppsServicesResource.CreateVersionsInstancesResource : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=CreateVersionsInstancesResource(Self);
+end;
+
+
+Function TAppsServicesResource.CreateVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=TAppsServicesVersionsInstancesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppsServicesResource.GetVersionsInstance : TAppsServicesVersionsResource;
+
+begin
+  if (FVersionsInstance=Nil) then
+    FVersionsInstance:=CreateVersionsResource;
+  Result:=FVersionsInstance;
+end;
+
+Function TAppsServicesResource.CreateVersionsResource : TAppsServicesVersionsResource;
+
+begin
+  Result:=CreateVersionsResource(Self);
+end;
+
+
+Function TAppsServicesResource.CreateVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;
+
+begin
+  Result:=TAppsServicesVersionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAppsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAppsResource.ResourceName : String;
+
+begin
+  Result:='apps';
+end;
+
+Class Function TAppsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TappengineAPI;
+end;
+
+Function TAppsResource.Get(appsId: string; AQuery : string = '') : TApplication;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta5/apps/{appsId}';
+  _Methodid   = 'appengine.apps.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['appsId',appsId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TApplication) as TApplication;
+end;
+
+
+Function TAppsResource.Get(appsId: string; AQuery : TAppsgetOptions) : TApplication;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'ensureResourcesExist',AQuery.ensureResourcesExist);
+  Result:=Get(appsId,_Q);
+end;
+
+
+
+Function TAppsResource.GetOperationsInstance : TAppsOperationsResource;
+
+begin
+  if (FOperationsInstance=Nil) then
+    FOperationsInstance:=CreateOperationsResource;
+  Result:=FOperationsInstance;
+end;
+
+Function TAppsResource.CreateOperationsResource : TAppsOperationsResource;
+
+begin
+  Result:=CreateOperationsResource(Self);
+end;
+
+
+Function TAppsResource.CreateOperationsResource(AOwner : TComponent) : TAppsOperationsResource;
+
+begin
+  Result:=TAppsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppsResource.GetServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+
+begin
+  if (FServicesVersionsInstancesInstance=Nil) then
+    FServicesVersionsInstancesInstance:=CreateServicesVersionsInstancesResource;
+  Result:=FServicesVersionsInstancesInstance;
+end;
+
+Function TAppsResource.CreateServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=CreateServicesVersionsInstancesResource(Self);
+end;
+
+
+Function TAppsResource.CreateServicesVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=TAppsServicesVersionsInstancesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppsResource.GetServicesVersionsInstance : TAppsServicesVersionsResource;
+
+begin
+  if (FServicesVersionsInstance=Nil) then
+    FServicesVersionsInstance:=CreateServicesVersionsResource;
+  Result:=FServicesVersionsInstance;
+end;
+
+Function TAppsResource.CreateServicesVersionsResource : TAppsServicesVersionsResource;
+
+begin
+  Result:=CreateServicesVersionsResource(Self);
+end;
+
+
+Function TAppsResource.CreateServicesVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;
+
+begin
+  Result:=TAppsServicesVersionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppsResource.GetServicesInstance : TAppsServicesResource;
+
+begin
+  if (FServicesInstance=Nil) then
+    FServicesInstance:=CreateServicesResource;
+  Result:=FServicesInstance;
+end;
+
+Function TAppsResource.CreateServicesResource : TAppsServicesResource;
+
+begin
+  Result:=CreateServicesResource(Self);
+end;
+
+
+Function TAppsResource.CreateServicesResource(AOwner : TComponent) : TAppsServicesResource;
+
+begin
+  Result:=TAppsServicesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAppengineAPI
+  --------------------------------------------------------------------}
+
+Class Function TAppengineAPI.APIName : String;
+
+begin
+  Result:='appengine';
+end;
+
+Class Function TAppengineAPI.APIVersion : String;
+
+begin
+  Result:='v1beta5';
+end;
+
+Class Function TAppengineAPI.APIRevision : String;
+
+begin
+  Result:='20160407';
+end;
+
+Class Function TAppengineAPI.APIID : String;
+
+begin
+  Result:='appengine:v1beta5';
+end;
+
+Class Function TAppengineAPI.APITitle : String;
+
+begin
+  Result:='Google App Engine Admin API';
+end;
+
+Class Function TAppengineAPI.APIDescription : String;
+
+begin
+  Result:='Provisions and manages App Engine applications.';
+end;
+
+Class Function TAppengineAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TAppengineAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TAppengineAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TAppengineAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TAppengineAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/appengine/docs/admin-api/';
+end;
+
+Class Function TAppengineAPI.APIrootUrl : string;
+
+begin
+  Result:='https://appengine.googleapis.com/';
+end;
+
+Class Function TAppengineAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAppengineAPI.APIbaseURL : String;
+
+begin
+  Result:='https://appengine.googleapis.com/';
+end;
+
+Class Function TAppengineAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TAppengineAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TAppengineAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TAppengineAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TAppengineAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TAppengineAPI.RegisterAPIResources;
+
+begin
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TListOperationsResponse.RegisterObject;
+  TApplication.RegisterObject;
+  TUrlDispatchRule.RegisterObject;
+  TVersionTypebetaSettings.RegisterObject;
+  TVersionTypeenvVariables.RegisterObject;
+  TVersion.RegisterObject;
+  TAutomaticScaling.RegisterObject;
+  TCpuUtilization.RegisterObject;
+  TRequestUtilization.RegisterObject;
+  TDiskUtilization.RegisterObject;
+  TNetworkUtilization.RegisterObject;
+  TBasicScaling.RegisterObject;
+  TManualScaling.RegisterObject;
+  TNetwork.RegisterObject;
+  TResources.RegisterObject;
+  TUrlMap.RegisterObject;
+  TStaticFilesHandlerTypehttpHeaders.RegisterObject;
+  TStaticFilesHandler.RegisterObject;
+  TScriptHandler.RegisterObject;
+  TApiEndpointHandler.RegisterObject;
+  TErrorHandler.RegisterObject;
+  TLibrary.RegisterObject;
+  TApiConfigHandler.RegisterObject;
+  THealthCheck.RegisterObject;
+  TDeploymentTypefiles.RegisterObject;
+  TDeployment.RegisterObject;
+  TFileInfo.RegisterObject;
+  TContainerInfo.RegisterObject;
+  TSourceReference.RegisterObject;
+  TListVersionsResponse.RegisterObject;
+  TService.RegisterObject;
+  TTrafficSplitTypeallocations.RegisterObject;
+  TTrafficSplit.RegisterObject;
+  TListServicesResponse.RegisterObject;
+  TListInstancesResponse.RegisterObject;
+  TInstance.RegisterObject;
+  TOperationMetadata.RegisterObject;
+  TOperationMetadataV1Beta5.RegisterObject;
+end;
+
+
+Function TAppengineAPI.GetAppsOperationsInstance : TAppsOperationsResource;
+
+begin
+  if (FAppsOperationsInstance=Nil) then
+    FAppsOperationsInstance:=CreateAppsOperationsResource;
+  Result:=FAppsOperationsInstance;
+end;
+
+Function TAppengineAPI.CreateAppsOperationsResource : TAppsOperationsResource;
+
+begin
+  Result:=CreateAppsOperationsResource(Self);
+end;
+
+
+Function TAppengineAPI.CreateAppsOperationsResource(AOwner : TComponent) : TAppsOperationsResource;
+
+begin
+  Result:=TAppsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppengineAPI.GetAppsServicesVersionsInstancesInstance : TAppsServicesVersionsInstancesResource;
+
+begin
+  if (FAppsServicesVersionsInstancesInstance=Nil) then
+    FAppsServicesVersionsInstancesInstance:=CreateAppsServicesVersionsInstancesResource;
+  Result:=FAppsServicesVersionsInstancesInstance;
+end;
+
+Function TAppengineAPI.CreateAppsServicesVersionsInstancesResource : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=CreateAppsServicesVersionsInstancesResource(Self);
+end;
+
+
+Function TAppengineAPI.CreateAppsServicesVersionsInstancesResource(AOwner : TComponent) : TAppsServicesVersionsInstancesResource;
+
+begin
+  Result:=TAppsServicesVersionsInstancesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppengineAPI.GetAppsServicesVersionsInstance : TAppsServicesVersionsResource;
+
+begin
+  if (FAppsServicesVersionsInstance=Nil) then
+    FAppsServicesVersionsInstance:=CreateAppsServicesVersionsResource;
+  Result:=FAppsServicesVersionsInstance;
+end;
+
+Function TAppengineAPI.CreateAppsServicesVersionsResource : TAppsServicesVersionsResource;
+
+begin
+  Result:=CreateAppsServicesVersionsResource(Self);
+end;
+
+
+Function TAppengineAPI.CreateAppsServicesVersionsResource(AOwner : TComponent) : TAppsServicesVersionsResource;
+
+begin
+  Result:=TAppsServicesVersionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppengineAPI.GetAppsServicesInstance : TAppsServicesResource;
+
+begin
+  if (FAppsServicesInstance=Nil) then
+    FAppsServicesInstance:=CreateAppsServicesResource;
+  Result:=FAppsServicesInstance;
+end;
+
+Function TAppengineAPI.CreateAppsServicesResource : TAppsServicesResource;
+
+begin
+  Result:=CreateAppsServicesResource(Self);
+end;
+
+
+Function TAppengineAPI.CreateAppsServicesResource(AOwner : TComponent) : TAppsServicesResource;
+
+begin
+  Result:=TAppsServicesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAppengineAPI.GetAppsInstance : TAppsResource;
+
+begin
+  if (FAppsInstance=Nil) then
+    FAppsInstance:=CreateAppsResource;
+  Result:=FAppsInstance;
+end;
+
+Function TAppengineAPI.CreateAppsResource : TAppsResource;
+
+begin
+  Result:=CreateAppsResource(Self);
+end;
+
+
+Function TAppengineAPI.CreateAppsResource(AOwner : TComponent) : TAppsResource;
+
+begin
+  Result:=TAppsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TAppengineAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 237 - 327
packages/googleapi/src/googleappsactivity.pp


+ 69 - 99
packages/googleapi/src/googleappstate.pp

@@ -1,31 +1,4 @@
 unit googleappstate;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,17 +7,18 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TGetResponse = class;
+  
+  //Top-level schema types
+  TGetResponse = Class;
+  TListResponse = Class;
+  TUpdateRequest = Class;
+  TWriteResult = Class;
   TGetResponseArray = Array of TGetResponse;
-  TListResponse = class;
   TListResponseArray = Array of TListResponse;
-  TListResponseitems = class;
-  TListResponseitemsArray = Array of TListResponseitems;
-  TUpdateRequest = class;
   TUpdateRequestArray = Array of TUpdateRequest;
-  TWriteResult = class;
   TWriteResultArray = Array of TWriteResult;
+  //Anonymous types, using auto-generated names
+  TListResponseTypeitemsArray = Array of TGetResponse;
   
   { --------------------------------------------------------------------
     TGetResponse
@@ -52,21 +26,21 @@ type
   
   TGetResponse = Class(TGoogleBaseObject)
   Private
-    FcurrentStateVersion : string;
-    Fdata : string;
-    Fkind : string;
+    FcurrentStateVersion : String;
+    Fdata : String;
+    Fkind : String;
     FstateKey : integer;
   Protected
     //Property setters
-    Procedure SetcurrentStateVersion(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetstateKey(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcurrentStateVersion(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateKey(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
-    Property currentStateVersion : string Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
-    Property data : string Index 8 Read Fdata Write Setdata;
-    Property kind : string Index 16 Read Fkind Write Setkind;
+    Property currentStateVersion : String Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
+    Property data : String Index 8 Read Fdata Write Setdata;
+    Property kind : String Index 16 Read Fkind Write Setkind;
     Property stateKey : integer Index 24 Read FstateKey Write SetstateKey;
   end;
   TGetResponseClass = Class of TGetResponse;
@@ -77,51 +51,42 @@ type
   
   TListResponse = Class(TGoogleBaseObject)
   Private
-    Fitems : TListResponseitems;
-    Fkind : string;
+    Fitems : TListResponseTypeitemsArray;
+    Fkind : String;
     FmaximumKeyCount : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TListResponseitems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmaximumKeyCount(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TListResponseTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaximumKeyCount(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property items : TListResponseitems Index 0 Read Fitems Write Setitems;
-    Property kind : string Index 8 Read Fkind Write Setkind;
+    Property items : TListResponseTypeitemsArray Index 0 Read Fitems Write Setitems;
+    Property kind : String Index 8 Read Fkind Write Setkind;
     Property maximumKeyCount : integer Index 16 Read FmaximumKeyCount Write SetmaximumKeyCount;
   end;
   TListResponseClass = Class of TListResponse;
   
-  { --------------------------------------------------------------------
-    TListResponseitems
-    --------------------------------------------------------------------}
-  
-  TListResponseitems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TListResponseitemsClass = Class of TListResponseitems;
-  
   { --------------------------------------------------------------------
     TUpdateRequest
     --------------------------------------------------------------------}
   
   TUpdateRequest = Class(TGoogleBaseObject)
   Private
-    Fdata : string;
-    Fkind : string;
+    Fdata : String;
+    Fkind : String;
   Protected
     //Property setters
-    Procedure Setdata(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property data : string Index 0 Read Fdata Write Setdata;
-    Property kind : string Index 8 Read Fkind Write Setkind;
+    Property data : String Index 0 Read Fdata Write Setdata;
+    Property kind : String Index 8 Read Fkind Write Setkind;
   end;
   TUpdateRequestClass = Class of TUpdateRequest;
   
@@ -131,18 +96,18 @@ type
   
   TWriteResult = Class(TGoogleBaseObject)
   Private
-    FcurrentStateVersion : string;
-    Fkind : string;
+    FcurrentStateVersion : String;
+    Fkind : String;
     FstateKey : integer;
   Protected
     //Property setters
-    Procedure SetcurrentStateVersion(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetstateKey(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcurrentStateVersion(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateKey(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
-    Property currentStateVersion : string Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
-    Property kind : string Index 8 Read Fkind Write Setkind;
+    Property currentStateVersion : String Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
+    Property kind : String Index 8 Read Fkind Write Setkind;
     Property stateKey : integer Index 16 Read FstateKey Write SetstateKey;
   end;
   TWriteResultClass = Class of TWriteResult;
@@ -155,7 +120,7 @@ type
   //Optional query Options for TStatesResource, method Clear
   
   TStatesClearOptions = Record
-    currentDataVersion : string;
+    currentDataVersion : String;
   end;
   
   
@@ -169,7 +134,7 @@ type
   //Optional query Options for TStatesResource, method Update
   
   TStatesUpdateOptions = Record
-    currentStateVersion : string;
+    currentStateVersion : String;
   end;
   
   TStatesResource = Class(TGoogleResource)
@@ -232,7 +197,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TGetResponse.SetcurrentStateVersion(AIndex : Integer; AValue : string); 
+Procedure TGetResponse.SetcurrentStateVersion(AIndex : Integer; const AValue : String); 
 
 begin
   If (FcurrentStateVersion=AValue) then exit;
@@ -242,7 +207,7 @@ end;
 
 
 
-Procedure TGetResponse.Setdata(AIndex : Integer; AValue : string); 
+Procedure TGetResponse.Setdata(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -252,7 +217,7 @@ end;
 
 
 
-Procedure TGetResponse.Setkind(AIndex : Integer; AValue : string); 
+Procedure TGetResponse.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -262,7 +227,7 @@ end;
 
 
 
-Procedure TGetResponse.SetstateKey(AIndex : Integer; AValue : integer); 
+Procedure TGetResponse.SetstateKey(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstateKey=AValue) then exit;
@@ -279,7 +244,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListResponse.Setitems(AIndex : Integer; AValue : TListResponseitems); 
+Procedure TListResponse.Setitems(AIndex : Integer; const AValue : TListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -289,7 +254,7 @@ end;
 
 
 
-Procedure TListResponse.Setkind(AIndex : Integer; AValue : string); 
+Procedure TListResponse.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -299,7 +264,7 @@ end;
 
 
 
-Procedure TListResponse.SetmaximumKeyCount(AIndex : Integer; AValue : integer); 
+Procedure TListResponse.SetmaximumKeyCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaximumKeyCount=AValue) then exit;
@@ -308,12 +273,18 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListResponse.SetArrayLength(Const AName : String; ALength : Longint); 
 
-
-
-{ --------------------------------------------------------------------
-  TListResponseitems
-  --------------------------------------------------------------------}
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
 
 
 
@@ -323,7 +294,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUpdateRequest.Setdata(AIndex : Integer; AValue : string); 
+Procedure TUpdateRequest.Setdata(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -333,7 +304,7 @@ end;
 
 
 
-Procedure TUpdateRequest.Setkind(AIndex : Integer; AValue : string); 
+Procedure TUpdateRequest.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -350,7 +321,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TWriteResult.SetcurrentStateVersion(AIndex : Integer; AValue : string); 
+Procedure TWriteResult.SetcurrentStateVersion(AIndex : Integer; const AValue : String); 
 
 begin
   If (FcurrentStateVersion=AValue) then exit;
@@ -360,7 +331,7 @@ end;
 
 
 
-Procedure TWriteResult.Setkind(AIndex : Integer; AValue : string); 
+Procedure TWriteResult.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -370,7 +341,7 @@ end;
 
 
 
-Procedure TWriteResult.SetstateKey(AIndex : Integer; AValue : integer); 
+Procedure TWriteResult.SetstateKey(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstateKey=AValue) then exit;
@@ -527,7 +498,7 @@ end;
 Class Function TAppstateAPI.APIRevision : String;
 
 begin
-  Result:='20150428';
+  Result:='20160519';
 end;
 
 Class Function TAppstateAPI.APIID : String;
@@ -634,7 +605,6 @@ Class Procedure TAppstateAPI.RegisterAPIResources;
 begin
   TGetResponse.RegisterObject;
   TListResponse.RegisterObject;
-  TListResponseitems.RegisterObject;
   TUpdateRequest.RegisterObject;
   TWriteResult.RegisterObject;
 end;
@@ -659,7 +629,7 @@ Function TAppstateAPI.CreateStatesResource(AOwner : TComponent) : TStatesResourc
 
 begin
   Result:=TStatesResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

+ 239 - 222
packages/googleapi/src/googleaudit.pp

@@ -1,31 +1,19 @@
 unit googleaudit;
 {
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
+   **********************************************************************
+      This file is part of the Free Component Library (FCL)
+      Copyright (c) 2015 The free pascal team.
   
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
+      See the file COPYING.FPC, included in this distribution,
+      for details about the copyright.
   
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
+      This program is distributed in the hope that it will be useful,
+      but WITHOUT ANY WARRANTY; without even the implied warranty of
+      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   
+   **********************************************************************
 }
+//Generated on: 16-5-15 08:52:58
 {$MODE objfpc}
 {$H+}
 
@@ -34,21 +22,20 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TActivities = class;
+  
+  //Top-level schema types
+  TActivities = Class;
+  TActivity = Class;
   TActivitiesArray = Array of TActivities;
-  TActivitiesitems = class;
-  TActivitiesitemsArray = Array of TActivitiesitems;
-  TActivity = class;
   TActivityArray = Array of TActivity;
-  TActivityactor = class;
-  TActivityactorArray = Array of TActivityactor;
-  TActivityevents = class;
-  TActivityeventsArray = Array of TActivityevents;
-  TActivityeventsparameters = class;
-  TActivityeventsparametersArray = Array of TActivityeventsparameters;
-  TActivityid = class;
-  TActivityidArray = Array of TActivityid;
+  //Anonymous types, using auto-generated names
+  TActivityTypeactor = Class;
+  TActivityTypeeventsItemTypeparametersItem = Class;
+  TActivityTypeeventsItem = Class;
+  TActivityTypeid = Class;
+  TActivitiesTypeitemsArray = Array of TActivity;
+  TActivityTypeeventsItemTypeparametersArray = Array of TActivityTypeeventsItemTypeparametersItem;
+  TActivityTypeeventsArray = Array of TActivityTypeeventsItem;
   
   { --------------------------------------------------------------------
     TActivities
@@ -56,156 +43,155 @@ type
   
   TActivities = Class(TGoogleBaseObject)
   Private
-    Fitems : TActivitiesitems;
-    Fkind : string;
-    Fnext : string;
+    Fitems : TActivitiesTypeitemsArray;
+    Fkind : String;
+    Fnext : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TActivitiesitems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setnext(AIndex : Integer; AValue : string); virtual;
+    Procedure Setitems(AIndex : Integer; AValue : TActivitiesTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnext(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property items : TActivitiesitems Index 0 Read Fitems Write Setitems;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property next : string Index 16 Read Fnext Write Setnext;
+    Property items : TActivitiesTypeitemsArray Index 0 Read Fitems Write Setitems;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property next : String Index 16 Read Fnext Write Setnext;
   end;
   TActivitiesClass = Class of TActivities;
   
   { --------------------------------------------------------------------
-    TActivitiesitems
+    TActivityTypeactor
     --------------------------------------------------------------------}
   
-  TActivitiesitems = Class(TGoogleBaseObject)
+  TActivityTypeactor = Class(TGoogleBaseObject)
   Private
+    FapplicationId : String;
+    FcallerType : String;
+    Femail : String;
+    Fkey : String;
   Protected
     //Property setters
+    Procedure SetapplicationId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcallerType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
+    Property applicationId : String Index 0 Read FapplicationId Write SetapplicationId;
+    Property callerType : String Index 8 Read FcallerType Write SetcallerType;
+    Property email : String Index 16 Read Femail Write Setemail;
+    Property key : String Index 24 Read Fkey Write Setkey;
   end;
-  TActivitiesitemsClass = Class of TActivitiesitems;
+  TActivityTypeactorClass = Class of TActivityTypeactor;
   
   { --------------------------------------------------------------------
-    TActivity
+    TActivityTypeeventsItemTypeparametersItem
     --------------------------------------------------------------------}
   
-  TActivity = Class(TGoogleBaseObject)
+  TActivityTypeeventsItemTypeparametersItem = Class(TGoogleBaseObject)
   Private
-    Factor : TActivityactor;
-    Fevents : TActivityevents;
-    Fid : TActivityid;
-    FipAddress : string;
-    Fkind : string;
-    FownerDomain : string;
+    Fname : String;
+    Fvalue : String;
   Protected
     //Property setters
-    Procedure Setactor(AIndex : Integer; AValue : TActivityactor); virtual;
-    Procedure Setevents(AIndex : Integer; AValue : TActivityevents); virtual;
-    Procedure Setid(AIndex : Integer; AValue : TActivityid); virtual;
-    Procedure SetipAddress(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetownerDomain(AIndex : Integer; AValue : string); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property actor : TActivityactor Index 0 Read Factor Write Setactor;
-    Property events : TActivityevents Index 8 Read Fevents Write Setevents;
-    Property id : TActivityid Index 16 Read Fid Write Setid;
-    Property ipAddress : string Index 24 Read FipAddress Write SetipAddress;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property ownerDomain : string Index 40 Read FownerDomain Write SetownerDomain;
+    Property name : String Index 0 Read Fname Write Setname;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
   end;
-  TActivityClass = Class of TActivity;
+  TActivityTypeeventsItemTypeparametersItemClass = Class of TActivityTypeeventsItemTypeparametersItem;
   
   { --------------------------------------------------------------------
-    TActivityactor
+    TActivityTypeeventsItem
     --------------------------------------------------------------------}
   
-  TActivityactor = Class(TGoogleBaseObject)
+  TActivityTypeeventsItem = Class(TGoogleBaseObject)
   Private
-    FapplicationId : string;
-    FcallerType : string;
-    Femail : string;
-    Fkey : string;
+    FeventType : String;
+    Fname : String;
+    Fparameters : TActivityTypeeventsItemTypeparametersArray;
   Protected
     //Property setters
-    Procedure SetapplicationId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetcallerType(AIndex : Integer; AValue : string); virtual;
-    Procedure Setemail(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkey(AIndex : Integer; AValue : string); virtual;
+    Procedure SeteventType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setparameters(AIndex : Integer; AValue : TActivityTypeeventsItemTypeparametersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property applicationId : string Index 0 Read FapplicationId Write SetapplicationId;
-    Property callerType : string Index 8 Read FcallerType Write SetcallerType;
-    Property email : string Index 16 Read Femail Write Setemail;
-    Property key : string Index 24 Read Fkey Write Setkey;
+    Property eventType : String Index 0 Read FeventType Write SeteventType;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property parameters : TActivityTypeeventsItemTypeparametersArray Index 16 Read Fparameters Write Setparameters;
   end;
-  TActivityactorClass = Class of TActivityactor;
+  TActivityTypeeventsItemClass = Class of TActivityTypeeventsItem;
   
   { --------------------------------------------------------------------
-    TActivityevents
+    TActivityTypeid
     --------------------------------------------------------------------}
   
-  TActivityevents = Class(TGoogleBaseObject)
+  TActivityTypeid = Class(TGoogleBaseObject)
   Private
-    FeventType : string;
-    Fname : string;
-    Fparameters : TActivityeventsparameters;
-  Protected
-    //Property setters
-    Procedure SeteventType(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure Setparameters(AIndex : Integer; AValue : TActivityeventsparameters); virtual;
-  Public
-  Published
-    Property eventType : string Index 0 Read FeventType Write SeteventType;
-    Property name : string Index 8 Read Fname Write Setname;
-    Property parameters : TActivityeventsparameters Index 16 Read Fparameters Write Setparameters;
-  end;
-  TActivityeventsClass = Class of TActivityevents;
-  
-  { --------------------------------------------------------------------
-    TActivityeventsparameters
-    --------------------------------------------------------------------}
-  
-  TActivityeventsparameters = Class(TGoogleBaseObject)
-  Private
-    Fname : string;
-    Fvalue : string;
+    FapplicationId : String;
+    FcustomerId : String;
+    Ftime : TDatetime;
+    FuniqQualifier : String;
   Protected
     //Property setters
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
+    Procedure SetapplicationId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settime(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetuniqQualifier(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property name : string Index 0 Read Fname Write Setname;
-    Property value : string Index 8 Read Fvalue Write Setvalue;
+    Property applicationId : String Index 0 Read FapplicationId Write SetapplicationId;
+    Property customerId : String Index 8 Read FcustomerId Write SetcustomerId;
+    Property time : TDatetime Index 16 Read Ftime Write Settime;
+    Property uniqQualifier : String Index 24 Read FuniqQualifier Write SetuniqQualifier;
   end;
-  TActivityeventsparametersClass = Class of TActivityeventsparameters;
+  TActivityTypeidClass = Class of TActivityTypeid;
   
   { --------------------------------------------------------------------
-    TActivityid
+    TActivity
     --------------------------------------------------------------------}
   
-  TActivityid = Class(TGoogleBaseObject)
+  TActivity = Class(TGoogleBaseObject)
   Private
-    FapplicationId : string;
-    FcustomerId : string;
-    Ftime : TDatetime;
-    FuniqQualifier : string;
+    Factor : TActivityTypeactor;
+    Fevents : TActivityTypeeventsArray;
+    Fid : TActivityTypeid;
+    FipAddress : String;
+    Fkind : String;
+    FownerDomain : String;
   Protected
     //Property setters
-    Procedure SetapplicationId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetcustomerId(AIndex : Integer; AValue : string); virtual;
-    Procedure Settime(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetuniqQualifier(AIndex : Integer; AValue : string); virtual;
+    Procedure Setactor(AIndex : Integer; AValue : TActivityTypeactor); virtual;
+    Procedure Setevents(AIndex : Integer; AValue : TActivityTypeeventsArray); virtual;
+    Procedure Setid(AIndex : Integer; AValue : TActivityTypeid); virtual;
+    Procedure SetipAddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetownerDomain(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property applicationId : string Index 0 Read FapplicationId Write SetapplicationId;
-    Property customerId : string Index 8 Read FcustomerId Write SetcustomerId;
-    Property time : TDatetime Index 16 Read Ftime Write Settime;
-    Property uniqQualifier : string Index 24 Read FuniqQualifier Write SetuniqQualifier;
+    Property actor : TActivityTypeactor Index 0 Read Factor Write Setactor;
+    Property events : TActivityTypeeventsArray Index 8 Read Fevents Write Setevents;
+    Property id : TActivityTypeid Index 16 Read Fid Write Setid;
+    Property ipAddress : String Index 24 Read FipAddress Write SetipAddress;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property ownerDomain : String Index 40 Read FownerDomain Write SetownerDomain;
   end;
-  TActivityidClass = Class of TActivityid;
+  TActivityClass = Class of TActivity;
   
   { --------------------------------------------------------------------
     TActivitiesResource
@@ -216,14 +202,14 @@ type
   
   TActivitiesListOptions = Record
     actorApplicationId : int64;
-    actorEmail : string;
-    actorIpAddress : string;
-    caller : string;
-    continuationToken : string;
-    endTime : string;
-    eventName : string;
+    actorEmail : String;
+    actorIpAddress : String;
+    caller : String;
+    continuationToken : String;
+    endTime : String;
+    eventName : String;
     maxResults : integer;
-    startTime : string;
+    startTime : String;
   end;
   
   TActivitiesResource = Class(TGoogleResource)
@@ -280,7 +266,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TActivities.Setitems(AIndex : Integer; AValue : TActivitiesitems); 
+Procedure TActivities.Setitems(AIndex : Integer; AValue : TActivitiesTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -290,7 +276,7 @@ end;
 
 
 
-Procedure TActivities.Setkind(AIndex : Integer; AValue : string); 
+Procedure TActivities.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -300,7 +286,7 @@ end;
 
 
 
-Procedure TActivities.Setnext(AIndex : Integer; AValue : string); 
+Procedure TActivities.Setnext(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fnext=AValue) then exit;
@@ -309,76 +295,89 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivities.SetArrayLength(Const AName : String; ALength : Longint); 
 
-
-
-{ --------------------------------------------------------------------
-  TActivitiesitems
-  --------------------------------------------------------------------}
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
 
 
 
 
 { --------------------------------------------------------------------
-  TActivity
+  TActivityTypeactor
   --------------------------------------------------------------------}
 
 
-Procedure TActivity.Setactor(AIndex : Integer; AValue : TActivityactor); 
+Procedure TActivityTypeactor.SetapplicationId(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Factor=AValue) then exit;
-  Factor:=AValue;
+  If (FapplicationId=AValue) then exit;
+  FapplicationId:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivity.Setevents(AIndex : Integer; AValue : TActivityevents); 
+Procedure TActivityTypeactor.SetcallerType(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fevents=AValue) then exit;
-  Fevents:=AValue;
+  If (FcallerType=AValue) then exit;
+  FcallerType:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivity.Setid(AIndex : Integer; AValue : TActivityid); 
+Procedure TActivityTypeactor.Setemail(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
+  If (Femail=AValue) then exit;
+  Femail:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivity.SetipAddress(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeactor.Setkey(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FipAddress=AValue) then exit;
-  FipAddress:=AValue;
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivity.Setkind(AIndex : Integer; AValue : string); 
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeeventsItemTypeparametersItem
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeeventsItemTypeparametersItem.Setname(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivity.SetownerDomain(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeeventsItemTypeparametersItem.Setvalue(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FownerDomain=AValue) then exit;
-  FownerDomain:=AValue;
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
@@ -387,82 +386,95 @@ end;
 
 
 { --------------------------------------------------------------------
-  TActivityactor
+  TActivityTypeeventsItem
   --------------------------------------------------------------------}
 
 
-Procedure TActivityactor.SetapplicationId(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeeventsItem.SeteventType(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FapplicationId=AValue) then exit;
-  FapplicationId:=AValue;
+  If (FeventType=AValue) then exit;
+  FeventType:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityactor.SetcallerType(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeeventsItem.Setname(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FcallerType=AValue) then exit;
-  FcallerType:=AValue;
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityactor.Setemail(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeeventsItem.Setparameters(AIndex : Integer; AValue : TActivityTypeeventsItemTypeparametersArray); 
 
 begin
-  If (Femail=AValue) then exit;
-  Femail:=AValue;
+  If (Fparameters=AValue) then exit;
+  Fparameters:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
-
-Procedure TActivityactor.Setkey(AIndex : Integer; AValue : string); 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivityTypeeventsItem.SetArrayLength(Const AName : String; ALength : Longint); 
 
 begin
-  If (Fkey=AValue) then exit;
-  Fkey:=AValue;
-  MarkPropertyChanged(AIndex);
+  Case AName of
+  'parameters' : SetLength(Fparameters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
 end;
-
+{$ENDIF VER2_6}
 
 
 
 
 { --------------------------------------------------------------------
-  TActivityevents
+  TActivityTypeid
   --------------------------------------------------------------------}
 
 
-Procedure TActivityevents.SeteventType(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeid.SetapplicationId(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FeventType=AValue) then exit;
-  FeventType:=AValue;
+  If (FapplicationId=AValue) then exit;
+  FapplicationId:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityevents.Setname(AIndex : Integer; AValue : string); 
+Procedure TActivityTypeid.SetcustomerId(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
+  If (FcustomerId=AValue) then exit;
+  FcustomerId:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityevents.Setparameters(AIndex : Integer; AValue : TActivityeventsparameters); 
+Procedure TActivityTypeid.Settime(AIndex : Integer; AValue : TDatetime); 
 
 begin
-  If (Fparameters=AValue) then exit;
-  Fparameters:=AValue;
+  If (Ftime=AValue) then exit;
+  Ftime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeid.SetuniqQualifier(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuniqQualifier=AValue) then exit;
+  FuniqQualifier:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
@@ -471,75 +483,81 @@ end;
 
 
 { --------------------------------------------------------------------
-  TActivityeventsparameters
+  TActivity
   --------------------------------------------------------------------}
 
 
-Procedure TActivityeventsparameters.Setname(AIndex : Integer; AValue : string); 
+Procedure TActivity.Setactor(AIndex : Integer; AValue : TActivityTypeactor); 
 
 begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
+  If (Factor=AValue) then exit;
+  Factor:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityeventsparameters.Setvalue(AIndex : Integer; AValue : string); 
+Procedure TActivity.Setevents(AIndex : Integer; AValue : TActivityTypeeventsArray); 
 
 begin
-  If (Fvalue=AValue) then exit;
-  Fvalue:=AValue;
+  If (Fevents=AValue) then exit;
+  Fevents:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
+Procedure TActivity.Setid(AIndex : Integer; AValue : TActivityTypeid); 
 
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
 
-{ --------------------------------------------------------------------
-  TActivityid
-  --------------------------------------------------------------------}
 
 
-Procedure TActivityid.SetapplicationId(AIndex : Integer; AValue : string); 
+Procedure TActivity.SetipAddress(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FapplicationId=AValue) then exit;
-  FapplicationId:=AValue;
+  If (FipAddress=AValue) then exit;
+  FipAddress:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityid.SetcustomerId(AIndex : Integer; AValue : string); 
+Procedure TActivity.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FcustomerId=AValue) then exit;
-  FcustomerId:=AValue;
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TActivityid.Settime(AIndex : Integer; AValue : TDatetime); 
+Procedure TActivity.SetownerDomain(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Ftime=AValue) then exit;
-  Ftime:=AValue;
+  If (FownerDomain=AValue) then exit;
+  FownerDomain:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
-
-Procedure TActivityid.SetuniqQualifier(AIndex : Integer; AValue : string); 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivity.SetArrayLength(Const AName : String; ALength : Longint); 
 
 begin
-  If (FuniqQualifier=AValue) then exit;
-  FuniqQualifier:=AValue;
-  MarkPropertyChanged(AIndex);
+  Case AName of
+  'events' : SetLength(Fevents,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
 end;
-
+{$ENDIF VER2_6}
 
 
 
@@ -671,7 +689,7 @@ end;
 Class Function TAuditAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com/';
+  Result:='https://www.googleapis.com:443/';
 end;
 
 Class Function TAuditAPI.APIbasePath : string;
@@ -683,7 +701,7 @@ end;
 Class Function TAuditAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com/apps/reporting/audit/v1/';
+  Result:='https://www.googleapis.com:443/apps/reporting/audit/v1/';
 end;
 
 Class Function TAuditAPI.APIProtocol : string;
@@ -721,12 +739,11 @@ Class Procedure TAuditAPI.RegisterAPIResources;
 
 begin
   TActivities.RegisterObject;
-  TActivitiesitems.RegisterObject;
+  TActivityTypeactor.RegisterObject;
+  TActivityTypeeventsItemTypeparametersItem.RegisterObject;
+  TActivityTypeeventsItem.RegisterObject;
+  TActivityTypeid.RegisterObject;
   TActivity.RegisterObject;
-  TActivityactor.RegisterObject;
-  TActivityevents.RegisterObject;
-  TActivityeventsparameters.RegisterObject;
-  TActivityid.RegisterObject;
 end;
 
 
@@ -749,7 +766,7 @@ Function TAuditAPI.CreateActivitiesResource(AOwner : TComponent) : TActivitiesRe
 
 begin
   Result:=TActivitiesResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

File diff suppressed because it is too large
+ 313 - 387
packages/googleapi/src/googleautoscaler.pp


+ 14 - 1
packages/googleapi/src/googlebase.pp

@@ -43,7 +43,11 @@ Type
 
 Type
 
-  TGoogleBaseObject = CLass(TBaseObject);
+  { TGoogleBaseObject }
+
+  TGoogleBaseObject = CLass(TBaseObject)
+    Class Function AllowAdditionalProperties: Boolean; override;
+  end;
   TGoogleBaseObjectClass = Class of TGoogleBaseObject;
   TGoogleObjectArray =  Array of TGoogleBaseObject;
 
@@ -70,6 +74,15 @@ begin
   Result:=RestFactory;
 end;
 
+{ TGoogleBaseObject }
+
+Class Function TGoogleBaseObject.AllowAdditionalProperties: Boolean;
+begin
+  // We override this, so people don't get caught whenn google inadvertently adds properties.
+  // (see e.g. 30174)
+  Result:=True;
+end;
+
 { TGoogleBaseObjectList }
 
 function TGoogleBaseObjectList.GetO(Aindex: Integer): TGoogleBaseObject;

File diff suppressed because it is too large
+ 498 - 315
packages/googleapi/src/googlebigquery.pp


File diff suppressed because it is too large
+ 347 - 430
packages/googleapi/src/googleblogger.pp


File diff suppressed because it is too large
+ 351 - 432
packages/googleapi/src/googlebooks.pp


File diff suppressed because it is too large
+ 311 - 525
packages/googleapi/src/googlecalendar.pp


File diff suppressed because it is too large
+ 340 - 634
packages/googleapi/src/googlecivicinfo.pp


+ 4445 - 0
packages/googleapi/src/googleclassroom.pp

@@ -0,0 +1,4445 @@
+unit googleclassroom;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TCourse = Class;
+  TDriveFolder = Class;
+  TCourseMaterialSet = Class;
+  TCourseMaterial = Class;
+  TDriveFile = Class;
+  TYouTubeVideo = Class;
+  TLink = Class;
+  TForm = Class;
+  TEmpty = Class;
+  TListCoursesResponse = Class;
+  TCourseAlias = Class;
+  TListCourseAliasesResponse = Class;
+  TInvitation = Class;
+  TListInvitationsResponse = Class;
+  TUserProfile = Class;
+  TName = Class;
+  TGlobalPermission = Class;
+  TTeacher = Class;
+  TListTeachersResponse = Class;
+  TStudent = Class;
+  TListStudentsResponse = Class;
+  TCourseWork = Class;
+  TMaterial = Class;
+  TSharedDriveFile = Class;
+  TDate = Class;
+  TTimeOfDay = Class;
+  TAssignment = Class;
+  TMultipleChoiceQuestion = Class;
+  TListCourseWorkResponse = Class;
+  TStudentSubmission = Class;
+  TAssignmentSubmission = Class;
+  TAttachment = Class;
+  TShortAnswerSubmission = Class;
+  TMultipleChoiceSubmission = Class;
+  TListStudentSubmissionsResponse = Class;
+  TTurnInStudentSubmissionRequest = Class;
+  TReclaimStudentSubmissionRequest = Class;
+  TReturnStudentSubmissionRequest = Class;
+  TModifyAttachmentsRequest = Class;
+  TCourseArray = Array of TCourse;
+  TDriveFolderArray = Array of TDriveFolder;
+  TCourseMaterialSetArray = Array of TCourseMaterialSet;
+  TCourseMaterialArray = Array of TCourseMaterial;
+  TDriveFileArray = Array of TDriveFile;
+  TYouTubeVideoArray = Array of TYouTubeVideo;
+  TLinkArray = Array of TLink;
+  TFormArray = Array of TForm;
+  TEmptyArray = Array of TEmpty;
+  TListCoursesResponseArray = Array of TListCoursesResponse;
+  TCourseAliasArray = Array of TCourseAlias;
+  TListCourseAliasesResponseArray = Array of TListCourseAliasesResponse;
+  TInvitationArray = Array of TInvitation;
+  TListInvitationsResponseArray = Array of TListInvitationsResponse;
+  TUserProfileArray = Array of TUserProfile;
+  TNameArray = Array of TName;
+  TGlobalPermissionArray = Array of TGlobalPermission;
+  TTeacherArray = Array of TTeacher;
+  TListTeachersResponseArray = Array of TListTeachersResponse;
+  TStudentArray = Array of TStudent;
+  TListStudentsResponseArray = Array of TListStudentsResponse;
+  TCourseWorkArray = Array of TCourseWork;
+  TMaterialArray = Array of TMaterial;
+  TSharedDriveFileArray = Array of TSharedDriveFile;
+  TDateArray = Array of TDate;
+  TTimeOfDayArray = Array of TTimeOfDay;
+  TAssignmentArray = Array of TAssignment;
+  TMultipleChoiceQuestionArray = Array of TMultipleChoiceQuestion;
+  TListCourseWorkResponseArray = Array of TListCourseWorkResponse;
+  TStudentSubmissionArray = Array of TStudentSubmission;
+  TAssignmentSubmissionArray = Array of TAssignmentSubmission;
+  TAttachmentArray = Array of TAttachment;
+  TShortAnswerSubmissionArray = Array of TShortAnswerSubmission;
+  TMultipleChoiceSubmissionArray = Array of TMultipleChoiceSubmission;
+  TListStudentSubmissionsResponseArray = Array of TListStudentSubmissionsResponse;
+  TTurnInStudentSubmissionRequestArray = Array of TTurnInStudentSubmissionRequest;
+  TReclaimStudentSubmissionRequestArray = Array of TReclaimStudentSubmissionRequest;
+  TReturnStudentSubmissionRequestArray = Array of TReturnStudentSubmissionRequest;
+  TModifyAttachmentsRequestArray = Array of TModifyAttachmentsRequest;
+  //Anonymous types, using auto-generated names
+  TCourseTypecourseMaterialSetsArray = Array of TCourseMaterialSet;
+  TCourseMaterialSetTypematerialsArray = Array of TCourseMaterial;
+  TListCoursesResponseTypecoursesArray = Array of TCourse;
+  TListCourseAliasesResponseTypealiasesArray = Array of TCourseAlias;
+  TListInvitationsResponseTypeinvitationsArray = Array of TInvitation;
+  TUserProfileTypepermissionsArray = Array of TGlobalPermission;
+  TListTeachersResponseTypeteachersArray = Array of TTeacher;
+  TListStudentsResponseTypestudentsArray = Array of TStudent;
+  TCourseWorkTypematerialsArray = Array of TMaterial;
+  TListCourseWorkResponseTypecourseWorkArray = Array of TCourseWork;
+  TAssignmentSubmissionTypeattachmentsArray = Array of TAttachment;
+  TListStudentSubmissionsResponseTypestudentSubmissionsArray = Array of TStudentSubmission;
+  TModifyAttachmentsRequestTypeaddAttachmentsArray = Array of TAttachment;
+  
+  { --------------------------------------------------------------------
+    TCourse
+    --------------------------------------------------------------------}
+  
+  TCourse = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fname : String;
+    Fsection : String;
+    FdescriptionHeading : String;
+    Fdescription : String;
+    Froom : String;
+    FownerId : String;
+    FcreationTime : String;
+    FupdateTime : String;
+    FenrollmentCode : String;
+    FcourseState : String;
+    FalternateLink : String;
+    FteacherGroupEmail : String;
+    FcourseGroupEmail : String;
+    FteacherFolder : TDriveFolder;
+    FcourseMaterialSets : TCourseTypecourseMaterialSetsArray;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsection(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdescriptionHeading(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setroom(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetownerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetenrollmentCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcourseState(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetteacherGroupEmail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcourseGroupEmail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetteacherFolder(AIndex : Integer; const AValue : TDriveFolder); virtual;
+    Procedure SetcourseMaterialSets(AIndex : Integer; const AValue : TCourseTypecourseMaterialSetsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property section : String Index 16 Read Fsection Write Setsection;
+    Property descriptionHeading : String Index 24 Read FdescriptionHeading Write SetdescriptionHeading;
+    Property description : String Index 32 Read Fdescription Write Setdescription;
+    Property room : String Index 40 Read Froom Write Setroom;
+    Property ownerId : String Index 48 Read FownerId Write SetownerId;
+    Property creationTime : String Index 56 Read FcreationTime Write SetcreationTime;
+    Property updateTime : String Index 64 Read FupdateTime Write SetupdateTime;
+    Property enrollmentCode : String Index 72 Read FenrollmentCode Write SetenrollmentCode;
+    Property courseState : String Index 80 Read FcourseState Write SetcourseState;
+    Property alternateLink : String Index 88 Read FalternateLink Write SetalternateLink;
+    Property teacherGroupEmail : String Index 96 Read FteacherGroupEmail Write SetteacherGroupEmail;
+    Property courseGroupEmail : String Index 104 Read FcourseGroupEmail Write SetcourseGroupEmail;
+    Property teacherFolder : TDriveFolder Index 112 Read FteacherFolder Write SetteacherFolder;
+    Property courseMaterialSets : TCourseTypecourseMaterialSetsArray Index 120 Read FcourseMaterialSets Write SetcourseMaterialSets;
+  end;
+  TCourseClass = Class of TCourse;
+  
+  { --------------------------------------------------------------------
+    TDriveFolder
+    --------------------------------------------------------------------}
+  
+  TDriveFolder = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Ftitle : String;
+    FalternateLink : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property title : String Index 8 Read Ftitle Write Settitle;
+    Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink;
+  end;
+  TDriveFolderClass = Class of TDriveFolder;
+  
+  { --------------------------------------------------------------------
+    TCourseMaterialSet
+    --------------------------------------------------------------------}
+  
+  TCourseMaterialSet = Class(TGoogleBaseObject)
+  Private
+    Ftitle : String;
+    Fmaterials : TCourseMaterialSetTypematerialsArray;
+  Protected
+    //Property setters
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmaterials(AIndex : Integer; const AValue : TCourseMaterialSetTypematerialsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property title : String Index 0 Read Ftitle Write Settitle;
+    Property materials : TCourseMaterialSetTypematerialsArray Index 8 Read Fmaterials Write Setmaterials;
+  end;
+  TCourseMaterialSetClass = Class of TCourseMaterialSet;
+  
+  { --------------------------------------------------------------------
+    TCourseMaterial
+    --------------------------------------------------------------------}
+  
+  TCourseMaterial = Class(TGoogleBaseObject)
+  Private
+    FdriveFile : TDriveFile;
+    FyouTubeVideo : TYouTubeVideo;
+    Flink : TLink;
+    Fform : TForm;
+  Protected
+    //Property setters
+    Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual;
+    Procedure SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual;
+    Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual;
+    Procedure Setform(AIndex : Integer; const AValue : TForm); virtual;
+  Public
+  Published
+    Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile;
+    Property youTubeVideo : TYouTubeVideo Index 8 Read FyouTubeVideo Write SetyouTubeVideo;
+    Property link : TLink Index 16 Read Flink Write Setlink;
+    Property form : TForm Index 24 Read Fform Write Setform;
+  end;
+  TCourseMaterialClass = Class of TCourseMaterial;
+  
+  { --------------------------------------------------------------------
+    TDriveFile
+    --------------------------------------------------------------------}
+  
+  TDriveFile = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Ftitle : String;
+    FalternateLink : String;
+    FthumbnailUrl : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property title : String Index 8 Read Ftitle Write Settitle;
+    Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink;
+    Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl;
+  end;
+  TDriveFileClass = Class of TDriveFile;
+  
+  { --------------------------------------------------------------------
+    TYouTubeVideo
+    --------------------------------------------------------------------}
+  
+  TYouTubeVideo = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Ftitle : String;
+    FalternateLink : String;
+    FthumbnailUrl : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property title : String Index 8 Read Ftitle Write Settitle;
+    Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink;
+    Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl;
+  end;
+  TYouTubeVideoClass = Class of TYouTubeVideo;
+  
+  { --------------------------------------------------------------------
+    TLink
+    --------------------------------------------------------------------}
+  
+  TLink = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+    Ftitle : String;
+    FthumbnailUrl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+    Property title : String Index 8 Read Ftitle Write Settitle;
+    Property thumbnailUrl : String Index 16 Read FthumbnailUrl Write SetthumbnailUrl;
+  end;
+  TLinkClass = Class of TLink;
+  
+  { --------------------------------------------------------------------
+    TForm
+    --------------------------------------------------------------------}
+  
+  TForm = Class(TGoogleBaseObject)
+  Private
+    FformUrl : String;
+    FresponseUrl : String;
+    Ftitle : String;
+    FthumbnailUrl : String;
+  Protected
+    //Property setters
+    Procedure SetformUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetresponseUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property formUrl : String Index 0 Read FformUrl Write SetformUrl;
+    Property responseUrl : String Index 8 Read FresponseUrl Write SetresponseUrl;
+    Property title : String Index 16 Read Ftitle Write Settitle;
+    Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl;
+  end;
+  TFormClass = Class of TForm;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListCoursesResponse
+    --------------------------------------------------------------------}
+  
+  TListCoursesResponse = Class(TGoogleBaseObject)
+  Private
+    Fcourses : TListCoursesResponseTypecoursesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setcourses(AIndex : Integer; const AValue : TListCoursesResponseTypecoursesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property courses : TListCoursesResponseTypecoursesArray Index 0 Read Fcourses Write Setcourses;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListCoursesResponseClass = Class of TListCoursesResponse;
+  
+  { --------------------------------------------------------------------
+    TCourseAlias
+    --------------------------------------------------------------------}
+  
+  TCourseAlias = Class(TGoogleBaseObject)
+  Private
+    Falias : String;
+  Protected
+    //Property setters
+    Procedure Setalias(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property alias : String Index 0 Read Falias Write Setalias;
+  end;
+  TCourseAliasClass = Class of TCourseAlias;
+  
+  { --------------------------------------------------------------------
+    TListCourseAliasesResponse
+    --------------------------------------------------------------------}
+  
+  TListCourseAliasesResponse = Class(TGoogleBaseObject)
+  Private
+    Faliases : TListCourseAliasesResponseTypealiasesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setaliases(AIndex : Integer; const AValue : TListCourseAliasesResponseTypealiasesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property aliases : TListCourseAliasesResponseTypealiasesArray Index 0 Read Faliases Write Setaliases;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListCourseAliasesResponseClass = Class of TListCourseAliasesResponse;
+  
+  { --------------------------------------------------------------------
+    TInvitation
+    --------------------------------------------------------------------}
+  
+  TInvitation = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    FuserId : String;
+    FcourseId : String;
+    Frole : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property userId : String Index 8 Read FuserId Write SetuserId;
+    Property courseId : String Index 16 Read FcourseId Write SetcourseId;
+    Property role : String Index 24 Read Frole Write Setrole;
+  end;
+  TInvitationClass = Class of TInvitation;
+  
+  { --------------------------------------------------------------------
+    TListInvitationsResponse
+    --------------------------------------------------------------------}
+  
+  TListInvitationsResponse = Class(TGoogleBaseObject)
+  Private
+    Finvitations : TListInvitationsResponseTypeinvitationsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setinvitations(AIndex : Integer; const AValue : TListInvitationsResponseTypeinvitationsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property invitations : TListInvitationsResponseTypeinvitationsArray Index 0 Read Finvitations Write Setinvitations;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListInvitationsResponseClass = Class of TListInvitationsResponse;
+  
+  { --------------------------------------------------------------------
+    TUserProfile
+    --------------------------------------------------------------------}
+  
+  TUserProfile = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fname : TName;
+    FemailAddress : String;
+    FphotoUrl : String;
+    Fpermissions : TUserProfileTypepermissionsArray;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TName); virtual;
+    Procedure SetemailAddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphotoUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpermissions(AIndex : Integer; const AValue : TUserProfileTypepermissionsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property name : TName Index 8 Read Fname Write Setname;
+    Property emailAddress : String Index 16 Read FemailAddress Write SetemailAddress;
+    Property photoUrl : String Index 24 Read FphotoUrl Write SetphotoUrl;
+    Property permissions : TUserProfileTypepermissionsArray Index 32 Read Fpermissions Write Setpermissions;
+  end;
+  TUserProfileClass = Class of TUserProfile;
+  
+  { --------------------------------------------------------------------
+    TName
+    --------------------------------------------------------------------}
+  
+  TName = Class(TGoogleBaseObject)
+  Private
+    FgivenName : String;
+    FfamilyName : String;
+    FfullName : String;
+  Protected
+    //Property setters
+    Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfullName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property givenName : String Index 0 Read FgivenName Write SetgivenName;
+    Property familyName : String Index 8 Read FfamilyName Write SetfamilyName;
+    Property fullName : String Index 16 Read FfullName Write SetfullName;
+  end;
+  TNameClass = Class of TName;
+  
+  { --------------------------------------------------------------------
+    TGlobalPermission
+    --------------------------------------------------------------------}
+  
+  TGlobalPermission = Class(TGoogleBaseObject)
+  Private
+    Fpermission : String;
+  Protected
+    //Property setters
+    Procedure Setpermission(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property permission : String Index 0 Read Fpermission Write Setpermission;
+  end;
+  TGlobalPermissionClass = Class of TGlobalPermission;
+  
+  { --------------------------------------------------------------------
+    TTeacher
+    --------------------------------------------------------------------}
+  
+  TTeacher = Class(TGoogleBaseObject)
+  Private
+    FcourseId : String;
+    FuserId : String;
+    Fprofile : TUserProfile;
+  Protected
+    //Property setters
+    Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprofile(AIndex : Integer; const AValue : TUserProfile); virtual;
+  Public
+  Published
+    Property courseId : String Index 0 Read FcourseId Write SetcourseId;
+    Property userId : String Index 8 Read FuserId Write SetuserId;
+    Property profile : TUserProfile Index 16 Read Fprofile Write Setprofile;
+  end;
+  TTeacherClass = Class of TTeacher;
+  
+  { --------------------------------------------------------------------
+    TListTeachersResponse
+    --------------------------------------------------------------------}
+  
+  TListTeachersResponse = Class(TGoogleBaseObject)
+  Private
+    Fteachers : TListTeachersResponseTypeteachersArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setteachers(AIndex : Integer; const AValue : TListTeachersResponseTypeteachersArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property teachers : TListTeachersResponseTypeteachersArray Index 0 Read Fteachers Write Setteachers;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListTeachersResponseClass = Class of TListTeachersResponse;
+  
+  { --------------------------------------------------------------------
+    TStudent
+    --------------------------------------------------------------------}
+  
+  TStudent = Class(TGoogleBaseObject)
+  Private
+    FcourseId : String;
+    FuserId : String;
+    Fprofile : TUserProfile;
+    FstudentWorkFolder : TDriveFolder;
+  Protected
+    //Property setters
+    Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprofile(AIndex : Integer; const AValue : TUserProfile); virtual;
+    Procedure SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); virtual;
+  Public
+  Published
+    Property courseId : String Index 0 Read FcourseId Write SetcourseId;
+    Property userId : String Index 8 Read FuserId Write SetuserId;
+    Property profile : TUserProfile Index 16 Read Fprofile Write Setprofile;
+    Property studentWorkFolder : TDriveFolder Index 24 Read FstudentWorkFolder Write SetstudentWorkFolder;
+  end;
+  TStudentClass = Class of TStudent;
+  
+  { --------------------------------------------------------------------
+    TListStudentsResponse
+    --------------------------------------------------------------------}
+  
+  TListStudentsResponse = Class(TGoogleBaseObject)
+  Private
+    Fstudents : TListStudentsResponseTypestudentsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setstudents(AIndex : Integer; const AValue : TListStudentsResponseTypestudentsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property students : TListStudentsResponseTypestudentsArray Index 0 Read Fstudents Write Setstudents;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListStudentsResponseClass = Class of TListStudentsResponse;
+  
+  { --------------------------------------------------------------------
+    TCourseWork
+    --------------------------------------------------------------------}
+  
+  TCourseWork = Class(TGoogleBaseObject)
+  Private
+    FcourseId : String;
+    Fid : String;
+    Ftitle : String;
+    Fdescription : String;
+    Fmaterials : TCourseWorkTypematerialsArray;
+    Fstate : String;
+    FalternateLink : String;
+    FcreationTime : String;
+    FupdateTime : String;
+    FdueDate : TDate;
+    FdueTime : TTimeOfDay;
+    FmaxPoints : double;
+    FworkType : String;
+    FassociatedWithDeveloper : boolean;
+    FsubmissionModificationMode : String;
+    Fassignment : TAssignment;
+    FmultipleChoiceQuestion : TMultipleChoiceQuestion;
+  Protected
+    //Property setters
+    Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmaterials(AIndex : Integer; const AValue : TCourseWorkTypematerialsArray); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdueDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure SetdueTime(AIndex : Integer; const AValue : TTimeOfDay); virtual;
+    Procedure SetmaxPoints(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetworkType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsubmissionModificationMode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setassignment(AIndex : Integer; const AValue : TAssignment); virtual;
+    Procedure SetmultipleChoiceQuestion(AIndex : Integer; const AValue : TMultipleChoiceQuestion); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property courseId : String Index 0 Read FcourseId Write SetcourseId;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property title : String Index 16 Read Ftitle Write Settitle;
+    Property description : String Index 24 Read Fdescription Write Setdescription;
+    Property materials : TCourseWorkTypematerialsArray Index 32 Read Fmaterials Write Setmaterials;
+    Property state : String Index 40 Read Fstate Write Setstate;
+    Property alternateLink : String Index 48 Read FalternateLink Write SetalternateLink;
+    Property creationTime : String Index 56 Read FcreationTime Write SetcreationTime;
+    Property updateTime : String Index 64 Read FupdateTime Write SetupdateTime;
+    Property dueDate : TDate Index 72 Read FdueDate Write SetdueDate;
+    Property dueTime : TTimeOfDay Index 80 Read FdueTime Write SetdueTime;
+    Property maxPoints : double Index 88 Read FmaxPoints Write SetmaxPoints;
+    Property workType : String Index 96 Read FworkType Write SetworkType;
+    Property associatedWithDeveloper : boolean Index 104 Read FassociatedWithDeveloper Write SetassociatedWithDeveloper;
+    Property submissionModificationMode : String Index 112 Read FsubmissionModificationMode Write SetsubmissionModificationMode;
+    Property assignment : TAssignment Index 120 Read Fassignment Write Setassignment;
+    Property multipleChoiceQuestion : TMultipleChoiceQuestion Index 128 Read FmultipleChoiceQuestion Write SetmultipleChoiceQuestion;
+  end;
+  TCourseWorkClass = Class of TCourseWork;
+  
+  { --------------------------------------------------------------------
+    TMaterial
+    --------------------------------------------------------------------}
+  
+  TMaterial = Class(TGoogleBaseObject)
+  Private
+    FdriveFile : TSharedDriveFile;
+    FyoutubeVideo : TYouTubeVideo;
+    Flink : TLink;
+    Fform : TForm;
+  Protected
+    //Property setters
+    Procedure SetdriveFile(AIndex : Integer; const AValue : TSharedDriveFile); virtual;
+    Procedure SetyoutubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual;
+    Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual;
+    Procedure Setform(AIndex : Integer; const AValue : TForm); virtual;
+  Public
+  Published
+    Property driveFile : TSharedDriveFile Index 0 Read FdriveFile Write SetdriveFile;
+    Property youtubeVideo : TYouTubeVideo Index 8 Read FyoutubeVideo Write SetyoutubeVideo;
+    Property link : TLink Index 16 Read Flink Write Setlink;
+    Property form : TForm Index 24 Read Fform Write Setform;
+  end;
+  TMaterialClass = Class of TMaterial;
+  
+  { --------------------------------------------------------------------
+    TSharedDriveFile
+    --------------------------------------------------------------------}
+  
+  TSharedDriveFile = Class(TGoogleBaseObject)
+  Private
+    FdriveFile : TDriveFile;
+    FshareMode : String;
+  Protected
+    //Property setters
+    Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual;
+    Procedure SetshareMode(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile;
+    Property shareMode : String Index 8 Read FshareMode Write SetshareMode;
+  end;
+  TSharedDriveFileClass = Class of TSharedDriveFile;
+  
+  { --------------------------------------------------------------------
+    TDate
+    --------------------------------------------------------------------}
+  
+  TDate = Class(TGoogleBaseObject)
+  Private
+    Fyear : integer;
+    Fmonth : integer;
+    Fday : integer;
+  Protected
+    //Property setters
+    Procedure Setyear(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmonth(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setday(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property year : integer Index 0 Read Fyear Write Setyear;
+    Property month : integer Index 8 Read Fmonth Write Setmonth;
+    Property day : integer Index 16 Read Fday Write Setday;
+  end;
+  TDateClass = Class of TDate;
+  
+  { --------------------------------------------------------------------
+    TTimeOfDay
+    --------------------------------------------------------------------}
+  
+  TTimeOfDay = Class(TGoogleBaseObject)
+  Private
+    Fhours : integer;
+    Fminutes : integer;
+    Fseconds : integer;
+    Fnanos : integer;
+  Protected
+    //Property setters
+    Procedure Sethours(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setminutes(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setseconds(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setnanos(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property hours : integer Index 0 Read Fhours Write Sethours;
+    Property minutes : integer Index 8 Read Fminutes Write Setminutes;
+    Property seconds : integer Index 16 Read Fseconds Write Setseconds;
+    Property nanos : integer Index 24 Read Fnanos Write Setnanos;
+  end;
+  TTimeOfDayClass = Class of TTimeOfDay;
+  
+  { --------------------------------------------------------------------
+    TAssignment
+    --------------------------------------------------------------------}
+  
+  TAssignment = Class(TGoogleBaseObject)
+  Private
+    FstudentWorkFolder : TDriveFolder;
+  Protected
+    //Property setters
+    Procedure SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); virtual;
+  Public
+  Published
+    Property studentWorkFolder : TDriveFolder Index 0 Read FstudentWorkFolder Write SetstudentWorkFolder;
+  end;
+  TAssignmentClass = Class of TAssignment;
+  
+  { --------------------------------------------------------------------
+    TMultipleChoiceQuestion
+    --------------------------------------------------------------------}
+  
+  TMultipleChoiceQuestion = Class(TGoogleBaseObject)
+  Private
+    Fchoices : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setchoices(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property choices : TStringArray Index 0 Read Fchoices Write Setchoices;
+  end;
+  TMultipleChoiceQuestionClass = Class of TMultipleChoiceQuestion;
+  
+  { --------------------------------------------------------------------
+    TListCourseWorkResponse
+    --------------------------------------------------------------------}
+  
+  TListCourseWorkResponse = Class(TGoogleBaseObject)
+  Private
+    FcourseWork : TListCourseWorkResponseTypecourseWorkArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetcourseWork(AIndex : Integer; const AValue : TListCourseWorkResponseTypecourseWorkArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property courseWork : TListCourseWorkResponseTypecourseWorkArray Index 0 Read FcourseWork Write SetcourseWork;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListCourseWorkResponseClass = Class of TListCourseWorkResponse;
+  
+  { --------------------------------------------------------------------
+    TStudentSubmission
+    --------------------------------------------------------------------}
+  
+  TStudentSubmission = Class(TGoogleBaseObject)
+  Private
+    FcourseId : String;
+    FcourseWorkId : String;
+    Fid : String;
+    FuserId : String;
+    FcreationTime : String;
+    FupdateTime : String;
+    Fstate : String;
+    Flate : boolean;
+    FdraftGrade : double;
+    FassignedGrade : double;
+    FalternateLink : String;
+    FcourseWorkType : String;
+    FassociatedWithDeveloper : boolean;
+    FassignmentSubmission : TAssignmentSubmission;
+    FshortAnswerSubmission : TShortAnswerSubmission;
+    FmultipleChoiceSubmission : TMultipleChoiceSubmission;
+  Protected
+    //Property setters
+    Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcourseWorkId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlate(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdraftGrade(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetassignedGrade(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcourseWorkType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetassignmentSubmission(AIndex : Integer; const AValue : TAssignmentSubmission); virtual;
+    Procedure SetshortAnswerSubmission(AIndex : Integer; const AValue : TShortAnswerSubmission); virtual;
+    Procedure SetmultipleChoiceSubmission(AIndex : Integer; const AValue : TMultipleChoiceSubmission); virtual;
+  Public
+  Published
+    Property courseId : String Index 0 Read FcourseId Write SetcourseId;
+    Property courseWorkId : String Index 8 Read FcourseWorkId Write SetcourseWorkId;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property userId : String Index 24 Read FuserId Write SetuserId;
+    Property creationTime : String Index 32 Read FcreationTime Write SetcreationTime;
+    Property updateTime : String Index 40 Read FupdateTime Write SetupdateTime;
+    Property state : String Index 48 Read Fstate Write Setstate;
+    Property late : boolean Index 56 Read Flate Write Setlate;
+    Property draftGrade : double Index 64 Read FdraftGrade Write SetdraftGrade;
+    Property assignedGrade : double Index 72 Read FassignedGrade Write SetassignedGrade;
+    Property alternateLink : String Index 80 Read FalternateLink Write SetalternateLink;
+    Property courseWorkType : String Index 88 Read FcourseWorkType Write SetcourseWorkType;
+    Property associatedWithDeveloper : boolean Index 96 Read FassociatedWithDeveloper Write SetassociatedWithDeveloper;
+    Property assignmentSubmission : TAssignmentSubmission Index 104 Read FassignmentSubmission Write SetassignmentSubmission;
+    Property shortAnswerSubmission : TShortAnswerSubmission Index 112 Read FshortAnswerSubmission Write SetshortAnswerSubmission;
+    Property multipleChoiceSubmission : TMultipleChoiceSubmission Index 120 Read FmultipleChoiceSubmission Write SetmultipleChoiceSubmission;
+  end;
+  TStudentSubmissionClass = Class of TStudentSubmission;
+  
+  { --------------------------------------------------------------------
+    TAssignmentSubmission
+    --------------------------------------------------------------------}
+  
+  TAssignmentSubmission = Class(TGoogleBaseObject)
+  Private
+    Fattachments : TAssignmentSubmissionTypeattachmentsArray;
+  Protected
+    //Property setters
+    Procedure Setattachments(AIndex : Integer; const AValue : TAssignmentSubmissionTypeattachmentsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property attachments : TAssignmentSubmissionTypeattachmentsArray Index 0 Read Fattachments Write Setattachments;
+  end;
+  TAssignmentSubmissionClass = Class of TAssignmentSubmission;
+  
+  { --------------------------------------------------------------------
+    TAttachment
+    --------------------------------------------------------------------}
+  
+  TAttachment = Class(TGoogleBaseObject)
+  Private
+    FdriveFile : TDriveFile;
+    FyouTubeVideo : TYouTubeVideo;
+    Flink : TLink;
+    Fform : TForm;
+  Protected
+    //Property setters
+    Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual;
+    Procedure SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual;
+    Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual;
+    Procedure Setform(AIndex : Integer; const AValue : TForm); virtual;
+  Public
+  Published
+    Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile;
+    Property youTubeVideo : TYouTubeVideo Index 8 Read FyouTubeVideo Write SetyouTubeVideo;
+    Property link : TLink Index 16 Read Flink Write Setlink;
+    Property form : TForm Index 24 Read Fform Write Setform;
+  end;
+  TAttachmentClass = Class of TAttachment;
+  
+  { --------------------------------------------------------------------
+    TShortAnswerSubmission
+    --------------------------------------------------------------------}
+  
+  TShortAnswerSubmission = Class(TGoogleBaseObject)
+  Private
+    Fanswer : String;
+  Protected
+    //Property setters
+    Procedure Setanswer(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property answer : String Index 0 Read Fanswer Write Setanswer;
+  end;
+  TShortAnswerSubmissionClass = Class of TShortAnswerSubmission;
+  
+  { --------------------------------------------------------------------
+    TMultipleChoiceSubmission
+    --------------------------------------------------------------------}
+  
+  TMultipleChoiceSubmission = Class(TGoogleBaseObject)
+  Private
+    Fanswer : String;
+  Protected
+    //Property setters
+    Procedure Setanswer(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property answer : String Index 0 Read Fanswer Write Setanswer;
+  end;
+  TMultipleChoiceSubmissionClass = Class of TMultipleChoiceSubmission;
+  
+  { --------------------------------------------------------------------
+    TListStudentSubmissionsResponse
+    --------------------------------------------------------------------}
+  
+  TListStudentSubmissionsResponse = Class(TGoogleBaseObject)
+  Private
+    FstudentSubmissions : TListStudentSubmissionsResponseTypestudentSubmissionsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetstudentSubmissions(AIndex : Integer; const AValue : TListStudentSubmissionsResponseTypestudentSubmissionsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property studentSubmissions : TListStudentSubmissionsResponseTypestudentSubmissionsArray Index 0 Read FstudentSubmissions Write SetstudentSubmissions;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListStudentSubmissionsResponseClass = Class of TListStudentSubmissionsResponse;
+  
+  { --------------------------------------------------------------------
+    TTurnInStudentSubmissionRequest
+    --------------------------------------------------------------------}
+  
+  TTurnInStudentSubmissionRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TTurnInStudentSubmissionRequestClass = Class of TTurnInStudentSubmissionRequest;
+  
+  { --------------------------------------------------------------------
+    TReclaimStudentSubmissionRequest
+    --------------------------------------------------------------------}
+  
+  TReclaimStudentSubmissionRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TReclaimStudentSubmissionRequestClass = Class of TReclaimStudentSubmissionRequest;
+  
+  { --------------------------------------------------------------------
+    TReturnStudentSubmissionRequest
+    --------------------------------------------------------------------}
+  
+  TReturnStudentSubmissionRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TReturnStudentSubmissionRequestClass = Class of TReturnStudentSubmissionRequest;
+  
+  { --------------------------------------------------------------------
+    TModifyAttachmentsRequest
+    --------------------------------------------------------------------}
+  
+  TModifyAttachmentsRequest = Class(TGoogleBaseObject)
+  Private
+    FaddAttachments : TModifyAttachmentsRequestTypeaddAttachmentsArray;
+  Protected
+    //Property setters
+    Procedure SetaddAttachments(AIndex : Integer; const AValue : TModifyAttachmentsRequestTypeaddAttachmentsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property addAttachments : TModifyAttachmentsRequestTypeaddAttachmentsArray Index 0 Read FaddAttachments Write SetaddAttachments;
+  end;
+  TModifyAttachmentsRequestClass = Class of TModifyAttachmentsRequest;
+  
+  { --------------------------------------------------------------------
+    TCoursesAliasesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesAliasesResource, method List
+  
+  TCoursesAliasesListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesAliasesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(courseId: string; aCourseAlias : TCourseAlias) : TCourseAlias;overload;
+    Function Delete(courseId: string; alias: string) : TEmpty;
+    Function List(courseId: string; AQuery : string  = '') : TListCourseAliasesResponse;
+    Function List(courseId: string; AQuery : TCoursesAliaseslistOptions) : TListCourseAliasesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCoursesTeachersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesTeachersResource, method List
+  
+  TCoursesTeachersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesTeachersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(courseId: string; aTeacher : TTeacher) : TTeacher;overload;
+    Function Get(courseId: string; userId: string) : TTeacher;
+    Function Delete(courseId: string; userId: string) : TEmpty;
+    Function List(courseId: string; AQuery : string  = '') : TListTeachersResponse;
+    Function List(courseId: string; AQuery : TCoursesTeacherslistOptions) : TListTeachersResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCoursesStudentsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesStudentsResource, method Create
+  
+  TCoursesStudentsCreateOptions = Record
+    enrollmentCode : String;
+  end;
+  
+  
+  //Optional query Options for TCoursesStudentsResource, method List
+  
+  TCoursesStudentsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesStudentsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(courseId: string; aStudent : TStudent; AQuery : string  = '') : TStudent;overload;
+    Function Create(courseId: string; aStudent : TStudent; AQuery : TCoursesStudentscreateOptions) : TStudent;overload;
+    Function Get(courseId: string; userId: string) : TStudent;
+    Function Delete(courseId: string; userId: string) : TEmpty;
+    Function List(courseId: string; AQuery : string  = '') : TListStudentsResponse;
+    Function List(courseId: string; AQuery : TCoursesStudentslistOptions) : TListStudentsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCoursesCourseWorkStudentSubmissionsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesCourseWorkStudentSubmissionsResource, method Patch
+  
+  TCoursesCourseWorkStudentSubmissionsPatchOptions = Record
+    updateMask : String;
+  end;
+  
+  
+  //Optional query Options for TCoursesCourseWorkStudentSubmissionsResource, method List
+  
+  TCoursesCourseWorkStudentSubmissionsListOptions = Record
+    userId : String;
+    states : String;
+    late : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesCourseWorkStudentSubmissionsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(courseId: string; courseWorkId: string; id: string) : TStudentSubmission;
+    Function Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : string  = '') : TStudentSubmission;
+    Function Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : TCoursesCourseWorkStudentSubmissionspatchOptions) : TStudentSubmission;
+    Function List(courseId: string; courseWorkId: string; AQuery : string  = '') : TListStudentSubmissionsResponse;
+    Function List(courseId: string; courseWorkId: string; AQuery : TCoursesCourseWorkStudentSubmissionslistOptions) : TListStudentSubmissionsResponse;
+    Function TurnIn(courseId: string; courseWorkId: string; id: string; aTurnInStudentSubmissionRequest : TTurnInStudentSubmissionRequest) : TEmpty;
+    Function Reclaim(courseId: string; courseWorkId: string; id: string; aReclaimStudentSubmissionRequest : TReclaimStudentSubmissionRequest) : TEmpty;
+    Function Return(courseId: string; courseWorkId: string; id: string; aReturnStudentSubmissionRequest : TReturnStudentSubmissionRequest) : TEmpty;
+    Function ModifyAttachments(courseId: string; courseWorkId: string; id: string; aModifyAttachmentsRequest : TModifyAttachmentsRequest) : TStudentSubmission;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCoursesCourseWorkResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesCourseWorkResource, method List
+  
+  TCoursesCourseWorkListOptions = Record
+    courseWorkStates : String;
+    orderBy : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesCourseWorkResource = Class(TGoogleResource)
+  Private
+    FStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+    Function GetStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(courseId: string; aCourseWork : TCourseWork) : TCourseWork;overload;
+    Function Get(courseId: string; id: string) : TCourseWork;
+    Function List(courseId: string; AQuery : string  = '') : TListCourseWorkResponse;
+    Function List(courseId: string; AQuery : TCoursesCourseWorklistOptions) : TListCourseWorkResponse;
+    Function CreateStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Function CreateStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Property StudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetStudentSubmissionsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCoursesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCoursesResource, method Patch
+  
+  TCoursesPatchOptions = Record
+    updateMask : String;
+  end;
+  
+  
+  //Optional query Options for TCoursesResource, method List
+  
+  TCoursesListOptions = Record
+    studentId : String;
+    teacherId : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TCoursesResource = Class(TGoogleResource)
+  Private
+    FAliasesInstance : TCoursesAliasesResource;
+    FTeachersInstance : TCoursesTeachersResource;
+    FStudentsInstance : TCoursesStudentsResource;
+    FCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+    FCourseWorkInstance : TCoursesCourseWorkResource;
+    Function GetAliasesInstance : TCoursesAliasesResource;virtual;
+    Function GetTeachersInstance : TCoursesTeachersResource;virtual;
+    Function GetStudentsInstance : TCoursesStudentsResource;virtual;
+    Function GetCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual;
+    Function GetCourseWorkInstance : TCoursesCourseWorkResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(aCourse : TCourse) : TCourse;overload;
+    Function Get(id: string) : TCourse;
+    Function Update(id: string; aCourse : TCourse) : TCourse;
+    Function Patch(id: string; aCourse : TCourse; AQuery : string  = '') : TCourse;
+    Function Patch(id: string; aCourse : TCourse; AQuery : TCoursespatchOptions) : TCourse;
+    Function Delete(id: string) : TEmpty;
+    Function List(AQuery : string  = '') : TListCoursesResponse;
+    Function List(AQuery : TCourseslistOptions) : TListCoursesResponse;
+    Function CreateAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;virtual;overload;
+    Function CreateAliasesResource : TCoursesAliasesResource;virtual;overload;
+    Function CreateTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;virtual;overload;
+    Function CreateTeachersResource : TCoursesTeachersResource;virtual;overload;
+    Function CreateStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;virtual;overload;
+    Function CreateStudentsResource : TCoursesStudentsResource;virtual;overload;
+    Function CreateCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Function CreateCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Function CreateCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;virtual;overload;
+    Function CreateCourseWorkResource : TCoursesCourseWorkResource;virtual;overload;
+    Property AliasesResource : TCoursesAliasesResource Read GetAliasesInstance;
+    Property TeachersResource : TCoursesTeachersResource Read GetTeachersInstance;
+    Property StudentsResource : TCoursesStudentsResource Read GetStudentsInstance;
+    Property CourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetCourseWorkStudentSubmissionsInstance;
+    Property CourseWorkResource : TCoursesCourseWorkResource Read GetCourseWorkInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TInvitationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TInvitationsResource, method List
+  
+  TInvitationsListOptions = Record
+    userId : String;
+    courseId : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TInvitationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(aInvitation : TInvitation) : TInvitation;overload;
+    Function Get(id: string) : TInvitation;
+    Function Delete(id: string) : TEmpty;
+    Function List(AQuery : string  = '') : TListInvitationsResponse;
+    Function List(AQuery : TInvitationslistOptions) : TListInvitationsResponse;
+    Function Accept(id: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TUserProfilesResource
+    --------------------------------------------------------------------}
+  
+  TUserProfilesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(userId: string) : TUserProfile;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TClassroomAPI
+    --------------------------------------------------------------------}
+  
+  TClassroomAPI = Class(TGoogleAPI)
+  Private
+    FCoursesAliasesInstance : TCoursesAliasesResource;
+    FCoursesTeachersInstance : TCoursesTeachersResource;
+    FCoursesStudentsInstance : TCoursesStudentsResource;
+    FCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+    FCoursesCourseWorkInstance : TCoursesCourseWorkResource;
+    FCoursesInstance : TCoursesResource;
+    FInvitationsInstance : TInvitationsResource;
+    FUserProfilesInstance : TUserProfilesResource;
+    Function GetCoursesAliasesInstance : TCoursesAliasesResource;virtual;
+    Function GetCoursesTeachersInstance : TCoursesTeachersResource;virtual;
+    Function GetCoursesStudentsInstance : TCoursesStudentsResource;virtual;
+    Function GetCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual;
+    Function GetCoursesCourseWorkInstance : TCoursesCourseWorkResource;virtual;
+    Function GetCoursesInstance : TCoursesResource;virtual;
+    Function GetInvitationsInstance : TInvitationsResource;virtual;
+    Function GetUserProfilesInstance : TUserProfilesResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateCoursesAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;virtual;overload;
+    Function CreateCoursesAliasesResource : TCoursesAliasesResource;virtual;overload;
+    Function CreateCoursesTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;virtual;overload;
+    Function CreateCoursesTeachersResource : TCoursesTeachersResource;virtual;overload;
+    Function CreateCoursesStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;virtual;overload;
+    Function CreateCoursesStudentsResource : TCoursesStudentsResource;virtual;overload;
+    Function CreateCoursesCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Function CreateCoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload;
+    Function CreateCoursesCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;virtual;overload;
+    Function CreateCoursesCourseWorkResource : TCoursesCourseWorkResource;virtual;overload;
+    Function CreateCoursesResource(AOwner : TComponent) : TCoursesResource;virtual;overload;
+    Function CreateCoursesResource : TCoursesResource;virtual;overload;
+    Function CreateInvitationsResource(AOwner : TComponent) : TInvitationsResource;virtual;overload;
+    Function CreateInvitationsResource : TInvitationsResource;virtual;overload;
+    Function CreateUserProfilesResource(AOwner : TComponent) : TUserProfilesResource;virtual;overload;
+    Function CreateUserProfilesResource : TUserProfilesResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property CoursesAliasesResource : TCoursesAliasesResource Read GetCoursesAliasesInstance;
+    Property CoursesTeachersResource : TCoursesTeachersResource Read GetCoursesTeachersInstance;
+    Property CoursesStudentsResource : TCoursesStudentsResource Read GetCoursesStudentsInstance;
+    Property CoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetCoursesCourseWorkStudentSubmissionsInstance;
+    Property CoursesCourseWorkResource : TCoursesCourseWorkResource Read GetCoursesCourseWorkInstance;
+    Property CoursesResource : TCoursesResource Read GetCoursesInstance;
+    Property InvitationsResource : TInvitationsResource Read GetInvitationsInstance;
+    Property UserProfilesResource : TUserProfilesResource Read GetUserProfilesInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TCourse
+  --------------------------------------------------------------------}
+
+
+Procedure TCourse.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.Setsection(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsection=AValue) then exit;
+  Fsection:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetdescriptionHeading(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdescriptionHeading=AValue) then exit;
+  FdescriptionHeading:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.Setroom(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Froom=AValue) then exit;
+  Froom:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetownerId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FownerId=AValue) then exit;
+  FownerId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetcreationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetupdateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTime=AValue) then exit;
+  FupdateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetenrollmentCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FenrollmentCode=AValue) then exit;
+  FenrollmentCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetcourseState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseState=AValue) then exit;
+  FcourseState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetteacherGroupEmail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FteacherGroupEmail=AValue) then exit;
+  FteacherGroupEmail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetcourseGroupEmail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseGroupEmail=AValue) then exit;
+  FcourseGroupEmail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetteacherFolder(AIndex : Integer; const AValue : TDriveFolder); 
+
+begin
+  If (FteacherFolder=AValue) then exit;
+  FteacherFolder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourse.SetcourseMaterialSets(AIndex : Integer; const AValue : TCourseTypecourseMaterialSetsArray); 
+
+begin
+  If (FcourseMaterialSets=AValue) then exit;
+  FcourseMaterialSets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCourse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'coursematerialsets' : SetLength(FcourseMaterialSets,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDriveFolder
+  --------------------------------------------------------------------}
+
+
+Procedure TDriveFolder.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDriveFolder.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDriveFolder.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCourseMaterialSet
+  --------------------------------------------------------------------}
+
+
+Procedure TCourseMaterialSet.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseMaterialSet.Setmaterials(AIndex : Integer; const AValue : TCourseMaterialSetTypematerialsArray); 
+
+begin
+  If (Fmaterials=AValue) then exit;
+  Fmaterials:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCourseMaterialSet.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'materials' : SetLength(Fmaterials,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCourseMaterial
+  --------------------------------------------------------------------}
+
+
+Procedure TCourseMaterial.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); 
+
+begin
+  If (FdriveFile=AValue) then exit;
+  FdriveFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseMaterial.SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); 
+
+begin
+  If (FyouTubeVideo=AValue) then exit;
+  FyouTubeVideo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseMaterial.Setlink(AIndex : Integer; const AValue : TLink); 
+
+begin
+  If (Flink=AValue) then exit;
+  Flink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseMaterial.Setform(AIndex : Integer; const AValue : TForm); 
+
+begin
+  If (Fform=AValue) then exit;
+  Fform:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDriveFile
+  --------------------------------------------------------------------}
+
+
+Procedure TDriveFile.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDriveFile.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDriveFile.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDriveFile.SetthumbnailUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthumbnailUrl=AValue) then exit;
+  FthumbnailUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TYouTubeVideo
+  --------------------------------------------------------------------}
+
+
+Procedure TYouTubeVideo.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TYouTubeVideo.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TYouTubeVideo.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TYouTubeVideo.SetthumbnailUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthumbnailUrl=AValue) then exit;
+  FthumbnailUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLink
+  --------------------------------------------------------------------}
+
+
+Procedure TLink.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLink.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLink.SetthumbnailUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthumbnailUrl=AValue) then exit;
+  FthumbnailUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TForm
+  --------------------------------------------------------------------}
+
+
+Procedure TForm.SetformUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformUrl=AValue) then exit;
+  FformUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TForm.SetresponseUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FresponseUrl=AValue) then exit;
+  FresponseUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TForm.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TForm.SetthumbnailUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthumbnailUrl=AValue) then exit;
+  FthumbnailUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListCoursesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListCoursesResponse.Setcourses(AIndex : Integer; const AValue : TListCoursesResponseTypecoursesArray); 
+
+begin
+  If (Fcourses=AValue) then exit;
+  Fcourses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListCoursesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListCoursesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'courses' : SetLength(Fcourses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCourseAlias
+  --------------------------------------------------------------------}
+
+
+Procedure TCourseAlias.Setalias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Falias=AValue) then exit;
+  Falias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListCourseAliasesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListCourseAliasesResponse.Setaliases(AIndex : Integer; const AValue : TListCourseAliasesResponseTypealiasesArray); 
+
+begin
+  If (Faliases=AValue) then exit;
+  Faliases:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListCourseAliasesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListCourseAliasesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'aliases' : SetLength(Faliases,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TInvitation
+  --------------------------------------------------------------------}
+
+
+Procedure TInvitation.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInvitation.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInvitation.SetcourseId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseId=AValue) then exit;
+  FcourseId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInvitation.Setrole(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frole=AValue) then exit;
+  Frole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListInvitationsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListInvitationsResponse.Setinvitations(AIndex : Integer; const AValue : TListInvitationsResponseTypeinvitationsArray); 
+
+begin
+  If (Finvitations=AValue) then exit;
+  Finvitations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListInvitationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListInvitationsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'invitations' : SetLength(Finvitations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUserProfile
+  --------------------------------------------------------------------}
+
+
+Procedure TUserProfile.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserProfile.Setname(AIndex : Integer; const AValue : TName); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserProfile.SetemailAddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FemailAddress=AValue) then exit;
+  FemailAddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserProfile.SetphotoUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphotoUrl=AValue) then exit;
+  FphotoUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserProfile.Setpermissions(AIndex : Integer; const AValue : TUserProfileTypepermissionsArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TUserProfile.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TName
+  --------------------------------------------------------------------}
+
+
+Procedure TName.SetgivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgivenName=AValue) then exit;
+  FgivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetfamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfamilyName=AValue) then exit;
+  FfamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetfullName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfullName=AValue) then exit;
+  FfullName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGlobalPermission
+  --------------------------------------------------------------------}
+
+
+Procedure TGlobalPermission.Setpermission(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpermission=AValue) then exit;
+  Fpermission:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTeacher
+  --------------------------------------------------------------------}
+
+
+Procedure TTeacher.SetcourseId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseId=AValue) then exit;
+  FcourseId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTeacher.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTeacher.Setprofile(AIndex : Integer; const AValue : TUserProfile); 
+
+begin
+  If (Fprofile=AValue) then exit;
+  Fprofile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListTeachersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListTeachersResponse.Setteachers(AIndex : Integer; const AValue : TListTeachersResponseTypeteachersArray); 
+
+begin
+  If (Fteachers=AValue) then exit;
+  Fteachers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListTeachersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListTeachersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'teachers' : SetLength(Fteachers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStudent
+  --------------------------------------------------------------------}
+
+
+Procedure TStudent.SetcourseId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseId=AValue) then exit;
+  FcourseId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudent.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudent.Setprofile(AIndex : Integer; const AValue : TUserProfile); 
+
+begin
+  If (Fprofile=AValue) then exit;
+  Fprofile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudent.SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); 
+
+begin
+  If (FstudentWorkFolder=AValue) then exit;
+  FstudentWorkFolder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListStudentsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListStudentsResponse.Setstudents(AIndex : Integer; const AValue : TListStudentsResponseTypestudentsArray); 
+
+begin
+  If (Fstudents=AValue) then exit;
+  Fstudents:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStudentsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListStudentsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'students' : SetLength(Fstudents,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCourseWork
+  --------------------------------------------------------------------}
+
+
+Procedure TCourseWork.SetcourseId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseId=AValue) then exit;
+  FcourseId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Setmaterials(AIndex : Integer; const AValue : TCourseWorkTypematerialsArray); 
+
+begin
+  If (Fmaterials=AValue) then exit;
+  Fmaterials:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetcreationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetupdateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTime=AValue) then exit;
+  FupdateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetdueDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FdueDate=AValue) then exit;
+  FdueDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetdueTime(AIndex : Integer; const AValue : TTimeOfDay); 
+
+begin
+  If (FdueTime=AValue) then exit;
+  FdueTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetmaxPoints(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FmaxPoints=AValue) then exit;
+  FmaxPoints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetworkType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FworkType=AValue) then exit;
+  FworkType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FassociatedWithDeveloper=AValue) then exit;
+  FassociatedWithDeveloper:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetsubmissionModificationMode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsubmissionModificationMode=AValue) then exit;
+  FsubmissionModificationMode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.Setassignment(AIndex : Integer; const AValue : TAssignment); 
+
+begin
+  If (Fassignment=AValue) then exit;
+  Fassignment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCourseWork.SetmultipleChoiceQuestion(AIndex : Integer; const AValue : TMultipleChoiceQuestion); 
+
+begin
+  If (FmultipleChoiceQuestion=AValue) then exit;
+  FmultipleChoiceQuestion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCourseWork.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'materials' : SetLength(Fmaterials,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMaterial
+  --------------------------------------------------------------------}
+
+
+Procedure TMaterial.SetdriveFile(AIndex : Integer; const AValue : TSharedDriveFile); 
+
+begin
+  If (FdriveFile=AValue) then exit;
+  FdriveFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMaterial.SetyoutubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); 
+
+begin
+  If (FyoutubeVideo=AValue) then exit;
+  FyoutubeVideo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMaterial.Setlink(AIndex : Integer; const AValue : TLink); 
+
+begin
+  If (Flink=AValue) then exit;
+  Flink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMaterial.Setform(AIndex : Integer; const AValue : TForm); 
+
+begin
+  If (Fform=AValue) then exit;
+  Fform:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSharedDriveFile
+  --------------------------------------------------------------------}
+
+
+Procedure TSharedDriveFile.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); 
+
+begin
+  If (FdriveFile=AValue) then exit;
+  FdriveFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSharedDriveFile.SetshareMode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FshareMode=AValue) then exit;
+  FshareMode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDate
+  --------------------------------------------------------------------}
+
+
+Procedure TDate.Setyear(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fyear=AValue) then exit;
+  Fyear:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setmonth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fmonth=AValue) then exit;
+  Fmonth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setday(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fday=AValue) then exit;
+  Fday:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimeOfDay
+  --------------------------------------------------------------------}
+
+
+Procedure TTimeOfDay.Sethours(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fhours=AValue) then exit;
+  Fhours:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeOfDay.Setminutes(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fminutes=AValue) then exit;
+  Fminutes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeOfDay.Setseconds(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fseconds=AValue) then exit;
+  Fseconds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeOfDay.Setnanos(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnanos=AValue) then exit;
+  Fnanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAssignment
+  --------------------------------------------------------------------}
+
+
+Procedure TAssignment.SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); 
+
+begin
+  If (FstudentWorkFolder=AValue) then exit;
+  FstudentWorkFolder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMultipleChoiceQuestion
+  --------------------------------------------------------------------}
+
+
+Procedure TMultipleChoiceQuestion.Setchoices(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fchoices=AValue) then exit;
+  Fchoices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMultipleChoiceQuestion.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'choices' : SetLength(Fchoices,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListCourseWorkResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListCourseWorkResponse.SetcourseWork(AIndex : Integer; const AValue : TListCourseWorkResponseTypecourseWorkArray); 
+
+begin
+  If (FcourseWork=AValue) then exit;
+  FcourseWork:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListCourseWorkResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListCourseWorkResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'coursework' : SetLength(FcourseWork,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStudentSubmission
+  --------------------------------------------------------------------}
+
+
+Procedure TStudentSubmission.SetcourseId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseId=AValue) then exit;
+  FcourseId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetcourseWorkId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseWorkId=AValue) then exit;
+  FcourseWorkId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetcreationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetupdateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTime=AValue) then exit;
+  FupdateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.Setlate(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Flate=AValue) then exit;
+  Flate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetdraftGrade(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FdraftGrade=AValue) then exit;
+  FdraftGrade:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetassignedGrade(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FassignedGrade=AValue) then exit;
+  FassignedGrade:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetalternateLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FalternateLink=AValue) then exit;
+  FalternateLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetcourseWorkType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcourseWorkType=AValue) then exit;
+  FcourseWorkType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FassociatedWithDeveloper=AValue) then exit;
+  FassociatedWithDeveloper:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetassignmentSubmission(AIndex : Integer; const AValue : TAssignmentSubmission); 
+
+begin
+  If (FassignmentSubmission=AValue) then exit;
+  FassignmentSubmission:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetshortAnswerSubmission(AIndex : Integer; const AValue : TShortAnswerSubmission); 
+
+begin
+  If (FshortAnswerSubmission=AValue) then exit;
+  FshortAnswerSubmission:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStudentSubmission.SetmultipleChoiceSubmission(AIndex : Integer; const AValue : TMultipleChoiceSubmission); 
+
+begin
+  If (FmultipleChoiceSubmission=AValue) then exit;
+  FmultipleChoiceSubmission:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAssignmentSubmission
+  --------------------------------------------------------------------}
+
+
+Procedure TAssignmentSubmission.Setattachments(AIndex : Integer; const AValue : TAssignmentSubmissionTypeattachmentsArray); 
+
+begin
+  If (Fattachments=AValue) then exit;
+  Fattachments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAssignmentSubmission.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'attachments' : SetLength(Fattachments,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAttachment
+  --------------------------------------------------------------------}
+
+
+Procedure TAttachment.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); 
+
+begin
+  If (FdriveFile=AValue) then exit;
+  FdriveFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAttachment.SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); 
+
+begin
+  If (FyouTubeVideo=AValue) then exit;
+  FyouTubeVideo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAttachment.Setlink(AIndex : Integer; const AValue : TLink); 
+
+begin
+  If (Flink=AValue) then exit;
+  Flink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAttachment.Setform(AIndex : Integer; const AValue : TForm); 
+
+begin
+  If (Fform=AValue) then exit;
+  Fform:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TShortAnswerSubmission
+  --------------------------------------------------------------------}
+
+
+Procedure TShortAnswerSubmission.Setanswer(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fanswer=AValue) then exit;
+  Fanswer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMultipleChoiceSubmission
+  --------------------------------------------------------------------}
+
+
+Procedure TMultipleChoiceSubmission.Setanswer(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fanswer=AValue) then exit;
+  Fanswer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListStudentSubmissionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListStudentSubmissionsResponse.SetstudentSubmissions(AIndex : Integer; const AValue : TListStudentSubmissionsResponseTypestudentSubmissionsArray); 
+
+begin
+  If (FstudentSubmissions=AValue) then exit;
+  FstudentSubmissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStudentSubmissionsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListStudentSubmissionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'studentsubmissions' : SetLength(FstudentSubmissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTurnInStudentSubmissionRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TReclaimStudentSubmissionRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TReturnStudentSubmissionRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TModifyAttachmentsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TModifyAttachmentsRequest.SetaddAttachments(AIndex : Integer; const AValue : TModifyAttachmentsRequestTypeaddAttachmentsArray); 
+
+begin
+  If (FaddAttachments=AValue) then exit;
+  FaddAttachments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TModifyAttachmentsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'addattachments' : SetLength(FaddAttachments,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesAliasesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesAliasesResource.ResourceName : String;
+
+begin
+  Result:='aliases';
+end;
+
+Class Function TCoursesAliasesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesAliasesResource.Create(courseId: string; aCourseAlias : TCourseAlias) : TCourseAlias;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/aliases';
+  _Methodid   = 'classroom.courses.aliases.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCourseAlias,TCourseAlias) as TCourseAlias;
+end;
+
+Function TCoursesAliasesResource.Delete(courseId: string; alias: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/courses/{courseId}/aliases/{alias}';
+  _Methodid   = 'classroom.courses.aliases.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'alias',alias]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TCoursesAliasesResource.List(courseId: string; AQuery : string = '') : TListCourseAliasesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/aliases';
+  _Methodid   = 'classroom.courses.aliases.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListCourseAliasesResponse) as TListCourseAliasesResponse;
+end;
+
+
+Function TCoursesAliasesResource.List(courseId: string; AQuery : TCoursesAliaseslistOptions) : TListCourseAliasesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(courseId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesTeachersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesTeachersResource.ResourceName : String;
+
+begin
+  Result:='teachers';
+end;
+
+Class Function TCoursesTeachersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesTeachersResource.Create(courseId: string; aTeacher : TTeacher) : TTeacher;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/teachers';
+  _Methodid   = 'classroom.courses.teachers.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTeacher,TTeacher) as TTeacher;
+end;
+
+Function TCoursesTeachersResource.Get(courseId: string; userId: string) : TTeacher;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/teachers/{userId}';
+  _Methodid   = 'classroom.courses.teachers.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTeacher) as TTeacher;
+end;
+
+Function TCoursesTeachersResource.Delete(courseId: string; userId: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/courses/{courseId}/teachers/{userId}';
+  _Methodid   = 'classroom.courses.teachers.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TCoursesTeachersResource.List(courseId: string; AQuery : string = '') : TListTeachersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/teachers';
+  _Methodid   = 'classroom.courses.teachers.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListTeachersResponse) as TListTeachersResponse;
+end;
+
+
+Function TCoursesTeachersResource.List(courseId: string; AQuery : TCoursesTeacherslistOptions) : TListTeachersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(courseId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesStudentsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesStudentsResource.ResourceName : String;
+
+begin
+  Result:='students';
+end;
+
+Class Function TCoursesStudentsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesStudentsResource.Create(courseId: string; aStudent : TStudent; AQuery : string = '') : TStudent;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/students';
+  _Methodid   = 'classroom.courses.students.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStudent,TStudent) as TStudent;
+end;
+
+
+Function TCoursesStudentsResource.Create(courseId: string; aStudent : TStudent; AQuery : TCoursesStudentscreateOptions) : TStudent;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'enrollmentCode',AQuery.enrollmentCode);
+  Result:=Create(courseId,aStudent,_Q);
+end;
+
+Function TCoursesStudentsResource.Get(courseId: string; userId: string) : TStudent;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/students/{userId}';
+  _Methodid   = 'classroom.courses.students.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStudent) as TStudent;
+end;
+
+Function TCoursesStudentsResource.Delete(courseId: string; userId: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/courses/{courseId}/students/{userId}';
+  _Methodid   = 'classroom.courses.students.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TCoursesStudentsResource.List(courseId: string; AQuery : string = '') : TListStudentsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/students';
+  _Methodid   = 'classroom.courses.students.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStudentsResponse) as TListStudentsResponse;
+end;
+
+
+Function TCoursesStudentsResource.List(courseId: string; AQuery : TCoursesStudentslistOptions) : TListStudentsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(courseId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesCourseWorkStudentSubmissionsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesCourseWorkStudentSubmissionsResource.ResourceName : String;
+
+begin
+  Result:='studentSubmissions';
+end;
+
+Class Function TCoursesCourseWorkStudentSubmissionsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.Get(courseId: string; courseWorkId: string; id: string) : TStudentSubmission;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStudentSubmission) as TStudentSubmission;
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : string = '') : TStudentSubmission;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStudentSubmission,TStudentSubmission) as TStudentSubmission;
+end;
+
+
+Function TCoursesCourseWorkStudentSubmissionsResource.Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : TCoursesCourseWorkStudentSubmissionspatchOptions) : TStudentSubmission;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'updateMask',AQuery.updateMask);
+  Result:=Patch(courseId,courseWorkId,id,aStudentSubmission,_Q);
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.List(courseId: string; courseWorkId: string; AQuery : string = '') : TListStudentSubmissionsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStudentSubmissionsResponse) as TListStudentSubmissionsResponse;
+end;
+
+
+Function TCoursesCourseWorkStudentSubmissionsResource.List(courseId: string; courseWorkId: string; AQuery : TCoursesCourseWorkStudentSubmissionslistOptions) : TListStudentSubmissionsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'userId',AQuery.userId);
+  AddToQuery(_Q,'states',AQuery.states);
+  AddToQuery(_Q,'late',AQuery.late);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(courseId,courseWorkId,_Q);
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.TurnIn(courseId: string; courseWorkId: string; id: string; aTurnInStudentSubmissionRequest : TTurnInStudentSubmissionRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.turnIn';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTurnInStudentSubmissionRequest,TEmpty) as TEmpty;
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.Reclaim(courseId: string; courseWorkId: string; id: string; aReclaimStudentSubmissionRequest : TReclaimStudentSubmissionRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.reclaim';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aReclaimStudentSubmissionRequest,TEmpty) as TEmpty;
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.Return(courseId: string; courseWorkId: string; id: string; aReturnStudentSubmissionRequest : TReturnStudentSubmissionRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.return';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aReturnStudentSubmissionRequest,TEmpty) as TEmpty;
+end;
+
+Function TCoursesCourseWorkStudentSubmissionsResource.ModifyAttachments(courseId: string; courseWorkId: string; id: string; aModifyAttachmentsRequest : TModifyAttachmentsRequest) : TStudentSubmission;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments';
+  _Methodid   = 'classroom.courses.courseWork.studentSubmissions.modifyAttachments';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aModifyAttachmentsRequest,TStudentSubmission) as TStudentSubmission;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesCourseWorkResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesCourseWorkResource.ResourceName : String;
+
+begin
+  Result:='courseWork';
+end;
+
+Class Function TCoursesCourseWorkResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesCourseWorkResource.Create(courseId: string; aCourseWork : TCourseWork) : TCourseWork;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses/{courseId}/courseWork';
+  _Methodid   = 'classroom.courses.courseWork.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCourseWork,TCourseWork) as TCourseWork;
+end;
+
+Function TCoursesCourseWorkResource.Get(courseId: string; id: string) : TCourseWork;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/courseWork/{id}';
+  _Methodid   = 'classroom.courses.courseWork.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCourseWork) as TCourseWork;
+end;
+
+Function TCoursesCourseWorkResource.List(courseId: string; AQuery : string = '') : TListCourseWorkResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{courseId}/courseWork';
+  _Methodid   = 'classroom.courses.courseWork.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['courseId',courseId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListCourseWorkResponse) as TListCourseWorkResponse;
+end;
+
+
+Function TCoursesCourseWorkResource.List(courseId: string; AQuery : TCoursesCourseWorklistOptions) : TListCourseWorkResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'courseWorkStates',AQuery.courseWorkStates);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(courseId,_Q);
+end;
+
+
+
+Function TCoursesCourseWorkResource.GetStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  if (FStudentSubmissionsInstance=Nil) then
+    FStudentSubmissionsInstance:=CreateStudentSubmissionsResource;
+  Result:=FStudentSubmissionsInstance;
+end;
+
+Function TCoursesCourseWorkResource.CreateStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=CreateStudentSubmissionsResource(Self);
+end;
+
+
+Function TCoursesCourseWorkResource.CreateStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCoursesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCoursesResource.ResourceName : String;
+
+begin
+  Result:='courses';
+end;
+
+Class Function TCoursesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TCoursesResource.Create(aCourse : TCourse) : TCourse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/courses';
+  _Methodid   = 'classroom.courses.create';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aCourse,TCourse) as TCourse;
+end;
+
+Function TCoursesResource.Get(id: string) : TCourse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses/{id}';
+  _Methodid   = 'classroom.courses.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCourse) as TCourse;
+end;
+
+Function TCoursesResource.Update(id: string; aCourse : TCourse) : TCourse;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1/courses/{id}';
+  _Methodid   = 'classroom.courses.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCourse,TCourse) as TCourse;
+end;
+
+Function TCoursesResource.Patch(id: string; aCourse : TCourse; AQuery : string = '') : TCourse;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1/courses/{id}';
+  _Methodid   = 'classroom.courses.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aCourse,TCourse) as TCourse;
+end;
+
+
+Function TCoursesResource.Patch(id: string; aCourse : TCourse; AQuery : TCoursespatchOptions) : TCourse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'updateMask',AQuery.updateMask);
+  Result:=Patch(id,aCourse,_Q);
+end;
+
+Function TCoursesResource.Delete(id: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/courses/{id}';
+  _Methodid   = 'classroom.courses.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TCoursesResource.List(AQuery : string = '') : TListCoursesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/courses';
+  _Methodid   = 'classroom.courses.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListCoursesResponse) as TListCoursesResponse;
+end;
+
+
+Function TCoursesResource.List(AQuery : TCourseslistOptions) : TListCoursesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'studentId',AQuery.studentId);
+  AddToQuery(_Q,'teacherId',AQuery.teacherId);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_Q);
+end;
+
+
+
+Function TCoursesResource.GetAliasesInstance : TCoursesAliasesResource;
+
+begin
+  if (FAliasesInstance=Nil) then
+    FAliasesInstance:=CreateAliasesResource;
+  Result:=FAliasesInstance;
+end;
+
+Function TCoursesResource.CreateAliasesResource : TCoursesAliasesResource;
+
+begin
+  Result:=CreateAliasesResource(Self);
+end;
+
+
+Function TCoursesResource.CreateAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;
+
+begin
+  Result:=TCoursesAliasesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCoursesResource.GetTeachersInstance : TCoursesTeachersResource;
+
+begin
+  if (FTeachersInstance=Nil) then
+    FTeachersInstance:=CreateTeachersResource;
+  Result:=FTeachersInstance;
+end;
+
+Function TCoursesResource.CreateTeachersResource : TCoursesTeachersResource;
+
+begin
+  Result:=CreateTeachersResource(Self);
+end;
+
+
+Function TCoursesResource.CreateTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;
+
+begin
+  Result:=TCoursesTeachersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCoursesResource.GetStudentsInstance : TCoursesStudentsResource;
+
+begin
+  if (FStudentsInstance=Nil) then
+    FStudentsInstance:=CreateStudentsResource;
+  Result:=FStudentsInstance;
+end;
+
+Function TCoursesResource.CreateStudentsResource : TCoursesStudentsResource;
+
+begin
+  Result:=CreateStudentsResource(Self);
+end;
+
+
+Function TCoursesResource.CreateStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;
+
+begin
+  Result:=TCoursesStudentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCoursesResource.GetCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  if (FCourseWorkStudentSubmissionsInstance=Nil) then
+    FCourseWorkStudentSubmissionsInstance:=CreateCourseWorkStudentSubmissionsResource;
+  Result:=FCourseWorkStudentSubmissionsInstance;
+end;
+
+Function TCoursesResource.CreateCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=CreateCourseWorkStudentSubmissionsResource(Self);
+end;
+
+
+Function TCoursesResource.CreateCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCoursesResource.GetCourseWorkInstance : TCoursesCourseWorkResource;
+
+begin
+  if (FCourseWorkInstance=Nil) then
+    FCourseWorkInstance:=CreateCourseWorkResource;
+  Result:=FCourseWorkInstance;
+end;
+
+Function TCoursesResource.CreateCourseWorkResource : TCoursesCourseWorkResource;
+
+begin
+  Result:=CreateCourseWorkResource(Self);
+end;
+
+
+Function TCoursesResource.CreateCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;
+
+begin
+  Result:=TCoursesCourseWorkResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TInvitationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TInvitationsResource.ResourceName : String;
+
+begin
+  Result:='invitations';
+end;
+
+Class Function TInvitationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TInvitationsResource.Create(aInvitation : TInvitation) : TInvitation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/invitations';
+  _Methodid   = 'classroom.invitations.create';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aInvitation,TInvitation) as TInvitation;
+end;
+
+Function TInvitationsResource.Get(id: string) : TInvitation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/invitations/{id}';
+  _Methodid   = 'classroom.invitations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TInvitation) as TInvitation;
+end;
+
+Function TInvitationsResource.Delete(id: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/invitations/{id}';
+  _Methodid   = 'classroom.invitations.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TInvitationsResource.List(AQuery : string = '') : TListInvitationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/invitations';
+  _Methodid   = 'classroom.invitations.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListInvitationsResponse) as TListInvitationsResponse;
+end;
+
+
+Function TInvitationsResource.List(AQuery : TInvitationslistOptions) : TListInvitationsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'userId',AQuery.userId);
+  AddToQuery(_Q,'courseId',AQuery.courseId);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_Q);
+end;
+
+Function TInvitationsResource.Accept(id: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/invitations/{id}:accept';
+  _Methodid   = 'classroom.invitations.accept';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TUserProfilesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TUserProfilesResource.ResourceName : String;
+
+begin
+  Result:='userProfiles';
+end;
+
+Class Function TUserProfilesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclassroomAPI;
+end;
+
+Function TUserProfilesResource.Get(userId: string) : TUserProfile;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/userProfiles/{userId}';
+  _Methodid   = 'classroom.userProfiles.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TUserProfile) as TUserProfile;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TClassroomAPI
+  --------------------------------------------------------------------}
+
+Class Function TClassroomAPI.APIName : String;
+
+begin
+  Result:='classroom';
+end;
+
+Class Function TClassroomAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TClassroomAPI.APIRevision : String;
+
+begin
+  Result:='20160517';
+end;
+
+Class Function TClassroomAPI.APIID : String;
+
+begin
+  Result:='classroom:v1';
+end;
+
+Class Function TClassroomAPI.APITitle : String;
+
+begin
+  Result:='Google Classroom API';
+end;
+
+Class Function TClassroomAPI.APIDescription : String;
+
+begin
+  Result:='Manages classes, rosters, and invitations in Google Classroom.';
+end;
+
+Class Function TClassroomAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TClassroomAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TClassroomAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TClassroomAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TClassroomAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/classroom/';
+end;
+
+Class Function TClassroomAPI.APIrootUrl : string;
+
+begin
+  Result:='https://classroom.googleapis.com/';
+end;
+
+Class Function TClassroomAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClassroomAPI.APIbaseURL : String;
+
+begin
+  Result:='https://classroom.googleapis.com/';
+end;
+
+Class Function TClassroomAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TClassroomAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClassroomAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TClassroomAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,13);
+  Result[0].Name:='https://www.googleapis.com/auth/classroom.course-work.readonly';
+  Result[0].Description:='View instructions for teacher-assigned work in your Google Classroom classes';
+  Result[1].Name:='https://www.googleapis.com/auth/classroom.courses';
+  Result[1].Description:='Manage your Google Classroom classes';
+  Result[2].Name:='https://www.googleapis.com/auth/classroom.courses.readonly';
+  Result[2].Description:='View your Google Classroom classes';
+  Result[3].Name:='https://www.googleapis.com/auth/classroom.coursework.me';
+  Result[3].Description:='Manage your course work and view your grades in Google Classroom';
+  Result[4].Name:='https://www.googleapis.com/auth/classroom.coursework.me.readonly';
+  Result[4].Description:='View your course work and grades in Google Classroom';
+  Result[5].Name:='https://www.googleapis.com/auth/classroom.coursework.students';
+  Result[5].Description:='Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer';
+  Result[6].Name:='https://www.googleapis.com/auth/classroom.coursework.students.readonly';
+  Result[6].Description:='View course work and grades for students in the Google Classroom classes you teach or administer';
+  Result[7].Name:='https://www.googleapis.com/auth/classroom.profile.emails';
+  Result[7].Description:='View the email addresses of people in your classes';
+  Result[8].Name:='https://www.googleapis.com/auth/classroom.profile.photos';
+  Result[8].Description:='View the profile photos of people in your classes';
+  Result[9].Name:='https://www.googleapis.com/auth/classroom.rosters';
+  Result[9].Description:='Manage your Google Classroom class rosters';
+  Result[10].Name:='https://www.googleapis.com/auth/classroom.rosters.readonly';
+  Result[10].Description:='View your Google Classroom class rosters';
+  Result[11].Name:='https://www.googleapis.com/auth/classroom.student-submissions.me.readonly';
+  Result[11].Description:='View your course work and grades in Google Classroom';
+  Result[12].Name:='https://www.googleapis.com/auth/classroom.student-submissions.students.readonly';
+  Result[12].Description:='View course work and grades for students in the Google Classroom classes you teach or administer';
+  
+end;
+
+Class Function TClassroomAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TClassroomAPI.RegisterAPIResources;
+
+begin
+  TCourse.RegisterObject;
+  TDriveFolder.RegisterObject;
+  TCourseMaterialSet.RegisterObject;
+  TCourseMaterial.RegisterObject;
+  TDriveFile.RegisterObject;
+  TYouTubeVideo.RegisterObject;
+  TLink.RegisterObject;
+  TForm.RegisterObject;
+  TEmpty.RegisterObject;
+  TListCoursesResponse.RegisterObject;
+  TCourseAlias.RegisterObject;
+  TListCourseAliasesResponse.RegisterObject;
+  TInvitation.RegisterObject;
+  TListInvitationsResponse.RegisterObject;
+  TUserProfile.RegisterObject;
+  TName.RegisterObject;
+  TGlobalPermission.RegisterObject;
+  TTeacher.RegisterObject;
+  TListTeachersResponse.RegisterObject;
+  TStudent.RegisterObject;
+  TListStudentsResponse.RegisterObject;
+  TCourseWork.RegisterObject;
+  TMaterial.RegisterObject;
+  TSharedDriveFile.RegisterObject;
+  TDate.RegisterObject;
+  TTimeOfDay.RegisterObject;
+  TAssignment.RegisterObject;
+  TMultipleChoiceQuestion.RegisterObject;
+  TListCourseWorkResponse.RegisterObject;
+  TStudentSubmission.RegisterObject;
+  TAssignmentSubmission.RegisterObject;
+  TAttachment.RegisterObject;
+  TShortAnswerSubmission.RegisterObject;
+  TMultipleChoiceSubmission.RegisterObject;
+  TListStudentSubmissionsResponse.RegisterObject;
+  TTurnInStudentSubmissionRequest.RegisterObject;
+  TReclaimStudentSubmissionRequest.RegisterObject;
+  TReturnStudentSubmissionRequest.RegisterObject;
+  TModifyAttachmentsRequest.RegisterObject;
+end;
+
+
+Function TClassroomAPI.GetCoursesAliasesInstance : TCoursesAliasesResource;
+
+begin
+  if (FCoursesAliasesInstance=Nil) then
+    FCoursesAliasesInstance:=CreateCoursesAliasesResource;
+  Result:=FCoursesAliasesInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesAliasesResource : TCoursesAliasesResource;
+
+begin
+  Result:=CreateCoursesAliasesResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;
+
+begin
+  Result:=TCoursesAliasesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetCoursesTeachersInstance : TCoursesTeachersResource;
+
+begin
+  if (FCoursesTeachersInstance=Nil) then
+    FCoursesTeachersInstance:=CreateCoursesTeachersResource;
+  Result:=FCoursesTeachersInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesTeachersResource : TCoursesTeachersResource;
+
+begin
+  Result:=CreateCoursesTeachersResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;
+
+begin
+  Result:=TCoursesTeachersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetCoursesStudentsInstance : TCoursesStudentsResource;
+
+begin
+  if (FCoursesStudentsInstance=Nil) then
+    FCoursesStudentsInstance:=CreateCoursesStudentsResource;
+  Result:=FCoursesStudentsInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesStudentsResource : TCoursesStudentsResource;
+
+begin
+  Result:=CreateCoursesStudentsResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;
+
+begin
+  Result:=TCoursesStudentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  if (FCoursesCourseWorkStudentSubmissionsInstance=Nil) then
+    FCoursesCourseWorkStudentSubmissionsInstance:=CreateCoursesCourseWorkStudentSubmissionsResource;
+  Result:=FCoursesCourseWorkStudentSubmissionsInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=CreateCoursesCourseWorkStudentSubmissionsResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;
+
+begin
+  Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetCoursesCourseWorkInstance : TCoursesCourseWorkResource;
+
+begin
+  if (FCoursesCourseWorkInstance=Nil) then
+    FCoursesCourseWorkInstance:=CreateCoursesCourseWorkResource;
+  Result:=FCoursesCourseWorkInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesCourseWorkResource : TCoursesCourseWorkResource;
+
+begin
+  Result:=CreateCoursesCourseWorkResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;
+
+begin
+  Result:=TCoursesCourseWorkResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetCoursesInstance : TCoursesResource;
+
+begin
+  if (FCoursesInstance=Nil) then
+    FCoursesInstance:=CreateCoursesResource;
+  Result:=FCoursesInstance;
+end;
+
+Function TClassroomAPI.CreateCoursesResource : TCoursesResource;
+
+begin
+  Result:=CreateCoursesResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateCoursesResource(AOwner : TComponent) : TCoursesResource;
+
+begin
+  Result:=TCoursesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetInvitationsInstance : TInvitationsResource;
+
+begin
+  if (FInvitationsInstance=Nil) then
+    FInvitationsInstance:=CreateInvitationsResource;
+  Result:=FInvitationsInstance;
+end;
+
+Function TClassroomAPI.CreateInvitationsResource : TInvitationsResource;
+
+begin
+  Result:=CreateInvitationsResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateInvitationsResource(AOwner : TComponent) : TInvitationsResource;
+
+begin
+  Result:=TInvitationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClassroomAPI.GetUserProfilesInstance : TUserProfilesResource;
+
+begin
+  if (FUserProfilesInstance=Nil) then
+    FUserProfilesInstance:=CreateUserProfilesResource;
+  Result:=FUserProfilesInstance;
+end;
+
+Function TClassroomAPI.CreateUserProfilesResource : TUserProfilesResource;
+
+begin
+  Result:=CreateUserProfilesResource(Self);
+end;
+
+
+Function TClassroomAPI.CreateUserProfilesResource(AOwner : TComponent) : TUserProfilesResource;
+
+begin
+  Result:=TUserProfilesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TClassroomAPI.RegisterAPI;
+end.

+ 10 - 3
packages/googleapi/src/googleclient.pp

@@ -81,6 +81,7 @@ Type
     Procedure CheckDefaults; virtual;
   Public
     Constructor Create(AOwner : TComponent); override;
+    Destructor Destroy; override;
     Function GetAuthHandler : TOAuth2Handler;
   Published
     Property AuthHandler : TOAuth2Handler Read GetAuthHandler Write SetAuthHandler;
@@ -359,14 +360,20 @@ begin
   GetAuthHandler.OnUserConsent:=AValue;
 end;
 
-Constructor TGoogleClient.Create(AOwner: TComponent);
+constructor TGoogleClient.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
   FConfig:=TGoogleClientConfig.Create;
   CheckDefaults;
 end;
 
-Procedure TGoogleClient.CheckDefaults;
+destructor TGoogleClient.Destroy;
+begin
+  FConfig.Free;
+  inherited Destroy;
+end;
+
+procedure TGoogleClient.CheckDefaults;
 
 begin
   With AuthHandler.Config do
@@ -379,7 +386,7 @@ begin
 end;
 
 
-Function TGoogleClient.GetAuthHandler: TOAuth2Handler;
+function TGoogleClient.GetAuthHandler: TOAuth2Handler;
 
 begin
   if (FAuthHandler=Nil) then

+ 776 - 0
packages/googleapi/src/googlecloudbilling.pp

@@ -0,0 +1,776 @@
+unit googlecloudbilling;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TBillingAccount = Class;
+  TListBillingAccountsResponse = Class;
+  TListProjectBillingInfoResponse = Class;
+  TProjectBillingInfo = Class;
+  TBillingAccountArray = Array of TBillingAccount;
+  TListBillingAccountsResponseArray = Array of TListBillingAccountsResponse;
+  TListProjectBillingInfoResponseArray = Array of TListProjectBillingInfoResponse;
+  TProjectBillingInfoArray = Array of TProjectBillingInfo;
+  //Anonymous types, using auto-generated names
+  TListBillingAccountsResponseTypebillingAccountsArray = Array of TBillingAccount;
+  TListProjectBillingInfoResponseTypeprojectBillingInfoArray = Array of TProjectBillingInfo;
+  
+  { --------------------------------------------------------------------
+    TBillingAccount
+    --------------------------------------------------------------------}
+  
+  TBillingAccount = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fopen : boolean;
+    FdisplayName : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setopen(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property open : boolean Index 8 Read Fopen Write Setopen;
+    Property displayName : String Index 16 Read FdisplayName Write SetdisplayName;
+  end;
+  TBillingAccountClass = Class of TBillingAccount;
+  
+  { --------------------------------------------------------------------
+    TListBillingAccountsResponse
+    --------------------------------------------------------------------}
+  
+  TListBillingAccountsResponse = Class(TGoogleBaseObject)
+  Private
+    FbillingAccounts : TListBillingAccountsResponseTypebillingAccountsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetbillingAccounts(AIndex : Integer; const AValue : TListBillingAccountsResponseTypebillingAccountsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property billingAccounts : TListBillingAccountsResponseTypebillingAccountsArray Index 0 Read FbillingAccounts Write SetbillingAccounts;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListBillingAccountsResponseClass = Class of TListBillingAccountsResponse;
+  
+  { --------------------------------------------------------------------
+    TListProjectBillingInfoResponse
+    --------------------------------------------------------------------}
+  
+  TListProjectBillingInfoResponse = Class(TGoogleBaseObject)
+  Private
+    FprojectBillingInfo : TListProjectBillingInfoResponseTypeprojectBillingInfoArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetprojectBillingInfo(AIndex : Integer; const AValue : TListProjectBillingInfoResponseTypeprojectBillingInfoArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property projectBillingInfo : TListProjectBillingInfoResponseTypeprojectBillingInfoArray Index 0 Read FprojectBillingInfo Write SetprojectBillingInfo;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListProjectBillingInfoResponseClass = Class of TListProjectBillingInfoResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectBillingInfo
+    --------------------------------------------------------------------}
+  
+  TProjectBillingInfo = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    FprojectId : String;
+    FbillingAccountName : String;
+    FbillingEnabled : boolean;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbillingAccountName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbillingEnabled(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property projectId : String Index 8 Read FprojectId Write SetprojectId;
+    Property billingAccountName : String Index 16 Read FbillingAccountName Write SetbillingAccountName;
+    Property billingEnabled : boolean Index 24 Read FbillingEnabled Write SetbillingEnabled;
+  end;
+  TProjectBillingInfoClass = Class of TProjectBillingInfo;
+  
+  { --------------------------------------------------------------------
+    TBillingAccountsProjectsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TBillingAccountsProjectsResource, method List
+  
+  TBillingAccountsProjectsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TBillingAccountsProjectsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListProjectBillingInfoResponse;
+    Function List(_name: string; AQuery : TBillingAccountsProjectslistOptions) : TListProjectBillingInfoResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TBillingAccountsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TBillingAccountsResource, method List
+  
+  TBillingAccountsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TBillingAccountsResource = Class(TGoogleResource)
+  Private
+    FProjectsInstance : TBillingAccountsProjectsResource;
+    Function GetProjectsInstance : TBillingAccountsProjectsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_name: string) : TBillingAccount;
+    Function List(AQuery : string  = '') : TListBillingAccountsResponse;
+    Function List(AQuery : TBillingAccountslistOptions) : TListBillingAccountsResponse;
+    Function CreateProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TBillingAccountsProjectsResource;virtual;overload;
+    Property ProjectsResource : TBillingAccountsProjectsResource Read GetProjectsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function GetBillingInfo(_name: string) : TProjectBillingInfo;
+    Function UpdateBillingInfo(_name: string; aProjectBillingInfo : TProjectBillingInfo) : TProjectBillingInfo;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCloudbillingAPI
+    --------------------------------------------------------------------}
+  
+  TCloudbillingAPI = Class(TGoogleAPI)
+  Private
+    FBillingAccountsProjectsInstance : TBillingAccountsProjectsResource;
+    FBillingAccountsInstance : TBillingAccountsResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetBillingAccountsProjectsInstance : TBillingAccountsProjectsResource;virtual;
+    Function GetBillingAccountsInstance : TBillingAccountsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateBillingAccountsProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;virtual;overload;
+    Function CreateBillingAccountsProjectsResource : TBillingAccountsProjectsResource;virtual;overload;
+    Function CreateBillingAccountsResource(AOwner : TComponent) : TBillingAccountsResource;virtual;overload;
+    Function CreateBillingAccountsResource : TBillingAccountsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property BillingAccountsProjectsResource : TBillingAccountsProjectsResource Read GetBillingAccountsProjectsInstance;
+    Property BillingAccountsResource : TBillingAccountsResource Read GetBillingAccountsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TBillingAccount
+  --------------------------------------------------------------------}
+
+
+Procedure TBillingAccount.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBillingAccount.Setopen(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fopen=AValue) then exit;
+  Fopen:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBillingAccount.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListBillingAccountsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListBillingAccountsResponse.SetbillingAccounts(AIndex : Integer; const AValue : TListBillingAccountsResponseTypebillingAccountsArray); 
+
+begin
+  If (FbillingAccounts=AValue) then exit;
+  FbillingAccounts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListBillingAccountsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListBillingAccountsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'billingaccounts' : SetLength(FbillingAccounts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListProjectBillingInfoResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListProjectBillingInfoResponse.SetprojectBillingInfo(AIndex : Integer; const AValue : TListProjectBillingInfoResponseTypeprojectBillingInfoArray); 
+
+begin
+  If (FprojectBillingInfo=AValue) then exit;
+  FprojectBillingInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListProjectBillingInfoResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListProjectBillingInfoResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'projectbillinginfo' : SetLength(FprojectBillingInfo,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectBillingInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TProjectBillingInfo.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProjectBillingInfo.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProjectBillingInfo.SetbillingAccountName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbillingAccountName=AValue) then exit;
+  FbillingAccountName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProjectBillingInfo.SetbillingEnabled(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FbillingEnabled=AValue) then exit;
+  FbillingEnabled:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBillingAccountsProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBillingAccountsProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TBillingAccountsProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbillingAPI;
+end;
+
+Function TBillingAccountsProjectsResource.List(_name: string; AQuery : string = '') : TListProjectBillingInfoResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/projects';
+  _Methodid   = 'cloudbilling.billingAccounts.projects.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListProjectBillingInfoResponse) as TListProjectBillingInfoResponse;
+end;
+
+
+Function TBillingAccountsProjectsResource.List(_name: string; AQuery : TBillingAccountsProjectslistOptions) : TListProjectBillingInfoResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBillingAccountsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBillingAccountsResource.ResourceName : String;
+
+begin
+  Result:='billingAccounts';
+end;
+
+Class Function TBillingAccountsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbillingAPI;
+end;
+
+Function TBillingAccountsResource.Get(_name: string) : TBillingAccount;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'cloudbilling.billingAccounts.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TBillingAccount) as TBillingAccount;
+end;
+
+Function TBillingAccountsResource.List(AQuery : string = '') : TListBillingAccountsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/billingAccounts';
+  _Methodid   = 'cloudbilling.billingAccounts.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListBillingAccountsResponse) as TListBillingAccountsResponse;
+end;
+
+
+Function TBillingAccountsResource.List(AQuery : TBillingAccountslistOptions) : TListBillingAccountsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_Q);
+end;
+
+
+
+Function TBillingAccountsResource.GetProjectsInstance : TBillingAccountsProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TBillingAccountsResource.CreateProjectsResource : TBillingAccountsProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TBillingAccountsResource.CreateProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;
+
+begin
+  Result:=TBillingAccountsProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbillingAPI;
+end;
+
+Function TProjectsResource.GetBillingInfo(_name: string) : TProjectBillingInfo;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/billingInfo';
+  _Methodid   = 'cloudbilling.projects.getBillingInfo';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProjectBillingInfo) as TProjectBillingInfo;
+end;
+
+Function TProjectsResource.UpdateBillingInfo(_name: string; aProjectBillingInfo : TProjectBillingInfo) : TProjectBillingInfo;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1/{+name}/billingInfo';
+  _Methodid   = 'cloudbilling.projects.updateBillingInfo';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aProjectBillingInfo,TProjectBillingInfo) as TProjectBillingInfo;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCloudbillingAPI
+  --------------------------------------------------------------------}
+
+Class Function TCloudbillingAPI.APIName : String;
+
+begin
+  Result:='cloudbilling';
+end;
+
+Class Function TCloudbillingAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TCloudbillingAPI.APIRevision : String;
+
+begin
+  Result:='20151222';
+end;
+
+Class Function TCloudbillingAPI.APIID : String;
+
+begin
+  Result:='cloudbilling:v1';
+end;
+
+Class Function TCloudbillingAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Billing API';
+end;
+
+Class Function TCloudbillingAPI.APIDescription : String;
+
+begin
+  Result:='Retrieves Google Developers Console billing accounts and associates them with projects.';
+end;
+
+Class Function TCloudbillingAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TCloudbillingAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TCloudbillingAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TCloudbillingAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TCloudbillingAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/billing/';
+end;
+
+Class Function TCloudbillingAPI.APIrootUrl : string;
+
+begin
+  Result:='https://cloudbilling.googleapis.com/';
+end;
+
+Class Function TCloudbillingAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudbillingAPI.APIbaseURL : String;
+
+begin
+  Result:='https://cloudbilling.googleapis.com/';
+end;
+
+Class Function TCloudbillingAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TCloudbillingAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudbillingAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TCloudbillingAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TCloudbillingAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TCloudbillingAPI.RegisterAPIResources;
+
+begin
+  TBillingAccount.RegisterObject;
+  TListBillingAccountsResponse.RegisterObject;
+  TListProjectBillingInfoResponse.RegisterObject;
+  TProjectBillingInfo.RegisterObject;
+end;
+
+
+Function TCloudbillingAPI.GetBillingAccountsProjectsInstance : TBillingAccountsProjectsResource;
+
+begin
+  if (FBillingAccountsProjectsInstance=Nil) then
+    FBillingAccountsProjectsInstance:=CreateBillingAccountsProjectsResource;
+  Result:=FBillingAccountsProjectsInstance;
+end;
+
+Function TCloudbillingAPI.CreateBillingAccountsProjectsResource : TBillingAccountsProjectsResource;
+
+begin
+  Result:=CreateBillingAccountsProjectsResource(Self);
+end;
+
+
+Function TCloudbillingAPI.CreateBillingAccountsProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;
+
+begin
+  Result:=TBillingAccountsProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCloudbillingAPI.GetBillingAccountsInstance : TBillingAccountsResource;
+
+begin
+  if (FBillingAccountsInstance=Nil) then
+    FBillingAccountsInstance:=CreateBillingAccountsResource;
+  Result:=FBillingAccountsInstance;
+end;
+
+Function TCloudbillingAPI.CreateBillingAccountsResource : TBillingAccountsResource;
+
+begin
+  Result:=CreateBillingAccountsResource(Self);
+end;
+
+
+Function TCloudbillingAPI.CreateBillingAccountsResource(AOwner : TComponent) : TBillingAccountsResource;
+
+begin
+  Result:=TBillingAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCloudbillingAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TCloudbillingAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TCloudbillingAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TCloudbillingAPI.RegisterAPI;
+end.

+ 1492 - 0
packages/googleapi/src/googlecloudbuild.pp

@@ -0,0 +1,1492 @@
+unit googlecloudbuild;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TStatus = Class;
+  TBuildOperationMetadata = Class;
+  TSource = Class;
+  TOperation = Class;
+  TBuiltImage = Class;
+  TStorageSource = Class;
+  TResults = Class;
+  TBuild = Class;
+  TCancelBuildRequest = Class;
+  TListOperationsResponse = Class;
+  TBuildStep = Class;
+  TListBuildsResponse = Class;
+  TStatusArray = Array of TStatus;
+  TBuildOperationMetadataArray = Array of TBuildOperationMetadata;
+  TSourceArray = Array of TSource;
+  TOperationArray = Array of TOperation;
+  TBuiltImageArray = Array of TBuiltImage;
+  TStorageSourceArray = Array of TStorageSource;
+  TResultsArray = Array of TResults;
+  TBuildArray = Array of TBuild;
+  TCancelBuildRequestArray = Array of TCancelBuildRequest;
+  TListOperationsResponseArray = Array of TListOperationsResponse;
+  TBuildStepArray = Array of TBuildStep;
+  TListBuildsResponseArray = Array of TListBuildsResponse;
+  //Anonymous types, using auto-generated names
+  TStatusTypedetailsItem = Class;
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TResultsTypeimagesArray = Array of TBuiltImage;
+  TBuildTypestepsArray = Array of TBuildStep;
+  TListOperationsResponseTypeoperationsArray = Array of TOperation;
+  TListBuildsResponseTypebuildsArray = Array of TBuild;
+  
+  { --------------------------------------------------------------------
+    TStatusTypedetailsItem
+    --------------------------------------------------------------------}
+  
+  TStatusTypedetailsItem = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
+  
+  { --------------------------------------------------------------------
+    TStatus
+    --------------------------------------------------------------------}
+  
+  TStatus = Class(TGoogleBaseObject)
+  Private
+    Fcode : integer;
+    Fdetails : TStatusTypedetailsArray;
+    Fmessage : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : integer Index 0 Read Fcode Write Setcode;
+    Property details : TStatusTypedetailsArray Index 8 Read Fdetails Write Setdetails;
+    Property message : String Index 16 Read Fmessage Write Setmessage;
+  end;
+  TStatusClass = Class of TStatus;
+  
+  { --------------------------------------------------------------------
+    TBuildOperationMetadata
+    --------------------------------------------------------------------}
+  
+  TBuildOperationMetadata = Class(TGoogleBaseObject)
+  Private
+    Fbuild : TBuild;
+  Protected
+    //Property setters
+    Procedure Setbuild(AIndex : Integer; const AValue : TBuild); virtual;
+  Public
+  Published
+    Property build : TBuild Index 0 Read Fbuild Write Setbuild;
+  end;
+  TBuildOperationMetadataClass = Class of TBuildOperationMetadata;
+  
+  { --------------------------------------------------------------------
+    TSource
+    --------------------------------------------------------------------}
+  
+  TSource = Class(TGoogleBaseObject)
+  Private
+    FstorageSource : TStorageSource;
+  Protected
+    //Property setters
+    Procedure SetstorageSource(AIndex : Integer; const AValue : TStorageSource); virtual;
+  Public
+  Published
+    Property storageSource : TStorageSource Index 0 Read FstorageSource Write SetstorageSource;
+  end;
+  TSourceClass = Class of TSource;
+  
+  { --------------------------------------------------------------------
+    TOperationTypemetadata
+    --------------------------------------------------------------------}
+  
+  TOperationTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTypemetadataClass = Class of TOperationTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationTyperesponse
+    --------------------------------------------------------------------}
+  
+  TOperationTyperesponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTyperesponseClass = Class of TOperationTyperesponse;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    Ferror : TStatus;
+    Fdone : boolean;
+    Fmetadata : TOperationTypemetadata;
+    Fresponse : TOperationTyperesponse;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property error : TStatus Index 0 Read Ferror Write Seterror;
+    Property done : boolean Index 8 Read Fdone Write Setdone;
+    Property metadata : TOperationTypemetadata Index 16 Read Fmetadata Write Setmetadata;
+    Property response : TOperationTyperesponse Index 24 Read Fresponse Write Setresponse;
+    Property name : String Index 32 Read Fname Write Setname;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TBuiltImage
+    --------------------------------------------------------------------}
+  
+  TBuiltImage = Class(TGoogleBaseObject)
+  Private
+    Fdigest : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setdigest(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property digest : String Index 0 Read Fdigest Write Setdigest;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TBuiltImageClass = Class of TBuiltImage;
+  
+  { --------------------------------------------------------------------
+    TStorageSource
+    --------------------------------------------------------------------}
+  
+  TStorageSource = Class(TGoogleBaseObject)
+  Private
+    Fbucket : String;
+    Fgeneration : String;
+    F_object : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setbucket(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgeneration(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_object(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property bucket : String Index 0 Read Fbucket Write Setbucket;
+    Property generation : String Index 8 Read Fgeneration Write Setgeneration;
+    Property _object : String Index 16 Read F_object Write Set_object;
+  end;
+  TStorageSourceClass = Class of TStorageSource;
+  
+  { --------------------------------------------------------------------
+    TResults
+    --------------------------------------------------------------------}
+  
+  TResults = Class(TGoogleBaseObject)
+  Private
+    Fimages : TResultsTypeimagesArray;
+  Protected
+    //Property setters
+    Procedure Setimages(AIndex : Integer; const AValue : TResultsTypeimagesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property images : TResultsTypeimagesArray Index 0 Read Fimages Write Setimages;
+  end;
+  TResultsClass = Class of TResults;
+  
+  { --------------------------------------------------------------------
+    TBuild
+    --------------------------------------------------------------------}
+  
+  TBuild = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fresults : TResults;
+    Fstatus : String;
+    FfinishTime : String;
+    Ftimeout : String;
+    Fsteps : TBuildTypestepsArray;
+    Fsource : TSource;
+    FcreateTime : String;
+    FstatusDetail : String;
+    Fimages : TStringArray;
+    FstartTime : String;
+    FlogsBucket : String;
+    FprojectId : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setresults(AIndex : Integer; const AValue : TResults); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfinishTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settimeout(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsteps(AIndex : Integer; const AValue : TBuildTypestepsArray); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : TSource); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstatusDetail(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimages(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlogsBucket(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property results : TResults Index 8 Read Fresults Write Setresults;
+    Property status : String Index 16 Read Fstatus Write Setstatus;
+    Property finishTime : String Index 24 Read FfinishTime Write SetfinishTime;
+    Property timeout : String Index 32 Read Ftimeout Write Settimeout;
+    Property steps : TBuildTypestepsArray Index 40 Read Fsteps Write Setsteps;
+    Property source : TSource Index 48 Read Fsource Write Setsource;
+    Property createTime : String Index 56 Read FcreateTime Write SetcreateTime;
+    Property statusDetail : String Index 64 Read FstatusDetail Write SetstatusDetail;
+    Property images : TStringArray Index 72 Read Fimages Write Setimages;
+    Property startTime : String Index 80 Read FstartTime Write SetstartTime;
+    Property logsBucket : String Index 88 Read FlogsBucket Write SetlogsBucket;
+    Property projectId : String Index 96 Read FprojectId Write SetprojectId;
+  end;
+  TBuildClass = Class of TBuild;
+  
+  { --------------------------------------------------------------------
+    TCancelBuildRequest
+    --------------------------------------------------------------------}
+  
+  TCancelBuildRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TCancelBuildRequestClass = Class of TCancelBuildRequest;
+  
+  { --------------------------------------------------------------------
+    TListOperationsResponse
+    --------------------------------------------------------------------}
+  
+  TListOperationsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Foperations : TListOperationsResponseTypeoperationsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property operations : TListOperationsResponseTypeoperationsArray Index 8 Read Foperations Write Setoperations;
+  end;
+  TListOperationsResponseClass = Class of TListOperationsResponse;
+  
+  { --------------------------------------------------------------------
+    TBuildStep
+    --------------------------------------------------------------------}
+  
+  TBuildStep = Class(TGoogleBaseObject)
+  Private
+    Fargs : TStringArray;
+    Fdir : String;
+    Fname : String;
+    Fenv : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setargs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setdir(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setenv(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property args : TStringArray Index 0 Read Fargs Write Setargs;
+    Property dir : String Index 8 Read Fdir Write Setdir;
+    Property name : String Index 16 Read Fname Write Setname;
+    Property env : TStringArray Index 24 Read Fenv Write Setenv;
+  end;
+  TBuildStepClass = Class of TBuildStep;
+  
+  { --------------------------------------------------------------------
+    TListBuildsResponse
+    --------------------------------------------------------------------}
+  
+  TListBuildsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fbuilds : TListBuildsResponseTypebuildsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setbuilds(AIndex : Integer; const AValue : TListBuildsResponseTypebuildsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property builds : TListBuildsResponseTypebuildsArray Index 8 Read Fbuilds Write Setbuilds;
+  end;
+  TListBuildsResponseClass = Class of TListBuildsResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectsBuildsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsBuildsResource, method List
+  
+  TProjectsBuildsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsBuildsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(projectId: string; aBuild : TBuild) : TOperation;overload;
+    Function Get(projectId: string; id: string) : TBuild;
+    Function List(projectId: string; AQuery : string  = '') : TListBuildsResponse;
+    Function List(projectId: string; AQuery : TProjectsBuildslistOptions) : TListBuildsResponse;
+    Function Cancel(projectId: string; id: string; aCancelBuildRequest : TCancelBuildRequest) : TBuild;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FBuildsInstance : TProjectsBuildsResource;
+    Function GetBuildsInstance : TProjectsBuildsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateBuildsResource(AOwner : TComponent) : TProjectsBuildsResource;virtual;overload;
+    Function CreateBuildsResource : TProjectsBuildsResource;virtual;overload;
+    Property BuildsResource : TProjectsBuildsResource Read GetBuildsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TOperationsResource, method List
+  
+  TOperationsListOptions = Record
+    pageSize : integer;
+    filter : String;
+    pageToken : String;
+  end;
+  
+  TOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_name: string) : TOperation;
+    Function List(_name: string; AQuery : string  = '') : TListOperationsResponse;
+    Function List(_name: string; AQuery : TOperationslistOptions) : TListOperationsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCloudbuildAPI
+    --------------------------------------------------------------------}
+  
+  TCloudbuildAPI = Class(TGoogleAPI)
+  Private
+    FProjectsBuildsInstance : TProjectsBuildsResource;
+    FProjectsInstance : TProjectsResource;
+    FOperationsInstance : TOperationsResource;
+    Function GetProjectsBuildsInstance : TProjectsBuildsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+    Function GetOperationsInstance : TOperationsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsBuildsResource(AOwner : TComponent) : TProjectsBuildsResource;virtual;overload;
+    Function CreateProjectsBuildsResource : TProjectsBuildsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    Function CreateOperationsResource(AOwner : TComponent) : TOperationsResource;virtual;overload;
+    Function CreateOperationsResource : TOperationsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsBuildsResource : TProjectsBuildsResource Read GetProjectsBuildsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+    Property OperationsResource : TOperationsResource Read GetOperationsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TStatusTypedetailsItem
+  --------------------------------------------------------------------}
+
+
+Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'details' : SetLength(Fdetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBuildOperationMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TBuildOperationMetadata.Setbuild(AIndex : Integer; const AValue : TBuild); 
+
+begin
+  If (Fbuild=AValue) then exit;
+  Fbuild:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSource
+  --------------------------------------------------------------------}
+
+
+Procedure TSource.SetstorageSource(AIndex : Integer; const AValue : TStorageSource); 
+
+begin
+  If (FstorageSource=AValue) then exit;
+  FstorageSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTyperesponse
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBuiltImage
+  --------------------------------------------------------------------}
+
+
+Procedure TBuiltImage.Setdigest(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdigest=AValue) then exit;
+  Fdigest:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuiltImage.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStorageSource
+  --------------------------------------------------------------------}
+
+
+Procedure TStorageSource.Setbucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fbucket=AValue) then exit;
+  Fbucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStorageSource.Setgeneration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fgeneration=AValue) then exit;
+  Fgeneration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStorageSource.Set_object(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_object=AValue) then exit;
+  F_object:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TStorageSource.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_object' : Result:='object';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TResults
+  --------------------------------------------------------------------}
+
+
+Procedure TResults.Setimages(AIndex : Integer; const AValue : TResultsTypeimagesArray); 
+
+begin
+  If (Fimages=AValue) then exit;
+  Fimages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TResults.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'images' : SetLength(Fimages,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBuild
+  --------------------------------------------------------------------}
+
+
+Procedure TBuild.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Setresults(AIndex : Integer; const AValue : TResults); 
+
+begin
+  If (Fresults=AValue) then exit;
+  Fresults:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetfinishTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfinishTime=AValue) then exit;
+  FfinishTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Settimeout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftimeout=AValue) then exit;
+  Ftimeout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Setsteps(AIndex : Integer; const AValue : TBuildTypestepsArray); 
+
+begin
+  If (Fsteps=AValue) then exit;
+  Fsteps:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Setsource(AIndex : Integer; const AValue : TSource); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetstatusDetail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstatusDetail=AValue) then exit;
+  FstatusDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.Setimages(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fimages=AValue) then exit;
+  Fimages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetlogsBucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlogsBucket=AValue) then exit;
+  FlogsBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuild.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBuild.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'steps' : SetLength(Fsteps,ALength);
+  'images' : SetLength(Fimages,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCancelBuildRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListOperationsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListOperationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListOperationsResponse.Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); 
+
+begin
+  If (Foperations=AValue) then exit;
+  Foperations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListOperationsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'operations' : SetLength(Foperations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBuildStep
+  --------------------------------------------------------------------}
+
+
+Procedure TBuildStep.Setargs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fargs=AValue) then exit;
+  Fargs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuildStep.Setdir(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdir=AValue) then exit;
+  Fdir:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuildStep.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBuildStep.Setenv(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fenv=AValue) then exit;
+  Fenv:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBuildStep.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'args' : SetLength(Fargs,ALength);
+  'env' : SetLength(Fenv,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListBuildsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListBuildsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListBuildsResponse.Setbuilds(AIndex : Integer; const AValue : TListBuildsResponseTypebuildsArray); 
+
+begin
+  If (Fbuilds=AValue) then exit;
+  Fbuilds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListBuildsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'builds' : SetLength(Fbuilds,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsBuildsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsBuildsResource.ResourceName : String;
+
+begin
+  Result:='builds';
+end;
+
+Class Function TProjectsBuildsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbuildAPI;
+end;
+
+Function TProjectsBuildsResource.Create(projectId: string; aBuild : TBuild) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/builds';
+  _Methodid   = 'cloudbuild.projects.builds.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aBuild,TOperation) as TOperation;
+end;
+
+Function TProjectsBuildsResource.Get(projectId: string; id: string) : TBuild;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/builds/{id}';
+  _Methodid   = 'cloudbuild.projects.builds.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TBuild) as TBuild;
+end;
+
+Function TProjectsBuildsResource.List(projectId: string; AQuery : string = '') : TListBuildsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/builds';
+  _Methodid   = 'cloudbuild.projects.builds.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListBuildsResponse) as TListBuildsResponse;
+end;
+
+
+Function TProjectsBuildsResource.List(projectId: string; AQuery : TProjectsBuildslistOptions) : TListBuildsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(projectId,_Q);
+end;
+
+Function TProjectsBuildsResource.Cancel(projectId: string; id: string; aCancelBuildRequest : TCancelBuildRequest) : TBuild;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/builds/{id}:cancel';
+  _Methodid   = 'cloudbuild.projects.builds.cancel';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCancelBuildRequest,TBuild) as TBuild;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbuildAPI;
+end;
+
+
+
+Function TProjectsResource.GetBuildsInstance : TProjectsBuildsResource;
+
+begin
+  if (FBuildsInstance=Nil) then
+    FBuildsInstance:=CreateBuildsResource;
+  Result:=FBuildsInstance;
+end;
+
+Function TProjectsResource.CreateBuildsResource : TProjectsBuildsResource;
+
+begin
+  Result:=CreateBuildsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateBuildsResource(AOwner : TComponent) : TProjectsBuildsResource;
+
+begin
+  Result:=TProjectsBuildsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationsResource.ResourceName : String;
+
+begin
+  Result:='operations';
+end;
+
+Class Function TOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudbuildAPI;
+end;
+
+Function TOperationsResource.Get(_name: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'cloudbuild.operations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TOperationsResource.List(_name: string; AQuery : string = '') : TListOperationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'cloudbuild.operations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListOperationsResponse) as TListOperationsResponse;
+end;
+
+
+Function TOperationsResource.List(_name: string; AQuery : TOperationslistOptions) : TListOperationsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCloudbuildAPI
+  --------------------------------------------------------------------}
+
+Class Function TCloudbuildAPI.APIName : String;
+
+begin
+  Result:='cloudbuild';
+end;
+
+Class Function TCloudbuildAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TCloudbuildAPI.APIRevision : String;
+
+begin
+  Result:='20160523';
+end;
+
+Class Function TCloudbuildAPI.APIID : String;
+
+begin
+  Result:='cloudbuild:v1';
+end;
+
+Class Function TCloudbuildAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Container Builder API';
+end;
+
+Class Function TCloudbuildAPI.APIDescription : String;
+
+begin
+  Result:='Builds container images in the cloud.';
+end;
+
+Class Function TCloudbuildAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TCloudbuildAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TCloudbuildAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TCloudbuildAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TCloudbuildAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/container-builder/docs/';
+end;
+
+Class Function TCloudbuildAPI.APIrootUrl : string;
+
+begin
+  Result:='https://cloudbuild.googleapis.com/';
+end;
+
+Class Function TCloudbuildAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudbuildAPI.APIbaseURL : String;
+
+begin
+  Result:='https://cloudbuild.googleapis.com/';
+end;
+
+Class Function TCloudbuildAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TCloudbuildAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudbuildAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TCloudbuildAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TCloudbuildAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TCloudbuildAPI.RegisterAPIResources;
+
+begin
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TBuildOperationMetadata.RegisterObject;
+  TSource.RegisterObject;
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TBuiltImage.RegisterObject;
+  TStorageSource.RegisterObject;
+  TResults.RegisterObject;
+  TBuild.RegisterObject;
+  TCancelBuildRequest.RegisterObject;
+  TListOperationsResponse.RegisterObject;
+  TBuildStep.RegisterObject;
+  TListBuildsResponse.RegisterObject;
+end;
+
+
+Function TCloudbuildAPI.GetProjectsBuildsInstance : TProjectsBuildsResource;
+
+begin
+  if (FProjectsBuildsInstance=Nil) then
+    FProjectsBuildsInstance:=CreateProjectsBuildsResource;
+  Result:=FProjectsBuildsInstance;
+end;
+
+Function TCloudbuildAPI.CreateProjectsBuildsResource : TProjectsBuildsResource;
+
+begin
+  Result:=CreateProjectsBuildsResource(Self);
+end;
+
+
+Function TCloudbuildAPI.CreateProjectsBuildsResource(AOwner : TComponent) : TProjectsBuildsResource;
+
+begin
+  Result:=TProjectsBuildsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCloudbuildAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TCloudbuildAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TCloudbuildAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCloudbuildAPI.GetOperationsInstance : TOperationsResource;
+
+begin
+  if (FOperationsInstance=Nil) then
+    FOperationsInstance:=CreateOperationsResource;
+  Result:=FOperationsInstance;
+end;
+
+Function TCloudbuildAPI.CreateOperationsResource : TOperationsResource;
+
+begin
+  Result:=CreateOperationsResource(Self);
+end;
+
+
+Function TCloudbuildAPI.CreateOperationsResource(AOwner : TComponent) : TOperationsResource;
+
+begin
+  Result:=TOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TCloudbuildAPI.RegisterAPI;
+end.

+ 2920 - 0
packages/googleapi/src/googleclouddebugger.pp

@@ -0,0 +1,2920 @@
+unit googleclouddebugger;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TRegisterDebuggeeRequest = Class;
+  TDebuggee = Class;
+  TStatusMessage = Class;
+  TFormatMessage = Class;
+  TSourceContext = Class;
+  TCloudRepoSourceContext = Class;
+  TRepoId = Class;
+  TProjectRepoId = Class;
+  TAliasContext = Class;
+  TCloudWorkspaceSourceContext = Class;
+  TCloudWorkspaceId = Class;
+  TGerritSourceContext = Class;
+  TGitSourceContext = Class;
+  TExtendedSourceContext = Class;
+  TRegisterDebuggeeResponse = Class;
+  TListActiveBreakpointsResponse = Class;
+  TBreakpoint = Class;
+  TSourceLocation = Class;
+  TStackFrame = Class;
+  TVariable = Class;
+  TUpdateActiveBreakpointRequest = Class;
+  TUpdateActiveBreakpointResponse = Class;
+  TSetBreakpointResponse = Class;
+  TGetBreakpointResponse = Class;
+  TEmpty = Class;
+  TListBreakpointsResponse = Class;
+  TListDebuggeesResponse = Class;
+  TRegisterDebuggeeRequestArray = Array of TRegisterDebuggeeRequest;
+  TDebuggeeArray = Array of TDebuggee;
+  TStatusMessageArray = Array of TStatusMessage;
+  TFormatMessageArray = Array of TFormatMessage;
+  TSourceContextArray = Array of TSourceContext;
+  TCloudRepoSourceContextArray = Array of TCloudRepoSourceContext;
+  TRepoIdArray = Array of TRepoId;
+  TProjectRepoIdArray = Array of TProjectRepoId;
+  TAliasContextArray = Array of TAliasContext;
+  TCloudWorkspaceSourceContextArray = Array of TCloudWorkspaceSourceContext;
+  TCloudWorkspaceIdArray = Array of TCloudWorkspaceId;
+  TGerritSourceContextArray = Array of TGerritSourceContext;
+  TGitSourceContextArray = Array of TGitSourceContext;
+  TExtendedSourceContextArray = Array of TExtendedSourceContext;
+  TRegisterDebuggeeResponseArray = Array of TRegisterDebuggeeResponse;
+  TListActiveBreakpointsResponseArray = Array of TListActiveBreakpointsResponse;
+  TBreakpointArray = Array of TBreakpoint;
+  TSourceLocationArray = Array of TSourceLocation;
+  TStackFrameArray = Array of TStackFrame;
+  TVariableArray = Array of TVariable;
+  TUpdateActiveBreakpointRequestArray = Array of TUpdateActiveBreakpointRequest;
+  TUpdateActiveBreakpointResponseArray = Array of TUpdateActiveBreakpointResponse;
+  TSetBreakpointResponseArray = Array of TSetBreakpointResponse;
+  TGetBreakpointResponseArray = Array of TGetBreakpointResponse;
+  TEmptyArray = Array of TEmpty;
+  TListBreakpointsResponseArray = Array of TListBreakpointsResponse;
+  TListDebuggeesResponseArray = Array of TListDebuggeesResponse;
+  //Anonymous types, using auto-generated names
+  TDebuggeeTypelabels = Class;
+  TExtendedSourceContextTypelabels = Class;
+  TBreakpointTypelabels = Class;
+  TDebuggeeTypesourceContextsArray = Array of TSourceContext;
+  TDebuggeeTypeextSourceContextsArray = Array of TExtendedSourceContext;
+  TListActiveBreakpointsResponseTypebreakpointsArray = Array of TBreakpoint;
+  TBreakpointTypestackFramesArray = Array of TStackFrame;
+  TBreakpointTypeevaluatedExpressionsArray = Array of TVariable;
+  TBreakpointTypevariableTableArray = Array of TVariable;
+  TStackFrameTypeargumentsArray = Array of TVariable;
+  TStackFrameTypelocalsArray = Array of TVariable;
+  TVariableTypemembersArray = Array of TVariable;
+  TListBreakpointsResponseTypebreakpointsArray = Array of TBreakpoint;
+  TListDebuggeesResponseTypedebuggeesArray = Array of TDebuggee;
+  
+  { --------------------------------------------------------------------
+    TRegisterDebuggeeRequest
+    --------------------------------------------------------------------}
+  
+  TRegisterDebuggeeRequest = Class(TGoogleBaseObject)
+  Private
+    Fdebuggee : TDebuggee;
+  Protected
+    //Property setters
+    Procedure Setdebuggee(AIndex : Integer; const AValue : TDebuggee); virtual;
+  Public
+  Published
+    Property debuggee : TDebuggee Index 0 Read Fdebuggee Write Setdebuggee;
+  end;
+  TRegisterDebuggeeRequestClass = Class of TRegisterDebuggeeRequest;
+  
+  { --------------------------------------------------------------------
+    TDebuggeeTypelabels
+    --------------------------------------------------------------------}
+  
+  TDebuggeeTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TDebuggeeTypelabelsClass = Class of TDebuggeeTypelabels;
+  
+  { --------------------------------------------------------------------
+    TDebuggee
+    --------------------------------------------------------------------}
+  
+  TDebuggee = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fproject : String;
+    Funiquifier : String;
+    Fdescription : String;
+    FisInactive : boolean;
+    FagentVersion : String;
+    FisDisabled : boolean;
+    Fstatus : TStatusMessage;
+    FsourceContexts : TDebuggeeTypesourceContextsArray;
+    FextSourceContexts : TDebuggeeTypeextSourceContextsArray;
+    Flabels : TDebuggeeTypelabels;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproject(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuniquifier(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetisInactive(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetagentVersion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetisDisabled(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TStatusMessage); virtual;
+    Procedure SetsourceContexts(AIndex : Integer; const AValue : TDebuggeeTypesourceContextsArray); virtual;
+    Procedure SetextSourceContexts(AIndex : Integer; const AValue : TDebuggeeTypeextSourceContextsArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TDebuggeeTypelabels); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property project : String Index 8 Read Fproject Write Setproject;
+    Property uniquifier : String Index 16 Read Funiquifier Write Setuniquifier;
+    Property description : String Index 24 Read Fdescription Write Setdescription;
+    Property isInactive : boolean Index 32 Read FisInactive Write SetisInactive;
+    Property agentVersion : String Index 40 Read FagentVersion Write SetagentVersion;
+    Property isDisabled : boolean Index 48 Read FisDisabled Write SetisDisabled;
+    Property status : TStatusMessage Index 56 Read Fstatus Write Setstatus;
+    Property sourceContexts : TDebuggeeTypesourceContextsArray Index 64 Read FsourceContexts Write SetsourceContexts;
+    Property extSourceContexts : TDebuggeeTypeextSourceContextsArray Index 72 Read FextSourceContexts Write SetextSourceContexts;
+    Property labels : TDebuggeeTypelabels Index 80 Read Flabels Write Setlabels;
+  end;
+  TDebuggeeClass = Class of TDebuggee;
+  
+  { --------------------------------------------------------------------
+    TStatusMessage
+    --------------------------------------------------------------------}
+  
+  TStatusMessage = Class(TGoogleBaseObject)
+  Private
+    FisError : boolean;
+    FrefersTo : String;
+    Fdescription : TFormatMessage;
+  Protected
+    //Property setters
+    Procedure SetisError(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetrefersTo(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : TFormatMessage); virtual;
+  Public
+  Published
+    Property isError : boolean Index 0 Read FisError Write SetisError;
+    Property refersTo : String Index 8 Read FrefersTo Write SetrefersTo;
+    Property description : TFormatMessage Index 16 Read Fdescription Write Setdescription;
+  end;
+  TStatusMessageClass = Class of TStatusMessage;
+  
+  { --------------------------------------------------------------------
+    TFormatMessage
+    --------------------------------------------------------------------}
+  
+  TFormatMessage = Class(TGoogleBaseObject)
+  Private
+    Fformat : String;
+    Fparameters : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property format : String Index 0 Read Fformat Write Setformat;
+    Property parameters : TStringArray Index 8 Read Fparameters Write Setparameters;
+  end;
+  TFormatMessageClass = Class of TFormatMessage;
+  
+  { --------------------------------------------------------------------
+    TSourceContext
+    --------------------------------------------------------------------}
+  
+  TSourceContext = Class(TGoogleBaseObject)
+  Private
+    FcloudRepo : TCloudRepoSourceContext;
+    FcloudWorkspace : TCloudWorkspaceSourceContext;
+    Fgerrit : TGerritSourceContext;
+    Fgit : TGitSourceContext;
+  Protected
+    //Property setters
+    Procedure SetcloudRepo(AIndex : Integer; const AValue : TCloudRepoSourceContext); virtual;
+    Procedure SetcloudWorkspace(AIndex : Integer; const AValue : TCloudWorkspaceSourceContext); virtual;
+    Procedure Setgerrit(AIndex : Integer; const AValue : TGerritSourceContext); virtual;
+    Procedure Setgit(AIndex : Integer; const AValue : TGitSourceContext); virtual;
+  Public
+  Published
+    Property cloudRepo : TCloudRepoSourceContext Index 0 Read FcloudRepo Write SetcloudRepo;
+    Property cloudWorkspace : TCloudWorkspaceSourceContext Index 8 Read FcloudWorkspace Write SetcloudWorkspace;
+    Property gerrit : TGerritSourceContext Index 16 Read Fgerrit Write Setgerrit;
+    Property git : TGitSourceContext Index 24 Read Fgit Write Setgit;
+  end;
+  TSourceContextClass = Class of TSourceContext;
+  
+  { --------------------------------------------------------------------
+    TCloudRepoSourceContext
+    --------------------------------------------------------------------}
+  
+  TCloudRepoSourceContext = Class(TGoogleBaseObject)
+  Private
+    FrepoId : TRepoId;
+    FrevisionId : String;
+    FaliasName : String;
+    FaliasContext : TAliasContext;
+  Protected
+    //Property setters
+    Procedure SetrepoId(AIndex : Integer; const AValue : TRepoId); virtual;
+    Procedure SetrevisionId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaliasName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaliasContext(AIndex : Integer; const AValue : TAliasContext); virtual;
+  Public
+  Published
+    Property repoId : TRepoId Index 0 Read FrepoId Write SetrepoId;
+    Property revisionId : String Index 8 Read FrevisionId Write SetrevisionId;
+    Property aliasName : String Index 16 Read FaliasName Write SetaliasName;
+    Property aliasContext : TAliasContext Index 24 Read FaliasContext Write SetaliasContext;
+  end;
+  TCloudRepoSourceContextClass = Class of TCloudRepoSourceContext;
+  
+  { --------------------------------------------------------------------
+    TRepoId
+    --------------------------------------------------------------------}
+  
+  TRepoId = Class(TGoogleBaseObject)
+  Private
+    FprojectRepoId : TProjectRepoId;
+    Fuid : String;
+  Protected
+    //Property setters
+    Procedure SetprojectRepoId(AIndex : Integer; const AValue : TProjectRepoId); virtual;
+    Procedure Setuid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property projectRepoId : TProjectRepoId Index 0 Read FprojectRepoId Write SetprojectRepoId;
+    Property uid : String Index 8 Read Fuid Write Setuid;
+  end;
+  TRepoIdClass = Class of TRepoId;
+  
+  { --------------------------------------------------------------------
+    TProjectRepoId
+    --------------------------------------------------------------------}
+  
+  TProjectRepoId = Class(TGoogleBaseObject)
+  Private
+    FprojectId : String;
+    FrepoName : String;
+  Protected
+    //Property setters
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrepoName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property projectId : String Index 0 Read FprojectId Write SetprojectId;
+    Property repoName : String Index 8 Read FrepoName Write SetrepoName;
+  end;
+  TProjectRepoIdClass = Class of TProjectRepoId;
+  
+  { --------------------------------------------------------------------
+    TAliasContext
+    --------------------------------------------------------------------}
+  
+  TAliasContext = Class(TGoogleBaseObject)
+  Private
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property kind : String Index 0 Read Fkind Write Setkind;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TAliasContextClass = Class of TAliasContext;
+  
+  { --------------------------------------------------------------------
+    TCloudWorkspaceSourceContext
+    --------------------------------------------------------------------}
+  
+  TCloudWorkspaceSourceContext = Class(TGoogleBaseObject)
+  Private
+    FworkspaceId : TCloudWorkspaceId;
+    FsnapshotId : String;
+  Protected
+    //Property setters
+    Procedure SetworkspaceId(AIndex : Integer; const AValue : TCloudWorkspaceId); virtual;
+    Procedure SetsnapshotId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property workspaceId : TCloudWorkspaceId Index 0 Read FworkspaceId Write SetworkspaceId;
+    Property snapshotId : String Index 8 Read FsnapshotId Write SetsnapshotId;
+  end;
+  TCloudWorkspaceSourceContextClass = Class of TCloudWorkspaceSourceContext;
+  
+  { --------------------------------------------------------------------
+    TCloudWorkspaceId
+    --------------------------------------------------------------------}
+  
+  TCloudWorkspaceId = Class(TGoogleBaseObject)
+  Private
+    FrepoId : TRepoId;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SetrepoId(AIndex : Integer; const AValue : TRepoId); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property repoId : TRepoId Index 0 Read FrepoId Write SetrepoId;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TCloudWorkspaceIdClass = Class of TCloudWorkspaceId;
+  
+  { --------------------------------------------------------------------
+    TGerritSourceContext
+    --------------------------------------------------------------------}
+  
+  TGerritSourceContext = Class(TGoogleBaseObject)
+  Private
+    FhostUri : String;
+    FgerritProject : String;
+    FrevisionId : String;
+    FaliasName : String;
+    FaliasContext : TAliasContext;
+  Protected
+    //Property setters
+    Procedure SethostUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgerritProject(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrevisionId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaliasName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaliasContext(AIndex : Integer; const AValue : TAliasContext); virtual;
+  Public
+  Published
+    Property hostUri : String Index 0 Read FhostUri Write SethostUri;
+    Property gerritProject : String Index 8 Read FgerritProject Write SetgerritProject;
+    Property revisionId : String Index 16 Read FrevisionId Write SetrevisionId;
+    Property aliasName : String Index 24 Read FaliasName Write SetaliasName;
+    Property aliasContext : TAliasContext Index 32 Read FaliasContext Write SetaliasContext;
+  end;
+  TGerritSourceContextClass = Class of TGerritSourceContext;
+  
+  { --------------------------------------------------------------------
+    TGitSourceContext
+    --------------------------------------------------------------------}
+  
+  TGitSourceContext = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+    FrevisionId : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrevisionId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+    Property revisionId : String Index 8 Read FrevisionId Write SetrevisionId;
+  end;
+  TGitSourceContextClass = Class of TGitSourceContext;
+  
+  { --------------------------------------------------------------------
+    TExtendedSourceContextTypelabels
+    --------------------------------------------------------------------}
+  
+  TExtendedSourceContextTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TExtendedSourceContextTypelabelsClass = Class of TExtendedSourceContextTypelabels;
+  
+  { --------------------------------------------------------------------
+    TExtendedSourceContext
+    --------------------------------------------------------------------}
+  
+  TExtendedSourceContext = Class(TGoogleBaseObject)
+  Private
+    Fcontext : TSourceContext;
+    Flabels : TExtendedSourceContextTypelabels;
+  Protected
+    //Property setters
+    Procedure Setcontext(AIndex : Integer; const AValue : TSourceContext); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TExtendedSourceContextTypelabels); virtual;
+  Public
+  Published
+    Property context : TSourceContext Index 0 Read Fcontext Write Setcontext;
+    Property labels : TExtendedSourceContextTypelabels Index 8 Read Flabels Write Setlabels;
+  end;
+  TExtendedSourceContextClass = Class of TExtendedSourceContext;
+  
+  { --------------------------------------------------------------------
+    TRegisterDebuggeeResponse
+    --------------------------------------------------------------------}
+  
+  TRegisterDebuggeeResponse = Class(TGoogleBaseObject)
+  Private
+    Fdebuggee : TDebuggee;
+  Protected
+    //Property setters
+    Procedure Setdebuggee(AIndex : Integer; const AValue : TDebuggee); virtual;
+  Public
+  Published
+    Property debuggee : TDebuggee Index 0 Read Fdebuggee Write Setdebuggee;
+  end;
+  TRegisterDebuggeeResponseClass = Class of TRegisterDebuggeeResponse;
+  
+  { --------------------------------------------------------------------
+    TListActiveBreakpointsResponse
+    --------------------------------------------------------------------}
+  
+  TListActiveBreakpointsResponse = Class(TGoogleBaseObject)
+  Private
+    Fbreakpoints : TListActiveBreakpointsResponseTypebreakpointsArray;
+    FnextWaitToken : String;
+    FwaitExpired : boolean;
+  Protected
+    //Property setters
+    Procedure Setbreakpoints(AIndex : Integer; const AValue : TListActiveBreakpointsResponseTypebreakpointsArray); virtual;
+    Procedure SetnextWaitToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwaitExpired(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property breakpoints : TListActiveBreakpointsResponseTypebreakpointsArray Index 0 Read Fbreakpoints Write Setbreakpoints;
+    Property nextWaitToken : String Index 8 Read FnextWaitToken Write SetnextWaitToken;
+    Property waitExpired : boolean Index 16 Read FwaitExpired Write SetwaitExpired;
+  end;
+  TListActiveBreakpointsResponseClass = Class of TListActiveBreakpointsResponse;
+  
+  { --------------------------------------------------------------------
+    TBreakpointTypelabels
+    --------------------------------------------------------------------}
+  
+  TBreakpointTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TBreakpointTypelabelsClass = Class of TBreakpointTypelabels;
+  
+  { --------------------------------------------------------------------
+    TBreakpoint
+    --------------------------------------------------------------------}
+  
+  TBreakpoint = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Faction : String;
+    Flocation : TSourceLocation;
+    Fcondition : String;
+    Fexpressions : TStringArray;
+    FlogMessageFormat : String;
+    FlogLevel : String;
+    FisFinalState : boolean;
+    FcreateTime : String;
+    FfinalTime : String;
+    FuserEmail : String;
+    Fstatus : TStatusMessage;
+    FstackFrames : TBreakpointTypestackFramesArray;
+    FevaluatedExpressions : TBreakpointTypeevaluatedExpressionsArray;
+    FvariableTable : TBreakpointTypevariableTableArray;
+    Flabels : TBreakpointTypelabels;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setaction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TSourceLocation); virtual;
+    Procedure Setcondition(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpressions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetlogMessageFormat(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlogLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetisFinalState(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfinalTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserEmail(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TStatusMessage); virtual;
+    Procedure SetstackFrames(AIndex : Integer; const AValue : TBreakpointTypestackFramesArray); virtual;
+    Procedure SetevaluatedExpressions(AIndex : Integer; const AValue : TBreakpointTypeevaluatedExpressionsArray); virtual;
+    Procedure SetvariableTable(AIndex : Integer; const AValue : TBreakpointTypevariableTableArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TBreakpointTypelabels); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property action : String Index 8 Read Faction Write Setaction;
+    Property location : TSourceLocation Index 16 Read Flocation Write Setlocation;
+    Property condition : String Index 24 Read Fcondition Write Setcondition;
+    Property expressions : TStringArray Index 32 Read Fexpressions Write Setexpressions;
+    Property logMessageFormat : String Index 40 Read FlogMessageFormat Write SetlogMessageFormat;
+    Property logLevel : String Index 48 Read FlogLevel Write SetlogLevel;
+    Property isFinalState : boolean Index 56 Read FisFinalState Write SetisFinalState;
+    Property createTime : String Index 64 Read FcreateTime Write SetcreateTime;
+    Property finalTime : String Index 72 Read FfinalTime Write SetfinalTime;
+    Property userEmail : String Index 80 Read FuserEmail Write SetuserEmail;
+    Property status : TStatusMessage Index 88 Read Fstatus Write Setstatus;
+    Property stackFrames : TBreakpointTypestackFramesArray Index 96 Read FstackFrames Write SetstackFrames;
+    Property evaluatedExpressions : TBreakpointTypeevaluatedExpressionsArray Index 104 Read FevaluatedExpressions Write SetevaluatedExpressions;
+    Property variableTable : TBreakpointTypevariableTableArray Index 112 Read FvariableTable Write SetvariableTable;
+    Property labels : TBreakpointTypelabels Index 120 Read Flabels Write Setlabels;
+  end;
+  TBreakpointClass = Class of TBreakpoint;
+  
+  { --------------------------------------------------------------------
+    TSourceLocation
+    --------------------------------------------------------------------}
+  
+  TSourceLocation = Class(TGoogleBaseObject)
+  Private
+    Fpath : String;
+    Fline : integer;
+  Protected
+    //Property setters
+    Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setline(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property path : String Index 0 Read Fpath Write Setpath;
+    Property line : integer Index 8 Read Fline Write Setline;
+  end;
+  TSourceLocationClass = Class of TSourceLocation;
+  
+  { --------------------------------------------------------------------
+    TStackFrame
+    --------------------------------------------------------------------}
+  
+  TStackFrame = Class(TGoogleBaseObject)
+  Private
+    F_function : String;
+    Flocation : TSourceLocation;
+    Farguments : TStackFrameTypeargumentsArray;
+    Flocals : TStackFrameTypelocalsArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_function(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TSourceLocation); virtual;
+    Procedure Setarguments(AIndex : Integer; const AValue : TStackFrameTypeargumentsArray); virtual;
+    Procedure Setlocals(AIndex : Integer; const AValue : TStackFrameTypelocalsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property _function : String Index 0 Read F_function Write Set_function;
+    Property location : TSourceLocation Index 8 Read Flocation Write Setlocation;
+    Property arguments : TStackFrameTypeargumentsArray Index 16 Read Farguments Write Setarguments;
+    Property locals : TStackFrameTypelocalsArray Index 24 Read Flocals Write Setlocals;
+  end;
+  TStackFrameClass = Class of TStackFrame;
+  
+  { --------------------------------------------------------------------
+    TVariable
+    --------------------------------------------------------------------}
+  
+  TVariable = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fvalue : String;
+    F_type : String;
+    Fmembers : TVariableTypemembersArray;
+    FvarTableIndex : integer;
+    Fstatus : TStatusMessage;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmembers(AIndex : Integer; const AValue : TVariableTypemembersArray); virtual;
+    Procedure SetvarTableIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TStatusMessage); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property members : TVariableTypemembersArray Index 24 Read Fmembers Write Setmembers;
+    Property varTableIndex : integer Index 32 Read FvarTableIndex Write SetvarTableIndex;
+    Property status : TStatusMessage Index 40 Read Fstatus Write Setstatus;
+  end;
+  TVariableClass = Class of TVariable;
+  
+  { --------------------------------------------------------------------
+    TUpdateActiveBreakpointRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateActiveBreakpointRequest = Class(TGoogleBaseObject)
+  Private
+    Fbreakpoint : TBreakpoint;
+  Protected
+    //Property setters
+    Procedure Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); virtual;
+  Public
+  Published
+    Property breakpoint : TBreakpoint Index 0 Read Fbreakpoint Write Setbreakpoint;
+  end;
+  TUpdateActiveBreakpointRequestClass = Class of TUpdateActiveBreakpointRequest;
+  
+  { --------------------------------------------------------------------
+    TUpdateActiveBreakpointResponse
+    --------------------------------------------------------------------}
+  
+  TUpdateActiveBreakpointResponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TUpdateActiveBreakpointResponseClass = Class of TUpdateActiveBreakpointResponse;
+  
+  { --------------------------------------------------------------------
+    TSetBreakpointResponse
+    --------------------------------------------------------------------}
+  
+  TSetBreakpointResponse = Class(TGoogleBaseObject)
+  Private
+    Fbreakpoint : TBreakpoint;
+  Protected
+    //Property setters
+    Procedure Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); virtual;
+  Public
+  Published
+    Property breakpoint : TBreakpoint Index 0 Read Fbreakpoint Write Setbreakpoint;
+  end;
+  TSetBreakpointResponseClass = Class of TSetBreakpointResponse;
+  
+  { --------------------------------------------------------------------
+    TGetBreakpointResponse
+    --------------------------------------------------------------------}
+  
+  TGetBreakpointResponse = Class(TGoogleBaseObject)
+  Private
+    Fbreakpoint : TBreakpoint;
+  Protected
+    //Property setters
+    Procedure Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); virtual;
+  Public
+  Published
+    Property breakpoint : TBreakpoint Index 0 Read Fbreakpoint Write Setbreakpoint;
+  end;
+  TGetBreakpointResponseClass = Class of TGetBreakpointResponse;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListBreakpointsResponse
+    --------------------------------------------------------------------}
+  
+  TListBreakpointsResponse = Class(TGoogleBaseObject)
+  Private
+    Fbreakpoints : TListBreakpointsResponseTypebreakpointsArray;
+    FnextWaitToken : String;
+  Protected
+    //Property setters
+    Procedure Setbreakpoints(AIndex : Integer; const AValue : TListBreakpointsResponseTypebreakpointsArray); virtual;
+    Procedure SetnextWaitToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property breakpoints : TListBreakpointsResponseTypebreakpointsArray Index 0 Read Fbreakpoints Write Setbreakpoints;
+    Property nextWaitToken : String Index 8 Read FnextWaitToken Write SetnextWaitToken;
+  end;
+  TListBreakpointsResponseClass = Class of TListBreakpointsResponse;
+  
+  { --------------------------------------------------------------------
+    TListDebuggeesResponse
+    --------------------------------------------------------------------}
+  
+  TListDebuggeesResponse = Class(TGoogleBaseObject)
+  Private
+    Fdebuggees : TListDebuggeesResponseTypedebuggeesArray;
+  Protected
+    //Property setters
+    Procedure Setdebuggees(AIndex : Integer; const AValue : TListDebuggeesResponseTypedebuggeesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property debuggees : TListDebuggeesResponseTypedebuggeesArray Index 0 Read Fdebuggees Write Setdebuggees;
+  end;
+  TListDebuggeesResponseClass = Class of TListDebuggeesResponse;
+  
+  { --------------------------------------------------------------------
+    TControllerDebuggeesBreakpointsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TControllerDebuggeesBreakpointsResource, method List
+  
+  TControllerDebuggeesBreakpointsListOptions = Record
+    waitToken : String;
+    successOnTimeout : boolean;
+  end;
+  
+  TControllerDebuggeesBreakpointsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(debuggeeId: string; AQuery : string  = '') : TListActiveBreakpointsResponse;
+    Function List(debuggeeId: string; AQuery : TControllerDebuggeesBreakpointslistOptions) : TListActiveBreakpointsResponse;
+    Function Update(debuggeeId: string; id: string; aUpdateActiveBreakpointRequest : TUpdateActiveBreakpointRequest) : TUpdateActiveBreakpointResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TControllerDebuggeesResource
+    --------------------------------------------------------------------}
+  
+  TControllerDebuggeesResource = Class(TGoogleResource)
+  Private
+    FBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+    Function GetBreakpointsInstance : TControllerDebuggeesBreakpointsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Register(aRegisterDebuggeeRequest : TRegisterDebuggeeRequest) : TRegisterDebuggeeResponse;
+    Function CreateBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateBreakpointsResource : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Property BreakpointsResource : TControllerDebuggeesBreakpointsResource Read GetBreakpointsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TControllerResource
+    --------------------------------------------------------------------}
+  
+  TControllerResource = Class(TGoogleResource)
+  Private
+    FDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+    FDebuggeesInstance : TControllerDebuggeesResource;
+    Function GetDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;virtual;
+    Function GetDebuggeesInstance : TControllerDebuggeesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateDebuggeesBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggeesResource(AOwner : TComponent) : TControllerDebuggeesResource;virtual;overload;
+    Function CreateDebuggeesResource : TControllerDebuggeesResource;virtual;overload;
+    Property DebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource Read GetDebuggeesBreakpointsInstance;
+    Property DebuggeesResource : TControllerDebuggeesResource Read GetDebuggeesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TDebuggerDebuggeesBreakpointsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TDebuggerDebuggeesBreakpointsResource, method Set
+  
+  TDebuggerDebuggeesBreakpointsSetOptions = Record
+    clientVersion : String;
+  end;
+  
+  
+  //Optional query Options for TDebuggerDebuggeesBreakpointsResource, method Get
+  
+  TDebuggerDebuggeesBreakpointsGetOptions = Record
+    clientVersion : String;
+  end;
+  
+  
+  //Optional query Options for TDebuggerDebuggeesBreakpointsResource, method Delete
+  
+  TDebuggerDebuggeesBreakpointsDeleteOptions = Record
+    clientVersion : String;
+  end;
+  
+  
+  //Optional query Options for TDebuggerDebuggeesBreakpointsResource, method List
+  
+  TDebuggerDebuggeesBreakpointsListOptions = Record
+    includeAllUsers : boolean;
+    includeInactive : boolean;
+    actionvalue : String;
+    stripResults : boolean;
+    waitToken : String;
+    clientVersion : String;
+  end;
+  
+  TDebuggerDebuggeesBreakpointsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function _set(debuggeeId: string; aBreakpoint : TBreakpoint; AQuery : string  = '') : TSetBreakpointResponse;
+    Function _set(debuggeeId: string; aBreakpoint : TBreakpoint; AQuery : TDebuggerDebuggeesBreakpointssetOptions) : TSetBreakpointResponse;
+    Function Get(debuggeeId: string; breakpointId: string; AQuery : string  = '') : TGetBreakpointResponse;
+    Function Get(debuggeeId: string; breakpointId: string; AQuery : TDebuggerDebuggeesBreakpointsgetOptions) : TGetBreakpointResponse;
+    Function Delete(debuggeeId: string; breakpointId: string; AQuery : string  = '') : TEmpty;
+    Function Delete(debuggeeId: string; breakpointId: string; AQuery : TDebuggerDebuggeesBreakpointsdeleteOptions) : TEmpty;
+    Function List(debuggeeId: string; AQuery : string  = '') : TListBreakpointsResponse;
+    Function List(debuggeeId: string; AQuery : TDebuggerDebuggeesBreakpointslistOptions) : TListBreakpointsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TDebuggerDebuggeesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TDebuggerDebuggeesResource, method List
+  
+  TDebuggerDebuggeesListOptions = Record
+    project : String;
+    includeInactive : boolean;
+    clientVersion : String;
+  end;
+  
+  TDebuggerDebuggeesResource = Class(TGoogleResource)
+  Private
+    FBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+    Function GetBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(AQuery : string  = '') : TListDebuggeesResponse;
+    Function List(AQuery : TDebuggerDebuggeeslistOptions) : TListDebuggeesResponse;
+    Function CreateBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Property BreakpointsResource : TDebuggerDebuggeesBreakpointsResource Read GetBreakpointsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TDebuggerResource
+    --------------------------------------------------------------------}
+  
+  TDebuggerResource = Class(TGoogleResource)
+  Private
+    FDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+    FDebuggeesInstance : TDebuggerDebuggeesResource;
+    Function GetDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;virtual;
+    Function GetDebuggeesInstance : TDebuggerDebuggeesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateDebuggeesBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggeesResource(AOwner : TComponent) : TDebuggerDebuggeesResource;virtual;overload;
+    Function CreateDebuggeesResource : TDebuggerDebuggeesResource;virtual;overload;
+    Property DebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource Read GetDebuggeesBreakpointsInstance;
+    Property DebuggeesResource : TDebuggerDebuggeesResource Read GetDebuggeesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TClouddebuggerAPI
+    --------------------------------------------------------------------}
+  
+  TClouddebuggerAPI = Class(TGoogleAPI)
+  Private
+    FControllerDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+    FControllerDebuggeesInstance : TControllerDebuggeesResource;
+    FControllerInstance : TControllerResource;
+    FDebuggerDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+    FDebuggerDebuggeesInstance : TDebuggerDebuggeesResource;
+    FDebuggerInstance : TDebuggerResource;
+    Function GetControllerDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;virtual;
+    Function GetControllerDebuggeesInstance : TControllerDebuggeesResource;virtual;
+    Function GetControllerInstance : TControllerResource;virtual;
+    Function GetDebuggerDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;virtual;
+    Function GetDebuggerDebuggeesInstance : TDebuggerDebuggeesResource;virtual;
+    Function GetDebuggerInstance : TDebuggerResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateControllerDebuggeesBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateControllerDebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateControllerDebuggeesResource(AOwner : TComponent) : TControllerDebuggeesResource;virtual;overload;
+    Function CreateControllerDebuggeesResource : TControllerDebuggeesResource;virtual;overload;
+    Function CreateControllerResource(AOwner : TComponent) : TControllerResource;virtual;overload;
+    Function CreateControllerResource : TControllerResource;virtual;overload;
+    Function CreateDebuggerDebuggeesBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggerDebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;virtual;overload;
+    Function CreateDebuggerDebuggeesResource(AOwner : TComponent) : TDebuggerDebuggeesResource;virtual;overload;
+    Function CreateDebuggerDebuggeesResource : TDebuggerDebuggeesResource;virtual;overload;
+    Function CreateDebuggerResource(AOwner : TComponent) : TDebuggerResource;virtual;overload;
+    Function CreateDebuggerResource : TDebuggerResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ControllerDebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource Read GetControllerDebuggeesBreakpointsInstance;
+    Property ControllerDebuggeesResource : TControllerDebuggeesResource Read GetControllerDebuggeesInstance;
+    Property ControllerResource : TControllerResource Read GetControllerInstance;
+    Property DebuggerDebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource Read GetDebuggerDebuggeesBreakpointsInstance;
+    Property DebuggerDebuggeesResource : TDebuggerDebuggeesResource Read GetDebuggerDebuggeesInstance;
+    Property DebuggerResource : TDebuggerResource Read GetDebuggerInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TRegisterDebuggeeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TRegisterDebuggeeRequest.Setdebuggee(AIndex : Integer; const AValue : TDebuggee); 
+
+begin
+  If (Fdebuggee=AValue) then exit;
+  Fdebuggee:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDebuggeeTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TDebuggeeTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDebuggee
+  --------------------------------------------------------------------}
+
+
+Procedure TDebuggee.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.Setproject(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fproject=AValue) then exit;
+  Fproject:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.Setuniquifier(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Funiquifier=AValue) then exit;
+  Funiquifier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.SetisInactive(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisInactive=AValue) then exit;
+  FisInactive:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.SetagentVersion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FagentVersion=AValue) then exit;
+  FagentVersion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.SetisDisabled(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisDisabled=AValue) then exit;
+  FisDisabled:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.Setstatus(AIndex : Integer; const AValue : TStatusMessage); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.SetsourceContexts(AIndex : Integer; const AValue : TDebuggeeTypesourceContextsArray); 
+
+begin
+  If (FsourceContexts=AValue) then exit;
+  FsourceContexts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.SetextSourceContexts(AIndex : Integer; const AValue : TDebuggeeTypeextSourceContextsArray); 
+
+begin
+  If (FextSourceContexts=AValue) then exit;
+  FextSourceContexts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebuggee.Setlabels(AIndex : Integer; const AValue : TDebuggeeTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDebuggee.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sourcecontexts' : SetLength(FsourceContexts,ALength);
+  'extsourcecontexts' : SetLength(FextSourceContexts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStatusMessage
+  --------------------------------------------------------------------}
+
+
+Procedure TStatusMessage.SetisError(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisError=AValue) then exit;
+  FisError:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatusMessage.SetrefersTo(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrefersTo=AValue) then exit;
+  FrefersTo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatusMessage.Setdescription(AIndex : Integer; const AValue : TFormatMessage); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFormatMessage
+  --------------------------------------------------------------------}
+
+
+Procedure TFormatMessage.Setformat(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fformat=AValue) then exit;
+  Fformat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFormatMessage.Setparameters(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fparameters=AValue) then exit;
+  Fparameters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFormatMessage.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'parameters' : SetLength(Fparameters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceContext.SetcloudRepo(AIndex : Integer; const AValue : TCloudRepoSourceContext); 
+
+begin
+  If (FcloudRepo=AValue) then exit;
+  FcloudRepo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceContext.SetcloudWorkspace(AIndex : Integer; const AValue : TCloudWorkspaceSourceContext); 
+
+begin
+  If (FcloudWorkspace=AValue) then exit;
+  FcloudWorkspace:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceContext.Setgerrit(AIndex : Integer; const AValue : TGerritSourceContext); 
+
+begin
+  If (Fgerrit=AValue) then exit;
+  Fgerrit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceContext.Setgit(AIndex : Integer; const AValue : TGitSourceContext); 
+
+begin
+  If (Fgit=AValue) then exit;
+  Fgit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCloudRepoSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TCloudRepoSourceContext.SetrepoId(AIndex : Integer; const AValue : TRepoId); 
+
+begin
+  If (FrepoId=AValue) then exit;
+  FrepoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCloudRepoSourceContext.SetrevisionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrevisionId=AValue) then exit;
+  FrevisionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCloudRepoSourceContext.SetaliasName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaliasName=AValue) then exit;
+  FaliasName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCloudRepoSourceContext.SetaliasContext(AIndex : Integer; const AValue : TAliasContext); 
+
+begin
+  If (FaliasContext=AValue) then exit;
+  FaliasContext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRepoId
+  --------------------------------------------------------------------}
+
+
+Procedure TRepoId.SetprojectRepoId(AIndex : Integer; const AValue : TProjectRepoId); 
+
+begin
+  If (FprojectRepoId=AValue) then exit;
+  FprojectRepoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRepoId.Setuid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fuid=AValue) then exit;
+  Fuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectRepoId
+  --------------------------------------------------------------------}
+
+
+Procedure TProjectRepoId.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProjectRepoId.SetrepoName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrepoName=AValue) then exit;
+  FrepoName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAliasContext
+  --------------------------------------------------------------------}
+
+
+Procedure TAliasContext.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAliasContext.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCloudWorkspaceSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TCloudWorkspaceSourceContext.SetworkspaceId(AIndex : Integer; const AValue : TCloudWorkspaceId); 
+
+begin
+  If (FworkspaceId=AValue) then exit;
+  FworkspaceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCloudWorkspaceSourceContext.SetsnapshotId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsnapshotId=AValue) then exit;
+  FsnapshotId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCloudWorkspaceId
+  --------------------------------------------------------------------}
+
+
+Procedure TCloudWorkspaceId.SetrepoId(AIndex : Integer; const AValue : TRepoId); 
+
+begin
+  If (FrepoId=AValue) then exit;
+  FrepoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCloudWorkspaceId.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGerritSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TGerritSourceContext.SethostUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhostUri=AValue) then exit;
+  FhostUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGerritSourceContext.SetgerritProject(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgerritProject=AValue) then exit;
+  FgerritProject:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGerritSourceContext.SetrevisionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrevisionId=AValue) then exit;
+  FrevisionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGerritSourceContext.SetaliasName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaliasName=AValue) then exit;
+  FaliasName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGerritSourceContext.SetaliasContext(AIndex : Integer; const AValue : TAliasContext); 
+
+begin
+  If (FaliasContext=AValue) then exit;
+  FaliasContext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGitSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TGitSourceContext.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGitSourceContext.SetrevisionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrevisionId=AValue) then exit;
+  FrevisionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TExtendedSourceContextTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TExtendedSourceContextTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TExtendedSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TExtendedSourceContext.Setcontext(AIndex : Integer; const AValue : TSourceContext); 
+
+begin
+  If (Fcontext=AValue) then exit;
+  Fcontext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExtendedSourceContext.Setlabels(AIndex : Integer; const AValue : TExtendedSourceContextTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRegisterDebuggeeResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TRegisterDebuggeeResponse.Setdebuggee(AIndex : Integer; const AValue : TDebuggee); 
+
+begin
+  If (Fdebuggee=AValue) then exit;
+  Fdebuggee:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListActiveBreakpointsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListActiveBreakpointsResponse.Setbreakpoints(AIndex : Integer; const AValue : TListActiveBreakpointsResponseTypebreakpointsArray); 
+
+begin
+  If (Fbreakpoints=AValue) then exit;
+  Fbreakpoints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListActiveBreakpointsResponse.SetnextWaitToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextWaitToken=AValue) then exit;
+  FnextWaitToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListActiveBreakpointsResponse.SetwaitExpired(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FwaitExpired=AValue) then exit;
+  FwaitExpired:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListActiveBreakpointsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'breakpoints' : SetLength(Fbreakpoints,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBreakpointTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TBreakpointTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBreakpoint
+  --------------------------------------------------------------------}
+
+
+Procedure TBreakpoint.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setaction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faction=AValue) then exit;
+  Faction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setlocation(AIndex : Integer; const AValue : TSourceLocation); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setcondition(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcondition=AValue) then exit;
+  Fcondition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setexpressions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fexpressions=AValue) then exit;
+  Fexpressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetlogMessageFormat(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlogMessageFormat=AValue) then exit;
+  FlogMessageFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetlogLevel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlogLevel=AValue) then exit;
+  FlogLevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetisFinalState(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisFinalState=AValue) then exit;
+  FisFinalState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetfinalTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfinalTime=AValue) then exit;
+  FfinalTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetuserEmail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserEmail=AValue) then exit;
+  FuserEmail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setstatus(AIndex : Integer; const AValue : TStatusMessage); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetstackFrames(AIndex : Integer; const AValue : TBreakpointTypestackFramesArray); 
+
+begin
+  If (FstackFrames=AValue) then exit;
+  FstackFrames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetevaluatedExpressions(AIndex : Integer; const AValue : TBreakpointTypeevaluatedExpressionsArray); 
+
+begin
+  If (FevaluatedExpressions=AValue) then exit;
+  FevaluatedExpressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.SetvariableTable(AIndex : Integer; const AValue : TBreakpointTypevariableTableArray); 
+
+begin
+  If (FvariableTable=AValue) then exit;
+  FvariableTable:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBreakpoint.Setlabels(AIndex : Integer; const AValue : TBreakpointTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBreakpoint.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'expressions' : SetLength(Fexpressions,ALength);
+  'stackframes' : SetLength(FstackFrames,ALength);
+  'evaluatedexpressions' : SetLength(FevaluatedExpressions,ALength);
+  'variabletable' : SetLength(FvariableTable,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourceLocation
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceLocation.Setpath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpath=AValue) then exit;
+  Fpath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceLocation.Setline(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fline=AValue) then exit;
+  Fline:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStackFrame
+  --------------------------------------------------------------------}
+
+
+Procedure TStackFrame.Set_function(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_function=AValue) then exit;
+  F_function:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStackFrame.Setlocation(AIndex : Integer; const AValue : TSourceLocation); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStackFrame.Setarguments(AIndex : Integer; const AValue : TStackFrameTypeargumentsArray); 
+
+begin
+  If (Farguments=AValue) then exit;
+  Farguments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStackFrame.Setlocals(AIndex : Integer; const AValue : TStackFrameTypelocalsArray); 
+
+begin
+  If (Flocals=AValue) then exit;
+  Flocals:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TStackFrame.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_function' : Result:='function';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStackFrame.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'arguments' : SetLength(Farguments,ALength);
+  'locals' : SetLength(Flocals,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TVariable
+  --------------------------------------------------------------------}
+
+
+Procedure TVariable.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Setmembers(AIndex : Integer; const AValue : TVariableTypemembersArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.SetvarTableIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FvarTableIndex=AValue) then exit;
+  FvarTableIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Setstatus(AIndex : Integer; const AValue : TStatusMessage); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TVariable.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TVariable.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateActiveBreakpointRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateActiveBreakpointRequest.Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); 
+
+begin
+  If (Fbreakpoint=AValue) then exit;
+  Fbreakpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateActiveBreakpointResponse
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSetBreakpointResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSetBreakpointResponse.Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); 
+
+begin
+  If (Fbreakpoint=AValue) then exit;
+  Fbreakpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetBreakpointResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TGetBreakpointResponse.Setbreakpoint(AIndex : Integer; const AValue : TBreakpoint); 
+
+begin
+  If (Fbreakpoint=AValue) then exit;
+  Fbreakpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListBreakpointsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListBreakpointsResponse.Setbreakpoints(AIndex : Integer; const AValue : TListBreakpointsResponseTypebreakpointsArray); 
+
+begin
+  If (Fbreakpoints=AValue) then exit;
+  Fbreakpoints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListBreakpointsResponse.SetnextWaitToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextWaitToken=AValue) then exit;
+  FnextWaitToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListBreakpointsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'breakpoints' : SetLength(Fbreakpoints,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListDebuggeesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListDebuggeesResponse.Setdebuggees(AIndex : Integer; const AValue : TListDebuggeesResponseTypedebuggeesArray); 
+
+begin
+  If (Fdebuggees=AValue) then exit;
+  Fdebuggees:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListDebuggeesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'debuggees' : SetLength(Fdebuggees,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TControllerDebuggeesBreakpointsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TControllerDebuggeesBreakpointsResource.ResourceName : String;
+
+begin
+  Result:='breakpoints';
+end;
+
+Class Function TControllerDebuggeesBreakpointsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+Function TControllerDebuggeesBreakpointsResource.List(debuggeeId: string; AQuery : string = '') : TListActiveBreakpointsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/controller/debuggees/{debuggeeId}/breakpoints';
+  _Methodid   = 'clouddebugger.controller.debuggees.breakpoints.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListActiveBreakpointsResponse) as TListActiveBreakpointsResponse;
+end;
+
+
+Function TControllerDebuggeesBreakpointsResource.List(debuggeeId: string; AQuery : TControllerDebuggeesBreakpointslistOptions) : TListActiveBreakpointsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'waitToken',AQuery.waitToken);
+  AddToQuery(_Q,'successOnTimeout',AQuery.successOnTimeout);
+  Result:=List(debuggeeId,_Q);
+end;
+
+Function TControllerDebuggeesBreakpointsResource.Update(debuggeeId: string; id: string; aUpdateActiveBreakpointRequest : TUpdateActiveBreakpointRequest) : TUpdateActiveBreakpointResponse;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v2/controller/debuggees/{debuggeeId}/breakpoints/{id}';
+  _Methodid   = 'clouddebugger.controller.debuggees.breakpoints.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId,'id',id]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aUpdateActiveBreakpointRequest,TUpdateActiveBreakpointResponse) as TUpdateActiveBreakpointResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TControllerDebuggeesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TControllerDebuggeesResource.ResourceName : String;
+
+begin
+  Result:='debuggees';
+end;
+
+Class Function TControllerDebuggeesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+Function TControllerDebuggeesResource.Register(aRegisterDebuggeeRequest : TRegisterDebuggeeRequest) : TRegisterDebuggeeResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2/controller/debuggees/register';
+  _Methodid   = 'clouddebugger.controller.debuggees.register';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aRegisterDebuggeeRequest,TRegisterDebuggeeResponse) as TRegisterDebuggeeResponse;
+end;
+
+
+
+Function TControllerDebuggeesResource.GetBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+
+begin
+  if (FBreakpointsInstance=Nil) then
+    FBreakpointsInstance:=CreateBreakpointsResource;
+  Result:=FBreakpointsInstance;
+end;
+
+Function TControllerDebuggeesResource.CreateBreakpointsResource : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateBreakpointsResource(Self);
+end;
+
+
+Function TControllerDebuggeesResource.CreateBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TControllerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TControllerResource
+  --------------------------------------------------------------------}
+
+
+Class Function TControllerResource.ResourceName : String;
+
+begin
+  Result:='controller';
+end;
+
+Class Function TControllerResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+
+
+Function TControllerResource.GetDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+
+begin
+  if (FDebuggeesBreakpointsInstance=Nil) then
+    FDebuggeesBreakpointsInstance:=CreateDebuggeesBreakpointsResource;
+  Result:=FDebuggeesBreakpointsInstance;
+end;
+
+Function TControllerResource.CreateDebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateDebuggeesBreakpointsResource(Self);
+end;
+
+
+Function TControllerResource.CreateDebuggeesBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TControllerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TControllerResource.GetDebuggeesInstance : TControllerDebuggeesResource;
+
+begin
+  if (FDebuggeesInstance=Nil) then
+    FDebuggeesInstance:=CreateDebuggeesResource;
+  Result:=FDebuggeesInstance;
+end;
+
+Function TControllerResource.CreateDebuggeesResource : TControllerDebuggeesResource;
+
+begin
+  Result:=CreateDebuggeesResource(Self);
+end;
+
+
+Function TControllerResource.CreateDebuggeesResource(AOwner : TComponent) : TControllerDebuggeesResource;
+
+begin
+  Result:=TControllerDebuggeesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDebuggerDebuggeesBreakpointsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TDebuggerDebuggeesBreakpointsResource.ResourceName : String;
+
+begin
+  Result:='breakpoints';
+end;
+
+Class Function TDebuggerDebuggeesBreakpointsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+Function TDebuggerDebuggeesBreakpointsResource._set(debuggeeId: string; aBreakpoint : TBreakpoint; AQuery : string = '') : TSetBreakpointResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2/debugger/debuggees/{debuggeeId}/breakpoints/set';
+  _Methodid   = 'clouddebugger.debugger.debuggees.breakpoints.set';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aBreakpoint,TSetBreakpointResponse) as TSetBreakpointResponse;
+end;
+
+
+Function TDebuggerDebuggeesBreakpointsResource._set(debuggeeId: string; aBreakpoint : TBreakpoint; AQuery : TDebuggerDebuggeesBreakpointssetOptions) : TSetBreakpointResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'clientVersion',AQuery.clientVersion);
+  Result:=_set(debuggeeId,aBreakpoint,_Q);
+end;
+
+Function TDebuggerDebuggeesBreakpointsResource.Get(debuggeeId: string; breakpointId: string; AQuery : string = '') : TGetBreakpointResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}';
+  _Methodid   = 'clouddebugger.debugger.debuggees.breakpoints.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId,'breakpointId',breakpointId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TGetBreakpointResponse) as TGetBreakpointResponse;
+end;
+
+
+Function TDebuggerDebuggeesBreakpointsResource.Get(debuggeeId: string; breakpointId: string; AQuery : TDebuggerDebuggeesBreakpointsgetOptions) : TGetBreakpointResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'clientVersion',AQuery.clientVersion);
+  Result:=Get(debuggeeId,breakpointId,_Q);
+end;
+
+Function TDebuggerDebuggeesBreakpointsResource.Delete(debuggeeId: string; breakpointId: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}';
+  _Methodid   = 'clouddebugger.debugger.debuggees.breakpoints.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId,'breakpointId',breakpointId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TDebuggerDebuggeesBreakpointsResource.Delete(debuggeeId: string; breakpointId: string; AQuery : TDebuggerDebuggeesBreakpointsdeleteOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'clientVersion',AQuery.clientVersion);
+  Result:=Delete(debuggeeId,breakpointId,_Q);
+end;
+
+Function TDebuggerDebuggeesBreakpointsResource.List(debuggeeId: string; AQuery : string = '') : TListBreakpointsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/debugger/debuggees/{debuggeeId}/breakpoints';
+  _Methodid   = 'clouddebugger.debugger.debuggees.breakpoints.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['debuggeeId',debuggeeId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListBreakpointsResponse) as TListBreakpointsResponse;
+end;
+
+
+Function TDebuggerDebuggeesBreakpointsResource.List(debuggeeId: string; AQuery : TDebuggerDebuggeesBreakpointslistOptions) : TListBreakpointsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'includeAllUsers',AQuery.includeAllUsers);
+  AddToQuery(_Q,'includeInactive',AQuery.includeInactive);
+  AddToQuery(_Q,'action.value',AQuery.actionvalue);
+  AddToQuery(_Q,'stripResults',AQuery.stripResults);
+  AddToQuery(_Q,'waitToken',AQuery.waitToken);
+  AddToQuery(_Q,'clientVersion',AQuery.clientVersion);
+  Result:=List(debuggeeId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDebuggerDebuggeesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TDebuggerDebuggeesResource.ResourceName : String;
+
+begin
+  Result:='debuggees';
+end;
+
+Class Function TDebuggerDebuggeesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+Function TDebuggerDebuggeesResource.List(AQuery : string = '') : TListDebuggeesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/debugger/debuggees';
+  _Methodid   = 'clouddebugger.debugger.debuggees.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListDebuggeesResponse) as TListDebuggeesResponse;
+end;
+
+
+Function TDebuggerDebuggeesResource.List(AQuery : TDebuggerDebuggeeslistOptions) : TListDebuggeesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'project',AQuery.project);
+  AddToQuery(_Q,'includeInactive',AQuery.includeInactive);
+  AddToQuery(_Q,'clientVersion',AQuery.clientVersion);
+  Result:=List(_Q);
+end;
+
+
+
+Function TDebuggerDebuggeesResource.GetBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  if (FBreakpointsInstance=Nil) then
+    FBreakpointsInstance:=CreateBreakpointsResource;
+  Result:=FBreakpointsInstance;
+end;
+
+Function TDebuggerDebuggeesResource.CreateBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateBreakpointsResource(Self);
+end;
+
+
+Function TDebuggerDebuggeesResource.CreateBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TDebuggerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDebuggerResource
+  --------------------------------------------------------------------}
+
+
+Class Function TDebuggerResource.ResourceName : String;
+
+begin
+  Result:='debugger';
+end;
+
+Class Function TDebuggerResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouddebuggerAPI;
+end;
+
+
+
+Function TDebuggerResource.GetDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  if (FDebuggeesBreakpointsInstance=Nil) then
+    FDebuggeesBreakpointsInstance:=CreateDebuggeesBreakpointsResource;
+  Result:=FDebuggeesBreakpointsInstance;
+end;
+
+Function TDebuggerResource.CreateDebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateDebuggeesBreakpointsResource(Self);
+end;
+
+
+Function TDebuggerResource.CreateDebuggeesBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TDebuggerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TDebuggerResource.GetDebuggeesInstance : TDebuggerDebuggeesResource;
+
+begin
+  if (FDebuggeesInstance=Nil) then
+    FDebuggeesInstance:=CreateDebuggeesResource;
+  Result:=FDebuggeesInstance;
+end;
+
+Function TDebuggerResource.CreateDebuggeesResource : TDebuggerDebuggeesResource;
+
+begin
+  Result:=CreateDebuggeesResource(Self);
+end;
+
+
+Function TDebuggerResource.CreateDebuggeesResource(AOwner : TComponent) : TDebuggerDebuggeesResource;
+
+begin
+  Result:=TDebuggerDebuggeesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TClouddebuggerAPI
+  --------------------------------------------------------------------}
+
+Class Function TClouddebuggerAPI.APIName : String;
+
+begin
+  Result:='clouddebugger';
+end;
+
+Class Function TClouddebuggerAPI.APIVersion : String;
+
+begin
+  Result:='v2';
+end;
+
+Class Function TClouddebuggerAPI.APIRevision : String;
+
+begin
+  Result:='20160309';
+end;
+
+Class Function TClouddebuggerAPI.APIID : String;
+
+begin
+  Result:='clouddebugger:v2';
+end;
+
+Class Function TClouddebuggerAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Debugger API';
+end;
+
+Class Function TClouddebuggerAPI.APIDescription : String;
+
+begin
+  Result:='Examines the call stack and variables of a running application without stopping or slowing it down.';
+end;
+
+Class Function TClouddebuggerAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TClouddebuggerAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TClouddebuggerAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TClouddebuggerAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TClouddebuggerAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/tools/cloud-debugger';
+end;
+
+Class Function TClouddebuggerAPI.APIrootUrl : string;
+
+begin
+  Result:='https://clouddebugger.googleapis.com/';
+end;
+
+Class Function TClouddebuggerAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClouddebuggerAPI.APIbaseURL : String;
+
+begin
+  Result:='https://clouddebugger.googleapis.com/';
+end;
+
+Class Function TClouddebuggerAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TClouddebuggerAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClouddebuggerAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TClouddebuggerAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,3);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/cloud_debugger';
+  Result[1].Description:='Manage cloud debugger';
+  Result[2].Name:='https://www.googleapis.com/auth/cloud_debugletcontroller';
+  Result[2].Description:='Manage active breakpoints in cloud debugger';
+  
+end;
+
+Class Function TClouddebuggerAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TClouddebuggerAPI.RegisterAPIResources;
+
+begin
+  TRegisterDebuggeeRequest.RegisterObject;
+  TDebuggeeTypelabels.RegisterObject;
+  TDebuggee.RegisterObject;
+  TStatusMessage.RegisterObject;
+  TFormatMessage.RegisterObject;
+  TSourceContext.RegisterObject;
+  TCloudRepoSourceContext.RegisterObject;
+  TRepoId.RegisterObject;
+  TProjectRepoId.RegisterObject;
+  TAliasContext.RegisterObject;
+  TCloudWorkspaceSourceContext.RegisterObject;
+  TCloudWorkspaceId.RegisterObject;
+  TGerritSourceContext.RegisterObject;
+  TGitSourceContext.RegisterObject;
+  TExtendedSourceContextTypelabels.RegisterObject;
+  TExtendedSourceContext.RegisterObject;
+  TRegisterDebuggeeResponse.RegisterObject;
+  TListActiveBreakpointsResponse.RegisterObject;
+  TBreakpointTypelabels.RegisterObject;
+  TBreakpoint.RegisterObject;
+  TSourceLocation.RegisterObject;
+  TStackFrame.RegisterObject;
+  TVariable.RegisterObject;
+  TUpdateActiveBreakpointRequest.RegisterObject;
+  TUpdateActiveBreakpointResponse.RegisterObject;
+  TSetBreakpointResponse.RegisterObject;
+  TGetBreakpointResponse.RegisterObject;
+  TEmpty.RegisterObject;
+  TListBreakpointsResponse.RegisterObject;
+  TListDebuggeesResponse.RegisterObject;
+end;
+
+
+Function TClouddebuggerAPI.GetControllerDebuggeesBreakpointsInstance : TControllerDebuggeesBreakpointsResource;
+
+begin
+  if (FControllerDebuggeesBreakpointsInstance=Nil) then
+    FControllerDebuggeesBreakpointsInstance:=CreateControllerDebuggeesBreakpointsResource;
+  Result:=FControllerDebuggeesBreakpointsInstance;
+end;
+
+Function TClouddebuggerAPI.CreateControllerDebuggeesBreakpointsResource : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateControllerDebuggeesBreakpointsResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateControllerDebuggeesBreakpointsResource(AOwner : TComponent) : TControllerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TControllerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouddebuggerAPI.GetControllerDebuggeesInstance : TControllerDebuggeesResource;
+
+begin
+  if (FControllerDebuggeesInstance=Nil) then
+    FControllerDebuggeesInstance:=CreateControllerDebuggeesResource;
+  Result:=FControllerDebuggeesInstance;
+end;
+
+Function TClouddebuggerAPI.CreateControllerDebuggeesResource : TControllerDebuggeesResource;
+
+begin
+  Result:=CreateControllerDebuggeesResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateControllerDebuggeesResource(AOwner : TComponent) : TControllerDebuggeesResource;
+
+begin
+  Result:=TControllerDebuggeesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouddebuggerAPI.GetControllerInstance : TControllerResource;
+
+begin
+  if (FControllerInstance=Nil) then
+    FControllerInstance:=CreateControllerResource;
+  Result:=FControllerInstance;
+end;
+
+Function TClouddebuggerAPI.CreateControllerResource : TControllerResource;
+
+begin
+  Result:=CreateControllerResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateControllerResource(AOwner : TComponent) : TControllerResource;
+
+begin
+  Result:=TControllerResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouddebuggerAPI.GetDebuggerDebuggeesBreakpointsInstance : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  if (FDebuggerDebuggeesBreakpointsInstance=Nil) then
+    FDebuggerDebuggeesBreakpointsInstance:=CreateDebuggerDebuggeesBreakpointsResource;
+  Result:=FDebuggerDebuggeesBreakpointsInstance;
+end;
+
+Function TClouddebuggerAPI.CreateDebuggerDebuggeesBreakpointsResource : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=CreateDebuggerDebuggeesBreakpointsResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateDebuggerDebuggeesBreakpointsResource(AOwner : TComponent) : TDebuggerDebuggeesBreakpointsResource;
+
+begin
+  Result:=TDebuggerDebuggeesBreakpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouddebuggerAPI.GetDebuggerDebuggeesInstance : TDebuggerDebuggeesResource;
+
+begin
+  if (FDebuggerDebuggeesInstance=Nil) then
+    FDebuggerDebuggeesInstance:=CreateDebuggerDebuggeesResource;
+  Result:=FDebuggerDebuggeesInstance;
+end;
+
+Function TClouddebuggerAPI.CreateDebuggerDebuggeesResource : TDebuggerDebuggeesResource;
+
+begin
+  Result:=CreateDebuggerDebuggeesResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateDebuggerDebuggeesResource(AOwner : TComponent) : TDebuggerDebuggeesResource;
+
+begin
+  Result:=TDebuggerDebuggeesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouddebuggerAPI.GetDebuggerInstance : TDebuggerResource;
+
+begin
+  if (FDebuggerInstance=Nil) then
+    FDebuggerInstance:=CreateDebuggerResource;
+  Result:=FDebuggerInstance;
+end;
+
+Function TClouddebuggerAPI.CreateDebuggerResource : TDebuggerResource;
+
+begin
+  Result:=CreateDebuggerResource(Self);
+end;
+
+
+Function TClouddebuggerAPI.CreateDebuggerResource(AOwner : TComponent) : TDebuggerResource;
+
+begin
+  Result:=TDebuggerResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TClouddebuggerAPI.RegisterAPI;
+end.

+ 1494 - 0
packages/googleapi/src/googleclouderrorreporting.pp

@@ -0,0 +1,1494 @@
+unit googleclouderrorreporting;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TSourceLocation = Class;
+  TErrorGroupStats = Class;
+  TErrorContext = Class;
+  TServiceContext = Class;
+  TErrorGroup = Class;
+  TTrackingIssue = Class;
+  TDeleteEventsResponse = Class;
+  TErrorEvent = Class;
+  TListEventsResponse = Class;
+  TTimedCount = Class;
+  THttpRequestContext = Class;
+  TListGroupStatsResponse = Class;
+  TSourceLocationArray = Array of TSourceLocation;
+  TErrorGroupStatsArray = Array of TErrorGroupStats;
+  TErrorContextArray = Array of TErrorContext;
+  TServiceContextArray = Array of TServiceContext;
+  TErrorGroupArray = Array of TErrorGroup;
+  TTrackingIssueArray = Array of TTrackingIssue;
+  TDeleteEventsResponseArray = Array of TDeleteEventsResponse;
+  TErrorEventArray = Array of TErrorEvent;
+  TListEventsResponseArray = Array of TListEventsResponse;
+  TTimedCountArray = Array of TTimedCount;
+  THttpRequestContextArray = Array of THttpRequestContext;
+  TListGroupStatsResponseArray = Array of TListGroupStatsResponse;
+  //Anonymous types, using auto-generated names
+  TErrorGroupStatsTypeaffectedServicesArray = Array of TServiceContext;
+  TErrorGroupStatsTypetimedCountsArray = Array of TTimedCount;
+  TErrorGroupTypetrackingIssuesArray = Array of TTrackingIssue;
+  TListEventsResponseTypeerrorEventsArray = Array of TErrorEvent;
+  TListGroupStatsResponseTypeerrorGroupStatsArray = Array of TErrorGroupStats;
+  
+  { --------------------------------------------------------------------
+    TSourceLocation
+    --------------------------------------------------------------------}
+  
+  TSourceLocation = Class(TGoogleBaseObject)
+  Private
+    FfilePath : String;
+    FfunctionName : String;
+    FlineNumber : integer;
+  Protected
+    //Property setters
+    Procedure SetfilePath(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfunctionName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlineNumber(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property filePath : String Index 0 Read FfilePath Write SetfilePath;
+    Property functionName : String Index 8 Read FfunctionName Write SetfunctionName;
+    Property lineNumber : integer Index 16 Read FlineNumber Write SetlineNumber;
+  end;
+  TSourceLocationClass = Class of TSourceLocation;
+  
+  { --------------------------------------------------------------------
+    TErrorGroupStats
+    --------------------------------------------------------------------}
+  
+  TErrorGroupStats = Class(TGoogleBaseObject)
+  Private
+    Frepresentative : TErrorEvent;
+    FnumAffectedServices : integer;
+    FaffectedUsersCount : String;
+    Fcount : String;
+    FfirstSeenTime : String;
+    FlastSeenTime : String;
+    Fgroup : TErrorGroup;
+    FaffectedServices : TErrorGroupStatsTypeaffectedServicesArray;
+    FtimedCounts : TErrorGroupStatsTypetimedCountsArray;
+  Protected
+    //Property setters
+    Procedure Setrepresentative(AIndex : Integer; const AValue : TErrorEvent); virtual;
+    Procedure SetnumAffectedServices(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetaffectedUsersCount(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfirstSeenTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlastSeenTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgroup(AIndex : Integer; const AValue : TErrorGroup); virtual;
+    Procedure SetaffectedServices(AIndex : Integer; const AValue : TErrorGroupStatsTypeaffectedServicesArray); virtual;
+    Procedure SettimedCounts(AIndex : Integer; const AValue : TErrorGroupStatsTypetimedCountsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property representative : TErrorEvent Index 0 Read Frepresentative Write Setrepresentative;
+    Property numAffectedServices : integer Index 8 Read FnumAffectedServices Write SetnumAffectedServices;
+    Property affectedUsersCount : String Index 16 Read FaffectedUsersCount Write SetaffectedUsersCount;
+    Property count : String Index 24 Read Fcount Write Setcount;
+    Property firstSeenTime : String Index 32 Read FfirstSeenTime Write SetfirstSeenTime;
+    Property lastSeenTime : String Index 40 Read FlastSeenTime Write SetlastSeenTime;
+    Property group : TErrorGroup Index 48 Read Fgroup Write Setgroup;
+    Property affectedServices : TErrorGroupStatsTypeaffectedServicesArray Index 56 Read FaffectedServices Write SetaffectedServices;
+    Property timedCounts : TErrorGroupStatsTypetimedCountsArray Index 64 Read FtimedCounts Write SettimedCounts;
+  end;
+  TErrorGroupStatsClass = Class of TErrorGroupStats;
+  
+  { --------------------------------------------------------------------
+    TErrorContext
+    --------------------------------------------------------------------}
+  
+  TErrorContext = Class(TGoogleBaseObject)
+  Private
+    FhttpRequest : THttpRequestContext;
+    FreportLocation : TSourceLocation;
+    Fuser : String;
+  Protected
+    //Property setters
+    Procedure SethttpRequest(AIndex : Integer; const AValue : THttpRequestContext); virtual;
+    Procedure SetreportLocation(AIndex : Integer; const AValue : TSourceLocation); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property httpRequest : THttpRequestContext Index 0 Read FhttpRequest Write SethttpRequest;
+    Property reportLocation : TSourceLocation Index 8 Read FreportLocation Write SetreportLocation;
+    Property user : String Index 16 Read Fuser Write Setuser;
+  end;
+  TErrorContextClass = Class of TErrorContext;
+  
+  { --------------------------------------------------------------------
+    TServiceContext
+    --------------------------------------------------------------------}
+  
+  TServiceContext = Class(TGoogleBaseObject)
+  Private
+    Fservice : String;
+    Fversion : String;
+  Protected
+    //Property setters
+    Procedure Setservice(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setversion(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property service : String Index 0 Read Fservice Write Setservice;
+    Property version : String Index 8 Read Fversion Write Setversion;
+  end;
+  TServiceContextClass = Class of TServiceContext;
+  
+  { --------------------------------------------------------------------
+    TErrorGroup
+    --------------------------------------------------------------------}
+  
+  TErrorGroup = Class(TGoogleBaseObject)
+  Private
+    FgroupId : String;
+    Fname : String;
+    FtrackingIssues : TErrorGroupTypetrackingIssuesArray;
+  Protected
+    //Property setters
+    Procedure SetgroupId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettrackingIssues(AIndex : Integer; const AValue : TErrorGroupTypetrackingIssuesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property groupId : String Index 0 Read FgroupId Write SetgroupId;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property trackingIssues : TErrorGroupTypetrackingIssuesArray Index 16 Read FtrackingIssues Write SettrackingIssues;
+  end;
+  TErrorGroupClass = Class of TErrorGroup;
+  
+  { --------------------------------------------------------------------
+    TTrackingIssue
+    --------------------------------------------------------------------}
+  
+  TTrackingIssue = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TTrackingIssueClass = Class of TTrackingIssue;
+  
+  { --------------------------------------------------------------------
+    TDeleteEventsResponse
+    --------------------------------------------------------------------}
+  
+  TDeleteEventsResponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TDeleteEventsResponseClass = Class of TDeleteEventsResponse;
+  
+  { --------------------------------------------------------------------
+    TErrorEvent
+    --------------------------------------------------------------------}
+  
+  TErrorEvent = Class(TGoogleBaseObject)
+  Private
+    FserviceContext : TServiceContext;
+    Fcontext : TErrorContext;
+    FeventTime : String;
+    Fmessage : String;
+  Protected
+    //Property setters
+    Procedure SetserviceContext(AIndex : Integer; const AValue : TServiceContext); virtual;
+    Procedure Setcontext(AIndex : Integer; const AValue : TErrorContext); virtual;
+    Procedure SeteventTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property serviceContext : TServiceContext Index 0 Read FserviceContext Write SetserviceContext;
+    Property context : TErrorContext Index 8 Read Fcontext Write Setcontext;
+    Property eventTime : String Index 16 Read FeventTime Write SeteventTime;
+    Property message : String Index 24 Read Fmessage Write Setmessage;
+  end;
+  TErrorEventClass = Class of TErrorEvent;
+  
+  { --------------------------------------------------------------------
+    TListEventsResponse
+    --------------------------------------------------------------------}
+  
+  TListEventsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    FerrorEvents : TListEventsResponseTypeerrorEventsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorEvents(AIndex : Integer; const AValue : TListEventsResponseTypeerrorEventsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property errorEvents : TListEventsResponseTypeerrorEventsArray Index 8 Read FerrorEvents Write SeterrorEvents;
+  end;
+  TListEventsResponseClass = Class of TListEventsResponse;
+  
+  { --------------------------------------------------------------------
+    TTimedCount
+    --------------------------------------------------------------------}
+  
+  TTimedCount = Class(TGoogleBaseObject)
+  Private
+    FstartTime : String;
+    FendTime : String;
+    Fcount : String;
+  Protected
+    //Property setters
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property startTime : String Index 0 Read FstartTime Write SetstartTime;
+    Property endTime : String Index 8 Read FendTime Write SetendTime;
+    Property count : String Index 16 Read Fcount Write Setcount;
+  end;
+  TTimedCountClass = Class of TTimedCount;
+  
+  { --------------------------------------------------------------------
+    THttpRequestContext
+    --------------------------------------------------------------------}
+  
+  THttpRequestContext = Class(TGoogleBaseObject)
+  Private
+    Fmethod : String;
+    FresponseStatusCode : integer;
+    FremoteIp : String;
+    Furl : String;
+    Freferrer : String;
+    FuserAgent : String;
+  Protected
+    //Property setters
+    Procedure Setmethod(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetresponseStatusCode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetremoteIp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setreferrer(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserAgent(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property method : String Index 0 Read Fmethod Write Setmethod;
+    Property responseStatusCode : integer Index 8 Read FresponseStatusCode Write SetresponseStatusCode;
+    Property remoteIp : String Index 16 Read FremoteIp Write SetremoteIp;
+    Property url : String Index 24 Read Furl Write Seturl;
+    Property referrer : String Index 32 Read Freferrer Write Setreferrer;
+    Property userAgent : String Index 40 Read FuserAgent Write SetuserAgent;
+  end;
+  THttpRequestContextClass = Class of THttpRequestContext;
+  
+  { --------------------------------------------------------------------
+    TListGroupStatsResponse
+    --------------------------------------------------------------------}
+  
+  TListGroupStatsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    FerrorGroupStats : TListGroupStatsResponseTypeerrorGroupStatsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorGroupStats(AIndex : Integer; const AValue : TListGroupStatsResponseTypeerrorGroupStatsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property errorGroupStats : TListGroupStatsResponseTypeerrorGroupStatsArray Index 8 Read FerrorGroupStats Write SeterrorGroupStats;
+  end;
+  TListGroupStatsResponseClass = Class of TListGroupStatsResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectsEventsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsEventsResource, method List
+  
+  TProjectsEventsListOptions = Record
+    timeRangeperiod : String;
+    serviceFilterservice : String;
+    groupId : String;
+    serviceFilterversion : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsEventsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(projectName: string; AQuery : string  = '') : TListEventsResponse;
+    Function List(projectName: string; AQuery : TProjectsEventslistOptions) : TListEventsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsGroupsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsGroupsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(_name: string; aErrorGroup : TErrorGroup) : TErrorGroup;
+    Function Get(groupName: string) : TErrorGroup;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsGroupStatsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsGroupStatsResource, method List
+  
+  TProjectsGroupStatsListOptions = Record
+    alignment : String;
+    timeRangeperiod : String;
+    order : String;
+    groupId : String;
+    serviceFilterservice : String;
+    alignmentTime : String;
+    serviceFilterversion : String;
+    pageSize : integer;
+    timedCountDuration : String;
+    pageToken : String;
+  end;
+  
+  TProjectsGroupStatsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(projectName: string; AQuery : string  = '') : TListGroupStatsResponse;
+    Function List(projectName: string; AQuery : TProjectsGroupStatslistOptions) : TListGroupStatsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FEventsInstance : TProjectsEventsResource;
+    FGroupsInstance : TProjectsGroupsResource;
+    FGroupStatsInstance : TProjectsGroupStatsResource;
+    Function GetEventsInstance : TProjectsEventsResource;virtual;
+    Function GetGroupsInstance : TProjectsGroupsResource;virtual;
+    Function GetGroupStatsInstance : TProjectsGroupStatsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function DeleteEvents(projectName: string) : TDeleteEventsResponse;
+    Function CreateEventsResource(AOwner : TComponent) : TProjectsEventsResource;virtual;overload;
+    Function CreateEventsResource : TProjectsEventsResource;virtual;overload;
+    Function CreateGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;virtual;overload;
+    Function CreateGroupsResource : TProjectsGroupsResource;virtual;overload;
+    Function CreateGroupStatsResource(AOwner : TComponent) : TProjectsGroupStatsResource;virtual;overload;
+    Function CreateGroupStatsResource : TProjectsGroupStatsResource;virtual;overload;
+    Property EventsResource : TProjectsEventsResource Read GetEventsInstance;
+    Property GroupsResource : TProjectsGroupsResource Read GetGroupsInstance;
+    Property GroupStatsResource : TProjectsGroupStatsResource Read GetGroupStatsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TClouderrorreportingAPI
+    --------------------------------------------------------------------}
+  
+  TClouderrorreportingAPI = Class(TGoogleAPI)
+  Private
+    FProjectsEventsInstance : TProjectsEventsResource;
+    FProjectsGroupsInstance : TProjectsGroupsResource;
+    FProjectsGroupStatsInstance : TProjectsGroupStatsResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsEventsInstance : TProjectsEventsResource;virtual;
+    Function GetProjectsGroupsInstance : TProjectsGroupsResource;virtual;
+    Function GetProjectsGroupStatsInstance : TProjectsGroupStatsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsEventsResource(AOwner : TComponent) : TProjectsEventsResource;virtual;overload;
+    Function CreateProjectsEventsResource : TProjectsEventsResource;virtual;overload;
+    Function CreateProjectsGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;virtual;overload;
+    Function CreateProjectsGroupsResource : TProjectsGroupsResource;virtual;overload;
+    Function CreateProjectsGroupStatsResource(AOwner : TComponent) : TProjectsGroupStatsResource;virtual;overload;
+    Function CreateProjectsGroupStatsResource : TProjectsGroupStatsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsEventsResource : TProjectsEventsResource Read GetProjectsEventsInstance;
+    Property ProjectsGroupsResource : TProjectsGroupsResource Read GetProjectsGroupsInstance;
+    Property ProjectsGroupStatsResource : TProjectsGroupStatsResource Read GetProjectsGroupStatsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TSourceLocation
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceLocation.SetfilePath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfilePath=AValue) then exit;
+  FfilePath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceLocation.SetfunctionName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfunctionName=AValue) then exit;
+  FfunctionName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceLocation.SetlineNumber(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FlineNumber=AValue) then exit;
+  FlineNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorGroupStats
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorGroupStats.Setrepresentative(AIndex : Integer; const AValue : TErrorEvent); 
+
+begin
+  If (Frepresentative=AValue) then exit;
+  Frepresentative:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SetnumAffectedServices(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumAffectedServices=AValue) then exit;
+  FnumAffectedServices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SetaffectedUsersCount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaffectedUsersCount=AValue) then exit;
+  FaffectedUsersCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.Setcount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcount=AValue) then exit;
+  Fcount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SetfirstSeenTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfirstSeenTime=AValue) then exit;
+  FfirstSeenTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SetlastSeenTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlastSeenTime=AValue) then exit;
+  FlastSeenTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.Setgroup(AIndex : Integer; const AValue : TErrorGroup); 
+
+begin
+  If (Fgroup=AValue) then exit;
+  Fgroup:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SetaffectedServices(AIndex : Integer; const AValue : TErrorGroupStatsTypeaffectedServicesArray); 
+
+begin
+  If (FaffectedServices=AValue) then exit;
+  FaffectedServices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroupStats.SettimedCounts(AIndex : Integer; const AValue : TErrorGroupStatsTypetimedCountsArray); 
+
+begin
+  If (FtimedCounts=AValue) then exit;
+  FtimedCounts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TErrorGroupStats.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'affectedservices' : SetLength(FaffectedServices,ALength);
+  'timedcounts' : SetLength(FtimedCounts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorContext
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorContext.SethttpRequest(AIndex : Integer; const AValue : THttpRequestContext); 
+
+begin
+  If (FhttpRequest=AValue) then exit;
+  FhttpRequest:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorContext.SetreportLocation(AIndex : Integer; const AValue : TSourceLocation); 
+
+begin
+  If (FreportLocation=AValue) then exit;
+  FreportLocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorContext.Setuser(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fuser=AValue) then exit;
+  Fuser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TServiceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TServiceContext.Setservice(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fservice=AValue) then exit;
+  Fservice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceContext.Setversion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fversion=AValue) then exit;
+  Fversion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorGroup.SetgroupId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgroupId=AValue) then exit;
+  FgroupId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroup.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorGroup.SettrackingIssues(AIndex : Integer; const AValue : TErrorGroupTypetrackingIssuesArray); 
+
+begin
+  If (FtrackingIssues=AValue) then exit;
+  FtrackingIssues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TErrorGroup.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'trackingissues' : SetLength(FtrackingIssues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTrackingIssue
+  --------------------------------------------------------------------}
+
+
+Procedure TTrackingIssue.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteEventsResponse
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorEvent
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorEvent.SetserviceContext(AIndex : Integer; const AValue : TServiceContext); 
+
+begin
+  If (FserviceContext=AValue) then exit;
+  FserviceContext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorEvent.Setcontext(AIndex : Integer; const AValue : TErrorContext); 
+
+begin
+  If (Fcontext=AValue) then exit;
+  Fcontext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorEvent.SeteventTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeventTime=AValue) then exit;
+  FeventTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorEvent.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListEventsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListEventsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListEventsResponse.SeterrorEvents(AIndex : Integer; const AValue : TListEventsResponseTypeerrorEventsArray); 
+
+begin
+  If (FerrorEvents=AValue) then exit;
+  FerrorEvents:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListEventsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errorevents' : SetLength(FerrorEvents,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimedCount
+  --------------------------------------------------------------------}
+
+
+Procedure TTimedCount.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimedCount.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimedCount.Setcount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcount=AValue) then exit;
+  Fcount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  THttpRequestContext
+  --------------------------------------------------------------------}
+
+
+Procedure THttpRequestContext.Setmethod(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmethod=AValue) then exit;
+  Fmethod:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THttpRequestContext.SetresponseStatusCode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FresponseStatusCode=AValue) then exit;
+  FresponseStatusCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THttpRequestContext.SetremoteIp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FremoteIp=AValue) then exit;
+  FremoteIp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THttpRequestContext.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THttpRequestContext.Setreferrer(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Freferrer=AValue) then exit;
+  Freferrer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THttpRequestContext.SetuserAgent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserAgent=AValue) then exit;
+  FuserAgent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListGroupStatsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListGroupStatsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListGroupStatsResponse.SeterrorGroupStats(AIndex : Integer; const AValue : TListGroupStatsResponseTypeerrorGroupStatsArray); 
+
+begin
+  If (FerrorGroupStats=AValue) then exit;
+  FerrorGroupStats:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListGroupStatsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errorgroupstats' : SetLength(FerrorGroupStats,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsEventsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsEventsResource.ResourceName : String;
+
+begin
+  Result:='events';
+end;
+
+Class Function TProjectsEventsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouderrorreportingAPI;
+end;
+
+Function TProjectsEventsResource.List(projectName: string; AQuery : string = '') : TListEventsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+projectName}/events';
+  _Methodid   = 'clouderrorreporting.projects.events.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectName',projectName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListEventsResponse) as TListEventsResponse;
+end;
+
+
+Function TProjectsEventsResource.List(projectName: string; AQuery : TProjectsEventslistOptions) : TListEventsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'timeRange.period',AQuery.timeRangeperiod);
+  AddToQuery(_Q,'serviceFilter.service',AQuery.serviceFilterservice);
+  AddToQuery(_Q,'groupId',AQuery.groupId);
+  AddToQuery(_Q,'serviceFilter.version',AQuery.serviceFilterversion);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(projectName,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsGroupsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsGroupsResource.ResourceName : String;
+
+begin
+  Result:='groups';
+end;
+
+Class Function TProjectsGroupsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouderrorreportingAPI;
+end;
+
+Function TProjectsGroupsResource.Update(_name: string; aErrorGroup : TErrorGroup) : TErrorGroup;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'clouderrorreporting.projects.groups.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aErrorGroup,TErrorGroup) as TErrorGroup;
+end;
+
+Function TProjectsGroupsResource.Get(groupName: string) : TErrorGroup;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+groupName}';
+  _Methodid   = 'clouderrorreporting.projects.groups.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['groupName',groupName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TErrorGroup) as TErrorGroup;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsGroupStatsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsGroupStatsResource.ResourceName : String;
+
+begin
+  Result:='groupStats';
+end;
+
+Class Function TProjectsGroupStatsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouderrorreportingAPI;
+end;
+
+Function TProjectsGroupStatsResource.List(projectName: string; AQuery : string = '') : TListGroupStatsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+projectName}/groupStats';
+  _Methodid   = 'clouderrorreporting.projects.groupStats.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectName',projectName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListGroupStatsResponse) as TListGroupStatsResponse;
+end;
+
+
+Function TProjectsGroupStatsResource.List(projectName: string; AQuery : TProjectsGroupStatslistOptions) : TListGroupStatsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'alignment',AQuery.alignment);
+  AddToQuery(_Q,'timeRange.period',AQuery.timeRangeperiod);
+  AddToQuery(_Q,'order',AQuery.order);
+  AddToQuery(_Q,'groupId',AQuery.groupId);
+  AddToQuery(_Q,'serviceFilter.service',AQuery.serviceFilterservice);
+  AddToQuery(_Q,'alignmentTime',AQuery.alignmentTime);
+  AddToQuery(_Q,'serviceFilter.version',AQuery.serviceFilterversion);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'timedCountDuration',AQuery.timedCountDuration);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(projectName,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouderrorreportingAPI;
+end;
+
+Function TProjectsResource.DeleteEvents(projectName: string) : TDeleteEventsResponse;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta1/{+projectName}/events';
+  _Methodid   = 'clouderrorreporting.projects.deleteEvents';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectName',projectName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TDeleteEventsResponse) as TDeleteEventsResponse;
+end;
+
+
+
+Function TProjectsResource.GetEventsInstance : TProjectsEventsResource;
+
+begin
+  if (FEventsInstance=Nil) then
+    FEventsInstance:=CreateEventsResource;
+  Result:=FEventsInstance;
+end;
+
+Function TProjectsResource.CreateEventsResource : TProjectsEventsResource;
+
+begin
+  Result:=CreateEventsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateEventsResource(AOwner : TComponent) : TProjectsEventsResource;
+
+begin
+  Result:=TProjectsEventsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetGroupsInstance : TProjectsGroupsResource;
+
+begin
+  if (FGroupsInstance=Nil) then
+    FGroupsInstance:=CreateGroupsResource;
+  Result:=FGroupsInstance;
+end;
+
+Function TProjectsResource.CreateGroupsResource : TProjectsGroupsResource;
+
+begin
+  Result:=CreateGroupsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;
+
+begin
+  Result:=TProjectsGroupsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetGroupStatsInstance : TProjectsGroupStatsResource;
+
+begin
+  if (FGroupStatsInstance=Nil) then
+    FGroupStatsInstance:=CreateGroupStatsResource;
+  Result:=FGroupStatsInstance;
+end;
+
+Function TProjectsResource.CreateGroupStatsResource : TProjectsGroupStatsResource;
+
+begin
+  Result:=CreateGroupStatsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateGroupStatsResource(AOwner : TComponent) : TProjectsGroupStatsResource;
+
+begin
+  Result:=TProjectsGroupStatsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TClouderrorreportingAPI
+  --------------------------------------------------------------------}
+
+Class Function TClouderrorreportingAPI.APIName : String;
+
+begin
+  Result:='clouderrorreporting';
+end;
+
+Class Function TClouderrorreportingAPI.APIVersion : String;
+
+begin
+  Result:='v1beta1';
+end;
+
+Class Function TClouderrorreportingAPI.APIRevision : String;
+
+begin
+  Result:='20160517';
+end;
+
+Class Function TClouderrorreportingAPI.APIID : String;
+
+begin
+  Result:='clouderrorreporting:v1beta1';
+end;
+
+Class Function TClouderrorreportingAPI.APITitle : String;
+
+begin
+  Result:='Stackdriver Error Reporting API';
+end;
+
+Class Function TClouderrorreportingAPI.APIDescription : String;
+
+begin
+  Result:='Stackdriver Error Reporting groups and counts similar errors from cloud services. The Stackdriver Error Reporting API provides read access to error groups and their associated errors.';
+end;
+
+Class Function TClouderrorreportingAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TClouderrorreportingAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TClouderrorreportingAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TClouderrorreportingAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TClouderrorreportingAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/error-reporting/';
+end;
+
+Class Function TClouderrorreportingAPI.APIrootUrl : string;
+
+begin
+  Result:='https://clouderrorreporting.googleapis.com/';
+end;
+
+Class Function TClouderrorreportingAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClouderrorreportingAPI.APIbaseURL : String;
+
+begin
+  Result:='https://clouderrorreporting.googleapis.com/';
+end;
+
+Class Function TClouderrorreportingAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TClouderrorreportingAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TClouderrorreportingAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TClouderrorreportingAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TClouderrorreportingAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TClouderrorreportingAPI.RegisterAPIResources;
+
+begin
+  TSourceLocation.RegisterObject;
+  TErrorGroupStats.RegisterObject;
+  TErrorContext.RegisterObject;
+  TServiceContext.RegisterObject;
+  TErrorGroup.RegisterObject;
+  TTrackingIssue.RegisterObject;
+  TDeleteEventsResponse.RegisterObject;
+  TErrorEvent.RegisterObject;
+  TListEventsResponse.RegisterObject;
+  TTimedCount.RegisterObject;
+  THttpRequestContext.RegisterObject;
+  TListGroupStatsResponse.RegisterObject;
+end;
+
+
+Function TClouderrorreportingAPI.GetProjectsEventsInstance : TProjectsEventsResource;
+
+begin
+  if (FProjectsEventsInstance=Nil) then
+    FProjectsEventsInstance:=CreateProjectsEventsResource;
+  Result:=FProjectsEventsInstance;
+end;
+
+Function TClouderrorreportingAPI.CreateProjectsEventsResource : TProjectsEventsResource;
+
+begin
+  Result:=CreateProjectsEventsResource(Self);
+end;
+
+
+Function TClouderrorreportingAPI.CreateProjectsEventsResource(AOwner : TComponent) : TProjectsEventsResource;
+
+begin
+  Result:=TProjectsEventsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouderrorreportingAPI.GetProjectsGroupsInstance : TProjectsGroupsResource;
+
+begin
+  if (FProjectsGroupsInstance=Nil) then
+    FProjectsGroupsInstance:=CreateProjectsGroupsResource;
+  Result:=FProjectsGroupsInstance;
+end;
+
+Function TClouderrorreportingAPI.CreateProjectsGroupsResource : TProjectsGroupsResource;
+
+begin
+  Result:=CreateProjectsGroupsResource(Self);
+end;
+
+
+Function TClouderrorreportingAPI.CreateProjectsGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;
+
+begin
+  Result:=TProjectsGroupsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouderrorreportingAPI.GetProjectsGroupStatsInstance : TProjectsGroupStatsResource;
+
+begin
+  if (FProjectsGroupStatsInstance=Nil) then
+    FProjectsGroupStatsInstance:=CreateProjectsGroupStatsResource;
+  Result:=FProjectsGroupStatsInstance;
+end;
+
+Function TClouderrorreportingAPI.CreateProjectsGroupStatsResource : TProjectsGroupStatsResource;
+
+begin
+  Result:=CreateProjectsGroupStatsResource(Self);
+end;
+
+
+Function TClouderrorreportingAPI.CreateProjectsGroupStatsResource(AOwner : TComponent) : TProjectsGroupStatsResource;
+
+begin
+  Result:=TProjectsGroupStatsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouderrorreportingAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TClouderrorreportingAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TClouderrorreportingAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TClouderrorreportingAPI.RegisterAPI;
+end.

+ 97 - 174
packages/googleapi/src/googlecloudlatencytest.pp

@@ -1,31 +1,4 @@
 unit googlecloudlatencytest;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,29 +7,27 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TAggregatedStats = class;
+  
+  //Top-level schema types
+  TAggregatedStats = Class;
+  TAggregatedStatsReply = Class;
+  TDoubleValue = Class;
+  TIntValue = Class;
+  TStats = Class;
+  TStatsReply = Class;
+  TStringValue = Class;
   TAggregatedStatsArray = Array of TAggregatedStats;
-  TAggregatedStatsstats = class;
-  TAggregatedStatsstatsArray = Array of TAggregatedStatsstats;
-  TAggregatedStatsReply = class;
   TAggregatedStatsReplyArray = Array of TAggregatedStatsReply;
-  TDoubleValue = class;
   TDoubleValueArray = Array of TDoubleValue;
-  TIntValue = class;
   TIntValueArray = Array of TIntValue;
-  TStats = class;
   TStatsArray = Array of TStats;
-  TStatsdoubleValues = class;
-  TStatsdoubleValuesArray = Array of TStatsdoubleValues;
-  TStatsintValues = class;
-  TStatsintValuesArray = Array of TStatsintValues;
-  TStatsstringValues = class;
-  TStatsstringValuesArray = Array of TStatsstringValues;
-  TStatsReply = class;
   TStatsReplyArray = Array of TStatsReply;
-  TStringValue = class;
   TStringValueArray = Array of TStringValue;
+  //Anonymous types, using auto-generated names
+  TAggregatedStatsTypestatsArray = Array of TStats;
+  TStatsTypedoubleValuesArray = Array of TDoubleValue;
+  TStatsTypeintValuesArray = Array of TIntValue;
+  TStatsTypestringValuesArray = Array of TStringValue;
   
   { --------------------------------------------------------------------
     TAggregatedStats
@@ -64,42 +35,33 @@ type
   
   TAggregatedStats = Class(TGoogleBaseObject)
   Private
-    Fstats : TAggregatedStatsstats;
+    Fstats : TAggregatedStatsTypestatsArray;
   Protected
     //Property setters
-    Procedure Setstats(AIndex : Integer; AValue : TAggregatedStatsstats); virtual;
+    Procedure Setstats(AIndex : Integer; const AValue : TAggregatedStatsTypestatsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property stats : TAggregatedStatsstats Index 0 Read Fstats Write Setstats;
+    Property stats : TAggregatedStatsTypestatsArray Index 0 Read Fstats Write Setstats;
   end;
   TAggregatedStatsClass = Class of TAggregatedStats;
   
-  { --------------------------------------------------------------------
-    TAggregatedStatsstats
-    --------------------------------------------------------------------}
-  
-  TAggregatedStatsstats = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TAggregatedStatsstatsClass = Class of TAggregatedStatsstats;
-  
   { --------------------------------------------------------------------
     TAggregatedStatsReply
     --------------------------------------------------------------------}
   
   TAggregatedStatsReply = Class(TGoogleBaseObject)
   Private
-    FtestValue : string;
+    FtestValue : String;
   Protected
     //Property setters
-    Procedure SettestValue(AIndex : Integer; AValue : string); virtual;
+    Procedure SettestValue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property testValue : string Index 0 Read FtestValue Write SettestValue;
+    Property testValue : String Index 0 Read FtestValue Write SettestValue;
   end;
   TAggregatedStatsReplyClass = Class of TAggregatedStatsReply;
   
@@ -109,16 +71,16 @@ type
   
   TDoubleValue = Class(TGoogleBaseObject)
   Private
-    F_label : string;
+    F_label : String;
     Fvalue : integer;
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Set_label(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : integer); virtual;
+    Procedure Set_label(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
-    Property _label : string Index 0 Read F_label Write Set_label;
+    Property _label : String Index 0 Read F_label Write Set_label;
     Property value : integer Index 8 Read Fvalue Write Setvalue;
   end;
   TDoubleValueClass = Class of TDoubleValue;
@@ -129,17 +91,17 @@ type
   
   TIntValue = Class(TGoogleBaseObject)
   Private
-    F_label : string;
-    Fvalue : string;
+    F_label : String;
+    Fvalue : String;
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Set_label(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
+    Procedure Set_label(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property _label : string Index 0 Read F_label Write Set_label;
-    Property value : string Index 8 Read Fvalue Write Setvalue;
+    Property _label : String Index 0 Read F_label Write Set_label;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
   end;
   TIntValueClass = Class of TIntValue;
   
@@ -149,77 +111,42 @@ type
   
   TStats = Class(TGoogleBaseObject)
   Private
-    FdoubleValues : TStatsdoubleValues;
-    FintValues : TStatsintValues;
-    FstringValues : TStatsstringValues;
+    FdoubleValues : TStatsTypedoubleValuesArray;
+    FintValues : TStatsTypeintValuesArray;
+    FstringValues : TStatsTypestringValuesArray;
     Ftime : double;
   Protected
     //Property setters
-    Procedure SetdoubleValues(AIndex : Integer; AValue : TStatsdoubleValues); virtual;
-    Procedure SetintValues(AIndex : Integer; AValue : TStatsintValues); virtual;
-    Procedure SetstringValues(AIndex : Integer; AValue : TStatsstringValues); virtual;
-    Procedure Settime(AIndex : Integer; AValue : double); virtual;
+    Procedure SetdoubleValues(AIndex : Integer; const AValue : TStatsTypedoubleValuesArray); virtual;
+    Procedure SetintValues(AIndex : Integer; const AValue : TStatsTypeintValuesArray); virtual;
+    Procedure SetstringValues(AIndex : Integer; const AValue : TStatsTypestringValuesArray); virtual;
+    Procedure Settime(AIndex : Integer; const AValue : double); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property doubleValues : TStatsdoubleValues Index 0 Read FdoubleValues Write SetdoubleValues;
-    Property intValues : TStatsintValues Index 8 Read FintValues Write SetintValues;
-    Property stringValues : TStatsstringValues Index 16 Read FstringValues Write SetstringValues;
+    Property doubleValues : TStatsTypedoubleValuesArray Index 0 Read FdoubleValues Write SetdoubleValues;
+    Property intValues : TStatsTypeintValuesArray Index 8 Read FintValues Write SetintValues;
+    Property stringValues : TStatsTypestringValuesArray Index 16 Read FstringValues Write SetstringValues;
     Property time : double Index 24 Read Ftime Write Settime;
   end;
   TStatsClass = Class of TStats;
   
-  { --------------------------------------------------------------------
-    TStatsdoubleValues
-    --------------------------------------------------------------------}
-  
-  TStatsdoubleValues = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TStatsdoubleValuesClass = Class of TStatsdoubleValues;
-  
-  { --------------------------------------------------------------------
-    TStatsintValues
-    --------------------------------------------------------------------}
-  
-  TStatsintValues = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TStatsintValuesClass = Class of TStatsintValues;
-  
-  { --------------------------------------------------------------------
-    TStatsstringValues
-    --------------------------------------------------------------------}
-  
-  TStatsstringValues = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TStatsstringValuesClass = Class of TStatsstringValues;
-  
   { --------------------------------------------------------------------
     TStatsReply
     --------------------------------------------------------------------}
   
   TStatsReply = Class(TGoogleBaseObject)
   Private
-    FtestValue : string;
+    FtestValue : String;
   Protected
     //Property setters
-    Procedure SettestValue(AIndex : Integer; AValue : string); virtual;
+    Procedure SettestValue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property testValue : string Index 0 Read FtestValue Write SettestValue;
+    Property testValue : String Index 0 Read FtestValue Write SettestValue;
   end;
   TStatsReplyClass = Class of TStatsReply;
   
@@ -229,17 +156,17 @@ type
   
   TStringValue = Class(TGoogleBaseObject)
   Private
-    F_label : string;
-    Fvalue : string;
+    F_label : String;
+    Fvalue : String;
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Set_label(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
+    Procedure Set_label(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property _label : string Index 0 Read F_label Write Set_label;
-    Property value : string Index 8 Read Fvalue Write Setvalue;
+    Property _label : String Index 0 Read F_label Write Set_label;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
   end;
   TStringValueClass = Class of TStringValue;
   
@@ -301,7 +228,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAggregatedStats.Setstats(AIndex : Integer; AValue : TAggregatedStatsstats); 
+Procedure TAggregatedStats.Setstats(AIndex : Integer; const AValue : TAggregatedStatsTypestatsArray); 
 
 begin
   If (Fstats=AValue) then exit;
@@ -310,12 +237,18 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAggregatedStats.SetArrayLength(Const AName : String; ALength : Longint); 
 
-
-
-{ --------------------------------------------------------------------
-  TAggregatedStatsstats
-  --------------------------------------------------------------------}
+begin
+  Case AName of
+  'stats' : SetLength(Fstats,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
 
 
 
@@ -325,7 +258,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAggregatedStatsReply.SettestValue(AIndex : Integer; AValue : string); 
+Procedure TAggregatedStatsReply.SettestValue(AIndex : Integer; const AValue : String); 
 
 begin
   If (FtestValue=AValue) then exit;
@@ -342,7 +275,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TDoubleValue.Set_label(AIndex : Integer; AValue : string); 
+Procedure TDoubleValue.Set_label(AIndex : Integer; const AValue : String); 
 
 begin
   If (F_label=AValue) then exit;
@@ -352,7 +285,7 @@ end;
 
 
 
-Procedure TDoubleValue.Setvalue(AIndex : Integer; AValue : integer); 
+Procedure TDoubleValue.Setvalue(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fvalue=AValue) then exit;
@@ -380,7 +313,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TIntValue.Set_label(AIndex : Integer; AValue : string); 
+Procedure TIntValue.Set_label(AIndex : Integer; const AValue : String); 
 
 begin
   If (F_label=AValue) then exit;
@@ -390,7 +323,7 @@ end;
 
 
 
-Procedure TIntValue.Setvalue(AIndex : Integer; AValue : string); 
+Procedure TIntValue.Setvalue(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fvalue=AValue) then exit;
@@ -418,7 +351,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStats.SetdoubleValues(AIndex : Integer; AValue : TStatsdoubleValues); 
+Procedure TStats.SetdoubleValues(AIndex : Integer; const AValue : TStatsTypedoubleValuesArray); 
 
 begin
   If (FdoubleValues=AValue) then exit;
@@ -428,7 +361,7 @@ end;
 
 
 
-Procedure TStats.SetintValues(AIndex : Integer; AValue : TStatsintValues); 
+Procedure TStats.SetintValues(AIndex : Integer; const AValue : TStatsTypeintValuesArray); 
 
 begin
   If (FintValues=AValue) then exit;
@@ -438,7 +371,7 @@ end;
 
 
 
-Procedure TStats.SetstringValues(AIndex : Integer; AValue : TStatsstringValues); 
+Procedure TStats.SetstringValues(AIndex : Integer; const AValue : TStatsTypestringValuesArray); 
 
 begin
   If (FstringValues=AValue) then exit;
@@ -448,7 +381,7 @@ end;
 
 
 
-Procedure TStats.Settime(AIndex : Integer; AValue : double); 
+Procedure TStats.Settime(AIndex : Integer; const AValue : double); 
 
 begin
   If (Ftime=AValue) then exit;
@@ -457,26 +390,20 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStats.SetArrayLength(Const AName : String; ALength : Longint); 
 
-
-
-{ --------------------------------------------------------------------
-  TStatsdoubleValues
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TStatsintValues
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TStatsstringValues
-  --------------------------------------------------------------------}
+begin
+  Case AName of
+  'doublevalues' : SetLength(FdoubleValues,ALength);
+  'intvalues' : SetLength(FintValues,ALength);
+  'stringvalues' : SetLength(FstringValues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
 
 
 
@@ -486,7 +413,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStatsReply.SettestValue(AIndex : Integer; AValue : string); 
+Procedure TStatsReply.SettestValue(AIndex : Integer; const AValue : String); 
 
 begin
   If (FtestValue=AValue) then exit;
@@ -503,7 +430,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStringValue.Set_label(AIndex : Integer; AValue : string); 
+Procedure TStringValue.Set_label(AIndex : Integer; const AValue : String); 
 
 begin
   If (F_label=AValue) then exit;
@@ -513,7 +440,7 @@ end;
 
 
 
-Procedure TStringValue.Setvalue(AIndex : Integer; AValue : string); 
+Procedure TStringValue.Setvalue(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fvalue=AValue) then exit;
@@ -596,7 +523,7 @@ end;
 Class Function TCloudlatencytestAPI.APIRevision : String;
 
 begin
-  Result:='20150206';
+  Result:='20160309';
 end;
 
 Class Function TCloudlatencytestAPI.APIID : String;
@@ -614,7 +541,7 @@ end;
 Class Function TCloudlatencytestAPI.APIDescription : String;
 
 begin
-  Result:='A Test API to report latency data.';
+  Result:='Reports latency data.';
 end;
 
 Class Function TCloudlatencytestAPI.APIOwnerDomain : String;
@@ -702,14 +629,10 @@ Class Procedure TCloudlatencytestAPI.RegisterAPIResources;
 
 begin
   TAggregatedStats.RegisterObject;
-  TAggregatedStatsstats.RegisterObject;
   TAggregatedStatsReply.RegisterObject;
   TDoubleValue.RegisterObject;
   TIntValue.RegisterObject;
   TStats.RegisterObject;
-  TStatsdoubleValues.RegisterObject;
-  TStatsintValues.RegisterObject;
-  TStatsstringValues.RegisterObject;
   TStatsReply.RegisterObject;
   TStringValue.RegisterObject;
 end;
@@ -734,7 +657,7 @@ Function TCloudlatencytestAPI.CreateStatscollectionResource(AOwner : TComponent)
 
 begin
   Result:=TStatscollectionResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

File diff suppressed because it is too large
+ 247 - 332
packages/googleapi/src/googlecloudmonitoring.pp


+ 1015 - 0
packages/googleapi/src/googlecloudresourcemanager.pp

@@ -0,0 +1,1015 @@
+unit googlecloudresourcemanager;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TProject = Class;
+  TResourceId = Class;
+  TListProjectsResponse = Class;
+  TEmpty = Class;
+  TUndeleteProjectRequest = Class;
+  TGetIamPolicyRequest = Class;
+  TPolicy = Class;
+  TBinding = Class;
+  TSetIamPolicyRequest = Class;
+  TTestIamPermissionsRequest = Class;
+  TTestIamPermissionsResponse = Class;
+  TProjectArray = Array of TProject;
+  TResourceIdArray = Array of TResourceId;
+  TListProjectsResponseArray = Array of TListProjectsResponse;
+  TEmptyArray = Array of TEmpty;
+  TUndeleteProjectRequestArray = Array of TUndeleteProjectRequest;
+  TGetIamPolicyRequestArray = Array of TGetIamPolicyRequest;
+  TPolicyArray = Array of TPolicy;
+  TBindingArray = Array of TBinding;
+  TSetIamPolicyRequestArray = Array of TSetIamPolicyRequest;
+  TTestIamPermissionsRequestArray = Array of TTestIamPermissionsRequest;
+  TTestIamPermissionsResponseArray = Array of TTestIamPermissionsResponse;
+  //Anonymous types, using auto-generated names
+  TProjectTypelabels = Class;
+  TListProjectsResponseTypeprojectsArray = Array of TProject;
+  TPolicyTypebindingsArray = Array of TBinding;
+  
+  { --------------------------------------------------------------------
+    TProjectTypelabels
+    --------------------------------------------------------------------}
+  
+  TProjectTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TProjectTypelabelsClass = Class of TProjectTypelabels;
+  
+  { --------------------------------------------------------------------
+    TProject
+    --------------------------------------------------------------------}
+  
+  TProject = Class(TGoogleBaseObject)
+  Private
+    FprojectNumber : String;
+    FprojectId : String;
+    FlifecycleState : String;
+    Fname : String;
+    FcreateTime : String;
+    Flabels : TProjectTypelabels;
+    Fparent : TResourceId;
+  Protected
+    //Property setters
+    Procedure SetprojectNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlifecycleState(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TProjectTypelabels); virtual;
+    Procedure Setparent(AIndex : Integer; const AValue : TResourceId); virtual;
+  Public
+  Published
+    Property projectNumber : String Index 0 Read FprojectNumber Write SetprojectNumber;
+    Property projectId : String Index 8 Read FprojectId Write SetprojectId;
+    Property lifecycleState : String Index 16 Read FlifecycleState Write SetlifecycleState;
+    Property name : String Index 24 Read Fname Write Setname;
+    Property createTime : String Index 32 Read FcreateTime Write SetcreateTime;
+    Property labels : TProjectTypelabels Index 40 Read Flabels Write Setlabels;
+    Property parent : TResourceId Index 48 Read Fparent Write Setparent;
+  end;
+  TProjectClass = Class of TProject;
+  
+  { --------------------------------------------------------------------
+    TResourceId
+    --------------------------------------------------------------------}
+  
+  TResourceId = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fid : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property id : String Index 8 Read Fid Write Setid;
+  end;
+  TResourceIdClass = Class of TResourceId;
+  
+  { --------------------------------------------------------------------
+    TListProjectsResponse
+    --------------------------------------------------------------------}
+  
+  TListProjectsResponse = Class(TGoogleBaseObject)
+  Private
+    Fprojects : TListProjectsResponseTypeprojectsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setprojects(AIndex : Integer; const AValue : TListProjectsResponseTypeprojectsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property projects : TListProjectsResponseTypeprojectsArray Index 0 Read Fprojects Write Setprojects;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListProjectsResponseClass = Class of TListProjectsResponse;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TUndeleteProjectRequest
+    --------------------------------------------------------------------}
+  
+  TUndeleteProjectRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TUndeleteProjectRequestClass = Class of TUndeleteProjectRequest;
+  
+  { --------------------------------------------------------------------
+    TGetIamPolicyRequest
+    --------------------------------------------------------------------}
+  
+  TGetIamPolicyRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TGetIamPolicyRequestClass = Class of TGetIamPolicyRequest;
+  
+  { --------------------------------------------------------------------
+    TPolicy
+    --------------------------------------------------------------------}
+  
+  TPolicy = Class(TGoogleBaseObject)
+  Private
+    Fversion : integer;
+    Fbindings : TPolicyTypebindingsArray;
+    Fetag : String;
+  Protected
+    //Property setters
+    Procedure Setversion(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property version : integer Index 0 Read Fversion Write Setversion;
+    Property bindings : TPolicyTypebindingsArray Index 8 Read Fbindings Write Setbindings;
+    Property etag : String Index 16 Read Fetag Write Setetag;
+  end;
+  TPolicyClass = Class of TPolicy;
+  
+  { --------------------------------------------------------------------
+    TBinding
+    --------------------------------------------------------------------}
+  
+  TBinding = Class(TGoogleBaseObject)
+  Private
+    Frole : String;
+    Fmembers : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property role : String Index 0 Read Frole Write Setrole;
+    Property members : TStringArray Index 8 Read Fmembers Write Setmembers;
+  end;
+  TBindingClass = Class of TBinding;
+  
+  { --------------------------------------------------------------------
+    TSetIamPolicyRequest
+    --------------------------------------------------------------------}
+  
+  TSetIamPolicyRequest = Class(TGoogleBaseObject)
+  Private
+    Fpolicy : TPolicy;
+  Protected
+    //Property setters
+    Procedure Setpolicy(AIndex : Integer; const AValue : TPolicy); virtual;
+  Public
+  Published
+    Property policy : TPolicy Index 0 Read Fpolicy Write Setpolicy;
+  end;
+  TSetIamPolicyRequestClass = Class of TSetIamPolicyRequest;
+  
+  { --------------------------------------------------------------------
+    TTestIamPermissionsRequest
+    --------------------------------------------------------------------}
+  
+  TTestIamPermissionsRequest = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestIamPermissionsRequestClass = Class of TTestIamPermissionsRequest;
+  
+  { --------------------------------------------------------------------
+    TTestIamPermissionsResponse
+    --------------------------------------------------------------------}
+  
+  TTestIamPermissionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestIamPermissionsResponseClass = Class of TTestIamPermissionsResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsResource, method List
+  
+  TProjectsListOptions = Record
+    pageToken : String;
+    pageSize : integer;
+    filter : String;
+  end;
+  
+  TProjectsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(projectId: string) : TProject;
+    Function List(AQuery : string  = '') : TListProjectsResponse;
+    Function List(AQuery : TProjectslistOptions) : TListProjectsResponse;
+    Function Update(projectId: string; aProject : TProject) : TProject;
+    Function Delete(projectId: string) : TEmpty;
+    Function Undelete(projectId: string; aUndeleteProjectRequest : TUndeleteProjectRequest) : TEmpty;
+    Function GetIamPolicy(resource: string; aGetIamPolicyRequest : TGetIamPolicyRequest) : TPolicy;
+    Function SetIamPolicy(resource: string; aSetIamPolicyRequest : TSetIamPolicyRequest) : TPolicy;
+    Function TestIamPermissions(resource: string; aTestIamPermissionsRequest : TTestIamPermissionsRequest) : TTestIamPermissionsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCloudresourcemanagerAPI
+    --------------------------------------------------------------------}
+  
+  TCloudresourcemanagerAPI = Class(TGoogleAPI)
+  Private
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TProjectTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProject
+  --------------------------------------------------------------------}
+
+
+Procedure TProject.SetprojectNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectNumber=AValue) then exit;
+  FprojectNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.SetlifecycleState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlifecycleState=AValue) then exit;
+  FlifecycleState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.Setlabels(AIndex : Integer; const AValue : TProjectTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProject.Setparent(AIndex : Integer; const AValue : TResourceId); 
+
+begin
+  If (Fparent=AValue) then exit;
+  Fparent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResourceId
+  --------------------------------------------------------------------}
+
+
+Procedure TResourceId.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResourceId.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TResourceId.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TListProjectsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListProjectsResponse.Setprojects(AIndex : Integer; const AValue : TListProjectsResponseTypeprojectsArray); 
+
+begin
+  If (Fprojects=AValue) then exit;
+  Fprojects:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListProjectsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListProjectsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'projects' : SetLength(Fprojects,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUndeleteProjectRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetIamPolicyRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPolicy
+  --------------------------------------------------------------------}
+
+
+Procedure TPolicy.Setversion(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fversion=AValue) then exit;
+  Fversion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); 
+
+begin
+  If (Fbindings=AValue) then exit;
+  Fbindings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPolicy.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'bindings' : SetLength(Fbindings,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBinding
+  --------------------------------------------------------------------}
+
+
+Procedure TBinding.Setrole(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frole=AValue) then exit;
+  Frole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBinding.Setmembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBinding.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSetIamPolicyRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSetIamPolicyRequest.Setpolicy(AIndex : Integer; const AValue : TPolicy); 
+
+begin
+  If (Fpolicy=AValue) then exit;
+  Fpolicy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestIamPermissionsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTestIamPermissionsRequest.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestIamPermissionsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestIamPermissionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTestIamPermissionsResponse.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestIamPermissionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudresourcemanagerAPI;
+end;
+
+Function TProjectsResource.Get(projectId: string) : TProject;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}';
+  _Methodid   = 'cloudresourcemanager.projects.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProject) as TProject;
+end;
+
+Function TProjectsResource.List(AQuery : string = '') : TListProjectsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects';
+  _Methodid   = 'cloudresourcemanager.projects.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListProjectsResponse) as TListProjectsResponse;
+end;
+
+
+Function TProjectsResource.List(AQuery : TProjectslistOptions) : TListProjectsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  Result:=List(_Q);
+end;
+
+Function TProjectsResource.Update(projectId: string; aProject : TProject) : TProject;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1/projects/{projectId}';
+  _Methodid   = 'cloudresourcemanager.projects.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aProject,TProject) as TProject;
+end;
+
+Function TProjectsResource.Delete(projectId: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/projects/{projectId}';
+  _Methodid   = 'cloudresourcemanager.projects.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TProjectsResource.Undelete(projectId: string; aUndeleteProjectRequest : TUndeleteProjectRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}:undelete';
+  _Methodid   = 'cloudresourcemanager.projects.undelete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aUndeleteProjectRequest,TEmpty) as TEmpty;
+end;
+
+Function TProjectsResource.GetIamPolicy(resource: string; aGetIamPolicyRequest : TGetIamPolicyRequest) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{resource}:getIamPolicy';
+  _Methodid   = 'cloudresourcemanager.projects.getIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aGetIamPolicyRequest,TPolicy) as TPolicy;
+end;
+
+Function TProjectsResource.SetIamPolicy(resource: string; aSetIamPolicyRequest : TSetIamPolicyRequest) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{resource}:setIamPolicy';
+  _Methodid   = 'cloudresourcemanager.projects.setIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSetIamPolicyRequest,TPolicy) as TPolicy;
+end;
+
+Function TProjectsResource.TestIamPermissions(resource: string; aTestIamPermissionsRequest : TTestIamPermissionsRequest) : TTestIamPermissionsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{resource}:testIamPermissions';
+  _Methodid   = 'cloudresourcemanager.projects.testIamPermissions';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTestIamPermissionsRequest,TTestIamPermissionsResponse) as TTestIamPermissionsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCloudresourcemanagerAPI
+  --------------------------------------------------------------------}
+
+Class Function TCloudresourcemanagerAPI.APIName : String;
+
+begin
+  Result:='cloudresourcemanager';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIRevision : String;
+
+begin
+  Result:='20160518';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIID : String;
+
+begin
+  Result:='cloudresourcemanager:v1';
+end;
+
+Class Function TCloudresourcemanagerAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Resource Manager API';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIDescription : String;
+
+begin
+  Result:='The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/resource-manager';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIrootUrl : string;
+
+begin
+  Result:='https://cloudresourcemanager.googleapis.com/';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIbaseURL : String;
+
+begin
+  Result:='https://cloudresourcemanager.googleapis.com/';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TCloudresourcemanagerAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,2);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/cloud-platform.read-only';
+  Result[1].Description:='View your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TCloudresourcemanagerAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TCloudresourcemanagerAPI.RegisterAPIResources;
+
+begin
+  TProjectTypelabels.RegisterObject;
+  TProject.RegisterObject;
+  TResourceId.RegisterObject;
+  TListProjectsResponse.RegisterObject;
+  TEmpty.RegisterObject;
+  TUndeleteProjectRequest.RegisterObject;
+  TGetIamPolicyRequest.RegisterObject;
+  TPolicy.RegisterObject;
+  TBinding.RegisterObject;
+  TSetIamPolicyRequest.RegisterObject;
+  TTestIamPermissionsRequest.RegisterObject;
+  TTestIamPermissionsResponse.RegisterObject;
+end;
+
+
+Function TCloudresourcemanagerAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TCloudresourcemanagerAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TCloudresourcemanagerAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TCloudresourcemanagerAPI.RegisterAPI;
+end.

+ 777 - 0
packages/googleapi/src/googlecloudtrace.pp

@@ -0,0 +1,777 @@
+unit googlecloudtrace;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TListTracesResponse = Class;
+  TTrace = Class;
+  TTraceSpan = Class;
+  TTraces = Class;
+  TEmpty = Class;
+  TListTracesResponseArray = Array of TListTracesResponse;
+  TTraceArray = Array of TTrace;
+  TTraceSpanArray = Array of TTraceSpan;
+  TTracesArray = Array of TTraces;
+  TEmptyArray = Array of TEmpty;
+  //Anonymous types, using auto-generated names
+  TTraceSpanTypelabels = Class;
+  TListTracesResponseTypetracesArray = Array of TTrace;
+  TTraceTypespansArray = Array of TTraceSpan;
+  TTracesTypetracesArray = Array of TTrace;
+  
+  { --------------------------------------------------------------------
+    TListTracesResponse
+    --------------------------------------------------------------------}
+  
+  TListTracesResponse = Class(TGoogleBaseObject)
+  Private
+    Ftraces : TListTracesResponseTypetracesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Settraces(AIndex : Integer; const AValue : TListTracesResponseTypetracesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property traces : TListTracesResponseTypetracesArray Index 0 Read Ftraces Write Settraces;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListTracesResponseClass = Class of TListTracesResponse;
+  
+  { --------------------------------------------------------------------
+    TTrace
+    --------------------------------------------------------------------}
+  
+  TTrace = Class(TGoogleBaseObject)
+  Private
+    FprojectId : String;
+    FtraceId : String;
+    Fspans : TTraceTypespansArray;
+  Protected
+    //Property setters
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettraceId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setspans(AIndex : Integer; const AValue : TTraceTypespansArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property projectId : String Index 0 Read FprojectId Write SetprojectId;
+    Property traceId : String Index 8 Read FtraceId Write SettraceId;
+    Property spans : TTraceTypespansArray Index 16 Read Fspans Write Setspans;
+  end;
+  TTraceClass = Class of TTrace;
+  
+  { --------------------------------------------------------------------
+    TTraceSpanTypelabels
+    --------------------------------------------------------------------}
+  
+  TTraceSpanTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TTraceSpanTypelabelsClass = Class of TTraceSpanTypelabels;
+  
+  { --------------------------------------------------------------------
+    TTraceSpan
+    --------------------------------------------------------------------}
+  
+  TTraceSpan = Class(TGoogleBaseObject)
+  Private
+    FspanId : String;
+    Fkind : String;
+    Fname : String;
+    FstartTime : String;
+    FendTime : String;
+    FparentSpanId : String;
+    Flabels : TTraceSpanTypelabels;
+  Protected
+    //Property setters
+    Procedure SetspanId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetparentSpanId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TTraceSpanTypelabels); virtual;
+  Public
+  Published
+    Property spanId : String Index 0 Read FspanId Write SetspanId;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property name : String Index 16 Read Fname Write Setname;
+    Property startTime : String Index 24 Read FstartTime Write SetstartTime;
+    Property endTime : String Index 32 Read FendTime Write SetendTime;
+    Property parentSpanId : String Index 40 Read FparentSpanId Write SetparentSpanId;
+    Property labels : TTraceSpanTypelabels Index 48 Read Flabels Write Setlabels;
+  end;
+  TTraceSpanClass = Class of TTraceSpan;
+  
+  { --------------------------------------------------------------------
+    TTraces
+    --------------------------------------------------------------------}
+  
+  TTraces = Class(TGoogleBaseObject)
+  Private
+    Ftraces : TTracesTypetracesArray;
+  Protected
+    //Property setters
+    Procedure Settraces(AIndex : Integer; const AValue : TTracesTypetracesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property traces : TTracesTypetracesArray Index 0 Read Ftraces Write Settraces;
+  end;
+  TTracesClass = Class of TTraces;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TProjectsTracesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsTracesResource, method List
+  
+  TProjectsTracesListOptions = Record
+    view : String;
+    pageSize : integer;
+    pageToken : String;
+    startTime : String;
+    endTime : String;
+    filter : String;
+    orderBy : String;
+  end;
+  
+  TProjectsTracesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(projectId: string; AQuery : string  = '') : TListTracesResponse;
+    Function List(projectId: string; AQuery : TProjectsTraceslistOptions) : TListTracesResponse;
+    Function Get(projectId: string; traceId: string) : TTrace;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FTracesInstance : TProjectsTracesResource;
+    Function GetTracesInstance : TProjectsTracesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function PatchTraces(projectId: string; aTraces : TTraces) : TEmpty;
+    Function CreateTracesResource(AOwner : TComponent) : TProjectsTracesResource;virtual;overload;
+    Function CreateTracesResource : TProjectsTracesResource;virtual;overload;
+    Property TracesResource : TProjectsTracesResource Read GetTracesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCloudtraceAPI
+    --------------------------------------------------------------------}
+  
+  TCloudtraceAPI = Class(TGoogleAPI)
+  Private
+    FProjectsTracesInstance : TProjectsTracesResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsTracesInstance : TProjectsTracesResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsTracesResource(AOwner : TComponent) : TProjectsTracesResource;virtual;overload;
+    Function CreateProjectsTracesResource : TProjectsTracesResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsTracesResource : TProjectsTracesResource Read GetProjectsTracesInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TListTracesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListTracesResponse.Settraces(AIndex : Integer; const AValue : TListTracesResponseTypetracesArray); 
+
+begin
+  If (Ftraces=AValue) then exit;
+  Ftraces:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListTracesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListTracesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'traces' : SetLength(Ftraces,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTrace
+  --------------------------------------------------------------------}
+
+
+Procedure TTrace.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTrace.SettraceId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtraceId=AValue) then exit;
+  FtraceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTrace.Setspans(AIndex : Integer; const AValue : TTraceTypespansArray); 
+
+begin
+  If (Fspans=AValue) then exit;
+  Fspans:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTrace.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'spans' : SetLength(Fspans,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTraceSpanTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TTraceSpanTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TTraceSpan
+  --------------------------------------------------------------------}
+
+
+Procedure TTraceSpan.SetspanId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspanId=AValue) then exit;
+  FspanId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.SetparentSpanId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FparentSpanId=AValue) then exit;
+  FparentSpanId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTraceSpan.Setlabels(AIndex : Integer; const AValue : TTraceSpanTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTraces
+  --------------------------------------------------------------------}
+
+
+Procedure TTraces.Settraces(AIndex : Integer; const AValue : TTracesTypetracesArray); 
+
+begin
+  If (Ftraces=AValue) then exit;
+  Ftraces:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTraces.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'traces' : SetLength(Ftraces,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsTracesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsTracesResource.ResourceName : String;
+
+begin
+  Result:='traces';
+end;
+
+Class Function TProjectsTracesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudtraceAPI;
+end;
+
+Function TProjectsTracesResource.List(projectId: string; AQuery : string = '') : TListTracesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/traces';
+  _Methodid   = 'cloudtrace.projects.traces.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListTracesResponse) as TListTracesResponse;
+end;
+
+
+Function TProjectsTracesResource.List(projectId: string; AQuery : TProjectsTraceslistOptions) : TListTracesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'view',AQuery.view);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'startTime',AQuery.startTime);
+  AddToQuery(_Q,'endTime',AQuery.endTime);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  Result:=List(projectId,_Q);
+end;
+
+Function TProjectsTracesResource.Get(projectId: string; traceId: string) : TTrace;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/traces/{traceId}';
+  _Methodid   = 'cloudtrace.projects.traces.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'traceId',traceId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTrace) as TTrace;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TcloudtraceAPI;
+end;
+
+Function TProjectsResource.PatchTraces(projectId: string; aTraces : TTraces) : TEmpty;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1/projects/{projectId}/traces';
+  _Methodid   = 'cloudtrace.projects.patchTraces';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTraces,TEmpty) as TEmpty;
+end;
+
+
+
+Function TProjectsResource.GetTracesInstance : TProjectsTracesResource;
+
+begin
+  if (FTracesInstance=Nil) then
+    FTracesInstance:=CreateTracesResource;
+  Result:=FTracesInstance;
+end;
+
+Function TProjectsResource.CreateTracesResource : TProjectsTracesResource;
+
+begin
+  Result:=CreateTracesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateTracesResource(AOwner : TComponent) : TProjectsTracesResource;
+
+begin
+  Result:=TProjectsTracesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCloudtraceAPI
+  --------------------------------------------------------------------}
+
+Class Function TCloudtraceAPI.APIName : String;
+
+begin
+  Result:='cloudtrace';
+end;
+
+Class Function TCloudtraceAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TCloudtraceAPI.APIRevision : String;
+
+begin
+  Result:='20160518';
+end;
+
+Class Function TCloudtraceAPI.APIID : String;
+
+begin
+  Result:='cloudtrace:v1';
+end;
+
+Class Function TCloudtraceAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Trace API';
+end;
+
+Class Function TCloudtraceAPI.APIDescription : String;
+
+begin
+  Result:='Send and retrieve trace data from Google Cloud Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Cloud Trace for display, reporting, and analysis.';
+end;
+
+Class Function TCloudtraceAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TCloudtraceAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TCloudtraceAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TCloudtraceAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TCloudtraceAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/tools/cloud-trace';
+end;
+
+Class Function TCloudtraceAPI.APIrootUrl : string;
+
+begin
+  Result:='https://cloudtrace.googleapis.com/';
+end;
+
+Class Function TCloudtraceAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudtraceAPI.APIbaseURL : String;
+
+begin
+  Result:='https://cloudtrace.googleapis.com/';
+end;
+
+Class Function TCloudtraceAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TCloudtraceAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TCloudtraceAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TCloudtraceAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,3);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/trace.append';
+  Result[1].Description:='Write Trace data for a project or application';
+  Result[2].Name:='https://www.googleapis.com/auth/trace.readonly';
+  Result[2].Description:='Read Trace data for a project or application';
+  
+end;
+
+Class Function TCloudtraceAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TCloudtraceAPI.RegisterAPIResources;
+
+begin
+  TListTracesResponse.RegisterObject;
+  TTrace.RegisterObject;
+  TTraceSpanTypelabels.RegisterObject;
+  TTraceSpan.RegisterObject;
+  TTraces.RegisterObject;
+  TEmpty.RegisterObject;
+end;
+
+
+Function TCloudtraceAPI.GetProjectsTracesInstance : TProjectsTracesResource;
+
+begin
+  if (FProjectsTracesInstance=Nil) then
+    FProjectsTracesInstance:=CreateProjectsTracesResource;
+  Result:=FProjectsTracesInstance;
+end;
+
+Function TCloudtraceAPI.CreateProjectsTracesResource : TProjectsTracesResource;
+
+begin
+  Result:=CreateProjectsTracesResource(Self);
+end;
+
+
+Function TCloudtraceAPI.CreateProjectsTracesResource(AOwner : TComponent) : TProjectsTracesResource;
+
+begin
+  Result:=TProjectsTracesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TCloudtraceAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TCloudtraceAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TCloudtraceAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TCloudtraceAPI.RegisterAPI;
+end.

+ 3420 - 0
packages/googleapi/src/googleclouduseraccounts.pp

@@ -0,0 +1,3420 @@
+unit googleclouduseraccounts;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAuditConfig = Class;
+  TAuthorizedKeysView = Class;
+  TBinding = Class;
+  TCondition = Class;
+  TGroup = Class;
+  TGroupList = Class;
+  TGroupsAddMemberRequest = Class;
+  TGroupsRemoveMemberRequest = Class;
+  TLinuxAccountViews = Class;
+  TLinuxGetAuthorizedKeysViewResponse = Class;
+  TLinuxGetLinuxAccountViewsResponse = Class;
+  TLinuxGroupView = Class;
+  TLinuxUserView = Class;
+  TLogConfig = Class;
+  TLogConfigCounterOptions = Class;
+  TOperation = Class;
+  TOperationList = Class;
+  TPolicy = Class;
+  TPublicKey = Class;
+  TRule = Class;
+  TTestPermissionsRequest = Class;
+  TTestPermissionsResponse = Class;
+  TUser = Class;
+  TUserList = Class;
+  TAuditConfigArray = Array of TAuditConfig;
+  TAuthorizedKeysViewArray = Array of TAuthorizedKeysView;
+  TBindingArray = Array of TBinding;
+  TConditionArray = Array of TCondition;
+  TGroupArray = Array of TGroup;
+  TGroupListArray = Array of TGroupList;
+  TGroupsAddMemberRequestArray = Array of TGroupsAddMemberRequest;
+  TGroupsRemoveMemberRequestArray = Array of TGroupsRemoveMemberRequest;
+  TLinuxAccountViewsArray = Array of TLinuxAccountViews;
+  TLinuxGetAuthorizedKeysViewResponseArray = Array of TLinuxGetAuthorizedKeysViewResponse;
+  TLinuxGetLinuxAccountViewsResponseArray = Array of TLinuxGetLinuxAccountViewsResponse;
+  TLinuxGroupViewArray = Array of TLinuxGroupView;
+  TLinuxUserViewArray = Array of TLinuxUserView;
+  TLogConfigArray = Array of TLogConfig;
+  TLogConfigCounterOptionsArray = Array of TLogConfigCounterOptions;
+  TOperationArray = Array of TOperation;
+  TOperationListArray = Array of TOperationList;
+  TPolicyArray = Array of TPolicy;
+  TPublicKeyArray = Array of TPublicKey;
+  TRuleArray = Array of TRule;
+  TTestPermissionsRequestArray = Array of TTestPermissionsRequest;
+  TTestPermissionsResponseArray = Array of TTestPermissionsResponse;
+  TUserArray = Array of TUser;
+  TUserListArray = Array of TUserList;
+  //Anonymous types, using auto-generated names
+  TOperationTypeerrorTypeerrorsItem = Class;
+  TOperationTypeerror = Class;
+  TOperationTypewarningsItemTypedataItem = Class;
+  TOperationTypewarningsItem = Class;
+  TGroupListTypeitemsArray = Array of TGroup;
+  TLinuxAccountViewsTypegroupViewsArray = Array of TLinuxGroupView;
+  TLinuxAccountViewsTypeuserViewsArray = Array of TLinuxUserView;
+  TOperationTypeerrorTypeerrorsArray = Array of TOperationTypeerrorTypeerrorsItem;
+  TOperationTypewarningsItemTypedataArray = Array of TOperationTypewarningsItemTypedataItem;
+  TOperationTypewarningsArray = Array of TOperationTypewarningsItem;
+  TOperationListTypeitemsArray = Array of TOperation;
+  TPolicyTypeauditConfigsArray = Array of TAuditConfig;
+  TPolicyTypebindingsArray = Array of TBinding;
+  TPolicyTyperulesArray = Array of TRule;
+  TRuleTypeconditionsArray = Array of TCondition;
+  TRuleTypelogConfigsArray = Array of TLogConfig;
+  TUserTypepublicKeysArray = Array of TPublicKey;
+  TUserListTypeitemsArray = Array of TUser;
+  
+  { --------------------------------------------------------------------
+    TAuditConfig
+    --------------------------------------------------------------------}
+  
+  TAuditConfig = Class(TGoogleBaseObject)
+  Private
+    FexemptedMembers : TStringArray;
+    Fservice : String;
+  Protected
+    //Property setters
+    Procedure SetexemptedMembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setservice(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property exemptedMembers : TStringArray Index 0 Read FexemptedMembers Write SetexemptedMembers;
+    Property service : String Index 8 Read Fservice Write Setservice;
+  end;
+  TAuditConfigClass = Class of TAuditConfig;
+  
+  { --------------------------------------------------------------------
+    TAuthorizedKeysView
+    --------------------------------------------------------------------}
+  
+  TAuthorizedKeysView = Class(TGoogleBaseObject)
+  Private
+    Fkeys : TStringArray;
+    Fsudoer : boolean;
+  Protected
+    //Property setters
+    Procedure Setkeys(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setsudoer(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property keys : TStringArray Index 0 Read Fkeys Write Setkeys;
+    Property sudoer : boolean Index 8 Read Fsudoer Write Setsudoer;
+  end;
+  TAuthorizedKeysViewClass = Class of TAuthorizedKeysView;
+  
+  { --------------------------------------------------------------------
+    TBinding
+    --------------------------------------------------------------------}
+  
+  TBinding = Class(TGoogleBaseObject)
+  Private
+    Fmembers : TStringArray;
+    Frole : String;
+  Protected
+    //Property setters
+    Procedure Setmembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property members : TStringArray Index 0 Read Fmembers Write Setmembers;
+    Property role : String Index 8 Read Frole Write Setrole;
+  end;
+  TBindingClass = Class of TBinding;
+  
+  { --------------------------------------------------------------------
+    TCondition
+    --------------------------------------------------------------------}
+  
+  TCondition = Class(TGoogleBaseObject)
+  Private
+    Fiam : String;
+    Fop : String;
+    Fsvc : String;
+    Fsys : String;
+    Fvalue : String;
+    Fvalues : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setiam(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setop(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsvc(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsys(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property iam : String Index 0 Read Fiam Write Setiam;
+    Property op : String Index 8 Read Fop Write Setop;
+    Property svc : String Index 16 Read Fsvc Write Setsvc;
+    Property sys : String Index 24 Read Fsys Write Setsys;
+    Property value : String Index 32 Read Fvalue Write Setvalue;
+    Property values : TStringArray Index 40 Read Fvalues Write Setvalues;
+  end;
+  TConditionClass = Class of TCondition;
+  
+  { --------------------------------------------------------------------
+    TGroup
+    --------------------------------------------------------------------}
+  
+  TGroup = Class(TGoogleBaseObject)
+  Private
+    FcreationTimestamp : String;
+    Fdescription : String;
+    Fid : String;
+    Fkind : String;
+    Fmembers : TStringArray;
+    Fname : String;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property creationTimestamp : String Index 0 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property members : TStringArray Index 32 Read Fmembers Write Setmembers;
+    Property name : String Index 40 Read Fname Write Setname;
+    Property selfLink : String Index 48 Read FselfLink Write SetselfLink;
+  end;
+  TGroupClass = Class of TGroup;
+  
+  { --------------------------------------------------------------------
+    TGroupList
+    --------------------------------------------------------------------}
+  
+  TGroupList = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fitems : TGroupListTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TGroupListTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property items : TGroupListTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 32 Read FselfLink Write SetselfLink;
+  end;
+  TGroupListClass = Class of TGroupList;
+  
+  { --------------------------------------------------------------------
+    TGroupsAddMemberRequest
+    --------------------------------------------------------------------}
+  
+  TGroupsAddMemberRequest = Class(TGoogleBaseObject)
+  Private
+    Fusers : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setusers(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property users : TStringArray Index 0 Read Fusers Write Setusers;
+  end;
+  TGroupsAddMemberRequestClass = Class of TGroupsAddMemberRequest;
+  
+  { --------------------------------------------------------------------
+    TGroupsRemoveMemberRequest
+    --------------------------------------------------------------------}
+  
+  TGroupsRemoveMemberRequest = Class(TGoogleBaseObject)
+  Private
+    Fusers : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setusers(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property users : TStringArray Index 0 Read Fusers Write Setusers;
+  end;
+  TGroupsRemoveMemberRequestClass = Class of TGroupsRemoveMemberRequest;
+  
+  { --------------------------------------------------------------------
+    TLinuxAccountViews
+    --------------------------------------------------------------------}
+  
+  TLinuxAccountViews = Class(TGoogleBaseObject)
+  Private
+    FgroupViews : TLinuxAccountViewsTypegroupViewsArray;
+    Fkind : String;
+    FuserViews : TLinuxAccountViewsTypeuserViewsArray;
+  Protected
+    //Property setters
+    Procedure SetgroupViews(AIndex : Integer; const AValue : TLinuxAccountViewsTypegroupViewsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserViews(AIndex : Integer; const AValue : TLinuxAccountViewsTypeuserViewsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property groupViews : TLinuxAccountViewsTypegroupViewsArray Index 0 Read FgroupViews Write SetgroupViews;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property userViews : TLinuxAccountViewsTypeuserViewsArray Index 16 Read FuserViews Write SetuserViews;
+  end;
+  TLinuxAccountViewsClass = Class of TLinuxAccountViews;
+  
+  { --------------------------------------------------------------------
+    TLinuxGetAuthorizedKeysViewResponse
+    --------------------------------------------------------------------}
+  
+  TLinuxGetAuthorizedKeysViewResponse = Class(TGoogleBaseObject)
+  Private
+    Fresource : TAuthorizedKeysView;
+  Protected
+    //Property setters
+    Procedure Setresource(AIndex : Integer; const AValue : TAuthorizedKeysView); virtual;
+  Public
+  Published
+    Property resource : TAuthorizedKeysView Index 0 Read Fresource Write Setresource;
+  end;
+  TLinuxGetAuthorizedKeysViewResponseClass = Class of TLinuxGetAuthorizedKeysViewResponse;
+  
+  { --------------------------------------------------------------------
+    TLinuxGetLinuxAccountViewsResponse
+    --------------------------------------------------------------------}
+  
+  TLinuxGetLinuxAccountViewsResponse = Class(TGoogleBaseObject)
+  Private
+    Fresource : TLinuxAccountViews;
+  Protected
+    //Property setters
+    Procedure Setresource(AIndex : Integer; const AValue : TLinuxAccountViews); virtual;
+  Public
+  Published
+    Property resource : TLinuxAccountViews Index 0 Read Fresource Write Setresource;
+  end;
+  TLinuxGetLinuxAccountViewsResponseClass = Class of TLinuxGetLinuxAccountViewsResponse;
+  
+  { --------------------------------------------------------------------
+    TLinuxGroupView
+    --------------------------------------------------------------------}
+  
+  TLinuxGroupView = Class(TGoogleBaseObject)
+  Private
+    Fgid : integer;
+    FgroupName : String;
+    Fmembers : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setgid(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetgroupName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property gid : integer Index 0 Read Fgid Write Setgid;
+    Property groupName : String Index 8 Read FgroupName Write SetgroupName;
+    Property members : TStringArray Index 16 Read Fmembers Write Setmembers;
+  end;
+  TLinuxGroupViewClass = Class of TLinuxGroupView;
+  
+  { --------------------------------------------------------------------
+    TLinuxUserView
+    --------------------------------------------------------------------}
+  
+  TLinuxUserView = Class(TGoogleBaseObject)
+  Private
+    Fgecos : String;
+    Fgid : integer;
+    FhomeDirectory : String;
+    Fshell : String;
+    Fuid : integer;
+    Fusername : String;
+  Protected
+    //Property setters
+    Procedure Setgecos(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgid(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SethomeDirectory(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setshell(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuid(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setusername(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property gecos : String Index 0 Read Fgecos Write Setgecos;
+    Property gid : integer Index 8 Read Fgid Write Setgid;
+    Property homeDirectory : String Index 16 Read FhomeDirectory Write SethomeDirectory;
+    Property shell : String Index 24 Read Fshell Write Setshell;
+    Property uid : integer Index 32 Read Fuid Write Setuid;
+    Property username : String Index 40 Read Fusername Write Setusername;
+  end;
+  TLinuxUserViewClass = Class of TLinuxUserView;
+  
+  { --------------------------------------------------------------------
+    TLogConfig
+    --------------------------------------------------------------------}
+  
+  TLogConfig = Class(TGoogleBaseObject)
+  Private
+    Fcounter : TLogConfigCounterOptions;
+  Protected
+    //Property setters
+    Procedure Setcounter(AIndex : Integer; const AValue : TLogConfigCounterOptions); virtual;
+  Public
+  Published
+    Property counter : TLogConfigCounterOptions Index 0 Read Fcounter Write Setcounter;
+  end;
+  TLogConfigClass = Class of TLogConfig;
+  
+  { --------------------------------------------------------------------
+    TLogConfigCounterOptions
+    --------------------------------------------------------------------}
+  
+  TLogConfigCounterOptions = Class(TGoogleBaseObject)
+  Private
+    Ffield : String;
+    Fmetric : String;
+  Protected
+    //Property setters
+    Procedure Setfield(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetric(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property field : String Index 0 Read Ffield Write Setfield;
+    Property metric : String Index 8 Read Fmetric Write Setmetric;
+  end;
+  TLogConfigCounterOptionsClass = Class of TLogConfigCounterOptions;
+  
+  { --------------------------------------------------------------------
+    TOperationTypeerrorTypeerrorsItem
+    --------------------------------------------------------------------}
+  
+  TOperationTypeerrorTypeerrorsItem = Class(TGoogleBaseObject)
+  Private
+    Fcode : String;
+    Flocation : String;
+    Fmessage : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property code : String Index 0 Read Fcode Write Setcode;
+    Property location : String Index 8 Read Flocation Write Setlocation;
+    Property message : String Index 16 Read Fmessage Write Setmessage;
+  end;
+  TOperationTypeerrorTypeerrorsItemClass = Class of TOperationTypeerrorTypeerrorsItem;
+  
+  { --------------------------------------------------------------------
+    TOperationTypeerror
+    --------------------------------------------------------------------}
+  
+  TOperationTypeerror = Class(TGoogleBaseObject)
+  Private
+    Ferrors : TOperationTypeerrorTypeerrorsArray;
+  Protected
+    //Property setters
+    Procedure Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property errors : TOperationTypeerrorTypeerrorsArray Index 0 Read Ferrors Write Seterrors;
+  end;
+  TOperationTypeerrorClass = Class of TOperationTypeerror;
+  
+  { --------------------------------------------------------------------
+    TOperationTypewarningsItemTypedataItem
+    --------------------------------------------------------------------}
+  
+  TOperationTypewarningsItemTypedataItem = Class(TGoogleBaseObject)
+  Private
+    Fkey : String;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property key : String Index 0 Read Fkey Write Setkey;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TOperationTypewarningsItemTypedataItemClass = Class of TOperationTypewarningsItemTypedataItem;
+  
+  { --------------------------------------------------------------------
+    TOperationTypewarningsItem
+    --------------------------------------------------------------------}
+  
+  TOperationTypewarningsItem = Class(TGoogleBaseObject)
+  Private
+    Fcode : String;
+    Fdata : TOperationTypewarningsItemTypedataArray;
+    Fmessage : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : String Index 0 Read Fcode Write Setcode;
+    Property data : TOperationTypewarningsItemTypedataArray Index 8 Read Fdata Write Setdata;
+    Property message : String Index 16 Read Fmessage Write Setmessage;
+  end;
+  TOperationTypewarningsItemClass = Class of TOperationTypewarningsItem;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    FclientOperationId : String;
+    FcreationTimestamp : String;
+    Fdescription : String;
+    FendTime : String;
+    Ferror : TOperationTypeerror;
+    FhttpErrorMessage : String;
+    FhttpErrorStatusCode : integer;
+    Fid : String;
+    FinsertTime : String;
+    Fkind : String;
+    Fname : String;
+    FoperationType : String;
+    Fprogress : integer;
+    Fregion : String;
+    FselfLink : String;
+    FstartTime : String;
+    Fstatus : String;
+    FstatusMessage : String;
+    FtargetId : String;
+    FtargetLink : String;
+    Fuser : String;
+    Fwarnings : TOperationTypewarningsArray;
+    Fzone : String;
+  Protected
+    //Property setters
+    Procedure SetclientOperationId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TOperationTypeerror); virtual;
+    Procedure SethttpErrorMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinsertTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoperationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprogress(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setregion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstatusMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettargetId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettargetLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); virtual;
+    Procedure Setzone(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property clientOperationId : String Index 0 Read FclientOperationId Write SetclientOperationId;
+    Property creationTimestamp : String Index 8 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property description : String Index 16 Read Fdescription Write Setdescription;
+    Property endTime : String Index 24 Read FendTime Write SetendTime;
+    Property error : TOperationTypeerror Index 32 Read Ferror Write Seterror;
+    Property httpErrorMessage : String Index 40 Read FhttpErrorMessage Write SethttpErrorMessage;
+    Property httpErrorStatusCode : integer Index 48 Read FhttpErrorStatusCode Write SethttpErrorStatusCode;
+    Property id : String Index 56 Read Fid Write Setid;
+    Property insertTime : String Index 64 Read FinsertTime Write SetinsertTime;
+    Property kind : String Index 72 Read Fkind Write Setkind;
+    Property name : String Index 80 Read Fname Write Setname;
+    Property operationType : String Index 88 Read FoperationType Write SetoperationType;
+    Property progress : integer Index 96 Read Fprogress Write Setprogress;
+    Property region : String Index 104 Read Fregion Write Setregion;
+    Property selfLink : String Index 112 Read FselfLink Write SetselfLink;
+    Property startTime : String Index 120 Read FstartTime Write SetstartTime;
+    Property status : String Index 128 Read Fstatus Write Setstatus;
+    Property statusMessage : String Index 136 Read FstatusMessage Write SetstatusMessage;
+    Property targetId : String Index 144 Read FtargetId Write SettargetId;
+    Property targetLink : String Index 152 Read FtargetLink Write SettargetLink;
+    Property user : String Index 160 Read Fuser Write Setuser;
+    Property warnings : TOperationTypewarningsArray Index 168 Read Fwarnings Write Setwarnings;
+    Property zone : String Index 176 Read Fzone Write Setzone;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TOperationList
+    --------------------------------------------------------------------}
+  
+  TOperationList = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fitems : TOperationListTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TOperationListTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property items : TOperationListTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 32 Read FselfLink Write SetselfLink;
+  end;
+  TOperationListClass = Class of TOperationList;
+  
+  { --------------------------------------------------------------------
+    TPolicy
+    --------------------------------------------------------------------}
+  
+  TPolicy = Class(TGoogleBaseObject)
+  Private
+    FauditConfigs : TPolicyTypeauditConfigsArray;
+    Fbindings : TPolicyTypebindingsArray;
+    Fetag : String;
+    FiamOwned : boolean;
+    Frules : TPolicyTyperulesArray;
+    Fversion : integer;
+  Protected
+    //Property setters
+    Procedure SetauditConfigs(AIndex : Integer; const AValue : TPolicyTypeauditConfigsArray); virtual;
+    Procedure Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetiamOwned(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrules(AIndex : Integer; const AValue : TPolicyTyperulesArray); virtual;
+    Procedure Setversion(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property auditConfigs : TPolicyTypeauditConfigsArray Index 0 Read FauditConfigs Write SetauditConfigs;
+    Property bindings : TPolicyTypebindingsArray Index 8 Read Fbindings Write Setbindings;
+    Property etag : String Index 16 Read Fetag Write Setetag;
+    Property iamOwned : boolean Index 24 Read FiamOwned Write SetiamOwned;
+    Property rules : TPolicyTyperulesArray Index 32 Read Frules Write Setrules;
+    Property version : integer Index 40 Read Fversion Write Setversion;
+  end;
+  TPolicyClass = Class of TPolicy;
+  
+  { --------------------------------------------------------------------
+    TPublicKey
+    --------------------------------------------------------------------}
+  
+  TPublicKey = Class(TGoogleBaseObject)
+  Private
+    FcreationTimestamp : String;
+    Fdescription : String;
+    FexpirationTimestamp : String;
+    Ffingerprint : String;
+    Fkey : String;
+  Protected
+    //Property setters
+    Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetexpirationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property creationTimestamp : String Index 0 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property expirationTimestamp : String Index 16 Read FexpirationTimestamp Write SetexpirationTimestamp;
+    Property fingerprint : String Index 24 Read Ffingerprint Write Setfingerprint;
+    Property key : String Index 32 Read Fkey Write Setkey;
+  end;
+  TPublicKeyClass = Class of TPublicKey;
+  
+  { --------------------------------------------------------------------
+    TRule
+    --------------------------------------------------------------------}
+  
+  TRule = Class(TGoogleBaseObject)
+  Private
+    Faction : String;
+    Fconditions : TRuleTypeconditionsArray;
+    Fdescription : String;
+    Fins : TStringArray;
+    FlogConfigs : TRuleTypelogConfigsArray;
+    FnotIns : TStringArray;
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setaction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setconditions(AIndex : Integer; const AValue : TRuleTypeconditionsArray); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setins(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetlogConfigs(AIndex : Integer; const AValue : TRuleTypelogConfigsArray); virtual;
+    Procedure SetnotIns(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property action : String Index 0 Read Faction Write Setaction;
+    Property conditions : TRuleTypeconditionsArray Index 8 Read Fconditions Write Setconditions;
+    Property description : String Index 16 Read Fdescription Write Setdescription;
+    Property ins : TStringArray Index 24 Read Fins Write Setins;
+    Property logConfigs : TRuleTypelogConfigsArray Index 32 Read FlogConfigs Write SetlogConfigs;
+    Property notIns : TStringArray Index 40 Read FnotIns Write SetnotIns;
+    Property permissions : TStringArray Index 48 Read Fpermissions Write Setpermissions;
+  end;
+  TRuleClass = Class of TRule;
+  
+  { --------------------------------------------------------------------
+    TTestPermissionsRequest
+    --------------------------------------------------------------------}
+  
+  TTestPermissionsRequest = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestPermissionsRequestClass = Class of TTestPermissionsRequest;
+  
+  { --------------------------------------------------------------------
+    TTestPermissionsResponse
+    --------------------------------------------------------------------}
+  
+  TTestPermissionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestPermissionsResponseClass = Class of TTestPermissionsResponse;
+  
+  { --------------------------------------------------------------------
+    TUser
+    --------------------------------------------------------------------}
+  
+  TUser = Class(TGoogleBaseObject)
+  Private
+    FcreationTimestamp : String;
+    Fdescription : String;
+    Fgroups : TStringArray;
+    Fid : String;
+    Fkind : String;
+    Fname : String;
+    Fowner : String;
+    FpublicKeys : TUserTypepublicKeysArray;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgroups(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setowner(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpublicKeys(AIndex : Integer; const AValue : TUserTypepublicKeysArray); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property creationTimestamp : String Index 0 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property groups : TStringArray Index 16 Read Fgroups Write Setgroups;
+    Property id : String Index 24 Read Fid Write Setid;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property name : String Index 40 Read Fname Write Setname;
+    Property owner : String Index 48 Read Fowner Write Setowner;
+    Property publicKeys : TUserTypepublicKeysArray Index 56 Read FpublicKeys Write SetpublicKeys;
+    Property selfLink : String Index 64 Read FselfLink Write SetselfLink;
+  end;
+  TUserClass = Class of TUser;
+  
+  { --------------------------------------------------------------------
+    TUserList
+    --------------------------------------------------------------------}
+  
+  TUserList = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fitems : TUserListTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TUserListTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property items : TUserListTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 32 Read FselfLink Write SetselfLink;
+  end;
+  TUserListClass = Class of TUserList;
+  
+  { --------------------------------------------------------------------
+    TGlobalAccountsOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TGlobalAccountsOperationsResource, method List
+  
+  TGlobalAccountsOperationsListOptions = Record
+    filter : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  TGlobalAccountsOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Procedure Delete(operation: string; project: string);
+    Function Get(operation: string; project: string) : TOperation;
+    Function List(project: string; AQuery : string  = '') : TOperationList;
+    Function List(project: string; AQuery : TGlobalAccountsOperationslistOptions) : TOperationList;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TGroupsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TGroupsResource, method List
+  
+  TGroupsListOptions = Record
+    filter : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  TGroupsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function AddMember(groupName: string; project: string; aGroupsAddMemberRequest : TGroupsAddMemberRequest) : TOperation;
+    Function Delete(groupName: string; project: string) : TOperation;
+    Function Get(groupName: string; project: string) : TGroup;
+    Function GetIamPolicy(project: string; resource: string) : TPolicy;
+    Function Insert(project: string; aGroup : TGroup) : TOperation;
+    Function List(project: string; AQuery : string  = '') : TGroupList;
+    Function List(project: string; AQuery : TGroupslistOptions) : TGroupList;
+    Function RemoveMember(groupName: string; project: string; aGroupsRemoveMemberRequest : TGroupsRemoveMemberRequest) : TOperation;
+    Function SetIamPolicy(project: string; resource: string; aPolicy : TPolicy) : TPolicy;
+    Function TestIamPermissions(project: string; resource: string; aTestPermissionsRequest : TTestPermissionsRequest) : TTestPermissionsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TLinuxResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TLinuxResource, method GetAuthorizedKeysView
+  
+  TLinuxGetAuthorizedKeysViewOptions = Record
+    instance : String;
+    login : boolean;
+  end;
+  
+  
+  //Optional query Options for TLinuxResource, method GetLinuxAccountViews
+  
+  TLinuxGetLinuxAccountViewsOptions = Record
+    filter : String;
+    instance : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  TLinuxResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function GetAuthorizedKeysView(project: string; user: string; zone: string; AQuery : string  = '') : TLinuxGetAuthorizedKeysViewResponse;
+    Function GetAuthorizedKeysView(project: string; user: string; zone: string; AQuery : TLinuxgetAuthorizedKeysViewOptions) : TLinuxGetAuthorizedKeysViewResponse;
+    Function GetLinuxAccountViews(project: string; zone: string; AQuery : string  = '') : TLinuxGetLinuxAccountViewsResponse;
+    Function GetLinuxAccountViews(project: string; zone: string; AQuery : TLinuxgetLinuxAccountViewsOptions) : TLinuxGetLinuxAccountViewsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TUsersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TUsersResource, method List
+  
+  TUsersListOptions = Record
+    filter : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TUsersResource, method RemovePublicKey
+  
+  TUsersRemovePublicKeyOptions = Record
+    fingerprint : String;
+  end;
+  
+  TUsersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function AddPublicKey(project: string; user: string; aPublicKey : TPublicKey) : TOperation;
+    Function Delete(project: string; user: string) : TOperation;
+    Function Get(project: string; user: string) : TUser;
+    Function GetIamPolicy(project: string; resource: string) : TPolicy;
+    Function Insert(project: string; aUser : TUser) : TOperation;
+    Function List(project: string; AQuery : string  = '') : TUserList;
+    Function List(project: string; AQuery : TUserslistOptions) : TUserList;
+    Function RemovePublicKey(project: string; user: string; AQuery : string  = '') : TOperation;
+    Function RemovePublicKey(project: string; user: string; AQuery : TUsersremovePublicKeyOptions) : TOperation;
+    Function SetIamPolicy(project: string; resource: string; aPolicy : TPolicy) : TPolicy;
+    Function TestIamPermissions(project: string; resource: string; aTestPermissionsRequest : TTestPermissionsRequest) : TTestPermissionsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TClouduseraccountsAPI
+    --------------------------------------------------------------------}
+  
+  TClouduseraccountsAPI = Class(TGoogleAPI)
+  Private
+    FGlobalAccountsOperationsInstance : TGlobalAccountsOperationsResource;
+    FGroupsInstance : TGroupsResource;
+    FLinuxInstance : TLinuxResource;
+    FUsersInstance : TUsersResource;
+    Function GetGlobalAccountsOperationsInstance : TGlobalAccountsOperationsResource;virtual;
+    Function GetGroupsInstance : TGroupsResource;virtual;
+    Function GetLinuxInstance : TLinuxResource;virtual;
+    Function GetUsersInstance : TUsersResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateGlobalAccountsOperationsResource(AOwner : TComponent) : TGlobalAccountsOperationsResource;virtual;overload;
+    Function CreateGlobalAccountsOperationsResource : TGlobalAccountsOperationsResource;virtual;overload;
+    Function CreateGroupsResource(AOwner : TComponent) : TGroupsResource;virtual;overload;
+    Function CreateGroupsResource : TGroupsResource;virtual;overload;
+    Function CreateLinuxResource(AOwner : TComponent) : TLinuxResource;virtual;overload;
+    Function CreateLinuxResource : TLinuxResource;virtual;overload;
+    Function CreateUsersResource(AOwner : TComponent) : TUsersResource;virtual;overload;
+    Function CreateUsersResource : TUsersResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property GlobalAccountsOperationsResource : TGlobalAccountsOperationsResource Read GetGlobalAccountsOperationsInstance;
+    Property GroupsResource : TGroupsResource Read GetGroupsInstance;
+    Property LinuxResource : TLinuxResource Read GetLinuxInstance;
+    Property UsersResource : TUsersResource Read GetUsersInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAuditConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TAuditConfig.SetexemptedMembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FexemptedMembers=AValue) then exit;
+  FexemptedMembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAuditConfig.Setservice(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fservice=AValue) then exit;
+  Fservice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAuditConfig.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'exemptedmembers' : SetLength(FexemptedMembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAuthorizedKeysView
+  --------------------------------------------------------------------}
+
+
+Procedure TAuthorizedKeysView.Setkeys(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fkeys=AValue) then exit;
+  Fkeys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAuthorizedKeysView.Setsudoer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fsudoer=AValue) then exit;
+  Fsudoer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAuthorizedKeysView.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'keys' : SetLength(Fkeys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBinding
+  --------------------------------------------------------------------}
+
+
+Procedure TBinding.Setmembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBinding.Setrole(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frole=AValue) then exit;
+  Frole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBinding.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCondition
+  --------------------------------------------------------------------}
+
+
+Procedure TCondition.Setiam(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fiam=AValue) then exit;
+  Fiam:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setop(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fop=AValue) then exit;
+  Fop:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setsvc(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsvc=AValue) then exit;
+  Fsvc:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setsys(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsys=AValue) then exit;
+  Fsys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setvalues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCondition.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TGroup.SetcreationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTimestamp=AValue) then exit;
+  FcreationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setmembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGroup.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGroupList
+  --------------------------------------------------------------------}
+
+
+Procedure TGroupList.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroupList.Setitems(AIndex : Integer; const AValue : TGroupListTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroupList.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroupList.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroupList.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGroupList.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGroupsAddMemberRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TGroupsAddMemberRequest.Setusers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fusers=AValue) then exit;
+  Fusers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGroupsAddMemberRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'users' : SetLength(Fusers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGroupsRemoveMemberRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TGroupsRemoveMemberRequest.Setusers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fusers=AValue) then exit;
+  Fusers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGroupsRemoveMemberRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'users' : SetLength(Fusers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxAccountViews
+  --------------------------------------------------------------------}
+
+
+Procedure TLinuxAccountViews.SetgroupViews(AIndex : Integer; const AValue : TLinuxAccountViewsTypegroupViewsArray); 
+
+begin
+  If (FgroupViews=AValue) then exit;
+  FgroupViews:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxAccountViews.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxAccountViews.SetuserViews(AIndex : Integer; const AValue : TLinuxAccountViewsTypeuserViewsArray); 
+
+begin
+  If (FuserViews=AValue) then exit;
+  FuserViews:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLinuxAccountViews.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'groupviews' : SetLength(FgroupViews,ALength);
+  'userviews' : SetLength(FuserViews,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxGetAuthorizedKeysViewResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TLinuxGetAuthorizedKeysViewResponse.Setresource(AIndex : Integer; const AValue : TAuthorizedKeysView); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxGetLinuxAccountViewsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TLinuxGetLinuxAccountViewsResponse.Setresource(AIndex : Integer; const AValue : TLinuxAccountViews); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxGroupView
+  --------------------------------------------------------------------}
+
+
+Procedure TLinuxGroupView.Setgid(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fgid=AValue) then exit;
+  Fgid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxGroupView.SetgroupName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgroupName=AValue) then exit;
+  FgroupName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxGroupView.Setmembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLinuxGroupView.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxUserView
+  --------------------------------------------------------------------}
+
+
+Procedure TLinuxUserView.Setgecos(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fgecos=AValue) then exit;
+  Fgecos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxUserView.Setgid(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fgid=AValue) then exit;
+  Fgid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxUserView.SethomeDirectory(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhomeDirectory=AValue) then exit;
+  FhomeDirectory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxUserView.Setshell(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fshell=AValue) then exit;
+  Fshell:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxUserView.Setuid(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fuid=AValue) then exit;
+  Fuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinuxUserView.Setusername(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fusername=AValue) then exit;
+  Fusername:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TLogConfig.Setcounter(AIndex : Integer; const AValue : TLogConfigCounterOptions); 
+
+begin
+  If (Fcounter=AValue) then exit;
+  Fcounter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogConfigCounterOptions
+  --------------------------------------------------------------------}
+
+
+Procedure TLogConfigCounterOptions.Setfield(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffield=AValue) then exit;
+  Ffield:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogConfigCounterOptions.Setmetric(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmetric=AValue) then exit;
+  Fmetric:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypeerrorTypeerrorsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationTypeerrorTypeerrorsItem.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationTypeerrorTypeerrorsItem.Setlocation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationTypeerrorTypeerrorsItem.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypeerror
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationTypeerror.Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); 
+
+begin
+  If (Ferrors=AValue) then exit;
+  Ferrors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperationTypeerror.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errors' : SetLength(Ferrors,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypewarningsItemTypedataItem
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationTypewarningsItemTypedataItem.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationTypewarningsItemTypedataItem.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypewarningsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationTypewarningsItem.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationTypewarningsItem.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperationTypewarningsItem.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'data' : SetLength(Fdata,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.SetclientOperationId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientOperationId=AValue) then exit;
+  FclientOperationId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetcreationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTimestamp=AValue) then exit;
+  FcreationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TOperationTypeerror); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SethttpErrorMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhttpErrorMessage=AValue) then exit;
+  FhttpErrorMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FhttpErrorStatusCode=AValue) then exit;
+  FhttpErrorStatusCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetinsertTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinsertTime=AValue) then exit;
+  FinsertTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetoperationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoperationType=AValue) then exit;
+  FoperationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setprogress(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fprogress=AValue) then exit;
+  Fprogress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setregion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fregion=AValue) then exit;
+  Fregion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SetstatusMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstatusMessage=AValue) then exit;
+  FstatusMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SettargetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtargetId=AValue) then exit;
+  FtargetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.SettargetLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtargetLink=AValue) then exit;
+  FtargetLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setuser(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fuser=AValue) then exit;
+  Fuser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); 
+
+begin
+  If (Fwarnings=AValue) then exit;
+  Fwarnings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setzone(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fzone=AValue) then exit;
+  Fzone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperation.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'warnings' : SetLength(Fwarnings,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationList
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationList.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationList.Setitems(AIndex : Integer; const AValue : TOperationListTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationList.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationList.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationList.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperationList.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPolicy
+  --------------------------------------------------------------------}
+
+
+Procedure TPolicy.SetauditConfigs(AIndex : Integer; const AValue : TPolicyTypeauditConfigsArray); 
+
+begin
+  If (FauditConfigs=AValue) then exit;
+  FauditConfigs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); 
+
+begin
+  If (Fbindings=AValue) then exit;
+  Fbindings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.SetiamOwned(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FiamOwned=AValue) then exit;
+  FiamOwned:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setrules(AIndex : Integer; const AValue : TPolicyTyperulesArray); 
+
+begin
+  If (Frules=AValue) then exit;
+  Frules:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setversion(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fversion=AValue) then exit;
+  Fversion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPolicy.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'auditconfigs' : SetLength(FauditConfigs,ALength);
+  'bindings' : SetLength(Fbindings,ALength);
+  'rules' : SetLength(Frules,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPublicKey
+  --------------------------------------------------------------------}
+
+
+Procedure TPublicKey.SetcreationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTimestamp=AValue) then exit;
+  FcreationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicKey.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicKey.SetexpirationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FexpirationTimestamp=AValue) then exit;
+  FexpirationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicKey.Setfingerprint(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffingerprint=AValue) then exit;
+  Ffingerprint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicKey.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRule
+  --------------------------------------------------------------------}
+
+
+Procedure TRule.Setaction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faction=AValue) then exit;
+  Faction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setconditions(AIndex : Integer; const AValue : TRuleTypeconditionsArray); 
+
+begin
+  If (Fconditions=AValue) then exit;
+  Fconditions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setins(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fins=AValue) then exit;
+  Fins:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.SetlogConfigs(AIndex : Integer; const AValue : TRuleTypelogConfigsArray); 
+
+begin
+  If (FlogConfigs=AValue) then exit;
+  FlogConfigs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.SetnotIns(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FnotIns=AValue) then exit;
+  FnotIns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TRule.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'conditions' : SetLength(Fconditions,ALength);
+  'ins' : SetLength(Fins,ALength);
+  'logconfigs' : SetLength(FlogConfigs,ALength);
+  'notins' : SetLength(FnotIns,ALength);
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestPermissionsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTestPermissionsRequest.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestPermissionsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestPermissionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTestPermissionsResponse.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestPermissionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUser
+  --------------------------------------------------------------------}
+
+
+Procedure TUser.SetcreationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTimestamp=AValue) then exit;
+  FcreationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setgroups(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fgroups=AValue) then exit;
+  Fgroups:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setowner(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fowner=AValue) then exit;
+  Fowner:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.SetpublicKeys(AIndex : Integer; const AValue : TUserTypepublicKeysArray); 
+
+begin
+  If (FpublicKeys=AValue) then exit;
+  FpublicKeys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TUser.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'groups' : SetLength(Fgroups,ALength);
+  'publickeys' : SetLength(FpublicKeys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUserList
+  --------------------------------------------------------------------}
+
+
+Procedure TUserList.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserList.Setitems(AIndex : Integer; const AValue : TUserListTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserList.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserList.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserList.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TUserList.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGlobalAccountsOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TGlobalAccountsOperationsResource.ResourceName : String;
+
+begin
+  Result:='globalAccountsOperations';
+end;
+
+Class Function TGlobalAccountsOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouduseraccountsAPI;
+end;
+
+Procedure TGlobalAccountsOperationsResource.Delete(operation: string; project: string);
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = '{project}/global/operations/{operation}';
+  _Methodid   = 'clouduseraccounts.globalAccountsOperations.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['operation',operation,'project',project]);
+  ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
+end;
+
+Function TGlobalAccountsOperationsResource.Get(operation: string; project: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/operations/{operation}';
+  _Methodid   = 'clouduseraccounts.globalAccountsOperations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['operation',operation,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TGlobalAccountsOperationsResource.List(project: string; AQuery : string = '') : TOperationList;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/operations';
+  _Methodid   = 'clouduseraccounts.globalAccountsOperations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TOperationList) as TOperationList;
+end;
+
+
+Function TGlobalAccountsOperationsResource.List(project: string; AQuery : TGlobalAccountsOperationslistOptions) : TOperationList;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(project,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TGroupsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TGroupsResource.ResourceName : String;
+
+begin
+  Result:='groups';
+end;
+
+Class Function TGroupsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouduseraccountsAPI;
+end;
+
+Function TGroupsResource.AddMember(groupName: string; project: string; aGroupsAddMemberRequest : TGroupsAddMemberRequest) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/groups/{groupName}/addMember';
+  _Methodid   = 'clouduseraccounts.groups.addMember';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['groupName',groupName,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aGroupsAddMemberRequest,TOperation) as TOperation;
+end;
+
+Function TGroupsResource.Delete(groupName: string; project: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = '{project}/global/groups/{groupName}';
+  _Methodid   = 'clouduseraccounts.groups.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['groupName',groupName,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TGroupsResource.Get(groupName: string; project: string) : TGroup;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/groups/{groupName}';
+  _Methodid   = 'clouduseraccounts.groups.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['groupName',groupName,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TGroup) as TGroup;
+end;
+
+Function TGroupsResource.GetIamPolicy(project: string; resource: string) : TPolicy;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/groups/{resource}/getIamPolicy';
+  _Methodid   = 'clouduseraccounts.groups.getIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TPolicy) as TPolicy;
+end;
+
+Function TGroupsResource.Insert(project: string; aGroup : TGroup) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/groups';
+  _Methodid   = 'clouduseraccounts.groups.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aGroup,TOperation) as TOperation;
+end;
+
+Function TGroupsResource.List(project: string; AQuery : string = '') : TGroupList;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/groups';
+  _Methodid   = 'clouduseraccounts.groups.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TGroupList) as TGroupList;
+end;
+
+
+Function TGroupsResource.List(project: string; AQuery : TGroupslistOptions) : TGroupList;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(project,_Q);
+end;
+
+Function TGroupsResource.RemoveMember(groupName: string; project: string; aGroupsRemoveMemberRequest : TGroupsRemoveMemberRequest) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/groups/{groupName}/removeMember';
+  _Methodid   = 'clouduseraccounts.groups.removeMember';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['groupName',groupName,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aGroupsRemoveMemberRequest,TOperation) as TOperation;
+end;
+
+Function TGroupsResource.SetIamPolicy(project: string; resource: string; aPolicy : TPolicy) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/groups/{resource}/setIamPolicy';
+  _Methodid   = 'clouduseraccounts.groups.setIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aPolicy,TPolicy) as TPolicy;
+end;
+
+Function TGroupsResource.TestIamPermissions(project: string; resource: string; aTestPermissionsRequest : TTestPermissionsRequest) : TTestPermissionsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/groups/{resource}/testIamPermissions';
+  _Methodid   = 'clouduseraccounts.groups.testIamPermissions';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTestPermissionsRequest,TTestPermissionsResponse) as TTestPermissionsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TLinuxResource
+  --------------------------------------------------------------------}
+
+
+Class Function TLinuxResource.ResourceName : String;
+
+begin
+  Result:='linux';
+end;
+
+Class Function TLinuxResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouduseraccountsAPI;
+end;
+
+Function TLinuxResource.GetAuthorizedKeysView(project: string; user: string; zone: string; AQuery : string = '') : TLinuxGetAuthorizedKeysViewResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/zones/{zone}/authorizedKeysView/{user}';
+  _Methodid   = 'clouduseraccounts.linux.getAuthorizedKeysView';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'user',user,'zone',zone]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TLinuxGetAuthorizedKeysViewResponse) as TLinuxGetAuthorizedKeysViewResponse;
+end;
+
+
+Function TLinuxResource.GetAuthorizedKeysView(project: string; user: string; zone: string; AQuery : TLinuxgetAuthorizedKeysViewOptions) : TLinuxGetAuthorizedKeysViewResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'instance',AQuery.instance);
+  AddToQuery(_Q,'login',AQuery.login);
+  Result:=GetAuthorizedKeysView(project,user,zone,_Q);
+end;
+
+Function TLinuxResource.GetLinuxAccountViews(project: string; zone: string; AQuery : string = '') : TLinuxGetLinuxAccountViewsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/zones/{zone}/linuxAccountViews';
+  _Methodid   = 'clouduseraccounts.linux.getLinuxAccountViews';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'zone',zone]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TLinuxGetLinuxAccountViewsResponse) as TLinuxGetLinuxAccountViewsResponse;
+end;
+
+
+Function TLinuxResource.GetLinuxAccountViews(project: string; zone: string; AQuery : TLinuxgetLinuxAccountViewsOptions) : TLinuxGetLinuxAccountViewsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'instance',AQuery.instance);
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=GetLinuxAccountViews(project,zone,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TUsersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TUsersResource.ResourceName : String;
+
+begin
+  Result:='users';
+end;
+
+Class Function TUsersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TclouduseraccountsAPI;
+end;
+
+Function TUsersResource.AddPublicKey(project: string; user: string; aPublicKey : TPublicKey) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/users/{user}/addPublicKey';
+  _Methodid   = 'clouduseraccounts.users.addPublicKey';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'user',user]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aPublicKey,TOperation) as TOperation;
+end;
+
+Function TUsersResource.Delete(project: string; user: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = '{project}/global/users/{user}';
+  _Methodid   = 'clouduseraccounts.users.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'user',user]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TUsersResource.Get(project: string; user: string) : TUser;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/users/{user}';
+  _Methodid   = 'clouduseraccounts.users.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'user',user]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TUser) as TUser;
+end;
+
+Function TUsersResource.GetIamPolicy(project: string; resource: string) : TPolicy;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/users/{resource}/getIamPolicy';
+  _Methodid   = 'clouduseraccounts.users.getIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TPolicy) as TPolicy;
+end;
+
+Function TUsersResource.Insert(project: string; aUser : TUser) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/users';
+  _Methodid   = 'clouduseraccounts.users.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aUser,TOperation) as TOperation;
+end;
+
+Function TUsersResource.List(project: string; AQuery : string = '') : TUserList;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/users';
+  _Methodid   = 'clouduseraccounts.users.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TUserList) as TUserList;
+end;
+
+
+Function TUsersResource.List(project: string; AQuery : TUserslistOptions) : TUserList;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(project,_Q);
+end;
+
+Function TUsersResource.RemovePublicKey(project: string; user: string; AQuery : string = '') : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/users/{user}/removePublicKey';
+  _Methodid   = 'clouduseraccounts.users.removePublicKey';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'user',user]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TOperation) as TOperation;
+end;
+
+
+Function TUsersResource.RemovePublicKey(project: string; user: string; AQuery : TUsersremovePublicKeyOptions) : TOperation;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'fingerprint',AQuery.fingerprint);
+  Result:=RemovePublicKey(project,user,_Q);
+end;
+
+Function TUsersResource.SetIamPolicy(project: string; resource: string; aPolicy : TPolicy) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/users/{resource}/setIamPolicy';
+  _Methodid   = 'clouduseraccounts.users.setIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aPolicy,TPolicy) as TPolicy;
+end;
+
+Function TUsersResource.TestIamPermissions(project: string; resource: string; aTestPermissionsRequest : TTestPermissionsRequest) : TTestPermissionsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/users/{resource}/testIamPermissions';
+  _Methodid   = 'clouduseraccounts.users.testIamPermissions';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTestPermissionsRequest,TTestPermissionsResponse) as TTestPermissionsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TClouduseraccountsAPI
+  --------------------------------------------------------------------}
+
+Class Function TClouduseraccountsAPI.APIName : String;
+
+begin
+  Result:='clouduseraccounts';
+end;
+
+Class Function TClouduseraccountsAPI.APIVersion : String;
+
+begin
+  Result:='vm_alpha';
+end;
+
+Class Function TClouduseraccountsAPI.APIRevision : String;
+
+begin
+  Result:='20160316';
+end;
+
+Class Function TClouduseraccountsAPI.APIID : String;
+
+begin
+  Result:='clouduseraccounts:vm_alpha';
+end;
+
+Class Function TClouduseraccountsAPI.APITitle : String;
+
+begin
+  Result:='Cloud User Accounts API';
+end;
+
+Class Function TClouduseraccountsAPI.APIDescription : String;
+
+begin
+  Result:='Creates and manages users and groups for accessing Google Compute Engine virtual machines.';
+end;
+
+Class Function TClouduseraccountsAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TClouduseraccountsAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TClouduseraccountsAPI.APIIcon16 : String;
+
+begin
+  Result:='https://www.google.com/images/icons/product/compute_engine-16.png';
+end;
+
+Class Function TClouduseraccountsAPI.APIIcon32 : String;
+
+begin
+  Result:='https://www.google.com/images/icons/product/compute_engine-32.png';
+end;
+
+Class Function TClouduseraccountsAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/compute/docs/access/user-accounts/api/latest/';
+end;
+
+Class Function TClouduseraccountsAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TClouduseraccountsAPI.APIbasePath : string;
+
+begin
+  Result:='/clouduseraccounts/vm_alpha/projects/';
+end;
+
+Class Function TClouduseraccountsAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/clouduseraccounts/vm_alpha/projects/';
+end;
+
+Class Function TClouduseraccountsAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TClouduseraccountsAPI.APIservicePath : string;
+
+begin
+  Result:='clouduseraccounts/vm_alpha/projects/';
+end;
+
+Class Function TClouduseraccountsAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TClouduseraccountsAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,4);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/cloud-platform.read-only';
+  Result[1].Description:='View your data across Google Cloud Platform services';
+  Result[2].Name:='https://www.googleapis.com/auth/cloud.useraccounts';
+  Result[2].Description:='Manage your Google Cloud User Accounts';
+  Result[3].Name:='https://www.googleapis.com/auth/cloud.useraccounts.readonly';
+  Result[3].Description:='View your Google Cloud User Accounts';
+  
+end;
+
+Class Function TClouduseraccountsAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TClouduseraccountsAPI.RegisterAPIResources;
+
+begin
+  TAuditConfig.RegisterObject;
+  TAuthorizedKeysView.RegisterObject;
+  TBinding.RegisterObject;
+  TCondition.RegisterObject;
+  TGroup.RegisterObject;
+  TGroupList.RegisterObject;
+  TGroupsAddMemberRequest.RegisterObject;
+  TGroupsRemoveMemberRequest.RegisterObject;
+  TLinuxAccountViews.RegisterObject;
+  TLinuxGetAuthorizedKeysViewResponse.RegisterObject;
+  TLinuxGetLinuxAccountViewsResponse.RegisterObject;
+  TLinuxGroupView.RegisterObject;
+  TLinuxUserView.RegisterObject;
+  TLogConfig.RegisterObject;
+  TLogConfigCounterOptions.RegisterObject;
+  TOperationTypeerrorTypeerrorsItem.RegisterObject;
+  TOperationTypeerror.RegisterObject;
+  TOperationTypewarningsItemTypedataItem.RegisterObject;
+  TOperationTypewarningsItem.RegisterObject;
+  TOperation.RegisterObject;
+  TOperationList.RegisterObject;
+  TPolicy.RegisterObject;
+  TPublicKey.RegisterObject;
+  TRule.RegisterObject;
+  TTestPermissionsRequest.RegisterObject;
+  TTestPermissionsResponse.RegisterObject;
+  TUser.RegisterObject;
+  TUserList.RegisterObject;
+end;
+
+
+Function TClouduseraccountsAPI.GetGlobalAccountsOperationsInstance : TGlobalAccountsOperationsResource;
+
+begin
+  if (FGlobalAccountsOperationsInstance=Nil) then
+    FGlobalAccountsOperationsInstance:=CreateGlobalAccountsOperationsResource;
+  Result:=FGlobalAccountsOperationsInstance;
+end;
+
+Function TClouduseraccountsAPI.CreateGlobalAccountsOperationsResource : TGlobalAccountsOperationsResource;
+
+begin
+  Result:=CreateGlobalAccountsOperationsResource(Self);
+end;
+
+
+Function TClouduseraccountsAPI.CreateGlobalAccountsOperationsResource(AOwner : TComponent) : TGlobalAccountsOperationsResource;
+
+begin
+  Result:=TGlobalAccountsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouduseraccountsAPI.GetGroupsInstance : TGroupsResource;
+
+begin
+  if (FGroupsInstance=Nil) then
+    FGroupsInstance:=CreateGroupsResource;
+  Result:=FGroupsInstance;
+end;
+
+Function TClouduseraccountsAPI.CreateGroupsResource : TGroupsResource;
+
+begin
+  Result:=CreateGroupsResource(Self);
+end;
+
+
+Function TClouduseraccountsAPI.CreateGroupsResource(AOwner : TComponent) : TGroupsResource;
+
+begin
+  Result:=TGroupsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouduseraccountsAPI.GetLinuxInstance : TLinuxResource;
+
+begin
+  if (FLinuxInstance=Nil) then
+    FLinuxInstance:=CreateLinuxResource;
+  Result:=FLinuxInstance;
+end;
+
+Function TClouduseraccountsAPI.CreateLinuxResource : TLinuxResource;
+
+begin
+  Result:=CreateLinuxResource(Self);
+end;
+
+
+Function TClouduseraccountsAPI.CreateLinuxResource(AOwner : TComponent) : TLinuxResource;
+
+begin
+  Result:=TLinuxResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TClouduseraccountsAPI.GetUsersInstance : TUsersResource;
+
+begin
+  if (FUsersInstance=Nil) then
+    FUsersInstance:=CreateUsersResource;
+  Result:=FUsersInstance;
+end;
+
+Function TClouduseraccountsAPI.CreateUsersResource : TUsersResource;
+
+begin
+  Result:=CreateUsersResource(Self);
+end;
+
+
+Function TClouduseraccountsAPI.CreateUsersResource(AOwner : TComponent) : TUsersResource;
+
+begin
+  Result:=TUsersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TClouduseraccountsAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 477 - 521
packages/googleapi/src/googlecompute.pp


File diff suppressed because it is too large
+ 347 - 480
packages/googleapi/src/googlecomputeaccounts.pp


+ 1716 - 0
packages/googleapi/src/googleconsumersurveys.pp

@@ -0,0 +1,1716 @@
+unit googleconsumersurveys;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TFieldMask = Class;
+  TPageInfo = Class;
+  TResultsGetRequest = Class;
+  TResultsMask = Class;
+  TSurvey = Class;
+  TSurveyAudience = Class;
+  TSurveyCost = Class;
+  TSurveyQuestion = Class;
+  TSurveyQuestionImage = Class;
+  TSurveyResults = Class;
+  TSurveysListResponse = Class;
+  TSurveysStartRequest = Class;
+  TSurveysStartResponse = Class;
+  TSurveysStopResponse = Class;
+  TTokenPagination = Class;
+  TFieldMaskArray = Array of TFieldMask;
+  TPageInfoArray = Array of TPageInfo;
+  TResultsGetRequestArray = Array of TResultsGetRequest;
+  TResultsMaskArray = Array of TResultsMask;
+  TSurveyArray = Array of TSurvey;
+  TSurveyAudienceArray = Array of TSurveyAudience;
+  TSurveyCostArray = Array of TSurveyCost;
+  TSurveyQuestionArray = Array of TSurveyQuestion;
+  TSurveyQuestionImageArray = Array of TSurveyQuestionImage;
+  TSurveyResultsArray = Array of TSurveyResults;
+  TSurveysListResponseArray = Array of TSurveysListResponse;
+  TSurveysStartRequestArray = Array of TSurveysStartRequest;
+  TSurveysStartResponseArray = Array of TSurveysStartResponse;
+  TSurveysStopResponseArray = Array of TSurveysStopResponse;
+  TTokenPaginationArray = Array of TTokenPagination;
+  //Anonymous types, using auto-generated names
+  TFieldMaskTypefieldsArray = Array of TFieldMask;
+  TResultsMaskTypefieldsArray = Array of TFieldMask;
+  TSurveyTypequestionsArray = Array of TSurveyQuestion;
+  TSurveyQuestionTypeimagesArray = Array of TSurveyQuestionImage;
+  TSurveysListResponseTyperesourcesArray = Array of TSurvey;
+  
+  { --------------------------------------------------------------------
+    TFieldMask
+    --------------------------------------------------------------------}
+  
+  TFieldMask = Class(TGoogleBaseObject)
+  Private
+    Ffields : TFieldMaskTypefieldsArray;
+    Fid : integer;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : TFieldMaskTypefieldsArray); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property fields : TFieldMaskTypefieldsArray Index 0 Read Ffields Write Setfields;
+    Property id : integer Index 8 Read Fid Write Setid;
+  end;
+  TFieldMaskClass = Class of TFieldMask;
+  
+  { --------------------------------------------------------------------
+    TPageInfo
+    --------------------------------------------------------------------}
+  
+  TPageInfo = Class(TGoogleBaseObject)
+  Private
+    FresultPerPage : integer;
+    FstartIndex : integer;
+    FtotalResults : integer;
+  Protected
+    //Property setters
+    Procedure SetresultPerPage(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettotalResults(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property resultPerPage : integer Index 0 Read FresultPerPage Write SetresultPerPage;
+    Property startIndex : integer Index 8 Read FstartIndex Write SetstartIndex;
+    Property totalResults : integer Index 16 Read FtotalResults Write SettotalResults;
+  end;
+  TPageInfoClass = Class of TPageInfo;
+  
+  { --------------------------------------------------------------------
+    TResultsGetRequest
+    --------------------------------------------------------------------}
+  
+  TResultsGetRequest = Class(TGoogleBaseObject)
+  Private
+    FresultMask : TResultsMask;
+  Protected
+    //Property setters
+    Procedure SetresultMask(AIndex : Integer; const AValue : TResultsMask); virtual;
+  Public
+  Published
+    Property resultMask : TResultsMask Index 0 Read FresultMask Write SetresultMask;
+  end;
+  TResultsGetRequestClass = Class of TResultsGetRequest;
+  
+  { --------------------------------------------------------------------
+    TResultsMask
+    --------------------------------------------------------------------}
+  
+  TResultsMask = Class(TGoogleBaseObject)
+  Private
+    Ffields : TResultsMaskTypefieldsArray;
+    Fprojection : String;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : TResultsMaskTypefieldsArray); virtual;
+    Procedure Setprojection(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property fields : TResultsMaskTypefieldsArray Index 0 Read Ffields Write Setfields;
+    Property projection : String Index 8 Read Fprojection Write Setprojection;
+  end;
+  TResultsMaskClass = Class of TResultsMask;
+  
+  { --------------------------------------------------------------------
+    TSurvey
+    --------------------------------------------------------------------}
+  
+  TSurvey = Class(TGoogleBaseObject)
+  Private
+    Faudience : TSurveyAudience;
+    Fcost : TSurveyCost;
+    FcustomerData : String;
+    Fdescription : String;
+    Fowners : TStringArray;
+    Fquestions : TSurveyTypequestionsArray;
+    Fstate : String;
+    FsurveyUrlId : String;
+    Ftitle : String;
+    FwantedResponseCount : integer;
+  Protected
+    //Property setters
+    Procedure Setaudience(AIndex : Integer; const AValue : TSurveyAudience); virtual;
+    Procedure Setcost(AIndex : Integer; const AValue : TSurveyCost); virtual;
+    Procedure SetcustomerData(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setowners(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setquestions(AIndex : Integer; const AValue : TSurveyTypequestionsArray); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsurveyUrlId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwantedResponseCount(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property audience : TSurveyAudience Index 0 Read Faudience Write Setaudience;
+    Property cost : TSurveyCost Index 8 Read Fcost Write Setcost;
+    Property customerData : String Index 16 Read FcustomerData Write SetcustomerData;
+    Property description : String Index 24 Read Fdescription Write Setdescription;
+    Property owners : TStringArray Index 32 Read Fowners Write Setowners;
+    Property questions : TSurveyTypequestionsArray Index 40 Read Fquestions Write Setquestions;
+    Property state : String Index 48 Read Fstate Write Setstate;
+    Property surveyUrlId : String Index 56 Read FsurveyUrlId Write SetsurveyUrlId;
+    Property title : String Index 64 Read Ftitle Write Settitle;
+    Property wantedResponseCount : integer Index 72 Read FwantedResponseCount Write SetwantedResponseCount;
+  end;
+  TSurveyClass = Class of TSurvey;
+  
+  { --------------------------------------------------------------------
+    TSurveyAudience
+    --------------------------------------------------------------------}
+  
+  TSurveyAudience = Class(TGoogleBaseObject)
+  Private
+    Fages : TStringArray;
+    Fcountry : String;
+    FcountrySubdivision : String;
+    Fgender : String;
+    Flanguages : TStringArray;
+    FmobileAppPanelId : String;
+    FpopulationSource : String;
+  Protected
+    //Property setters
+    Procedure Setages(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcountrySubdivision(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgender(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlanguages(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetmobileAppPanelId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpopulationSource(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property ages : TStringArray Index 0 Read Fages Write Setages;
+    Property country : String Index 8 Read Fcountry Write Setcountry;
+    Property countrySubdivision : String Index 16 Read FcountrySubdivision Write SetcountrySubdivision;
+    Property gender : String Index 24 Read Fgender Write Setgender;
+    Property languages : TStringArray Index 32 Read Flanguages Write Setlanguages;
+    Property mobileAppPanelId : String Index 40 Read FmobileAppPanelId Write SetmobileAppPanelId;
+    Property populationSource : String Index 48 Read FpopulationSource Write SetpopulationSource;
+  end;
+  TSurveyAudienceClass = Class of TSurveyAudience;
+  
+  { --------------------------------------------------------------------
+    TSurveyCost
+    --------------------------------------------------------------------}
+  
+  TSurveyCost = Class(TGoogleBaseObject)
+  Private
+    FcostPerResponseNanos : String;
+    FcurrencyCode : String;
+    FmaxCostPerResponseNanos : String;
+    Fnanos : String;
+  Protected
+    //Property setters
+    Procedure SetcostPerResponseNanos(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcurrencyCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxCostPerResponseNanos(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnanos(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property costPerResponseNanos : String Index 0 Read FcostPerResponseNanos Write SetcostPerResponseNanos;
+    Property currencyCode : String Index 8 Read FcurrencyCode Write SetcurrencyCode;
+    Property maxCostPerResponseNanos : String Index 16 Read FmaxCostPerResponseNanos Write SetmaxCostPerResponseNanos;
+    Property nanos : String Index 24 Read Fnanos Write Setnanos;
+  end;
+  TSurveyCostClass = Class of TSurveyCost;
+  
+  { --------------------------------------------------------------------
+    TSurveyQuestion
+    --------------------------------------------------------------------}
+  
+  TSurveyQuestion = Class(TGoogleBaseObject)
+  Private
+    FanswerOrder : String;
+    Fanswers : TStringArray;
+    FhasOther : boolean;
+    FhighValueLabel : String;
+    Fimages : TSurveyQuestionTypeimagesArray;
+    FlastAnswerPositionPinned : boolean;
+    FlowValueLabel : String;
+    FmustPickSuggestion : boolean;
+    FnumStars : String;
+    FopenTextPlaceholder : String;
+    FopenTextSuggestions : TStringArray;
+    Fquestion : String;
+    FsentimentText : String;
+    FsingleLineResponse : boolean;
+    FthresholdAnswers : TStringArray;
+    F_type : String;
+    FunitOfMeasurementLabel : String;
+    FvideoId : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetanswerOrder(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setanswers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SethasOther(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SethighValueLabel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimages(AIndex : Integer; const AValue : TSurveyQuestionTypeimagesArray); virtual;
+    Procedure SetlastAnswerPositionPinned(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetlowValueLabel(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmustPickSuggestion(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnumStars(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetopenTextPlaceholder(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetopenTextSuggestions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setquestion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsentimentText(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsingleLineResponse(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetthresholdAnswers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetunitOfMeasurementLabel(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoId(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property answerOrder : String Index 0 Read FanswerOrder Write SetanswerOrder;
+    Property answers : TStringArray Index 8 Read Fanswers Write Setanswers;
+    Property hasOther : boolean Index 16 Read FhasOther Write SethasOther;
+    Property highValueLabel : String Index 24 Read FhighValueLabel Write SethighValueLabel;
+    Property images : TSurveyQuestionTypeimagesArray Index 32 Read Fimages Write Setimages;
+    Property lastAnswerPositionPinned : boolean Index 40 Read FlastAnswerPositionPinned Write SetlastAnswerPositionPinned;
+    Property lowValueLabel : String Index 48 Read FlowValueLabel Write SetlowValueLabel;
+    Property mustPickSuggestion : boolean Index 56 Read FmustPickSuggestion Write SetmustPickSuggestion;
+    Property numStars : String Index 64 Read FnumStars Write SetnumStars;
+    Property openTextPlaceholder : String Index 72 Read FopenTextPlaceholder Write SetopenTextPlaceholder;
+    Property openTextSuggestions : TStringArray Index 80 Read FopenTextSuggestions Write SetopenTextSuggestions;
+    Property question : String Index 88 Read Fquestion Write Setquestion;
+    Property sentimentText : String Index 96 Read FsentimentText Write SetsentimentText;
+    Property singleLineResponse : boolean Index 104 Read FsingleLineResponse Write SetsingleLineResponse;
+    Property thresholdAnswers : TStringArray Index 112 Read FthresholdAnswers Write SetthresholdAnswers;
+    Property _type : String Index 120 Read F_type Write Set_type;
+    Property unitOfMeasurementLabel : String Index 128 Read FunitOfMeasurementLabel Write SetunitOfMeasurementLabel;
+    Property videoId : String Index 136 Read FvideoId Write SetvideoId;
+  end;
+  TSurveyQuestionClass = Class of TSurveyQuestion;
+  
+  { --------------------------------------------------------------------
+    TSurveyQuestionImage
+    --------------------------------------------------------------------}
+  
+  TSurveyQuestionImage = Class(TGoogleBaseObject)
+  Private
+    FaltText : String;
+    Fdata : String;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure SetaltText(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property altText : String Index 0 Read FaltText Write SetaltText;
+    Property data : String Index 8 Read Fdata Write Setdata;
+    Property url : String Index 16 Read Furl Write Seturl;
+  end;
+  TSurveyQuestionImageClass = Class of TSurveyQuestionImage;
+  
+  { --------------------------------------------------------------------
+    TSurveyResults
+    --------------------------------------------------------------------}
+  
+  TSurveyResults = Class(TGoogleBaseObject)
+  Private
+    Fstatus : String;
+    FsurveyUrlId : String;
+  Protected
+    //Property setters
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsurveyUrlId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property status : String Index 0 Read Fstatus Write Setstatus;
+    Property surveyUrlId : String Index 8 Read FsurveyUrlId Write SetsurveyUrlId;
+  end;
+  TSurveyResultsClass = Class of TSurveyResults;
+  
+  { --------------------------------------------------------------------
+    TSurveysListResponse
+    --------------------------------------------------------------------}
+  
+  TSurveysListResponse = Class(TGoogleBaseObject)
+  Private
+    FpageInfo : TPageInfo;
+    FrequestId : String;
+    Fresources : TSurveysListResponseTyperesourcesArray;
+    FtokenPagination : TTokenPagination;
+  Protected
+    //Property setters
+    Procedure SetpageInfo(AIndex : Integer; const AValue : TPageInfo); virtual;
+    Procedure SetrequestId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TSurveysListResponseTyperesourcesArray); virtual;
+    Procedure SettokenPagination(AIndex : Integer; const AValue : TTokenPagination); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property pageInfo : TPageInfo Index 0 Read FpageInfo Write SetpageInfo;
+    Property requestId : String Index 8 Read FrequestId Write SetrequestId;
+    Property resources : TSurveysListResponseTyperesourcesArray Index 16 Read Fresources Write Setresources;
+    Property tokenPagination : TTokenPagination Index 24 Read FtokenPagination Write SettokenPagination;
+  end;
+  TSurveysListResponseClass = Class of TSurveysListResponse;
+  
+  { --------------------------------------------------------------------
+    TSurveysStartRequest
+    --------------------------------------------------------------------}
+  
+  TSurveysStartRequest = Class(TGoogleBaseObject)
+  Private
+    FmaxCostPerResponseNanos : String;
+  Protected
+    //Property setters
+    Procedure SetmaxCostPerResponseNanos(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property maxCostPerResponseNanos : String Index 0 Read FmaxCostPerResponseNanos Write SetmaxCostPerResponseNanos;
+  end;
+  TSurveysStartRequestClass = Class of TSurveysStartRequest;
+  
+  { --------------------------------------------------------------------
+    TSurveysStartResponse
+    --------------------------------------------------------------------}
+  
+  TSurveysStartResponse = Class(TGoogleBaseObject)
+  Private
+    FrequestId : String;
+    Fresource : TSurvey;
+  Protected
+    //Property setters
+    Procedure SetrequestId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setresource(AIndex : Integer; const AValue : TSurvey); virtual;
+  Public
+  Published
+    Property requestId : String Index 0 Read FrequestId Write SetrequestId;
+    Property resource : TSurvey Index 8 Read Fresource Write Setresource;
+  end;
+  TSurveysStartResponseClass = Class of TSurveysStartResponse;
+  
+  { --------------------------------------------------------------------
+    TSurveysStopResponse
+    --------------------------------------------------------------------}
+  
+  TSurveysStopResponse = Class(TGoogleBaseObject)
+  Private
+    FrequestId : String;
+    Fresource : TSurvey;
+  Protected
+    //Property setters
+    Procedure SetrequestId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setresource(AIndex : Integer; const AValue : TSurvey); virtual;
+  Public
+  Published
+    Property requestId : String Index 0 Read FrequestId Write SetrequestId;
+    Property resource : TSurvey Index 8 Read Fresource Write Setresource;
+  end;
+  TSurveysStopResponseClass = Class of TSurveysStopResponse;
+  
+  { --------------------------------------------------------------------
+    TTokenPagination
+    --------------------------------------------------------------------}
+  
+  TTokenPagination = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    FpreviousPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpreviousPageToken(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property previousPageToken : String Index 8 Read FpreviousPageToken Write SetpreviousPageToken;
+  end;
+  TTokenPaginationClass = Class of TTokenPagination;
+  
+  { --------------------------------------------------------------------
+    TResultsResource
+    --------------------------------------------------------------------}
+  
+  TResultsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(surveyUrlId: string; aResultsGetRequest : TResultsGetRequest) : TSurveyResults;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TSurveysResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TSurveysResource, method List
+  
+  TSurveysListOptions = Record
+    maxResults : integer;
+    startIndex : integer;
+    token : String;
+  end;
+  
+  TSurveysResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(surveyUrlId: string) : TSurvey;
+    Function Insert(aSurvey : TSurvey) : TSurvey;
+    Function List(AQuery : string  = '') : TSurveysListResponse;
+    Function List(AQuery : TSurveyslistOptions) : TSurveysListResponse;
+    Function Start(resourceId: string; aSurveysStartRequest : TSurveysStartRequest) : TSurveysStartResponse;
+    Function Stop(resourceId: string) : TSurveysStopResponse;
+    Function Update(surveyUrlId: string; aSurvey : TSurvey) : TSurvey;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TConsumersurveysAPI
+    --------------------------------------------------------------------}
+  
+  TConsumersurveysAPI = Class(TGoogleAPI)
+  Private
+    FResultsInstance : TResultsResource;
+    FSurveysInstance : TSurveysResource;
+    Function GetResultsInstance : TResultsResource;virtual;
+    Function GetSurveysInstance : TSurveysResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateResultsResource(AOwner : TComponent) : TResultsResource;virtual;overload;
+    Function CreateResultsResource : TResultsResource;virtual;overload;
+    Function CreateSurveysResource(AOwner : TComponent) : TSurveysResource;virtual;overload;
+    Function CreateSurveysResource : TSurveysResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ResultsResource : TResultsResource Read GetResultsInstance;
+    Property SurveysResource : TSurveysResource Read GetSurveysInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TFieldMask
+  --------------------------------------------------------------------}
+
+
+Procedure TFieldMask.Setfields(AIndex : Integer; const AValue : TFieldMaskTypefieldsArray); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFieldMask.Setid(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFieldMask.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'fields' : SetLength(Ffields,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPageInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TPageInfo.SetresultPerPage(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FresultPerPage=AValue) then exit;
+  FresultPerPage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPageInfo.SetstartIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartIndex=AValue) then exit;
+  FstartIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPageInfo.SettotalResults(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalResults=AValue) then exit;
+  FtotalResults:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResultsGetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TResultsGetRequest.SetresultMask(AIndex : Integer; const AValue : TResultsMask); 
+
+begin
+  If (FresultMask=AValue) then exit;
+  FresultMask:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResultsMask
+  --------------------------------------------------------------------}
+
+
+Procedure TResultsMask.Setfields(AIndex : Integer; const AValue : TResultsMaskTypefieldsArray); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResultsMask.Setprojection(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fprojection=AValue) then exit;
+  Fprojection:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TResultsMask.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'fields' : SetLength(Ffields,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurvey
+  --------------------------------------------------------------------}
+
+
+Procedure TSurvey.Setaudience(AIndex : Integer; const AValue : TSurveyAudience); 
+
+begin
+  If (Faudience=AValue) then exit;
+  Faudience:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Setcost(AIndex : Integer; const AValue : TSurveyCost); 
+
+begin
+  If (Fcost=AValue) then exit;
+  Fcost:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.SetcustomerData(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcustomerData=AValue) then exit;
+  FcustomerData:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Setowners(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fowners=AValue) then exit;
+  Fowners:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Setquestions(AIndex : Integer; const AValue : TSurveyTypequestionsArray); 
+
+begin
+  If (Fquestions=AValue) then exit;
+  Fquestions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.SetsurveyUrlId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsurveyUrlId=AValue) then exit;
+  FsurveyUrlId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurvey.SetwantedResponseCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FwantedResponseCount=AValue) then exit;
+  FwantedResponseCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSurvey.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'owners' : SetLength(Fowners,ALength);
+  'questions' : SetLength(Fquestions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveyAudience
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveyAudience.Setages(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fages=AValue) then exit;
+  Fages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.SetcountrySubdivision(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcountrySubdivision=AValue) then exit;
+  FcountrySubdivision:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.Setgender(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fgender=AValue) then exit;
+  Fgender:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.Setlanguages(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Flanguages=AValue) then exit;
+  Flanguages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.SetmobileAppPanelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmobileAppPanelId=AValue) then exit;
+  FmobileAppPanelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyAudience.SetpopulationSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpopulationSource=AValue) then exit;
+  FpopulationSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSurveyAudience.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'ages' : SetLength(Fages,ALength);
+  'languages' : SetLength(Flanguages,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveyCost
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveyCost.SetcostPerResponseNanos(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcostPerResponseNanos=AValue) then exit;
+  FcostPerResponseNanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyCost.SetcurrencyCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcurrencyCode=AValue) then exit;
+  FcurrencyCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyCost.SetmaxCostPerResponseNanos(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxCostPerResponseNanos=AValue) then exit;
+  FmaxCostPerResponseNanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyCost.Setnanos(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fnanos=AValue) then exit;
+  Fnanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveyQuestion
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveyQuestion.SetanswerOrder(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FanswerOrder=AValue) then exit;
+  FanswerOrder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.Setanswers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fanswers=AValue) then exit;
+  Fanswers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SethasOther(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasOther=AValue) then exit;
+  FhasOther:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SethighValueLabel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhighValueLabel=AValue) then exit;
+  FhighValueLabel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.Setimages(AIndex : Integer; const AValue : TSurveyQuestionTypeimagesArray); 
+
+begin
+  If (Fimages=AValue) then exit;
+  Fimages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetlastAnswerPositionPinned(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FlastAnswerPositionPinned=AValue) then exit;
+  FlastAnswerPositionPinned:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetlowValueLabel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlowValueLabel=AValue) then exit;
+  FlowValueLabel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetmustPickSuggestion(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FmustPickSuggestion=AValue) then exit;
+  FmustPickSuggestion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetnumStars(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnumStars=AValue) then exit;
+  FnumStars:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetopenTextPlaceholder(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FopenTextPlaceholder=AValue) then exit;
+  FopenTextPlaceholder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetopenTextSuggestions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FopenTextSuggestions=AValue) then exit;
+  FopenTextSuggestions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.Setquestion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fquestion=AValue) then exit;
+  Fquestion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetsentimentText(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsentimentText=AValue) then exit;
+  FsentimentText:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetsingleLineResponse(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FsingleLineResponse=AValue) then exit;
+  FsingleLineResponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetthresholdAnswers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FthresholdAnswers=AValue) then exit;
+  FthresholdAnswers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetunitOfMeasurementLabel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FunitOfMeasurementLabel=AValue) then exit;
+  FunitOfMeasurementLabel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestion.SetvideoId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoId=AValue) then exit;
+  FvideoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSurveyQuestion.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSurveyQuestion.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'answers' : SetLength(Fanswers,ALength);
+  'images' : SetLength(Fimages,ALength);
+  'opentextsuggestions' : SetLength(FopenTextSuggestions,ALength);
+  'thresholdanswers' : SetLength(FthresholdAnswers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveyQuestionImage
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveyQuestionImage.SetaltText(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaltText=AValue) then exit;
+  FaltText:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestionImage.Setdata(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyQuestionImage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveyResults
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveyResults.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveyResults.SetsurveyUrlId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsurveyUrlId=AValue) then exit;
+  FsurveyUrlId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveysListResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveysListResponse.SetpageInfo(AIndex : Integer; const AValue : TPageInfo); 
+
+begin
+  If (FpageInfo=AValue) then exit;
+  FpageInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveysListResponse.SetrequestId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrequestId=AValue) then exit;
+  FrequestId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveysListResponse.Setresources(AIndex : Integer; const AValue : TSurveysListResponseTyperesourcesArray); 
+
+begin
+  If (Fresources=AValue) then exit;
+  Fresources:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveysListResponse.SettokenPagination(AIndex : Integer; const AValue : TTokenPagination); 
+
+begin
+  If (FtokenPagination=AValue) then exit;
+  FtokenPagination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSurveysListResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'resources' : SetLength(Fresources,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveysStartRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveysStartRequest.SetmaxCostPerResponseNanos(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxCostPerResponseNanos=AValue) then exit;
+  FmaxCostPerResponseNanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveysStartResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveysStartResponse.SetrequestId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrequestId=AValue) then exit;
+  FrequestId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveysStartResponse.Setresource(AIndex : Integer; const AValue : TSurvey); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSurveysStopResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSurveysStopResponse.SetrequestId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrequestId=AValue) then exit;
+  FrequestId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSurveysStopResponse.Setresource(AIndex : Integer; const AValue : TSurvey); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTokenPagination
+  --------------------------------------------------------------------}
+
+
+Procedure TTokenPagination.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTokenPagination.SetpreviousPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpreviousPageToken=AValue) then exit;
+  FpreviousPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResultsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TResultsResource.ResourceName : String;
+
+begin
+  Result:='results';
+end;
+
+Class Function TResultsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TconsumersurveysAPI;
+end;
+
+Function TResultsResource.Get(surveyUrlId: string; aResultsGetRequest : TResultsGetRequest) : TSurveyResults;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'surveys/{surveyUrlId}/results';
+  _Methodid   = 'consumersurveys.results.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['surveyUrlId',surveyUrlId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aResultsGetRequest,TSurveyResults) as TSurveyResults;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSurveysResource
+  --------------------------------------------------------------------}
+
+
+Class Function TSurveysResource.ResourceName : String;
+
+begin
+  Result:='surveys';
+end;
+
+Class Function TSurveysResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TconsumersurveysAPI;
+end;
+
+Function TSurveysResource.Get(surveyUrlId: string) : TSurvey;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'surveys/{surveyUrlId}';
+  _Methodid   = 'consumersurveys.surveys.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['surveyUrlId',surveyUrlId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TSurvey) as TSurvey;
+end;
+
+Function TSurveysResource.Insert(aSurvey : TSurvey) : TSurvey;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'surveys';
+  _Methodid   = 'consumersurveys.surveys.insert';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aSurvey,TSurvey) as TSurvey;
+end;
+
+Function TSurveysResource.List(AQuery : string = '') : TSurveysListResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'surveys';
+  _Methodid   = 'consumersurveys.surveys.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TSurveysListResponse) as TSurveysListResponse;
+end;
+
+
+Function TSurveysResource.List(AQuery : TSurveyslistOptions) : TSurveysListResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'startIndex',AQuery.startIndex);
+  AddToQuery(_Q,'token',AQuery.token);
+  Result:=List(_Q);
+end;
+
+Function TSurveysResource.Start(resourceId: string; aSurveysStartRequest : TSurveysStartRequest) : TSurveysStartResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'surveys/{resourceId}/start';
+  _Methodid   = 'consumersurveys.surveys.start';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resourceId',resourceId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSurveysStartRequest,TSurveysStartResponse) as TSurveysStartResponse;
+end;
+
+Function TSurveysResource.Stop(resourceId: string) : TSurveysStopResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'surveys/{resourceId}/stop';
+  _Methodid   = 'consumersurveys.surveys.stop';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resourceId',resourceId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TSurveysStopResponse) as TSurveysStopResponse;
+end;
+
+Function TSurveysResource.Update(surveyUrlId: string; aSurvey : TSurvey) : TSurvey;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'surveys/{surveyUrlId}';
+  _Methodid   = 'consumersurveys.surveys.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['surveyUrlId',surveyUrlId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSurvey,TSurvey) as TSurvey;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TConsumersurveysAPI
+  --------------------------------------------------------------------}
+
+Class Function TConsumersurveysAPI.APIName : String;
+
+begin
+  Result:='consumersurveys';
+end;
+
+Class Function TConsumersurveysAPI.APIVersion : String;
+
+begin
+  Result:='v2';
+end;
+
+Class Function TConsumersurveysAPI.APIRevision : String;
+
+begin
+  Result:='20160519';
+end;
+
+Class Function TConsumersurveysAPI.APIID : String;
+
+begin
+  Result:='consumersurveys:v2';
+end;
+
+Class Function TConsumersurveysAPI.APITitle : String;
+
+begin
+  Result:='Consumer Surveys API';
+end;
+
+Class Function TConsumersurveysAPI.APIDescription : String;
+
+begin
+  Result:='Creates and conducts surveys, lists the surveys that an authenticated user owns, and retrieves survey results and information about specified surveys.';
+end;
+
+Class Function TConsumersurveysAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TConsumersurveysAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TConsumersurveysAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TConsumersurveysAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TConsumersurveysAPI.APIdocumentationLink : String;
+
+begin
+  Result:='';
+end;
+
+Class Function TConsumersurveysAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TConsumersurveysAPI.APIbasePath : string;
+
+begin
+  Result:='/consumersurveys/v2/';
+end;
+
+Class Function TConsumersurveysAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/consumersurveys/v2/';
+end;
+
+Class Function TConsumersurveysAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TConsumersurveysAPI.APIservicePath : string;
+
+begin
+  Result:='consumersurveys/v2/';
+end;
+
+Class Function TConsumersurveysAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TConsumersurveysAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,3);
+  Result[0].Name:='https://www.googleapis.com/auth/consumersurveys';
+  Result[0].Description:='View and edit your surveys and results';
+  Result[1].Name:='https://www.googleapis.com/auth/consumersurveys.readonly';
+  Result[1].Description:='View the results for your surveys';
+  Result[2].Name:='https://www.googleapis.com/auth/userinfo.email';
+  Result[2].Description:='View your email address';
+  
+end;
+
+Class Function TConsumersurveysAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TConsumersurveysAPI.RegisterAPIResources;
+
+begin
+  TFieldMask.RegisterObject;
+  TPageInfo.RegisterObject;
+  TResultsGetRequest.RegisterObject;
+  TResultsMask.RegisterObject;
+  TSurvey.RegisterObject;
+  TSurveyAudience.RegisterObject;
+  TSurveyCost.RegisterObject;
+  TSurveyQuestion.RegisterObject;
+  TSurveyQuestionImage.RegisterObject;
+  TSurveyResults.RegisterObject;
+  TSurveysListResponse.RegisterObject;
+  TSurveysStartRequest.RegisterObject;
+  TSurveysStartResponse.RegisterObject;
+  TSurveysStopResponse.RegisterObject;
+  TTokenPagination.RegisterObject;
+end;
+
+
+Function TConsumersurveysAPI.GetResultsInstance : TResultsResource;
+
+begin
+  if (FResultsInstance=Nil) then
+    FResultsInstance:=CreateResultsResource;
+  Result:=FResultsInstance;
+end;
+
+Function TConsumersurveysAPI.CreateResultsResource : TResultsResource;
+
+begin
+  Result:=CreateResultsResource(Self);
+end;
+
+
+Function TConsumersurveysAPI.CreateResultsResource(AOwner : TComponent) : TResultsResource;
+
+begin
+  Result:=TResultsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TConsumersurveysAPI.GetSurveysInstance : TSurveysResource;
+
+begin
+  if (FSurveysInstance=Nil) then
+    FSurveysInstance:=CreateSurveysResource;
+  Result:=FSurveysInstance;
+end;
+
+Function TConsumersurveysAPI.CreateSurveysResource : TSurveysResource;
+
+begin
+  Result:=CreateSurveysResource(Self);
+end;
+
+
+Function TConsumersurveysAPI.CreateSurveysResource(AOwner : TComponent) : TSurveysResource;
+
+begin
+  Result:=TSurveysResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TConsumersurveysAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 490 - 247
packages/googleapi/src/googlecontainer.pp


File diff suppressed because it is too large
+ 406 - 476
packages/googleapi/src/googlecontent.pp


File diff suppressed because it is too large
+ 274 - 400
packages/googleapi/src/googlecoordinate.pp


File diff suppressed because it is too large
+ 387 - 420
packages/googleapi/src/googlecustomsearch.pp


File diff suppressed because it is too large
+ 520 - 397
packages/googleapi/src/googledataflow.pp


+ 4471 - 0
packages/googleapi/src/googledataproc.pp

@@ -0,0 +1,4471 @@
+unit googledataproc;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TCluster = Class;
+  TClusterConfig = Class;
+  TGceClusterConfig = Class;
+  TInstanceGroupConfig = Class;
+  TDiskConfig = Class;
+  TManagedGroupConfig = Class;
+  TSoftwareConfig = Class;
+  TNodeInitializationAction = Class;
+  TClusterStatus = Class;
+  TOperation = Class;
+  TStatus = Class;
+  TListClustersResponse = Class;
+  TDiagnoseClusterRequest = Class;
+  TSubmitJobRequest = Class;
+  TJob = Class;
+  TJobReference = Class;
+  TJobPlacement = Class;
+  THadoopJob = Class;
+  TLoggingConfig = Class;
+  TSparkJob = Class;
+  TPySparkJob = Class;
+  THiveJob = Class;
+  TQueryList = Class;
+  TPigJob = Class;
+  TSparkSqlJob = Class;
+  TJobStatus = Class;
+  TListJobsResponse = Class;
+  TCancelJobRequest = Class;
+  TEmpty = Class;
+  TListOperationsResponse = Class;
+  TDiagnoseClusterResults = Class;
+  TClusterOperationMetadata = Class;
+  TClusterOperationStatus = Class;
+  TDiagnoseClusterOutputLocation = Class;
+  TOperationMetadata = Class;
+  TOperationStatus = Class;
+  TClusterArray = Array of TCluster;
+  TClusterConfigArray = Array of TClusterConfig;
+  TGceClusterConfigArray = Array of TGceClusterConfig;
+  TInstanceGroupConfigArray = Array of TInstanceGroupConfig;
+  TDiskConfigArray = Array of TDiskConfig;
+  TManagedGroupConfigArray = Array of TManagedGroupConfig;
+  TSoftwareConfigArray = Array of TSoftwareConfig;
+  TNodeInitializationActionArray = Array of TNodeInitializationAction;
+  TClusterStatusArray = Array of TClusterStatus;
+  TOperationArray = Array of TOperation;
+  TStatusArray = Array of TStatus;
+  TListClustersResponseArray = Array of TListClustersResponse;
+  TDiagnoseClusterRequestArray = Array of TDiagnoseClusterRequest;
+  TSubmitJobRequestArray = Array of TSubmitJobRequest;
+  TJobArray = Array of TJob;
+  TJobReferenceArray = Array of TJobReference;
+  TJobPlacementArray = Array of TJobPlacement;
+  THadoopJobArray = Array of THadoopJob;
+  TLoggingConfigArray = Array of TLoggingConfig;
+  TSparkJobArray = Array of TSparkJob;
+  TPySparkJobArray = Array of TPySparkJob;
+  THiveJobArray = Array of THiveJob;
+  TQueryListArray = Array of TQueryList;
+  TPigJobArray = Array of TPigJob;
+  TSparkSqlJobArray = Array of TSparkSqlJob;
+  TJobStatusArray = Array of TJobStatus;
+  TListJobsResponseArray = Array of TListJobsResponse;
+  TCancelJobRequestArray = Array of TCancelJobRequest;
+  TEmptyArray = Array of TEmpty;
+  TListOperationsResponseArray = Array of TListOperationsResponse;
+  TDiagnoseClusterResultsArray = Array of TDiagnoseClusterResults;
+  TClusterOperationMetadataArray = Array of TClusterOperationMetadata;
+  TClusterOperationStatusArray = Array of TClusterOperationStatus;
+  TDiagnoseClusterOutputLocationArray = Array of TDiagnoseClusterOutputLocation;
+  TOperationMetadataArray = Array of TOperationMetadata;
+  TOperationStatusArray = Array of TOperationStatus;
+  //Anonymous types, using auto-generated names
+  TGceClusterConfigTypemetadata = Class;
+  TSoftwareConfigTypeproperties = Class;
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsItem = Class;
+  THadoopJobTypeproperties = Class;
+  TLoggingConfigTypedriverLogLevels = Class;
+  TSparkJobTypeproperties = Class;
+  TPySparkJobTypeproperties = Class;
+  THiveJobTypescriptVariables = Class;
+  THiveJobTypeproperties = Class;
+  TPigJobTypescriptVariables = Class;
+  TPigJobTypeproperties = Class;
+  TSparkSqlJobTypescriptVariables = Class;
+  TSparkSqlJobTypeproperties = Class;
+  TClusterTypestatusHistoryArray = Array of TClusterStatus;
+  TClusterConfigTypeinitializationActionsArray = Array of TNodeInitializationAction;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TListClustersResponseTypeclustersArray = Array of TCluster;
+  TJobTypestatusHistoryArray = Array of TJobStatus;
+  TListJobsResponseTypejobsArray = Array of TJob;
+  TListOperationsResponseTypeoperationsArray = Array of TOperation;
+  TClusterOperationMetadataTypestatusHistoryArray = Array of TClusterOperationStatus;
+  TOperationMetadataTypestatusHistoryArray = Array of TOperationStatus;
+  
+  { --------------------------------------------------------------------
+    TCluster
+    --------------------------------------------------------------------}
+  
+  TCluster = Class(TGoogleBaseObject)
+  Private
+    FprojectId : String;
+    FclusterName : String;
+    Fconfig : TClusterConfig;
+    Fstatus : TClusterStatus;
+    FstatusHistory : TClusterTypestatusHistoryArray;
+    FclusterUuid : String;
+  Protected
+    //Property setters
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclusterName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setconfig(AIndex : Integer; const AValue : TClusterConfig); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TClusterStatus); virtual;
+    Procedure SetstatusHistory(AIndex : Integer; const AValue : TClusterTypestatusHistoryArray); virtual;
+    Procedure SetclusterUuid(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property projectId : String Index 0 Read FprojectId Write SetprojectId;
+    Property clusterName : String Index 8 Read FclusterName Write SetclusterName;
+    Property config : TClusterConfig Index 16 Read Fconfig Write Setconfig;
+    Property status : TClusterStatus Index 24 Read Fstatus Write Setstatus;
+    Property statusHistory : TClusterTypestatusHistoryArray Index 32 Read FstatusHistory Write SetstatusHistory;
+    Property clusterUuid : String Index 40 Read FclusterUuid Write SetclusterUuid;
+  end;
+  TClusterClass = Class of TCluster;
+  
+  { --------------------------------------------------------------------
+    TClusterConfig
+    --------------------------------------------------------------------}
+  
+  TClusterConfig = Class(TGoogleBaseObject)
+  Private
+    FconfigBucket : String;
+    FgceClusterConfig : TGceClusterConfig;
+    FmasterConfig : TInstanceGroupConfig;
+    FworkerConfig : TInstanceGroupConfig;
+    FsecondaryWorkerConfig : TInstanceGroupConfig;
+    FsoftwareConfig : TSoftwareConfig;
+    FinitializationActions : TClusterConfigTypeinitializationActionsArray;
+  Protected
+    //Property setters
+    Procedure SetconfigBucket(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgceClusterConfig(AIndex : Integer; const AValue : TGceClusterConfig); virtual;
+    Procedure SetmasterConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); virtual;
+    Procedure SetworkerConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); virtual;
+    Procedure SetsecondaryWorkerConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); virtual;
+    Procedure SetsoftwareConfig(AIndex : Integer; const AValue : TSoftwareConfig); virtual;
+    Procedure SetinitializationActions(AIndex : Integer; const AValue : TClusterConfigTypeinitializationActionsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property configBucket : String Index 0 Read FconfigBucket Write SetconfigBucket;
+    Property gceClusterConfig : TGceClusterConfig Index 8 Read FgceClusterConfig Write SetgceClusterConfig;
+    Property masterConfig : TInstanceGroupConfig Index 16 Read FmasterConfig Write SetmasterConfig;
+    Property workerConfig : TInstanceGroupConfig Index 24 Read FworkerConfig Write SetworkerConfig;
+    Property secondaryWorkerConfig : TInstanceGroupConfig Index 32 Read FsecondaryWorkerConfig Write SetsecondaryWorkerConfig;
+    Property softwareConfig : TSoftwareConfig Index 40 Read FsoftwareConfig Write SetsoftwareConfig;
+    Property initializationActions : TClusterConfigTypeinitializationActionsArray Index 48 Read FinitializationActions Write SetinitializationActions;
+  end;
+  TClusterConfigClass = Class of TClusterConfig;
+  
+  { --------------------------------------------------------------------
+    TGceClusterConfigTypemetadata
+    --------------------------------------------------------------------}
+  
+  TGceClusterConfigTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TGceClusterConfigTypemetadataClass = Class of TGceClusterConfigTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TGceClusterConfig
+    --------------------------------------------------------------------}
+  
+  TGceClusterConfig = Class(TGoogleBaseObject)
+  Private
+    FzoneUri : String;
+    FnetworkUri : String;
+    FsubnetworkUri : String;
+    FserviceAccountScopes : TStringArray;
+    Ftags : TStringArray;
+    Fmetadata : TGceClusterConfigTypemetadata;
+  Protected
+    //Property setters
+    Procedure SetzoneUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnetworkUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsubnetworkUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetserviceAccountScopes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Settags(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TGceClusterConfigTypemetadata); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property zoneUri : String Index 0 Read FzoneUri Write SetzoneUri;
+    Property networkUri : String Index 8 Read FnetworkUri Write SetnetworkUri;
+    Property subnetworkUri : String Index 16 Read FsubnetworkUri Write SetsubnetworkUri;
+    Property serviceAccountScopes : TStringArray Index 24 Read FserviceAccountScopes Write SetserviceAccountScopes;
+    Property tags : TStringArray Index 32 Read Ftags Write Settags;
+    Property metadata : TGceClusterConfigTypemetadata Index 40 Read Fmetadata Write Setmetadata;
+  end;
+  TGceClusterConfigClass = Class of TGceClusterConfig;
+  
+  { --------------------------------------------------------------------
+    TInstanceGroupConfig
+    --------------------------------------------------------------------}
+  
+  TInstanceGroupConfig = Class(TGoogleBaseObject)
+  Private
+    FnumInstances : integer;
+    FinstanceNames : TStringArray;
+    FimageUri : String;
+    FmachineTypeUri : String;
+    FdiskConfig : TDiskConfig;
+    FisPreemptible : boolean;
+    FmanagedGroupConfig : TManagedGroupConfig;
+  Protected
+    //Property setters
+    Procedure SetnumInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinstanceNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetimageUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmachineTypeUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdiskConfig(AIndex : Integer; const AValue : TDiskConfig); virtual;
+    Procedure SetisPreemptible(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetmanagedGroupConfig(AIndex : Integer; const AValue : TManagedGroupConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property numInstances : integer Index 0 Read FnumInstances Write SetnumInstances;
+    Property instanceNames : TStringArray Index 8 Read FinstanceNames Write SetinstanceNames;
+    Property imageUri : String Index 16 Read FimageUri Write SetimageUri;
+    Property machineTypeUri : String Index 24 Read FmachineTypeUri Write SetmachineTypeUri;
+    Property diskConfig : TDiskConfig Index 32 Read FdiskConfig Write SetdiskConfig;
+    Property isPreemptible : boolean Index 40 Read FisPreemptible Write SetisPreemptible;
+    Property managedGroupConfig : TManagedGroupConfig Index 48 Read FmanagedGroupConfig Write SetmanagedGroupConfig;
+  end;
+  TInstanceGroupConfigClass = Class of TInstanceGroupConfig;
+  
+  { --------------------------------------------------------------------
+    TDiskConfig
+    --------------------------------------------------------------------}
+  
+  TDiskConfig = Class(TGoogleBaseObject)
+  Private
+    FbootDiskSizeGb : integer;
+    FnumLocalSsds : integer;
+  Protected
+    //Property setters
+    Procedure SetbootDiskSizeGb(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumLocalSsds(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property bootDiskSizeGb : integer Index 0 Read FbootDiskSizeGb Write SetbootDiskSizeGb;
+    Property numLocalSsds : integer Index 8 Read FnumLocalSsds Write SetnumLocalSsds;
+  end;
+  TDiskConfigClass = Class of TDiskConfig;
+  
+  { --------------------------------------------------------------------
+    TManagedGroupConfig
+    --------------------------------------------------------------------}
+  
+  TManagedGroupConfig = Class(TGoogleBaseObject)
+  Private
+    FinstanceTemplateName : String;
+    FinstanceGroupManagerName : String;
+  Protected
+    //Property setters
+    Procedure SetinstanceTemplateName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinstanceGroupManagerName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property instanceTemplateName : String Index 0 Read FinstanceTemplateName Write SetinstanceTemplateName;
+    Property instanceGroupManagerName : String Index 8 Read FinstanceGroupManagerName Write SetinstanceGroupManagerName;
+  end;
+  TManagedGroupConfigClass = Class of TManagedGroupConfig;
+  
+  { --------------------------------------------------------------------
+    TSoftwareConfigTypeproperties
+    --------------------------------------------------------------------}
+  
+  TSoftwareConfigTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TSoftwareConfigTypepropertiesClass = Class of TSoftwareConfigTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TSoftwareConfig
+    --------------------------------------------------------------------}
+  
+  TSoftwareConfig = Class(TGoogleBaseObject)
+  Private
+    FimageVersion : String;
+    Fproperties : TSoftwareConfigTypeproperties;
+  Protected
+    //Property setters
+    Procedure SetimageVersion(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSoftwareConfigTypeproperties); virtual;
+  Public
+  Published
+    Property imageVersion : String Index 0 Read FimageVersion Write SetimageVersion;
+    Property properties : TSoftwareConfigTypeproperties Index 8 Read Fproperties Write Setproperties;
+  end;
+  TSoftwareConfigClass = Class of TSoftwareConfig;
+  
+  { --------------------------------------------------------------------
+    TNodeInitializationAction
+    --------------------------------------------------------------------}
+  
+  TNodeInitializationAction = Class(TGoogleBaseObject)
+  Private
+    FexecutableFile : String;
+    FexecutionTimeout : String;
+  Protected
+    //Property setters
+    Procedure SetexecutableFile(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetexecutionTimeout(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property executableFile : String Index 0 Read FexecutableFile Write SetexecutableFile;
+    Property executionTimeout : String Index 8 Read FexecutionTimeout Write SetexecutionTimeout;
+  end;
+  TNodeInitializationActionClass = Class of TNodeInitializationAction;
+  
+  { --------------------------------------------------------------------
+    TClusterStatus
+    --------------------------------------------------------------------}
+  
+  TClusterStatus = Class(TGoogleBaseObject)
+  Private
+    Fstate : String;
+    Fdetail : String;
+    FstateStartTime : String;
+  Protected
+    //Property setters
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateStartTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property state : String Index 0 Read Fstate Write Setstate;
+    Property detail : String Index 8 Read Fdetail Write Setdetail;
+    Property stateStartTime : String Index 16 Read FstateStartTime Write SetstateStartTime;
+  end;
+  TClusterStatusClass = Class of TClusterStatus;
+  
+  { --------------------------------------------------------------------
+    TOperationTypemetadata
+    --------------------------------------------------------------------}
+  
+  TOperationTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTypemetadataClass = Class of TOperationTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationTyperesponse
+    --------------------------------------------------------------------}
+  
+  TOperationTyperesponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTyperesponseClass = Class of TOperationTyperesponse;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fmetadata : TOperationTypemetadata;
+    Fdone : boolean;
+    Ferror : TStatus;
+    Fresponse : TOperationTyperesponse;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property metadata : TOperationTypemetadata Index 8 Read Fmetadata Write Setmetadata;
+    Property done : boolean Index 16 Read Fdone Write Setdone;
+    Property error : TStatus Index 24 Read Ferror Write Seterror;
+    Property response : TOperationTyperesponse Index 32 Read Fresponse Write Setresponse;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TStatusTypedetailsItem
+    --------------------------------------------------------------------}
+  
+  TStatusTypedetailsItem = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
+  
+  { --------------------------------------------------------------------
+    TStatus
+    --------------------------------------------------------------------}
+  
+  TStatus = Class(TGoogleBaseObject)
+  Private
+    Fcode : integer;
+    Fmessage : String;
+    Fdetails : TStatusTypedetailsArray;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : integer Index 0 Read Fcode Write Setcode;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+    Property details : TStatusTypedetailsArray Index 16 Read Fdetails Write Setdetails;
+  end;
+  TStatusClass = Class of TStatus;
+  
+  { --------------------------------------------------------------------
+    TListClustersResponse
+    --------------------------------------------------------------------}
+  
+  TListClustersResponse = Class(TGoogleBaseObject)
+  Private
+    Fclusters : TListClustersResponseTypeclustersArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setclusters(AIndex : Integer; const AValue : TListClustersResponseTypeclustersArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property clusters : TListClustersResponseTypeclustersArray Index 0 Read Fclusters Write Setclusters;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListClustersResponseClass = Class of TListClustersResponse;
+  
+  { --------------------------------------------------------------------
+    TDiagnoseClusterRequest
+    --------------------------------------------------------------------}
+  
+  TDiagnoseClusterRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TDiagnoseClusterRequestClass = Class of TDiagnoseClusterRequest;
+  
+  { --------------------------------------------------------------------
+    TSubmitJobRequest
+    --------------------------------------------------------------------}
+  
+  TSubmitJobRequest = Class(TGoogleBaseObject)
+  Private
+    Fjob : TJob;
+  Protected
+    //Property setters
+    Procedure Setjob(AIndex : Integer; const AValue : TJob); virtual;
+  Public
+  Published
+    Property job : TJob Index 0 Read Fjob Write Setjob;
+  end;
+  TSubmitJobRequestClass = Class of TSubmitJobRequest;
+  
+  { --------------------------------------------------------------------
+    TJob
+    --------------------------------------------------------------------}
+  
+  TJob = Class(TGoogleBaseObject)
+  Private
+    Freference : TJobReference;
+    Fplacement : TJobPlacement;
+    FhadoopJob : THadoopJob;
+    FsparkJob : TSparkJob;
+    FpysparkJob : TPySparkJob;
+    FhiveJob : THiveJob;
+    FpigJob : TPigJob;
+    FsparkSqlJob : TSparkSqlJob;
+    Fstatus : TJobStatus;
+    FstatusHistory : TJobTypestatusHistoryArray;
+    FdriverOutputResourceUri : String;
+    FdriverControlFilesUri : String;
+  Protected
+    //Property setters
+    Procedure Setreference(AIndex : Integer; const AValue : TJobReference); virtual;
+    Procedure Setplacement(AIndex : Integer; const AValue : TJobPlacement); virtual;
+    Procedure SethadoopJob(AIndex : Integer; const AValue : THadoopJob); virtual;
+    Procedure SetsparkJob(AIndex : Integer; const AValue : TSparkJob); virtual;
+    Procedure SetpysparkJob(AIndex : Integer; const AValue : TPySparkJob); virtual;
+    Procedure SethiveJob(AIndex : Integer; const AValue : THiveJob); virtual;
+    Procedure SetpigJob(AIndex : Integer; const AValue : TPigJob); virtual;
+    Procedure SetsparkSqlJob(AIndex : Integer; const AValue : TSparkSqlJob); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TJobStatus); virtual;
+    Procedure SetstatusHistory(AIndex : Integer; const AValue : TJobTypestatusHistoryArray); virtual;
+    Procedure SetdriverOutputResourceUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdriverControlFilesUri(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property reference : TJobReference Index 0 Read Freference Write Setreference;
+    Property placement : TJobPlacement Index 8 Read Fplacement Write Setplacement;
+    Property hadoopJob : THadoopJob Index 16 Read FhadoopJob Write SethadoopJob;
+    Property sparkJob : TSparkJob Index 24 Read FsparkJob Write SetsparkJob;
+    Property pysparkJob : TPySparkJob Index 32 Read FpysparkJob Write SetpysparkJob;
+    Property hiveJob : THiveJob Index 40 Read FhiveJob Write SethiveJob;
+    Property pigJob : TPigJob Index 48 Read FpigJob Write SetpigJob;
+    Property sparkSqlJob : TSparkSqlJob Index 56 Read FsparkSqlJob Write SetsparkSqlJob;
+    Property status : TJobStatus Index 64 Read Fstatus Write Setstatus;
+    Property statusHistory : TJobTypestatusHistoryArray Index 72 Read FstatusHistory Write SetstatusHistory;
+    Property driverOutputResourceUri : String Index 80 Read FdriverOutputResourceUri Write SetdriverOutputResourceUri;
+    Property driverControlFilesUri : String Index 88 Read FdriverControlFilesUri Write SetdriverControlFilesUri;
+  end;
+  TJobClass = Class of TJob;
+  
+  { --------------------------------------------------------------------
+    TJobReference
+    --------------------------------------------------------------------}
+  
+  TJobReference = Class(TGoogleBaseObject)
+  Private
+    FprojectId : String;
+    FjobId : String;
+  Protected
+    //Property setters
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetjobId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property projectId : String Index 0 Read FprojectId Write SetprojectId;
+    Property jobId : String Index 8 Read FjobId Write SetjobId;
+  end;
+  TJobReferenceClass = Class of TJobReference;
+  
+  { --------------------------------------------------------------------
+    TJobPlacement
+    --------------------------------------------------------------------}
+  
+  TJobPlacement = Class(TGoogleBaseObject)
+  Private
+    FclusterName : String;
+    FclusterUuid : String;
+  Protected
+    //Property setters
+    Procedure SetclusterName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclusterUuid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property clusterName : String Index 0 Read FclusterName Write SetclusterName;
+    Property clusterUuid : String Index 8 Read FclusterUuid Write SetclusterUuid;
+  end;
+  TJobPlacementClass = Class of TJobPlacement;
+  
+  { --------------------------------------------------------------------
+    THadoopJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  THadoopJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  THadoopJobTypepropertiesClass = Class of THadoopJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    THadoopJob
+    --------------------------------------------------------------------}
+  
+  THadoopJob = Class(TGoogleBaseObject)
+  Private
+    FmainJarFileUri : String;
+    FmainClass : String;
+    Fargs : TStringArray;
+    FjarFileUris : TStringArray;
+    FfileUris : TStringArray;
+    FarchiveUris : TStringArray;
+    Fproperties : THadoopJobTypeproperties;
+    FloggingConfig : TLoggingConfig;
+  Protected
+    //Property setters
+    Procedure SetmainJarFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmainClass(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setargs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetfileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetarchiveUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : THadoopJobTypeproperties); virtual;
+    Procedure SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property mainJarFileUri : String Index 0 Read FmainJarFileUri Write SetmainJarFileUri;
+    Property mainClass : String Index 8 Read FmainClass Write SetmainClass;
+    Property args : TStringArray Index 16 Read Fargs Write Setargs;
+    Property jarFileUris : TStringArray Index 24 Read FjarFileUris Write SetjarFileUris;
+    Property fileUris : TStringArray Index 32 Read FfileUris Write SetfileUris;
+    Property archiveUris : TStringArray Index 40 Read FarchiveUris Write SetarchiveUris;
+    Property properties : THadoopJobTypeproperties Index 48 Read Fproperties Write Setproperties;
+    Property loggingConfig : TLoggingConfig Index 56 Read FloggingConfig Write SetloggingConfig;
+  end;
+  THadoopJobClass = Class of THadoopJob;
+  
+  { --------------------------------------------------------------------
+    TLoggingConfigTypedriverLogLevels
+    --------------------------------------------------------------------}
+  
+  TLoggingConfigTypedriverLogLevels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TLoggingConfigTypedriverLogLevelsClass = Class of TLoggingConfigTypedriverLogLevels;
+  
+  { --------------------------------------------------------------------
+    TLoggingConfig
+    --------------------------------------------------------------------}
+  
+  TLoggingConfig = Class(TGoogleBaseObject)
+  Private
+    FdriverLogLevels : TLoggingConfigTypedriverLogLevels;
+  Protected
+    //Property setters
+    Procedure SetdriverLogLevels(AIndex : Integer; const AValue : TLoggingConfigTypedriverLogLevels); virtual;
+  Public
+  Published
+    Property driverLogLevels : TLoggingConfigTypedriverLogLevels Index 0 Read FdriverLogLevels Write SetdriverLogLevels;
+  end;
+  TLoggingConfigClass = Class of TLoggingConfig;
+  
+  { --------------------------------------------------------------------
+    TSparkJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  TSparkJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TSparkJobTypepropertiesClass = Class of TSparkJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TSparkJob
+    --------------------------------------------------------------------}
+  
+  TSparkJob = Class(TGoogleBaseObject)
+  Private
+    FmainJarFileUri : String;
+    FmainClass : String;
+    Fargs : TStringArray;
+    FjarFileUris : TStringArray;
+    FfileUris : TStringArray;
+    FarchiveUris : TStringArray;
+    Fproperties : TSparkJobTypeproperties;
+    FloggingConfig : TLoggingConfig;
+  Protected
+    //Property setters
+    Procedure SetmainJarFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmainClass(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setargs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetfileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetarchiveUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSparkJobTypeproperties); virtual;
+    Procedure SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property mainJarFileUri : String Index 0 Read FmainJarFileUri Write SetmainJarFileUri;
+    Property mainClass : String Index 8 Read FmainClass Write SetmainClass;
+    Property args : TStringArray Index 16 Read Fargs Write Setargs;
+    Property jarFileUris : TStringArray Index 24 Read FjarFileUris Write SetjarFileUris;
+    Property fileUris : TStringArray Index 32 Read FfileUris Write SetfileUris;
+    Property archiveUris : TStringArray Index 40 Read FarchiveUris Write SetarchiveUris;
+    Property properties : TSparkJobTypeproperties Index 48 Read Fproperties Write Setproperties;
+    Property loggingConfig : TLoggingConfig Index 56 Read FloggingConfig Write SetloggingConfig;
+  end;
+  TSparkJobClass = Class of TSparkJob;
+  
+  { --------------------------------------------------------------------
+    TPySparkJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  TPySparkJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TPySparkJobTypepropertiesClass = Class of TPySparkJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TPySparkJob
+    --------------------------------------------------------------------}
+  
+  TPySparkJob = Class(TGoogleBaseObject)
+  Private
+    FmainPythonFileUri : String;
+    Fargs : TStringArray;
+    FpythonFileUris : TStringArray;
+    FjarFileUris : TStringArray;
+    FfileUris : TStringArray;
+    FarchiveUris : TStringArray;
+    Fproperties : TPySparkJobTypeproperties;
+    FloggingConfig : TLoggingConfig;
+  Protected
+    //Property setters
+    Procedure SetmainPythonFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setargs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetpythonFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetfileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetarchiveUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TPySparkJobTypeproperties); virtual;
+    Procedure SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property mainPythonFileUri : String Index 0 Read FmainPythonFileUri Write SetmainPythonFileUri;
+    Property args : TStringArray Index 8 Read Fargs Write Setargs;
+    Property pythonFileUris : TStringArray Index 16 Read FpythonFileUris Write SetpythonFileUris;
+    Property jarFileUris : TStringArray Index 24 Read FjarFileUris Write SetjarFileUris;
+    Property fileUris : TStringArray Index 32 Read FfileUris Write SetfileUris;
+    Property archiveUris : TStringArray Index 40 Read FarchiveUris Write SetarchiveUris;
+    Property properties : TPySparkJobTypeproperties Index 48 Read Fproperties Write Setproperties;
+    Property loggingConfig : TLoggingConfig Index 56 Read FloggingConfig Write SetloggingConfig;
+  end;
+  TPySparkJobClass = Class of TPySparkJob;
+  
+  { --------------------------------------------------------------------
+    THiveJobTypescriptVariables
+    --------------------------------------------------------------------}
+  
+  THiveJobTypescriptVariables = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  THiveJobTypescriptVariablesClass = Class of THiveJobTypescriptVariables;
+  
+  { --------------------------------------------------------------------
+    THiveJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  THiveJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  THiveJobTypepropertiesClass = Class of THiveJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    THiveJob
+    --------------------------------------------------------------------}
+  
+  THiveJob = Class(TGoogleBaseObject)
+  Private
+    FqueryFileUri : String;
+    FqueryList : TQueryList;
+    FcontinueOnFailure : boolean;
+    FscriptVariables : THiveJobTypescriptVariables;
+    Fproperties : THiveJobTypeproperties;
+    FjarFileUris : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetqueryFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetqueryList(AIndex : Integer; const AValue : TQueryList); virtual;
+    Procedure SetcontinueOnFailure(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetscriptVariables(AIndex : Integer; const AValue : THiveJobTypescriptVariables); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : THiveJobTypeproperties); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property queryFileUri : String Index 0 Read FqueryFileUri Write SetqueryFileUri;
+    Property queryList : TQueryList Index 8 Read FqueryList Write SetqueryList;
+    Property continueOnFailure : boolean Index 16 Read FcontinueOnFailure Write SetcontinueOnFailure;
+    Property scriptVariables : THiveJobTypescriptVariables Index 24 Read FscriptVariables Write SetscriptVariables;
+    Property properties : THiveJobTypeproperties Index 32 Read Fproperties Write Setproperties;
+    Property jarFileUris : TStringArray Index 40 Read FjarFileUris Write SetjarFileUris;
+  end;
+  THiveJobClass = Class of THiveJob;
+  
+  { --------------------------------------------------------------------
+    TQueryList
+    --------------------------------------------------------------------}
+  
+  TQueryList = Class(TGoogleBaseObject)
+  Private
+    Fqueries : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setqueries(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property queries : TStringArray Index 0 Read Fqueries Write Setqueries;
+  end;
+  TQueryListClass = Class of TQueryList;
+  
+  { --------------------------------------------------------------------
+    TPigJobTypescriptVariables
+    --------------------------------------------------------------------}
+  
+  TPigJobTypescriptVariables = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TPigJobTypescriptVariablesClass = Class of TPigJobTypescriptVariables;
+  
+  { --------------------------------------------------------------------
+    TPigJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  TPigJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TPigJobTypepropertiesClass = Class of TPigJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TPigJob
+    --------------------------------------------------------------------}
+  
+  TPigJob = Class(TGoogleBaseObject)
+  Private
+    FqueryFileUri : String;
+    FqueryList : TQueryList;
+    FcontinueOnFailure : boolean;
+    FscriptVariables : TPigJobTypescriptVariables;
+    Fproperties : TPigJobTypeproperties;
+    FjarFileUris : TStringArray;
+    FloggingConfig : TLoggingConfig;
+  Protected
+    //Property setters
+    Procedure SetqueryFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetqueryList(AIndex : Integer; const AValue : TQueryList); virtual;
+    Procedure SetcontinueOnFailure(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetscriptVariables(AIndex : Integer; const AValue : TPigJobTypescriptVariables); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TPigJobTypeproperties); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property queryFileUri : String Index 0 Read FqueryFileUri Write SetqueryFileUri;
+    Property queryList : TQueryList Index 8 Read FqueryList Write SetqueryList;
+    Property continueOnFailure : boolean Index 16 Read FcontinueOnFailure Write SetcontinueOnFailure;
+    Property scriptVariables : TPigJobTypescriptVariables Index 24 Read FscriptVariables Write SetscriptVariables;
+    Property properties : TPigJobTypeproperties Index 32 Read Fproperties Write Setproperties;
+    Property jarFileUris : TStringArray Index 40 Read FjarFileUris Write SetjarFileUris;
+    Property loggingConfig : TLoggingConfig Index 48 Read FloggingConfig Write SetloggingConfig;
+  end;
+  TPigJobClass = Class of TPigJob;
+  
+  { --------------------------------------------------------------------
+    TSparkSqlJobTypescriptVariables
+    --------------------------------------------------------------------}
+  
+  TSparkSqlJobTypescriptVariables = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TSparkSqlJobTypescriptVariablesClass = Class of TSparkSqlJobTypescriptVariables;
+  
+  { --------------------------------------------------------------------
+    TSparkSqlJobTypeproperties
+    --------------------------------------------------------------------}
+  
+  TSparkSqlJobTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TSparkSqlJobTypepropertiesClass = Class of TSparkSqlJobTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TSparkSqlJob
+    --------------------------------------------------------------------}
+  
+  TSparkSqlJob = Class(TGoogleBaseObject)
+  Private
+    FqueryFileUri : String;
+    FqueryList : TQueryList;
+    FscriptVariables : TSparkSqlJobTypescriptVariables;
+    Fproperties : TSparkSqlJobTypeproperties;
+    FjarFileUris : TStringArray;
+    FloggingConfig : TLoggingConfig;
+  Protected
+    //Property setters
+    Procedure SetqueryFileUri(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetqueryList(AIndex : Integer; const AValue : TQueryList); virtual;
+    Procedure SetscriptVariables(AIndex : Integer; const AValue : TSparkSqlJobTypescriptVariables); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSparkSqlJobTypeproperties); virtual;
+    Procedure SetjarFileUris(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property queryFileUri : String Index 0 Read FqueryFileUri Write SetqueryFileUri;
+    Property queryList : TQueryList Index 8 Read FqueryList Write SetqueryList;
+    Property scriptVariables : TSparkSqlJobTypescriptVariables Index 16 Read FscriptVariables Write SetscriptVariables;
+    Property properties : TSparkSqlJobTypeproperties Index 24 Read Fproperties Write Setproperties;
+    Property jarFileUris : TStringArray Index 32 Read FjarFileUris Write SetjarFileUris;
+    Property loggingConfig : TLoggingConfig Index 40 Read FloggingConfig Write SetloggingConfig;
+  end;
+  TSparkSqlJobClass = Class of TSparkSqlJob;
+  
+  { --------------------------------------------------------------------
+    TJobStatus
+    --------------------------------------------------------------------}
+  
+  TJobStatus = Class(TGoogleBaseObject)
+  Private
+    Fstate : String;
+    Fdetails : String;
+    FstateStartTime : String;
+  Protected
+    //Property setters
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateStartTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property state : String Index 0 Read Fstate Write Setstate;
+    Property details : String Index 8 Read Fdetails Write Setdetails;
+    Property stateStartTime : String Index 16 Read FstateStartTime Write SetstateStartTime;
+  end;
+  TJobStatusClass = Class of TJobStatus;
+  
+  { --------------------------------------------------------------------
+    TListJobsResponse
+    --------------------------------------------------------------------}
+  
+  TListJobsResponse = Class(TGoogleBaseObject)
+  Private
+    Fjobs : TListJobsResponseTypejobsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setjobs(AIndex : Integer; const AValue : TListJobsResponseTypejobsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property jobs : TListJobsResponseTypejobsArray Index 0 Read Fjobs Write Setjobs;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListJobsResponseClass = Class of TListJobsResponse;
+  
+  { --------------------------------------------------------------------
+    TCancelJobRequest
+    --------------------------------------------------------------------}
+  
+  TCancelJobRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TCancelJobRequestClass = Class of TCancelJobRequest;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListOperationsResponse
+    --------------------------------------------------------------------}
+  
+  TListOperationsResponse = Class(TGoogleBaseObject)
+  Private
+    Foperations : TListOperationsResponseTypeoperationsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property operations : TListOperationsResponseTypeoperationsArray Index 0 Read Foperations Write Setoperations;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListOperationsResponseClass = Class of TListOperationsResponse;
+  
+  { --------------------------------------------------------------------
+    TDiagnoseClusterResults
+    --------------------------------------------------------------------}
+  
+  TDiagnoseClusterResults = Class(TGoogleBaseObject)
+  Private
+    FoutputUri : String;
+  Protected
+    //Property setters
+    Procedure SetoutputUri(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property outputUri : String Index 0 Read FoutputUri Write SetoutputUri;
+  end;
+  TDiagnoseClusterResultsClass = Class of TDiagnoseClusterResults;
+  
+  { --------------------------------------------------------------------
+    TClusterOperationMetadata
+    --------------------------------------------------------------------}
+  
+  TClusterOperationMetadata = Class(TGoogleBaseObject)
+  Private
+    FclusterName : String;
+    FclusterUuid : String;
+    Fstatus : TClusterOperationStatus;
+    FstatusHistory : TClusterOperationMetadataTypestatusHistoryArray;
+    FoperationType : String;
+    Fdescription : String;
+  Protected
+    //Property setters
+    Procedure SetclusterName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclusterUuid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TClusterOperationStatus); virtual;
+    Procedure SetstatusHistory(AIndex : Integer; const AValue : TClusterOperationMetadataTypestatusHistoryArray); virtual;
+    Procedure SetoperationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property clusterName : String Index 0 Read FclusterName Write SetclusterName;
+    Property clusterUuid : String Index 8 Read FclusterUuid Write SetclusterUuid;
+    Property status : TClusterOperationStatus Index 16 Read Fstatus Write Setstatus;
+    Property statusHistory : TClusterOperationMetadataTypestatusHistoryArray Index 24 Read FstatusHistory Write SetstatusHistory;
+    Property operationType : String Index 32 Read FoperationType Write SetoperationType;
+    Property description : String Index 40 Read Fdescription Write Setdescription;
+  end;
+  TClusterOperationMetadataClass = Class of TClusterOperationMetadata;
+  
+  { --------------------------------------------------------------------
+    TClusterOperationStatus
+    --------------------------------------------------------------------}
+  
+  TClusterOperationStatus = Class(TGoogleBaseObject)
+  Private
+    Fstate : String;
+    FinnerState : String;
+    Fdetails : String;
+    FstateStartTime : String;
+  Protected
+    //Property setters
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinnerState(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateStartTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property state : String Index 0 Read Fstate Write Setstate;
+    Property innerState : String Index 8 Read FinnerState Write SetinnerState;
+    Property details : String Index 16 Read Fdetails Write Setdetails;
+    Property stateStartTime : String Index 24 Read FstateStartTime Write SetstateStartTime;
+  end;
+  TClusterOperationStatusClass = Class of TClusterOperationStatus;
+  
+  { --------------------------------------------------------------------
+    TDiagnoseClusterOutputLocation
+    --------------------------------------------------------------------}
+  
+  TDiagnoseClusterOutputLocation = Class(TGoogleBaseObject)
+  Private
+    FoutputUri : String;
+  Protected
+    //Property setters
+    Procedure SetoutputUri(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property outputUri : String Index 0 Read FoutputUri Write SetoutputUri;
+  end;
+  TDiagnoseClusterOutputLocationClass = Class of TDiagnoseClusterOutputLocation;
+  
+  { --------------------------------------------------------------------
+    TOperationMetadata
+    --------------------------------------------------------------------}
+  
+  TOperationMetadata = Class(TGoogleBaseObject)
+  Private
+    Fstate : String;
+    FinnerState : String;
+    Fdetails : String;
+    FinsertTime : String;
+    FstartTime : String;
+    FendTime : String;
+    FclusterName : String;
+    FclusterUuid : String;
+    Fstatus : TOperationStatus;
+    FstatusHistory : TOperationMetadataTypestatusHistoryArray;
+    FoperationType : String;
+    Fdescription : String;
+  Protected
+    //Property setters
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinnerState(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinsertTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclusterName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclusterUuid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TOperationStatus); virtual;
+    Procedure SetstatusHistory(AIndex : Integer; const AValue : TOperationMetadataTypestatusHistoryArray); virtual;
+    Procedure SetoperationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property state : String Index 0 Read Fstate Write Setstate;
+    Property innerState : String Index 8 Read FinnerState Write SetinnerState;
+    Property details : String Index 16 Read Fdetails Write Setdetails;
+    Property insertTime : String Index 24 Read FinsertTime Write SetinsertTime;
+    Property startTime : String Index 32 Read FstartTime Write SetstartTime;
+    Property endTime : String Index 40 Read FendTime Write SetendTime;
+    Property clusterName : String Index 48 Read FclusterName Write SetclusterName;
+    Property clusterUuid : String Index 56 Read FclusterUuid Write SetclusterUuid;
+    Property status : TOperationStatus Index 64 Read Fstatus Write Setstatus;
+    Property statusHistory : TOperationMetadataTypestatusHistoryArray Index 72 Read FstatusHistory Write SetstatusHistory;
+    Property operationType : String Index 80 Read FoperationType Write SetoperationType;
+    Property description : String Index 88 Read Fdescription Write Setdescription;
+  end;
+  TOperationMetadataClass = Class of TOperationMetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationStatus
+    --------------------------------------------------------------------}
+  
+  TOperationStatus = Class(TGoogleBaseObject)
+  Private
+    Fstate : String;
+    FinnerState : String;
+    Fdetails : String;
+    FstateStartTime : String;
+  Protected
+    //Property setters
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinnerState(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstateStartTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property state : String Index 0 Read Fstate Write Setstate;
+    Property innerState : String Index 8 Read FinnerState Write SetinnerState;
+    Property details : String Index 16 Read Fdetails Write Setdetails;
+    Property stateStartTime : String Index 24 Read FstateStartTime Write SetstateStartTime;
+  end;
+  TOperationStatusClass = Class of TOperationStatus;
+  
+  { --------------------------------------------------------------------
+    TProjectsRegionsClustersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsRegionsClustersResource, method Patch
+  
+  TProjectsRegionsClustersPatchOptions = Record
+    updateMask : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsRegionsClustersResource, method List
+  
+  TProjectsRegionsClustersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsRegionsClustersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(projectId: string; region: string; aCluster : TCluster) : TOperation;overload;
+    Function Patch(projectId: string; region: string; clusterName: string; aCluster : TCluster; AQuery : string  = '') : TOperation;
+    Function Patch(projectId: string; region: string; clusterName: string; aCluster : TCluster; AQuery : TProjectsRegionsClusterspatchOptions) : TOperation;
+    Function Delete(projectId: string; region: string; clusterName: string) : TOperation;
+    Function Get(projectId: string; region: string; clusterName: string) : TCluster;
+    Function List(projectId: string; region: string; AQuery : string  = '') : TListClustersResponse;
+    Function List(projectId: string; region: string; AQuery : TProjectsRegionsClusterslistOptions) : TListClustersResponse;
+    Function Diagnose(projectId: string; region: string; clusterName: string; aDiagnoseClusterRequest : TDiagnoseClusterRequest) : TOperation;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsRegionsJobsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsRegionsJobsResource, method List
+  
+  TProjectsRegionsJobsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    clusterName : String;
+    jobStateMatcher : String;
+  end;
+  
+  TProjectsRegionsJobsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Submit(projectId: string; region: string; aSubmitJobRequest : TSubmitJobRequest) : TJob;
+    Function Get(projectId: string; region: string; jobId: string) : TJob;
+    Function List(projectId: string; region: string; AQuery : string  = '') : TListJobsResponse;
+    Function List(projectId: string; region: string; AQuery : TProjectsRegionsJobslistOptions) : TListJobsResponse;
+    Function Cancel(projectId: string; region: string; jobId: string; aCancelJobRequest : TCancelJobRequest) : TJob;
+    Function Delete(projectId: string; region: string; jobId: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsRegionsOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsRegionsOperationsResource, method List
+  
+  TProjectsRegionsOperationsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsRegionsOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_name: string) : TOperation;
+    Function List(_name: string; AQuery : string  = '') : TListOperationsResponse;
+    Function List(_name: string; AQuery : TProjectsRegionsOperationslistOptions) : TListOperationsResponse;
+    Function Cancel(_name: string) : TEmpty;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsRegionsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsRegionsResource = Class(TGoogleResource)
+  Private
+    FClustersInstance : TProjectsRegionsClustersResource;
+    FJobsInstance : TProjectsRegionsJobsResource;
+    FOperationsInstance : TProjectsRegionsOperationsResource;
+    Function GetClustersInstance : TProjectsRegionsClustersResource;virtual;
+    Function GetJobsInstance : TProjectsRegionsJobsResource;virtual;
+    Function GetOperationsInstance : TProjectsRegionsOperationsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateClustersResource : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateJobsResource : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;virtual;overload;
+    Function CreateOperationsResource : TProjectsRegionsOperationsResource;virtual;overload;
+    Property ClustersResource : TProjectsRegionsClustersResource Read GetClustersInstance;
+    Property JobsResource : TProjectsRegionsJobsResource Read GetJobsInstance;
+    Property OperationsResource : TProjectsRegionsOperationsResource Read GetOperationsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FRegionsClustersInstance : TProjectsRegionsClustersResource;
+    FRegionsJobsInstance : TProjectsRegionsJobsResource;
+    FRegionsOperationsInstance : TProjectsRegionsOperationsResource;
+    FRegionsInstance : TProjectsRegionsResource;
+    Function GetRegionsClustersInstance : TProjectsRegionsClustersResource;virtual;
+    Function GetRegionsJobsInstance : TProjectsRegionsJobsResource;virtual;
+    Function GetRegionsOperationsInstance : TProjectsRegionsOperationsResource;virtual;
+    Function GetRegionsInstance : TProjectsRegionsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateRegionsClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateRegionsClustersResource : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateRegionsJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateRegionsJobsResource : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateRegionsOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;virtual;overload;
+    Function CreateRegionsOperationsResource : TProjectsRegionsOperationsResource;virtual;overload;
+    Function CreateRegionsResource(AOwner : TComponent) : TProjectsRegionsResource;virtual;overload;
+    Function CreateRegionsResource : TProjectsRegionsResource;virtual;overload;
+    Property RegionsClustersResource : TProjectsRegionsClustersResource Read GetRegionsClustersInstance;
+    Property RegionsJobsResource : TProjectsRegionsJobsResource Read GetRegionsJobsInstance;
+    Property RegionsOperationsResource : TProjectsRegionsOperationsResource Read GetRegionsOperationsInstance;
+    Property RegionsResource : TProjectsRegionsResource Read GetRegionsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TDataprocAPI
+    --------------------------------------------------------------------}
+  
+  TDataprocAPI = Class(TGoogleAPI)
+  Private
+    FProjectsRegionsClustersInstance : TProjectsRegionsClustersResource;
+    FProjectsRegionsJobsInstance : TProjectsRegionsJobsResource;
+    FProjectsRegionsOperationsInstance : TProjectsRegionsOperationsResource;
+    FProjectsRegionsInstance : TProjectsRegionsResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsRegionsClustersInstance : TProjectsRegionsClustersResource;virtual;
+    Function GetProjectsRegionsJobsInstance : TProjectsRegionsJobsResource;virtual;
+    Function GetProjectsRegionsOperationsInstance : TProjectsRegionsOperationsResource;virtual;
+    Function GetProjectsRegionsInstance : TProjectsRegionsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsRegionsClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateProjectsRegionsClustersResource : TProjectsRegionsClustersResource;virtual;overload;
+    Function CreateProjectsRegionsJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateProjectsRegionsJobsResource : TProjectsRegionsJobsResource;virtual;overload;
+    Function CreateProjectsRegionsOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;virtual;overload;
+    Function CreateProjectsRegionsOperationsResource : TProjectsRegionsOperationsResource;virtual;overload;
+    Function CreateProjectsRegionsResource(AOwner : TComponent) : TProjectsRegionsResource;virtual;overload;
+    Function CreateProjectsRegionsResource : TProjectsRegionsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsRegionsClustersResource : TProjectsRegionsClustersResource Read GetProjectsRegionsClustersInstance;
+    Property ProjectsRegionsJobsResource : TProjectsRegionsJobsResource Read GetProjectsRegionsJobsInstance;
+    Property ProjectsRegionsOperationsResource : TProjectsRegionsOperationsResource Read GetProjectsRegionsOperationsInstance;
+    Property ProjectsRegionsResource : TProjectsRegionsResource Read GetProjectsRegionsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TCluster
+  --------------------------------------------------------------------}
+
+
+Procedure TCluster.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCluster.SetclusterName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterName=AValue) then exit;
+  FclusterName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCluster.Setconfig(AIndex : Integer; const AValue : TClusterConfig); 
+
+begin
+  If (Fconfig=AValue) then exit;
+  Fconfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCluster.Setstatus(AIndex : Integer; const AValue : TClusterStatus); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCluster.SetstatusHistory(AIndex : Integer; const AValue : TClusterTypestatusHistoryArray); 
+
+begin
+  If (FstatusHistory=AValue) then exit;
+  FstatusHistory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCluster.SetclusterUuid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterUuid=AValue) then exit;
+  FclusterUuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCluster.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'statushistory' : SetLength(FstatusHistory,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TClusterConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TClusterConfig.SetconfigBucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FconfigBucket=AValue) then exit;
+  FconfigBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetgceClusterConfig(AIndex : Integer; const AValue : TGceClusterConfig); 
+
+begin
+  If (FgceClusterConfig=AValue) then exit;
+  FgceClusterConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetmasterConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); 
+
+begin
+  If (FmasterConfig=AValue) then exit;
+  FmasterConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetworkerConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); 
+
+begin
+  If (FworkerConfig=AValue) then exit;
+  FworkerConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetsecondaryWorkerConfig(AIndex : Integer; const AValue : TInstanceGroupConfig); 
+
+begin
+  If (FsecondaryWorkerConfig=AValue) then exit;
+  FsecondaryWorkerConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetsoftwareConfig(AIndex : Integer; const AValue : TSoftwareConfig); 
+
+begin
+  If (FsoftwareConfig=AValue) then exit;
+  FsoftwareConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterConfig.SetinitializationActions(AIndex : Integer; const AValue : TClusterConfigTypeinitializationActionsArray); 
+
+begin
+  If (FinitializationActions=AValue) then exit;
+  FinitializationActions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TClusterConfig.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'initializationactions' : SetLength(FinitializationActions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGceClusterConfigTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TGceClusterConfigTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TGceClusterConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TGceClusterConfig.SetzoneUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FzoneUri=AValue) then exit;
+  FzoneUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGceClusterConfig.SetnetworkUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnetworkUri=AValue) then exit;
+  FnetworkUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGceClusterConfig.SetsubnetworkUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsubnetworkUri=AValue) then exit;
+  FsubnetworkUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGceClusterConfig.SetserviceAccountScopes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FserviceAccountScopes=AValue) then exit;
+  FserviceAccountScopes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGceClusterConfig.Settags(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Ftags=AValue) then exit;
+  Ftags:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGceClusterConfig.Setmetadata(AIndex : Integer; const AValue : TGceClusterConfigTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGceClusterConfig.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'serviceaccountscopes' : SetLength(FserviceAccountScopes,ALength);
+  'tags' : SetLength(Ftags,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TInstanceGroupConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TInstanceGroupConfig.SetnumInstances(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumInstances=AValue) then exit;
+  FnumInstances:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetinstanceNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FinstanceNames=AValue) then exit;
+  FinstanceNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetimageUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FimageUri=AValue) then exit;
+  FimageUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetmachineTypeUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmachineTypeUri=AValue) then exit;
+  FmachineTypeUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetdiskConfig(AIndex : Integer; const AValue : TDiskConfig); 
+
+begin
+  If (FdiskConfig=AValue) then exit;
+  FdiskConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetisPreemptible(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisPreemptible=AValue) then exit;
+  FisPreemptible:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInstanceGroupConfig.SetmanagedGroupConfig(AIndex : Integer; const AValue : TManagedGroupConfig); 
+
+begin
+  If (FmanagedGroupConfig=AValue) then exit;
+  FmanagedGroupConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TInstanceGroupConfig.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'instancenames' : SetLength(FinstanceNames,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiskConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TDiskConfig.SetbootDiskSizeGb(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FbootDiskSizeGb=AValue) then exit;
+  FbootDiskSizeGb:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiskConfig.SetnumLocalSsds(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumLocalSsds=AValue) then exit;
+  FnumLocalSsds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TManagedGroupConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TManagedGroupConfig.SetinstanceTemplateName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinstanceTemplateName=AValue) then exit;
+  FinstanceTemplateName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TManagedGroupConfig.SetinstanceGroupManagerName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinstanceGroupManagerName=AValue) then exit;
+  FinstanceGroupManagerName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSoftwareConfigTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TSoftwareConfigTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSoftwareConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TSoftwareConfig.SetimageVersion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FimageVersion=AValue) then exit;
+  FimageVersion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSoftwareConfig.Setproperties(AIndex : Integer; const AValue : TSoftwareConfigTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNodeInitializationAction
+  --------------------------------------------------------------------}
+
+
+Procedure TNodeInitializationAction.SetexecutableFile(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FexecutableFile=AValue) then exit;
+  FexecutableFile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNodeInitializationAction.SetexecutionTimeout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FexecutionTimeout=AValue) then exit;
+  FexecutionTimeout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TClusterStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TClusterStatus.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterStatus.Setdetail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetail=AValue) then exit;
+  Fdetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterStatus.SetstateStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstateStartTime=AValue) then exit;
+  FstateStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTyperesponse
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStatusTypedetailsItem
+  --------------------------------------------------------------------}
+
+
+Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'details' : SetLength(Fdetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListClustersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListClustersResponse.Setclusters(AIndex : Integer; const AValue : TListClustersResponseTypeclustersArray); 
+
+begin
+  If (Fclusters=AValue) then exit;
+  Fclusters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListClustersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListClustersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'clusters' : SetLength(Fclusters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiagnoseClusterRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSubmitJobRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSubmitJobRequest.Setjob(AIndex : Integer; const AValue : TJob); 
+
+begin
+  If (Fjob=AValue) then exit;
+  Fjob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TJob
+  --------------------------------------------------------------------}
+
+
+Procedure TJob.Setreference(AIndex : Integer; const AValue : TJobReference); 
+
+begin
+  If (Freference=AValue) then exit;
+  Freference:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.Setplacement(AIndex : Integer; const AValue : TJobPlacement); 
+
+begin
+  If (Fplacement=AValue) then exit;
+  Fplacement:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SethadoopJob(AIndex : Integer; const AValue : THadoopJob); 
+
+begin
+  If (FhadoopJob=AValue) then exit;
+  FhadoopJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetsparkJob(AIndex : Integer; const AValue : TSparkJob); 
+
+begin
+  If (FsparkJob=AValue) then exit;
+  FsparkJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetpysparkJob(AIndex : Integer; const AValue : TPySparkJob); 
+
+begin
+  If (FpysparkJob=AValue) then exit;
+  FpysparkJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SethiveJob(AIndex : Integer; const AValue : THiveJob); 
+
+begin
+  If (FhiveJob=AValue) then exit;
+  FhiveJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetpigJob(AIndex : Integer; const AValue : TPigJob); 
+
+begin
+  If (FpigJob=AValue) then exit;
+  FpigJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetsparkSqlJob(AIndex : Integer; const AValue : TSparkSqlJob); 
+
+begin
+  If (FsparkSqlJob=AValue) then exit;
+  FsparkSqlJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.Setstatus(AIndex : Integer; const AValue : TJobStatus); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetstatusHistory(AIndex : Integer; const AValue : TJobTypestatusHistoryArray); 
+
+begin
+  If (FstatusHistory=AValue) then exit;
+  FstatusHistory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetdriverOutputResourceUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdriverOutputResourceUri=AValue) then exit;
+  FdriverOutputResourceUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJob.SetdriverControlFilesUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdriverControlFilesUri=AValue) then exit;
+  FdriverControlFilesUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'statushistory' : SetLength(FstatusHistory,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TJobReference
+  --------------------------------------------------------------------}
+
+
+Procedure TJobReference.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJobReference.SetjobId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FjobId=AValue) then exit;
+  FjobId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TJobPlacement
+  --------------------------------------------------------------------}
+
+
+Procedure TJobPlacement.SetclusterName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterName=AValue) then exit;
+  FclusterName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJobPlacement.SetclusterUuid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterUuid=AValue) then exit;
+  FclusterUuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  THadoopJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function THadoopJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  THadoopJob
+  --------------------------------------------------------------------}
+
+
+Procedure THadoopJob.SetmainJarFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmainJarFileUri=AValue) then exit;
+  FmainJarFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.SetmainClass(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmainClass=AValue) then exit;
+  FmainClass:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.Setargs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fargs=AValue) then exit;
+  Fargs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.SetfileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FfileUris=AValue) then exit;
+  FfileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.SetarchiveUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FarchiveUris=AValue) then exit;
+  FarchiveUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.Setproperties(AIndex : Integer; const AValue : THadoopJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THadoopJob.SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); 
+
+begin
+  If (FloggingConfig=AValue) then exit;
+  FloggingConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure THadoopJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'args' : SetLength(Fargs,ALength);
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  'fileuris' : SetLength(FfileUris,ALength);
+  'archiveuris' : SetLength(FarchiveUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLoggingConfigTypedriverLogLevels
+  --------------------------------------------------------------------}
+
+
+Class Function TLoggingConfigTypedriverLogLevels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TLoggingConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TLoggingConfig.SetdriverLogLevels(AIndex : Integer; const AValue : TLoggingConfigTypedriverLogLevels); 
+
+begin
+  If (FdriverLogLevels=AValue) then exit;
+  FdriverLogLevels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSparkJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TSparkJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSparkJob
+  --------------------------------------------------------------------}
+
+
+Procedure TSparkJob.SetmainJarFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmainJarFileUri=AValue) then exit;
+  FmainJarFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.SetmainClass(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmainClass=AValue) then exit;
+  FmainClass:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.Setargs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fargs=AValue) then exit;
+  Fargs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.SetfileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FfileUris=AValue) then exit;
+  FfileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.SetarchiveUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FarchiveUris=AValue) then exit;
+  FarchiveUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.Setproperties(AIndex : Integer; const AValue : TSparkJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkJob.SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); 
+
+begin
+  If (FloggingConfig=AValue) then exit;
+  FloggingConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSparkJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'args' : SetLength(Fargs,ALength);
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  'fileuris' : SetLength(FfileUris,ALength);
+  'archiveuris' : SetLength(FarchiveUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPySparkJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TPySparkJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPySparkJob
+  --------------------------------------------------------------------}
+
+
+Procedure TPySparkJob.SetmainPythonFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmainPythonFileUri=AValue) then exit;
+  FmainPythonFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.Setargs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fargs=AValue) then exit;
+  Fargs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.SetpythonFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpythonFileUris=AValue) then exit;
+  FpythonFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.SetfileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FfileUris=AValue) then exit;
+  FfileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.SetarchiveUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FarchiveUris=AValue) then exit;
+  FarchiveUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.Setproperties(AIndex : Integer; const AValue : TPySparkJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPySparkJob.SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); 
+
+begin
+  If (FloggingConfig=AValue) then exit;
+  FloggingConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPySparkJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'args' : SetLength(Fargs,ALength);
+  'pythonfileuris' : SetLength(FpythonFileUris,ALength);
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  'fileuris' : SetLength(FfileUris,ALength);
+  'archiveuris' : SetLength(FarchiveUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  THiveJobTypescriptVariables
+  --------------------------------------------------------------------}
+
+
+Class Function THiveJobTypescriptVariables.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  THiveJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function THiveJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  THiveJob
+  --------------------------------------------------------------------}
+
+
+Procedure THiveJob.SetqueryFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FqueryFileUri=AValue) then exit;
+  FqueryFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THiveJob.SetqueryList(AIndex : Integer; const AValue : TQueryList); 
+
+begin
+  If (FqueryList=AValue) then exit;
+  FqueryList:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THiveJob.SetcontinueOnFailure(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcontinueOnFailure=AValue) then exit;
+  FcontinueOnFailure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THiveJob.SetscriptVariables(AIndex : Integer; const AValue : THiveJobTypescriptVariables); 
+
+begin
+  If (FscriptVariables=AValue) then exit;
+  FscriptVariables:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THiveJob.Setproperties(AIndex : Integer; const AValue : THiveJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THiveJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure THiveJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TQueryList
+  --------------------------------------------------------------------}
+
+
+Procedure TQueryList.Setqueries(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fqueries=AValue) then exit;
+  Fqueries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TQueryList.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'queries' : SetLength(Fqueries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPigJobTypescriptVariables
+  --------------------------------------------------------------------}
+
+
+Class Function TPigJobTypescriptVariables.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPigJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TPigJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPigJob
+  --------------------------------------------------------------------}
+
+
+Procedure TPigJob.SetqueryFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FqueryFileUri=AValue) then exit;
+  FqueryFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.SetqueryList(AIndex : Integer; const AValue : TQueryList); 
+
+begin
+  If (FqueryList=AValue) then exit;
+  FqueryList:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.SetcontinueOnFailure(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcontinueOnFailure=AValue) then exit;
+  FcontinueOnFailure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.SetscriptVariables(AIndex : Integer; const AValue : TPigJobTypescriptVariables); 
+
+begin
+  If (FscriptVariables=AValue) then exit;
+  FscriptVariables:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.Setproperties(AIndex : Integer; const AValue : TPigJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPigJob.SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); 
+
+begin
+  If (FloggingConfig=AValue) then exit;
+  FloggingConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPigJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSparkSqlJobTypescriptVariables
+  --------------------------------------------------------------------}
+
+
+Class Function TSparkSqlJobTypescriptVariables.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSparkSqlJobTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TSparkSqlJobTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSparkSqlJob
+  --------------------------------------------------------------------}
+
+
+Procedure TSparkSqlJob.SetqueryFileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FqueryFileUri=AValue) then exit;
+  FqueryFileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkSqlJob.SetqueryList(AIndex : Integer; const AValue : TQueryList); 
+
+begin
+  If (FqueryList=AValue) then exit;
+  FqueryList:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkSqlJob.SetscriptVariables(AIndex : Integer; const AValue : TSparkSqlJobTypescriptVariables); 
+
+begin
+  If (FscriptVariables=AValue) then exit;
+  FscriptVariables:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkSqlJob.Setproperties(AIndex : Integer; const AValue : TSparkSqlJobTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkSqlJob.SetjarFileUris(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FjarFileUris=AValue) then exit;
+  FjarFileUris:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSparkSqlJob.SetloggingConfig(AIndex : Integer; const AValue : TLoggingConfig); 
+
+begin
+  If (FloggingConfig=AValue) then exit;
+  FloggingConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSparkSqlJob.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'jarfileuris' : SetLength(FjarFileUris,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TJobStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TJobStatus.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJobStatus.Setdetails(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TJobStatus.SetstateStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstateStartTime=AValue) then exit;
+  FstateStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListJobsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListJobsResponse.Setjobs(AIndex : Integer; const AValue : TListJobsResponseTypejobsArray); 
+
+begin
+  If (Fjobs=AValue) then exit;
+  Fjobs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListJobsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListJobsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'jobs' : SetLength(Fjobs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCancelJobRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListOperationsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListOperationsResponse.Setoperations(AIndex : Integer; const AValue : TListOperationsResponseTypeoperationsArray); 
+
+begin
+  If (Foperations=AValue) then exit;
+  Foperations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListOperationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListOperationsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'operations' : SetLength(Foperations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiagnoseClusterResults
+  --------------------------------------------------------------------}
+
+
+Procedure TDiagnoseClusterResults.SetoutputUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoutputUri=AValue) then exit;
+  FoutputUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TClusterOperationMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TClusterOperationMetadata.SetclusterName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterName=AValue) then exit;
+  FclusterName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationMetadata.SetclusterUuid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterUuid=AValue) then exit;
+  FclusterUuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationMetadata.Setstatus(AIndex : Integer; const AValue : TClusterOperationStatus); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationMetadata.SetstatusHistory(AIndex : Integer; const AValue : TClusterOperationMetadataTypestatusHistoryArray); 
+
+begin
+  If (FstatusHistory=AValue) then exit;
+  FstatusHistory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationMetadata.SetoperationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoperationType=AValue) then exit;
+  FoperationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationMetadata.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TClusterOperationMetadata.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'statushistory' : SetLength(FstatusHistory,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TClusterOperationStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TClusterOperationStatus.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationStatus.SetinnerState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinnerState=AValue) then exit;
+  FinnerState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationStatus.Setdetails(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClusterOperationStatus.SetstateStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstateStartTime=AValue) then exit;
+  FstateStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiagnoseClusterOutputLocation
+  --------------------------------------------------------------------}
+
+
+Procedure TDiagnoseClusterOutputLocation.SetoutputUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoutputUri=AValue) then exit;
+  FoutputUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationMetadata.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetinnerState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinnerState=AValue) then exit;
+  FinnerState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Setdetails(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetinsertTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinsertTime=AValue) then exit;
+  FinsertTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetclusterName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterName=AValue) then exit;
+  FclusterName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetclusterUuid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclusterUuid=AValue) then exit;
+  FclusterUuid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Setstatus(AIndex : Integer; const AValue : TOperationStatus); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetstatusHistory(AIndex : Integer; const AValue : TOperationMetadataTypestatusHistoryArray); 
+
+begin
+  If (FstatusHistory=AValue) then exit;
+  FstatusHistory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.SetoperationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoperationType=AValue) then exit;
+  FoperationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationMetadata.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperationMetadata.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'statushistory' : SetLength(FstatusHistory,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationStatus.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationStatus.SetinnerState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinnerState=AValue) then exit;
+  FinnerState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationStatus.Setdetails(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationStatus.SetstateStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstateStartTime=AValue) then exit;
+  FstateStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsRegionsClustersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsRegionsClustersResource.ResourceName : String;
+
+begin
+  Result:='clusters';
+end;
+
+Class Function TProjectsRegionsClustersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdataprocAPI;
+end;
+
+Function TProjectsRegionsClustersResource.Create(projectId: string; region: string; aCluster : TCluster) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters';
+  _Methodid   = 'dataproc.projects.regions.clusters.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCluster,TOperation) as TOperation;
+end;
+
+Function TProjectsRegionsClustersResource.Patch(projectId: string; region: string; clusterName: string; aCluster : TCluster; AQuery : string = '') : TOperation;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters/{clusterName}';
+  _Methodid   = 'dataproc.projects.regions.clusters.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'clusterName',clusterName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aCluster,TOperation) as TOperation;
+end;
+
+
+Function TProjectsRegionsClustersResource.Patch(projectId: string; region: string; clusterName: string; aCluster : TCluster; AQuery : TProjectsRegionsClusterspatchOptions) : TOperation;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'updateMask',AQuery.updateMask);
+  Result:=Patch(projectId,region,clusterName,aCluster,_Q);
+end;
+
+Function TProjectsRegionsClustersResource.Delete(projectId: string; region: string; clusterName: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters/{clusterName}';
+  _Methodid   = 'dataproc.projects.regions.clusters.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'clusterName',clusterName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TProjectsRegionsClustersResource.Get(projectId: string; region: string; clusterName: string) : TCluster;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters/{clusterName}';
+  _Methodid   = 'dataproc.projects.regions.clusters.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'clusterName',clusterName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCluster) as TCluster;
+end;
+
+Function TProjectsRegionsClustersResource.List(projectId: string; region: string; AQuery : string = '') : TListClustersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters';
+  _Methodid   = 'dataproc.projects.regions.clusters.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListClustersResponse) as TListClustersResponse;
+end;
+
+
+Function TProjectsRegionsClustersResource.List(projectId: string; region: string; AQuery : TProjectsRegionsClusterslistOptions) : TListClustersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(projectId,region,_Q);
+end;
+
+Function TProjectsRegionsClustersResource.Diagnose(projectId: string; region: string; clusterName: string; aDiagnoseClusterRequest : TDiagnoseClusterRequest) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose';
+  _Methodid   = 'dataproc.projects.regions.clusters.diagnose';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'clusterName',clusterName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aDiagnoseClusterRequest,TOperation) as TOperation;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsRegionsJobsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsRegionsJobsResource.ResourceName : String;
+
+begin
+  Result:='jobs';
+end;
+
+Class Function TProjectsRegionsJobsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdataprocAPI;
+end;
+
+Function TProjectsRegionsJobsResource.Submit(projectId: string; region: string; aSubmitJobRequest : TSubmitJobRequest) : TJob;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/jobs:submit';
+  _Methodid   = 'dataproc.projects.regions.jobs.submit';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSubmitJobRequest,TJob) as TJob;
+end;
+
+Function TProjectsRegionsJobsResource.Get(projectId: string; region: string; jobId: string) : TJob;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/jobs/{jobId}';
+  _Methodid   = 'dataproc.projects.regions.jobs.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'jobId',jobId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TJob) as TJob;
+end;
+
+Function TProjectsRegionsJobsResource.List(projectId: string; region: string; AQuery : string = '') : TListJobsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/jobs';
+  _Methodid   = 'dataproc.projects.regions.jobs.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListJobsResponse) as TListJobsResponse;
+end;
+
+
+Function TProjectsRegionsJobsResource.List(projectId: string; region: string; AQuery : TProjectsRegionsJobslistOptions) : TListJobsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'clusterName',AQuery.clusterName);
+  AddToQuery(_Q,'jobStateMatcher',AQuery.jobStateMatcher);
+  Result:=List(projectId,region,_Q);
+end;
+
+Function TProjectsRegionsJobsResource.Cancel(projectId: string; region: string; jobId: string; aCancelJobRequest : TCancelJobRequest) : TJob;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel';
+  _Methodid   = 'dataproc.projects.regions.jobs.cancel';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'jobId',jobId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCancelJobRequest,TJob) as TJob;
+end;
+
+Function TProjectsRegionsJobsResource.Delete(projectId: string; region: string; jobId: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/projects/{projectId}/regions/{region}/jobs/{jobId}';
+  _Methodid   = 'dataproc.projects.regions.jobs.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId,'region',region,'jobId',jobId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsRegionsOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsRegionsOperationsResource.ResourceName : String;
+
+begin
+  Result:='operations';
+end;
+
+Class Function TProjectsRegionsOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdataprocAPI;
+end;
+
+Function TProjectsRegionsOperationsResource.Get(_name: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'dataproc.projects.regions.operations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TProjectsRegionsOperationsResource.List(_name: string; AQuery : string = '') : TListOperationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'dataproc.projects.regions.operations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListOperationsResponse) as TListOperationsResponse;
+end;
+
+
+Function TProjectsRegionsOperationsResource.List(_name: string; AQuery : TProjectsRegionsOperationslistOptions) : TListOperationsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsRegionsOperationsResource.Cancel(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:cancel';
+  _Methodid   = 'dataproc.projects.regions.operations.cancel';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TProjectsRegionsOperationsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'dataproc.projects.regions.operations.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsRegionsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsRegionsResource.ResourceName : String;
+
+begin
+  Result:='regions';
+end;
+
+Class Function TProjectsRegionsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdataprocAPI;
+end;
+
+
+
+Function TProjectsRegionsResource.GetClustersInstance : TProjectsRegionsClustersResource;
+
+begin
+  if (FClustersInstance=Nil) then
+    FClustersInstance:=CreateClustersResource;
+  Result:=FClustersInstance;
+end;
+
+Function TProjectsRegionsResource.CreateClustersResource : TProjectsRegionsClustersResource;
+
+begin
+  Result:=CreateClustersResource(Self);
+end;
+
+
+Function TProjectsRegionsResource.CreateClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;
+
+begin
+  Result:=TProjectsRegionsClustersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsRegionsResource.GetJobsInstance : TProjectsRegionsJobsResource;
+
+begin
+  if (FJobsInstance=Nil) then
+    FJobsInstance:=CreateJobsResource;
+  Result:=FJobsInstance;
+end;
+
+Function TProjectsRegionsResource.CreateJobsResource : TProjectsRegionsJobsResource;
+
+begin
+  Result:=CreateJobsResource(Self);
+end;
+
+
+Function TProjectsRegionsResource.CreateJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;
+
+begin
+  Result:=TProjectsRegionsJobsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsRegionsResource.GetOperationsInstance : TProjectsRegionsOperationsResource;
+
+begin
+  if (FOperationsInstance=Nil) then
+    FOperationsInstance:=CreateOperationsResource;
+  Result:=FOperationsInstance;
+end;
+
+Function TProjectsRegionsResource.CreateOperationsResource : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=CreateOperationsResource(Self);
+end;
+
+
+Function TProjectsRegionsResource.CreateOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=TProjectsRegionsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdataprocAPI;
+end;
+
+
+
+Function TProjectsResource.GetRegionsClustersInstance : TProjectsRegionsClustersResource;
+
+begin
+  if (FRegionsClustersInstance=Nil) then
+    FRegionsClustersInstance:=CreateRegionsClustersResource;
+  Result:=FRegionsClustersInstance;
+end;
+
+Function TProjectsResource.CreateRegionsClustersResource : TProjectsRegionsClustersResource;
+
+begin
+  Result:=CreateRegionsClustersResource(Self);
+end;
+
+
+Function TProjectsResource.CreateRegionsClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;
+
+begin
+  Result:=TProjectsRegionsClustersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetRegionsJobsInstance : TProjectsRegionsJobsResource;
+
+begin
+  if (FRegionsJobsInstance=Nil) then
+    FRegionsJobsInstance:=CreateRegionsJobsResource;
+  Result:=FRegionsJobsInstance;
+end;
+
+Function TProjectsResource.CreateRegionsJobsResource : TProjectsRegionsJobsResource;
+
+begin
+  Result:=CreateRegionsJobsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateRegionsJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;
+
+begin
+  Result:=TProjectsRegionsJobsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetRegionsOperationsInstance : TProjectsRegionsOperationsResource;
+
+begin
+  if (FRegionsOperationsInstance=Nil) then
+    FRegionsOperationsInstance:=CreateRegionsOperationsResource;
+  Result:=FRegionsOperationsInstance;
+end;
+
+Function TProjectsResource.CreateRegionsOperationsResource : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=CreateRegionsOperationsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateRegionsOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=TProjectsRegionsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetRegionsInstance : TProjectsRegionsResource;
+
+begin
+  if (FRegionsInstance=Nil) then
+    FRegionsInstance:=CreateRegionsResource;
+  Result:=FRegionsInstance;
+end;
+
+Function TProjectsResource.CreateRegionsResource : TProjectsRegionsResource;
+
+begin
+  Result:=CreateRegionsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateRegionsResource(AOwner : TComponent) : TProjectsRegionsResource;
+
+begin
+  Result:=TProjectsRegionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TDataprocAPI
+  --------------------------------------------------------------------}
+
+Class Function TDataprocAPI.APIName : String;
+
+begin
+  Result:='dataproc';
+end;
+
+Class Function TDataprocAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TDataprocAPI.APIRevision : String;
+
+begin
+  Result:='20160503';
+end;
+
+Class Function TDataprocAPI.APIID : String;
+
+begin
+  Result:='dataproc:v1';
+end;
+
+Class Function TDataprocAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Dataproc API';
+end;
+
+Class Function TDataprocAPI.APIDescription : String;
+
+begin
+  Result:='Manages Hadoop-based clusters and jobs on Google Cloud Platform.';
+end;
+
+Class Function TDataprocAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TDataprocAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TDataprocAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TDataprocAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TDataprocAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/dataproc/';
+end;
+
+Class Function TDataprocAPI.APIrootUrl : string;
+
+begin
+  Result:='https://dataproc.googleapis.com/';
+end;
+
+Class Function TDataprocAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TDataprocAPI.APIbaseURL : String;
+
+begin
+  Result:='https://dataproc.googleapis.com/';
+end;
+
+Class Function TDataprocAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TDataprocAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TDataprocAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TDataprocAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TDataprocAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TDataprocAPI.RegisterAPIResources;
+
+begin
+  TCluster.RegisterObject;
+  TClusterConfig.RegisterObject;
+  TGceClusterConfigTypemetadata.RegisterObject;
+  TGceClusterConfig.RegisterObject;
+  TInstanceGroupConfig.RegisterObject;
+  TDiskConfig.RegisterObject;
+  TManagedGroupConfig.RegisterObject;
+  TSoftwareConfigTypeproperties.RegisterObject;
+  TSoftwareConfig.RegisterObject;
+  TNodeInitializationAction.RegisterObject;
+  TClusterStatus.RegisterObject;
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TListClustersResponse.RegisterObject;
+  TDiagnoseClusterRequest.RegisterObject;
+  TSubmitJobRequest.RegisterObject;
+  TJob.RegisterObject;
+  TJobReference.RegisterObject;
+  TJobPlacement.RegisterObject;
+  THadoopJobTypeproperties.RegisterObject;
+  THadoopJob.RegisterObject;
+  TLoggingConfigTypedriverLogLevels.RegisterObject;
+  TLoggingConfig.RegisterObject;
+  TSparkJobTypeproperties.RegisterObject;
+  TSparkJob.RegisterObject;
+  TPySparkJobTypeproperties.RegisterObject;
+  TPySparkJob.RegisterObject;
+  THiveJobTypescriptVariables.RegisterObject;
+  THiveJobTypeproperties.RegisterObject;
+  THiveJob.RegisterObject;
+  TQueryList.RegisterObject;
+  TPigJobTypescriptVariables.RegisterObject;
+  TPigJobTypeproperties.RegisterObject;
+  TPigJob.RegisterObject;
+  TSparkSqlJobTypescriptVariables.RegisterObject;
+  TSparkSqlJobTypeproperties.RegisterObject;
+  TSparkSqlJob.RegisterObject;
+  TJobStatus.RegisterObject;
+  TListJobsResponse.RegisterObject;
+  TCancelJobRequest.RegisterObject;
+  TEmpty.RegisterObject;
+  TListOperationsResponse.RegisterObject;
+  TDiagnoseClusterResults.RegisterObject;
+  TClusterOperationMetadata.RegisterObject;
+  TClusterOperationStatus.RegisterObject;
+  TDiagnoseClusterOutputLocation.RegisterObject;
+  TOperationMetadata.RegisterObject;
+  TOperationStatus.RegisterObject;
+end;
+
+
+Function TDataprocAPI.GetProjectsRegionsClustersInstance : TProjectsRegionsClustersResource;
+
+begin
+  if (FProjectsRegionsClustersInstance=Nil) then
+    FProjectsRegionsClustersInstance:=CreateProjectsRegionsClustersResource;
+  Result:=FProjectsRegionsClustersInstance;
+end;
+
+Function TDataprocAPI.CreateProjectsRegionsClustersResource : TProjectsRegionsClustersResource;
+
+begin
+  Result:=CreateProjectsRegionsClustersResource(Self);
+end;
+
+
+Function TDataprocAPI.CreateProjectsRegionsClustersResource(AOwner : TComponent) : TProjectsRegionsClustersResource;
+
+begin
+  Result:=TProjectsRegionsClustersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TDataprocAPI.GetProjectsRegionsJobsInstance : TProjectsRegionsJobsResource;
+
+begin
+  if (FProjectsRegionsJobsInstance=Nil) then
+    FProjectsRegionsJobsInstance:=CreateProjectsRegionsJobsResource;
+  Result:=FProjectsRegionsJobsInstance;
+end;
+
+Function TDataprocAPI.CreateProjectsRegionsJobsResource : TProjectsRegionsJobsResource;
+
+begin
+  Result:=CreateProjectsRegionsJobsResource(Self);
+end;
+
+
+Function TDataprocAPI.CreateProjectsRegionsJobsResource(AOwner : TComponent) : TProjectsRegionsJobsResource;
+
+begin
+  Result:=TProjectsRegionsJobsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TDataprocAPI.GetProjectsRegionsOperationsInstance : TProjectsRegionsOperationsResource;
+
+begin
+  if (FProjectsRegionsOperationsInstance=Nil) then
+    FProjectsRegionsOperationsInstance:=CreateProjectsRegionsOperationsResource;
+  Result:=FProjectsRegionsOperationsInstance;
+end;
+
+Function TDataprocAPI.CreateProjectsRegionsOperationsResource : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=CreateProjectsRegionsOperationsResource(Self);
+end;
+
+
+Function TDataprocAPI.CreateProjectsRegionsOperationsResource(AOwner : TComponent) : TProjectsRegionsOperationsResource;
+
+begin
+  Result:=TProjectsRegionsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TDataprocAPI.GetProjectsRegionsInstance : TProjectsRegionsResource;
+
+begin
+  if (FProjectsRegionsInstance=Nil) then
+    FProjectsRegionsInstance:=CreateProjectsRegionsResource;
+  Result:=FProjectsRegionsInstance;
+end;
+
+Function TDataprocAPI.CreateProjectsRegionsResource : TProjectsRegionsResource;
+
+begin
+  Result:=CreateProjectsRegionsResource(Self);
+end;
+
+
+Function TDataprocAPI.CreateProjectsRegionsResource(AOwner : TComponent) : TProjectsRegionsResource;
+
+begin
+  Result:=TProjectsRegionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TDataprocAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TDataprocAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TDataprocAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TDataprocAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 588 - 1227
packages/googleapi/src/googledatastore.pp


File diff suppressed because it is too large
+ 596 - 249
packages/googleapi/src/googledeploymentmanager.pp


File diff suppressed because it is too large
+ 356 - 584
packages/googleapi/src/googledfareporting.pp


File diff suppressed because it is too large
+ 378 - 570
packages/googleapi/src/googlediscovery.pp


File diff suppressed because it is too large
+ 616 - 150
packages/googleapi/src/googlediscoverytopas.pp


File diff suppressed because it is too large
+ 241 - 317
packages/googleapi/src/googledns.pp


File diff suppressed because it is too large
+ 314 - 356
packages/googleapi/src/googledoubleclickbidmanager.pp


File diff suppressed because it is too large
+ 363 - 452
packages/googleapi/src/googledoubleclicksearch.pp


File diff suppressed because it is too large
+ 933 - 2058
packages/googleapi/src/googledrive.pp


+ 1244 - 0
packages/googleapi/src/googlefirebaserules.pp

@@ -0,0 +1,1244 @@
+unit googlefirebaserules;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TRelease = Class;
+  TSource = Class;
+  TSourcePosition = Class;
+  TTestRulesetResponse = Class;
+  TRuleset = Class;
+  TListReleasesResponse = Class;
+  TListRulesetsResponse = Class;
+  TEmpty = Class;
+  TFile = Class;
+  TTestRulesetRequest = Class;
+  TIssue = Class;
+  TReleaseArray = Array of TRelease;
+  TSourceArray = Array of TSource;
+  TSourcePositionArray = Array of TSourcePosition;
+  TTestRulesetResponseArray = Array of TTestRulesetResponse;
+  TRulesetArray = Array of TRuleset;
+  TListReleasesResponseArray = Array of TListReleasesResponse;
+  TListRulesetsResponseArray = Array of TListRulesetsResponse;
+  TEmptyArray = Array of TEmpty;
+  TFileArray = Array of TFile;
+  TTestRulesetRequestArray = Array of TTestRulesetRequest;
+  TIssueArray = Array of TIssue;
+  //Anonymous types, using auto-generated names
+  TSourceTypefilesArray = Array of TFile;
+  TTestRulesetResponseTypeissuesArray = Array of TIssue;
+  TListReleasesResponseTypereleasesArray = Array of TRelease;
+  TListRulesetsResponseTyperulesetsArray = Array of TRuleset;
+  
+  { --------------------------------------------------------------------
+    TRelease
+    --------------------------------------------------------------------}
+  
+  TRelease = Class(TGoogleBaseObject)
+  Private
+    FupdateTime : String;
+    FcreateTime : String;
+    Fname : String;
+    FrulesetName : String;
+  Protected
+    //Property setters
+    Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrulesetName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property updateTime : String Index 0 Read FupdateTime Write SetupdateTime;
+    Property createTime : String Index 8 Read FcreateTime Write SetcreateTime;
+    Property name : String Index 16 Read Fname Write Setname;
+    Property rulesetName : String Index 24 Read FrulesetName Write SetrulesetName;
+  end;
+  TReleaseClass = Class of TRelease;
+  
+  { --------------------------------------------------------------------
+    TSource
+    --------------------------------------------------------------------}
+  
+  TSource = Class(TGoogleBaseObject)
+  Private
+    Ffiles : TSourceTypefilesArray;
+  Protected
+    //Property setters
+    Procedure Setfiles(AIndex : Integer; const AValue : TSourceTypefilesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property files : TSourceTypefilesArray Index 0 Read Ffiles Write Setfiles;
+  end;
+  TSourceClass = Class of TSource;
+  
+  { --------------------------------------------------------------------
+    TSourcePosition
+    --------------------------------------------------------------------}
+  
+  TSourcePosition = Class(TGoogleBaseObject)
+  Private
+    FfileName : String;
+    Fcolumn : integer;
+    Fline : integer;
+  Protected
+    //Property setters
+    Procedure SetfileName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcolumn(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setline(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property fileName : String Index 0 Read FfileName Write SetfileName;
+    Property column : integer Index 8 Read Fcolumn Write Setcolumn;
+    Property line : integer Index 16 Read Fline Write Setline;
+  end;
+  TSourcePositionClass = Class of TSourcePosition;
+  
+  { --------------------------------------------------------------------
+    TTestRulesetResponse
+    --------------------------------------------------------------------}
+  
+  TTestRulesetResponse = Class(TGoogleBaseObject)
+  Private
+    Fissues : TTestRulesetResponseTypeissuesArray;
+  Protected
+    //Property setters
+    Procedure Setissues(AIndex : Integer; const AValue : TTestRulesetResponseTypeissuesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property issues : TTestRulesetResponseTypeissuesArray Index 0 Read Fissues Write Setissues;
+  end;
+  TTestRulesetResponseClass = Class of TTestRulesetResponse;
+  
+  { --------------------------------------------------------------------
+    TRuleset
+    --------------------------------------------------------------------}
+  
+  TRuleset = Class(TGoogleBaseObject)
+  Private
+    Fsource : TSource;
+    FcreateTime : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TSource); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property source : TSource Index 0 Read Fsource Write Setsource;
+    Property createTime : String Index 8 Read FcreateTime Write SetcreateTime;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TRulesetClass = Class of TRuleset;
+  
+  { --------------------------------------------------------------------
+    TListReleasesResponse
+    --------------------------------------------------------------------}
+  
+  TListReleasesResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Freleases : TListReleasesResponseTypereleasesArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setreleases(AIndex : Integer; const AValue : TListReleasesResponseTypereleasesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property releases : TListReleasesResponseTypereleasesArray Index 8 Read Freleases Write Setreleases;
+  end;
+  TListReleasesResponseClass = Class of TListReleasesResponse;
+  
+  { --------------------------------------------------------------------
+    TListRulesetsResponse
+    --------------------------------------------------------------------}
+  
+  TListRulesetsResponse = Class(TGoogleBaseObject)
+  Private
+    Frulesets : TListRulesetsResponseTyperulesetsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setrulesets(AIndex : Integer; const AValue : TListRulesetsResponseTyperulesetsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property rulesets : TListRulesetsResponseTyperulesetsArray Index 0 Read Frulesets Write Setrulesets;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListRulesetsResponseClass = Class of TListRulesetsResponse;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TFile
+    --------------------------------------------------------------------}
+  
+  TFile = Class(TGoogleBaseObject)
+  Private
+    Fcontent : String;
+    Fname : String;
+    Ffingerprint : String;
+  Protected
+    //Property setters
+    Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property content : String Index 0 Read Fcontent Write Setcontent;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property fingerprint : String Index 16 Read Ffingerprint Write Setfingerprint;
+  end;
+  TFileClass = Class of TFile;
+  
+  { --------------------------------------------------------------------
+    TTestRulesetRequest
+    --------------------------------------------------------------------}
+  
+  TTestRulesetRequest = Class(TGoogleBaseObject)
+  Private
+    Fsource : TSource;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TSource); virtual;
+  Public
+  Published
+    Property source : TSource Index 0 Read Fsource Write Setsource;
+  end;
+  TTestRulesetRequestClass = Class of TTestRulesetRequest;
+  
+  { --------------------------------------------------------------------
+    TIssue
+    --------------------------------------------------------------------}
+  
+  TIssue = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    Fseverity : String;
+    FsourcePosition : TSourcePosition;
+  Protected
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setseverity(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsourcePosition(AIndex : Integer; const AValue : TSourcePosition); virtual;
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property severity : String Index 8 Read Fseverity Write Setseverity;
+    Property sourcePosition : TSourcePosition Index 16 Read FsourcePosition Write SetsourcePosition;
+  end;
+  TIssueClass = Class of TIssue;
+  
+  { --------------------------------------------------------------------
+    TProjectsRulesetsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsRulesetsResource, method List
+  
+  TProjectsRulesetsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsRulesetsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(_name: string; aRuleset : TRuleset) : TRuleset;overload;
+    Function Get(_name: string) : TRuleset;
+    Function List(_name: string; AQuery : string  = '') : TListRulesetsResponse;
+    Function List(_name: string; AQuery : TProjectsRulesetslistOptions) : TListRulesetsResponse;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsReleasesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsReleasesResource, method List
+  
+  TProjectsReleasesListOptions = Record
+    pageSize : integer;
+    filter : String;
+    pageToken : String;
+  end;
+  
+  TProjectsReleasesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(_name: string; aRelease : TRelease) : TRelease;
+    Function Create(_name: string; aRelease : TRelease) : TRelease;overload;
+    Function Get(_name: string) : TRelease;
+    Function List(_name: string; AQuery : string  = '') : TListReleasesResponse;
+    Function List(_name: string; AQuery : TProjectsReleaseslistOptions) : TListReleasesResponse;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FRulesetsInstance : TProjectsRulesetsResource;
+    FReleasesInstance : TProjectsReleasesResource;
+    Function GetRulesetsInstance : TProjectsRulesetsResource;virtual;
+    Function GetReleasesInstance : TProjectsReleasesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Test(_name: string; aTestRulesetRequest : TTestRulesetRequest) : TTestRulesetResponse;
+    Function CreateRulesetsResource(AOwner : TComponent) : TProjectsRulesetsResource;virtual;overload;
+    Function CreateRulesetsResource : TProjectsRulesetsResource;virtual;overload;
+    Function CreateReleasesResource(AOwner : TComponent) : TProjectsReleasesResource;virtual;overload;
+    Function CreateReleasesResource : TProjectsReleasesResource;virtual;overload;
+    Property RulesetsResource : TProjectsRulesetsResource Read GetRulesetsInstance;
+    Property ReleasesResource : TProjectsReleasesResource Read GetReleasesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TFirebaserulesAPI
+    --------------------------------------------------------------------}
+  
+  TFirebaserulesAPI = Class(TGoogleAPI)
+  Private
+    FProjectsRulesetsInstance : TProjectsRulesetsResource;
+    FProjectsReleasesInstance : TProjectsReleasesResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsRulesetsInstance : TProjectsRulesetsResource;virtual;
+    Function GetProjectsReleasesInstance : TProjectsReleasesResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsRulesetsResource(AOwner : TComponent) : TProjectsRulesetsResource;virtual;overload;
+    Function CreateProjectsRulesetsResource : TProjectsRulesetsResource;virtual;overload;
+    Function CreateProjectsReleasesResource(AOwner : TComponent) : TProjectsReleasesResource;virtual;overload;
+    Function CreateProjectsReleasesResource : TProjectsReleasesResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsRulesetsResource : TProjectsRulesetsResource Read GetProjectsRulesetsInstance;
+    Property ProjectsReleasesResource : TProjectsReleasesResource Read GetProjectsReleasesInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TRelease
+  --------------------------------------------------------------------}
+
+
+Procedure TRelease.SetupdateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTime=AValue) then exit;
+  FupdateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelease.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelease.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelease.SetrulesetName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrulesetName=AValue) then exit;
+  FrulesetName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSource
+  --------------------------------------------------------------------}
+
+
+Procedure TSource.Setfiles(AIndex : Integer; const AValue : TSourceTypefilesArray); 
+
+begin
+  If (Ffiles=AValue) then exit;
+  Ffiles:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSource.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'files' : SetLength(Ffiles,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourcePosition
+  --------------------------------------------------------------------}
+
+
+Procedure TSourcePosition.SetfileName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfileName=AValue) then exit;
+  FfileName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourcePosition.Setcolumn(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcolumn=AValue) then exit;
+  Fcolumn:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourcePosition.Setline(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fline=AValue) then exit;
+  Fline:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestRulesetResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTestRulesetResponse.Setissues(AIndex : Integer; const AValue : TTestRulesetResponseTypeissuesArray); 
+
+begin
+  If (Fissues=AValue) then exit;
+  Fissues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestRulesetResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'issues' : SetLength(Fissues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRuleset
+  --------------------------------------------------------------------}
+
+
+Procedure TRuleset.Setsource(AIndex : Integer; const AValue : TSource); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRuleset.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRuleset.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListReleasesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListReleasesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListReleasesResponse.Setreleases(AIndex : Integer; const AValue : TListReleasesResponseTypereleasesArray); 
+
+begin
+  If (Freleases=AValue) then exit;
+  Freleases:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListReleasesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'releases' : SetLength(Freleases,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListRulesetsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListRulesetsResponse.Setrulesets(AIndex : Integer; const AValue : TListRulesetsResponseTyperulesetsArray); 
+
+begin
+  If (Frulesets=AValue) then exit;
+  Frulesets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListRulesetsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListRulesetsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'rulesets' : SetLength(Frulesets,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFile
+  --------------------------------------------------------------------}
+
+
+Procedure TFile.Setcontent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcontent=AValue) then exit;
+  Fcontent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFile.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFile.Setfingerprint(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffingerprint=AValue) then exit;
+  Ffingerprint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestRulesetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTestRulesetRequest.Setsource(AIndex : Integer; const AValue : TSource); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TIssue
+  --------------------------------------------------------------------}
+
+
+Procedure TIssue.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TIssue.Setseverity(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fseverity=AValue) then exit;
+  Fseverity:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TIssue.SetsourcePosition(AIndex : Integer; const AValue : TSourcePosition); 
+
+begin
+  If (FsourcePosition=AValue) then exit;
+  FsourcePosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsRulesetsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsRulesetsResource.ResourceName : String;
+
+begin
+  Result:='rulesets';
+end;
+
+Class Function TProjectsRulesetsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TfirebaserulesAPI;
+end;
+
+Function TProjectsRulesetsResource.Create(_name: string; aRuleset : TRuleset) : TRuleset;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}/rulesets';
+  _Methodid   = 'firebaserules.projects.rulesets.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aRuleset,TRuleset) as TRuleset;
+end;
+
+Function TProjectsRulesetsResource.Get(_name: string) : TRuleset;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'firebaserules.projects.rulesets.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TRuleset) as TRuleset;
+end;
+
+Function TProjectsRulesetsResource.List(_name: string; AQuery : string = '') : TListRulesetsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/rulesets';
+  _Methodid   = 'firebaserules.projects.rulesets.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListRulesetsResponse) as TListRulesetsResponse;
+end;
+
+
+Function TProjectsRulesetsResource.List(_name: string; AQuery : TProjectsRulesetslistOptions) : TListRulesetsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsRulesetsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'firebaserules.projects.rulesets.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsReleasesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsReleasesResource.ResourceName : String;
+
+begin
+  Result:='releases';
+end;
+
+Class Function TProjectsReleasesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TfirebaserulesAPI;
+end;
+
+Function TProjectsReleasesResource.Update(_name: string; aRelease : TRelease) : TRelease;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'firebaserules.projects.releases.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aRelease,TRelease) as TRelease;
+end;
+
+Function TProjectsReleasesResource.Create(_name: string; aRelease : TRelease) : TRelease;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}/releases';
+  _Methodid   = 'firebaserules.projects.releases.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aRelease,TRelease) as TRelease;
+end;
+
+Function TProjectsReleasesResource.Get(_name: string) : TRelease;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'firebaserules.projects.releases.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TRelease) as TRelease;
+end;
+
+Function TProjectsReleasesResource.List(_name: string; AQuery : string = '') : TListReleasesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/releases';
+  _Methodid   = 'firebaserules.projects.releases.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListReleasesResponse) as TListReleasesResponse;
+end;
+
+
+Function TProjectsReleasesResource.List(_name: string; AQuery : TProjectsReleaseslistOptions) : TListReleasesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsReleasesResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'firebaserules.projects.releases.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TfirebaserulesAPI;
+end;
+
+Function TProjectsResource.Test(_name: string; aTestRulesetRequest : TTestRulesetRequest) : TTestRulesetResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:test';
+  _Methodid   = 'firebaserules.projects.test';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTestRulesetRequest,TTestRulesetResponse) as TTestRulesetResponse;
+end;
+
+
+
+Function TProjectsResource.GetRulesetsInstance : TProjectsRulesetsResource;
+
+begin
+  if (FRulesetsInstance=Nil) then
+    FRulesetsInstance:=CreateRulesetsResource;
+  Result:=FRulesetsInstance;
+end;
+
+Function TProjectsResource.CreateRulesetsResource : TProjectsRulesetsResource;
+
+begin
+  Result:=CreateRulesetsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateRulesetsResource(AOwner : TComponent) : TProjectsRulesetsResource;
+
+begin
+  Result:=TProjectsRulesetsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetReleasesInstance : TProjectsReleasesResource;
+
+begin
+  if (FReleasesInstance=Nil) then
+    FReleasesInstance:=CreateReleasesResource;
+  Result:=FReleasesInstance;
+end;
+
+Function TProjectsResource.CreateReleasesResource : TProjectsReleasesResource;
+
+begin
+  Result:=CreateReleasesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateReleasesResource(AOwner : TComponent) : TProjectsReleasesResource;
+
+begin
+  Result:=TProjectsReleasesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TFirebaserulesAPI
+  --------------------------------------------------------------------}
+
+Class Function TFirebaserulesAPI.APIName : String;
+
+begin
+  Result:='firebaserules';
+end;
+
+Class Function TFirebaserulesAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TFirebaserulesAPI.APIRevision : String;
+
+begin
+  Result:='20160517';
+end;
+
+Class Function TFirebaserulesAPI.APIID : String;
+
+begin
+  Result:='firebaserules:v1';
+end;
+
+Class Function TFirebaserulesAPI.APITitle : String;
+
+begin
+  Result:='Firebase Rules API';
+end;
+
+Class Function TFirebaserulesAPI.APIDescription : String;
+
+begin
+  Result:='Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.';
+end;
+
+Class Function TFirebaserulesAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TFirebaserulesAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TFirebaserulesAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TFirebaserulesAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TFirebaserulesAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://firebase.google.com/docs/storage/security/start';
+end;
+
+Class Function TFirebaserulesAPI.APIrootUrl : string;
+
+begin
+  Result:='https://firebaserules.googleapis.com/';
+end;
+
+Class Function TFirebaserulesAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TFirebaserulesAPI.APIbaseURL : String;
+
+begin
+  Result:='https://firebaserules.googleapis.com/';
+end;
+
+Class Function TFirebaserulesAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TFirebaserulesAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TFirebaserulesAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TFirebaserulesAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TFirebaserulesAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TFirebaserulesAPI.RegisterAPIResources;
+
+begin
+  TRelease.RegisterObject;
+  TSource.RegisterObject;
+  TSourcePosition.RegisterObject;
+  TTestRulesetResponse.RegisterObject;
+  TRuleset.RegisterObject;
+  TListReleasesResponse.RegisterObject;
+  TListRulesetsResponse.RegisterObject;
+  TEmpty.RegisterObject;
+  TFile.RegisterObject;
+  TTestRulesetRequest.RegisterObject;
+  TIssue.RegisterObject;
+end;
+
+
+Function TFirebaserulesAPI.GetProjectsRulesetsInstance : TProjectsRulesetsResource;
+
+begin
+  if (FProjectsRulesetsInstance=Nil) then
+    FProjectsRulesetsInstance:=CreateProjectsRulesetsResource;
+  Result:=FProjectsRulesetsInstance;
+end;
+
+Function TFirebaserulesAPI.CreateProjectsRulesetsResource : TProjectsRulesetsResource;
+
+begin
+  Result:=CreateProjectsRulesetsResource(Self);
+end;
+
+
+Function TFirebaserulesAPI.CreateProjectsRulesetsResource(AOwner : TComponent) : TProjectsRulesetsResource;
+
+begin
+  Result:=TProjectsRulesetsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TFirebaserulesAPI.GetProjectsReleasesInstance : TProjectsReleasesResource;
+
+begin
+  if (FProjectsReleasesInstance=Nil) then
+    FProjectsReleasesInstance:=CreateProjectsReleasesResource;
+  Result:=FProjectsReleasesInstance;
+end;
+
+Function TFirebaserulesAPI.CreateProjectsReleasesResource : TProjectsReleasesResource;
+
+begin
+  Result:=CreateProjectsReleasesResource(Self);
+end;
+
+
+Function TFirebaserulesAPI.CreateProjectsReleasesResource(AOwner : TComponent) : TProjectsReleasesResource;
+
+begin
+  Result:=TProjectsReleasesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TFirebaserulesAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TFirebaserulesAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TFirebaserulesAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TFirebaserulesAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 922 - 286
packages/googleapi/src/googlefitness.pp


+ 153 - 184
packages/googleapi/src/googlefreebase.pp

@@ -1,31 +1,4 @@
 unit googlefreebase;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,145 +7,135 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TReconcileCandidate = class;
+  
+  //Top-level schema types
+  TReconcileCandidate = Class;
+  TReconcileGet = Class;
   TReconcileCandidateArray = Array of TReconcileCandidate;
-  TReconcileCandidatenotable = class;
-  TReconcileCandidatenotableArray = Array of TReconcileCandidatenotable;
-  TReconcileGet = class;
   TReconcileGetArray = Array of TReconcileGet;
-  TReconcileGetcandidate = class;
-  TReconcileGetcandidateArray = Array of TReconcileGetcandidate;
-  TReconcileGetcosts = class;
-  TReconcileGetcostsArray = Array of TReconcileGetcosts;
-  TReconcileGetwarning = class;
-  TReconcileGetwarningArray = Array of TReconcileGetwarning;
+  //Anonymous types, using auto-generated names
+  TReconcileCandidateTypenotable = Class;
+  TReconcileGetTypecosts = Class;
+  TReconcileGetTypewarningItem = Class;
+  TReconcileGetTypecandidateArray = Array of TReconcileCandidate;
+  TReconcileGetTypewarningArray = Array of TReconcileGetTypewarningItem;
   
   { --------------------------------------------------------------------
-    TReconcileCandidate
+    TReconcileCandidateTypenotable
     --------------------------------------------------------------------}
   
-  TReconcileCandidate = Class(TGoogleBaseObject)
+  TReconcileCandidateTypenotable = Class(TGoogleBaseObject)
   Private
-    Fconfidence : integer;
-    Flang : string;
-    Fmid : string;
-    Fname : string;
-    Fnotable : TReconcileCandidatenotable;
+    Fid : String;
+    Fname : String;
   Protected
     //Property setters
-    Procedure Setconfidence(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setlang(AIndex : Integer; AValue : string); virtual;
-    Procedure Setmid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure Setnotable(AIndex : Integer; AValue : TReconcileCandidatenotable); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property confidence : integer Index 0 Read Fconfidence Write Setconfidence;
-    Property lang : string Index 8 Read Flang Write Setlang;
-    Property mid : string Index 16 Read Fmid Write Setmid;
-    Property name : string Index 24 Read Fname Write Setname;
-    Property notable : TReconcileCandidatenotable Index 32 Read Fnotable Write Setnotable;
+    Property id : String Index 0 Read Fid Write Setid;
+    Property name : String Index 8 Read Fname Write Setname;
   end;
-  TReconcileCandidateClass = Class of TReconcileCandidate;
+  TReconcileCandidateTypenotableClass = Class of TReconcileCandidateTypenotable;
   
   { --------------------------------------------------------------------
-    TReconcileCandidatenotable
-    --------------------------------------------------------------------}
-  
-  TReconcileCandidatenotable = Class(TGoogleBaseObject)
-  Private
-    Fid : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property id : string Index 0 Read Fid Write Setid;
-    Property name : string Index 8 Read Fname Write Setname;
-  end;
-  TReconcileCandidatenotableClass = Class of TReconcileCandidatenotable;
-  
-  { --------------------------------------------------------------------
-    TReconcileGet
+    TReconcileCandidate
     --------------------------------------------------------------------}
   
-  TReconcileGet = Class(TGoogleBaseObject)
+  TReconcileCandidate = Class(TGoogleBaseObject)
   Private
-    Fcandidate : TReconcileGetcandidate;
-    Fcosts : TReconcileGetcosts;
-    Fmatch : TReconcileCandidate;
-    Fwarning : TReconcileGetwarning;
+    Fconfidence : integer;
+    Flang : String;
+    Fmid : String;
+    Fname : String;
+    Fnotable : TReconcileCandidateTypenotable;
   Protected
     //Property setters
-    Procedure Setcandidate(AIndex : Integer; AValue : TReconcileGetcandidate); virtual;
-    Procedure Setcosts(AIndex : Integer; AValue : TReconcileGetcosts); virtual;
-    Procedure Setmatch(AIndex : Integer; AValue : TReconcileCandidate); virtual;
-    Procedure Setwarning(AIndex : Integer; AValue : TReconcileGetwarning); virtual;
+    Procedure Setconfidence(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setlang(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnotable(AIndex : Integer; const AValue : TReconcileCandidateTypenotable); virtual;
   Public
   Published
-    Property candidate : TReconcileGetcandidate Index 0 Read Fcandidate Write Setcandidate;
-    Property costs : TReconcileGetcosts Index 8 Read Fcosts Write Setcosts;
-    Property match : TReconcileCandidate Index 16 Read Fmatch Write Setmatch;
-    Property warning : TReconcileGetwarning Index 24 Read Fwarning Write Setwarning;
+    Property confidence : integer Index 0 Read Fconfidence Write Setconfidence;
+    Property lang : String Index 8 Read Flang Write Setlang;
+    Property mid : String Index 16 Read Fmid Write Setmid;
+    Property name : String Index 24 Read Fname Write Setname;
+    Property notable : TReconcileCandidateTypenotable Index 32 Read Fnotable Write Setnotable;
   end;
-  TReconcileGetClass = Class of TReconcileGet;
+  TReconcileCandidateClass = Class of TReconcileCandidate;
   
   { --------------------------------------------------------------------
-    TReconcileGetcandidate
+    TReconcileGetTypecosts
     --------------------------------------------------------------------}
   
-  TReconcileGetcandidate = Class(TGoogleBaseObject)
+  TReconcileGetTypecosts = Class(TGoogleBaseObject)
   Private
+    Fhits : integer;
+    Fms : integer;
   Protected
     //Property setters
+    Procedure Sethits(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setms(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
+    Property hits : integer Index 0 Read Fhits Write Sethits;
+    Property ms : integer Index 8 Read Fms Write Setms;
   end;
-  TReconcileGetcandidateClass = Class of TReconcileGetcandidate;
+  TReconcileGetTypecostsClass = Class of TReconcileGetTypecosts;
   
   { --------------------------------------------------------------------
-    TReconcileGetcosts
+    TReconcileGetTypewarningItem
     --------------------------------------------------------------------}
   
-  TReconcileGetcosts = Class(TGoogleBaseObject)
+  TReconcileGetTypewarningItem = Class(TGoogleBaseObject)
   Private
-    Fhits : integer;
-    Fms : integer;
+    Flocation : String;
+    Fmessage : String;
+    Freason : String;
   Protected
     //Property setters
-    Procedure Sethits(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setms(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setreason(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property hits : integer Index 0 Read Fhits Write Sethits;
-    Property ms : integer Index 8 Read Fms Write Setms;
+    Property location : String Index 0 Read Flocation Write Setlocation;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+    Property reason : String Index 16 Read Freason Write Setreason;
   end;
-  TReconcileGetcostsClass = Class of TReconcileGetcosts;
+  TReconcileGetTypewarningItemClass = Class of TReconcileGetTypewarningItem;
   
   { --------------------------------------------------------------------
-    TReconcileGetwarning
+    TReconcileGet
     --------------------------------------------------------------------}
   
-  TReconcileGetwarning = Class(TGoogleBaseObject)
+  TReconcileGet = Class(TGoogleBaseObject)
   Private
-    Flocation : string;
-    Fmessage : string;
-    Freason : string;
+    Fcandidate : TReconcileGetTypecandidateArray;
+    Fcosts : TReconcileGetTypecosts;
+    Fmatch : TReconcileCandidate;
+    Fwarning : TReconcileGetTypewarningArray;
   Protected
     //Property setters
-    Procedure Setlocation(AIndex : Integer; AValue : string); virtual;
-    Procedure Setmessage(AIndex : Integer; AValue : string); virtual;
-    Procedure Setreason(AIndex : Integer; AValue : string); virtual;
+    Procedure Setcandidate(AIndex : Integer; const AValue : TReconcileGetTypecandidateArray); virtual;
+    Procedure Setcosts(AIndex : Integer; const AValue : TReconcileGetTypecosts); virtual;
+    Procedure Setmatch(AIndex : Integer; const AValue : TReconcileCandidate); virtual;
+    Procedure Setwarning(AIndex : Integer; const AValue : TReconcileGetTypewarningArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property location : string Index 0 Read Flocation Write Setlocation;
-    Property message : string Index 8 Read Fmessage Write Setmessage;
-    Property reason : string Index 16 Read Freason Write Setreason;
+    Property candidate : TReconcileGetTypecandidateArray Index 0 Read Fcandidate Write Setcandidate;
+    Property costs : TReconcileGetTypecosts Index 8 Read Fcosts Write Setcosts;
+    Property match : TReconcileCandidate Index 16 Read Fmatch Write Setmatch;
+    Property warning : TReconcileGetTypewarningArray Index 24 Read Fwarning Write Setwarning;
   end;
-  TReconcileGetwarningClass = Class of TReconcileGetwarning;
+  TReconcileGetClass = Class of TReconcileGet;
   
   { --------------------------------------------------------------------
     TFreebaseAPI
@@ -209,12 +172,39 @@ type
 implementation
 
 
+{ --------------------------------------------------------------------
+  TReconcileCandidateTypenotable
+  --------------------------------------------------------------------}
+
+
+Procedure TReconcileCandidateTypenotable.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReconcileCandidateTypenotable.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
 { --------------------------------------------------------------------
   TReconcileCandidate
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileCandidate.Setconfidence(AIndex : Integer; AValue : integer); 
+Procedure TReconcileCandidate.Setconfidence(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fconfidence=AValue) then exit;
@@ -224,7 +214,7 @@ end;
 
 
 
-Procedure TReconcileCandidate.Setlang(AIndex : Integer; AValue : string); 
+Procedure TReconcileCandidate.Setlang(AIndex : Integer; const AValue : String); 
 
 begin
   If (Flang=AValue) then exit;
@@ -234,7 +224,7 @@ end;
 
 
 
-Procedure TReconcileCandidate.Setmid(AIndex : Integer; AValue : string); 
+Procedure TReconcileCandidate.Setmid(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fmid=AValue) then exit;
@@ -244,7 +234,7 @@ end;
 
 
 
-Procedure TReconcileCandidate.Setname(AIndex : Integer; AValue : string); 
+Procedure TReconcileCandidate.Setname(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fname=AValue) then exit;
@@ -254,7 +244,7 @@ end;
 
 
 
-Procedure TReconcileCandidate.Setnotable(AIndex : Integer; AValue : TReconcileCandidatenotable); 
+Procedure TReconcileCandidate.Setnotable(AIndex : Integer; const AValue : TReconcileCandidateTypenotable); 
 
 begin
   If (Fnotable=AValue) then exit;
@@ -267,25 +257,25 @@ end;
 
 
 { --------------------------------------------------------------------
-  TReconcileCandidatenotable
+  TReconcileGetTypecosts
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileCandidatenotable.Setid(AIndex : Integer; AValue : string); 
+Procedure TReconcileGetTypecosts.Sethits(AIndex : Integer; const AValue : integer); 
 
 begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
+  If (Fhits=AValue) then exit;
+  Fhits:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TReconcileCandidatenotable.Setname(AIndex : Integer; AValue : string); 
+Procedure TReconcileGetTypecosts.Setms(AIndex : Integer; const AValue : integer); 
 
 begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
+  If (Fms=AValue) then exit;
+  Fms:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
@@ -294,45 +284,35 @@ end;
 
 
 { --------------------------------------------------------------------
-  TReconcileGet
+  TReconcileGetTypewarningItem
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileGet.Setcandidate(AIndex : Integer; AValue : TReconcileGetcandidate); 
+Procedure TReconcileGetTypewarningItem.Setlocation(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fcandidate=AValue) then exit;
-  Fcandidate:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TReconcileGet.Setcosts(AIndex : Integer; AValue : TReconcileGetcosts); 
-
-begin
-  If (Fcosts=AValue) then exit;
-  Fcosts:=AValue;
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TReconcileGet.Setmatch(AIndex : Integer; AValue : TReconcileCandidate); 
+Procedure TReconcileGetTypewarningItem.Setmessage(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fmatch=AValue) then exit;
-  Fmatch:=AValue;
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TReconcileGet.Setwarning(AIndex : Integer; AValue : TReconcileGetwarning); 
+Procedure TReconcileGetTypewarningItem.Setreason(AIndex : Integer; const AValue : String); 
 
 begin
-  If (Fwarning=AValue) then exit;
-  Fwarning:=AValue;
+  If (Freason=AValue) then exit;
+  Freason:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
@@ -341,72 +321,62 @@ end;
 
 
 { --------------------------------------------------------------------
-  TReconcileGetcandidate
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TReconcileGetcosts
+  TReconcileGet
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileGetcosts.Sethits(AIndex : Integer; AValue : integer); 
+Procedure TReconcileGet.Setcandidate(AIndex : Integer; const AValue : TReconcileGetTypecandidateArray); 
 
 begin
-  If (Fhits=AValue) then exit;
-  Fhits:=AValue;
+  If (Fcandidate=AValue) then exit;
+  Fcandidate:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TReconcileGetcosts.Setms(AIndex : Integer; AValue : integer); 
+Procedure TReconcileGet.Setcosts(AIndex : Integer; const AValue : TReconcileGetTypecosts); 
 
 begin
-  If (Fms=AValue) then exit;
-  Fms:=AValue;
+  If (Fcosts=AValue) then exit;
+  Fcosts:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-
-
-{ --------------------------------------------------------------------
-  TReconcileGetwarning
-  --------------------------------------------------------------------}
-
-
-Procedure TReconcileGetwarning.Setlocation(AIndex : Integer; AValue : string); 
+Procedure TReconcileGet.Setmatch(AIndex : Integer; const AValue : TReconcileCandidate); 
 
 begin
-  If (Flocation=AValue) then exit;
-  Flocation:=AValue;
+  If (Fmatch=AValue) then exit;
+  Fmatch:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TReconcileGetwarning.Setmessage(AIndex : Integer; AValue : string); 
+Procedure TReconcileGet.Setwarning(AIndex : Integer; const AValue : TReconcileGetTypewarningArray); 
 
 begin
-  If (Fmessage=AValue) then exit;
-  Fmessage:=AValue;
+  If (Fwarning=AValue) then exit;
+  Fwarning:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
-
-Procedure TReconcileGetwarning.Setreason(AIndex : Integer; AValue : string); 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TReconcileGet.SetArrayLength(Const AName : String; ALength : Longint); 
 
 begin
-  If (Freason=AValue) then exit;
-  Freason:=AValue;
-  MarkPropertyChanged(AIndex);
+  Case AName of
+  'candidate' : SetLength(Fcandidate,ALength);
+  'warning' : SetLength(Fwarning,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
 end;
-
+{$ENDIF VER2_6}
 
 
 
@@ -430,7 +400,7 @@ end;
 Class Function TFreebaseAPI.APIRevision : String;
 
 begin
-  Result:='20150330';
+  Result:='20150728';
 end;
 
 Class Function TFreebaseAPI.APIID : String;
@@ -533,12 +503,11 @@ end;
 Class Procedure TFreebaseAPI.RegisterAPIResources;
 
 begin
+  TReconcileCandidateTypenotable.RegisterObject;
   TReconcileCandidate.RegisterObject;
-  TReconcileCandidatenotable.RegisterObject;
+  TReconcileGetTypecosts.RegisterObject;
+  TReconcileGetTypewarningItem.RegisterObject;
   TReconcileGet.RegisterObject;
-  TReconcileGetcandidate.RegisterObject;
-  TReconcileGetcosts.RegisterObject;
-  TReconcileGetwarning.RegisterObject;
 end;
 
 

File diff suppressed because it is too large
+ 329 - 498
packages/googleapi/src/googlefusiontables.pp


File diff suppressed because it is too large
+ 344 - 457
packages/googleapi/src/googlegames.pp


File diff suppressed because it is too large
+ 216 - 259
packages/googleapi/src/googlegamesconfiguration.pp


File diff suppressed because it is too large
+ 256 - 316
packages/googleapi/src/googlegamesmanagement.pp


File diff suppressed because it is too large
+ 400 - 605
packages/googleapi/src/googlegan.pp


File diff suppressed because it is too large
+ 430 - 487
packages/googleapi/src/googlegenomics.pp


File diff suppressed because it is too large
+ 613 - 513
packages/googleapi/src/googlegmail.pp


+ 13 - 38
packages/googleapi/src/googlegroupsmigration.pp

@@ -1,31 +1,4 @@
 unit googlegroupsmigration;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,9 +7,11 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TGroups = class;
+  
+  //Top-level schema types
+  TGroups = Class;
   TGroupsArray = Array of TGroups;
+  //Anonymous types, using auto-generated names
   
   { --------------------------------------------------------------------
     TGroups
@@ -44,16 +19,16 @@ type
   
   TGroups = Class(TGoogleBaseObject)
   Private
-    Fkind : string;
-    FresponseCode : string;
+    Fkind : String;
+    FresponseCode : String;
   Protected
     //Property setters
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetresponseCode(AIndex : Integer; AValue : string); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetresponseCode(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property kind : string Index 0 Read Fkind Write Setkind;
-    Property responseCode : string Index 8 Read FresponseCode Write SetresponseCode;
+    Property kind : String Index 0 Read Fkind Write Setkind;
+    Property responseCode : String Index 8 Read FresponseCode Write SetresponseCode;
   end;
   TGroupsClass = Class of TGroups;
   
@@ -114,7 +89,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TGroups.Setkind(AIndex : Integer; AValue : string); 
+Procedure TGroups.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -124,7 +99,7 @@ end;
 
 
 
-Procedure TGroups.SetresponseCode(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetresponseCode(AIndex : Integer; const AValue : String); 
 
 begin
   If (FresponseCode=AValue) then exit;
@@ -317,7 +292,7 @@ Function TGroupsmigrationAPI.CreateArchiveResource(AOwner : TComponent) : TArchi
 
 begin
   Result:=TArchiveResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

+ 129 - 141
packages/googleapi/src/googlegroupssettings.pp

@@ -1,31 +1,4 @@
 unit googlegroupssettings;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,9 +7,11 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TGroups = class;
+  
+  //Top-level schema types
+  TGroups = Class;
   TGroupsArray = Array of TGroups;
+  //Anonymous types, using auto-generated names
   
   { --------------------------------------------------------------------
     TGroups
@@ -44,94 +19,97 @@ type
   
   TGroups = Class(TGoogleBaseObject)
   Private
-    FallowExternalMembers : string;
-    FallowGoogleCommunication : string;
-    FallowWebPosting : string;
-    FarchiveOnly : string;
-    FcustomReplyTo : string;
-    FdefaultMessageDenyNotificationText : string;
-    Fdescription : string;
-    Femail : string;
-    FincludeInGlobalAddressList : string;
-    FisArchived : string;
-    Fkind : string;
+    FallowExternalMembers : String;
+    FallowGoogleCommunication : String;
+    FallowWebPosting : String;
+    FarchiveOnly : String;
+    FcustomReplyTo : String;
+    FdefaultMessageDenyNotificationText : String;
+    Fdescription : String;
+    Femail : String;
+    FincludeInGlobalAddressList : String;
+    FisArchived : String;
+    Fkind : String;
     FmaxMessageBytes : integer;
-    FmembersCanPostAsTheGroup : string;
-    FmessageDisplayFont : string;
-    FmessageModerationLevel : string;
-    Fname : string;
-    FprimaryLanguage : string;
-    FreplyTo : string;
-    FsendMessageDenyNotification : string;
-    FshowInGroupDirectory : string;
-    FspamModerationLevel : string;
-    FwhoCanContactOwner : string;
-    FwhoCanInvite : string;
-    FwhoCanJoin : string;
-    FwhoCanLeaveGroup : string;
-    FwhoCanPostMessage : string;
-    FwhoCanViewGroup : string;
-    FwhoCanViewMembership : string;
+    FmembersCanPostAsTheGroup : String;
+    FmessageDisplayFont : String;
+    FmessageModerationLevel : String;
+    Fname : String;
+    FprimaryLanguage : String;
+    FreplyTo : String;
+    FsendMessageDenyNotification : String;
+    FshowInGroupDirectory : String;
+    FspamModerationLevel : String;
+    FwhoCanAdd : String;
+    FwhoCanContactOwner : String;
+    FwhoCanInvite : String;
+    FwhoCanJoin : String;
+    FwhoCanLeaveGroup : String;
+    FwhoCanPostMessage : String;
+    FwhoCanViewGroup : String;
+    FwhoCanViewMembership : String;
   Protected
     //Property setters
-    Procedure SetallowExternalMembers(AIndex : Integer; AValue : string); virtual;
-    Procedure SetallowGoogleCommunication(AIndex : Integer; AValue : string); virtual;
-    Procedure SetallowWebPosting(AIndex : Integer; AValue : string); virtual;
-    Procedure SetarchiveOnly(AIndex : Integer; AValue : string); virtual;
-    Procedure SetcustomReplyTo(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdefaultMessageDenyNotificationText(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdescription(AIndex : Integer; AValue : string); virtual;
-    Procedure Setemail(AIndex : Integer; AValue : string); virtual;
-    Procedure SetincludeInGlobalAddressList(AIndex : Integer; AValue : string); virtual;
-    Procedure SetisArchived(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmaxMessageBytes(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmembersCanPostAsTheGroup(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmessageDisplayFont(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmessageModerationLevel(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure SetprimaryLanguage(AIndex : Integer; AValue : string); virtual;
-    Procedure SetreplyTo(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsendMessageDenyNotification(AIndex : Integer; AValue : string); virtual;
-    Procedure SetshowInGroupDirectory(AIndex : Integer; AValue : string); virtual;
-    Procedure SetspamModerationLevel(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanContactOwner(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanInvite(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanJoin(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanLeaveGroup(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanPostMessage(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanViewGroup(AIndex : Integer; AValue : string); virtual;
-    Procedure SetwhoCanViewMembership(AIndex : Integer; AValue : string); virtual;
+    Procedure SetallowExternalMembers(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetallowGoogleCommunication(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetallowWebPosting(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetarchiveOnly(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomReplyTo(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultMessageDenyNotificationText(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetincludeInGlobalAddressList(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetisArchived(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxMessageBytes(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmembersCanPostAsTheGroup(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmessageDisplayFont(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmessageModerationLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprimaryLanguage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreplyTo(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsendMessageDenyNotification(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetshowInGroupDirectory(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetspamModerationLevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanAdd(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanContactOwner(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanInvite(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanJoin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanLeaveGroup(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanPostMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanViewGroup(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwhoCanViewMembership(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property allowExternalMembers : string Index 0 Read FallowExternalMembers Write SetallowExternalMembers;
-    Property allowGoogleCommunication : string Index 8 Read FallowGoogleCommunication Write SetallowGoogleCommunication;
-    Property allowWebPosting : string Index 16 Read FallowWebPosting Write SetallowWebPosting;
-    Property archiveOnly : string Index 24 Read FarchiveOnly Write SetarchiveOnly;
-    Property customReplyTo : string Index 32 Read FcustomReplyTo Write SetcustomReplyTo;
-    Property defaultMessageDenyNotificationText : string Index 40 Read FdefaultMessageDenyNotificationText Write SetdefaultMessageDenyNotificationText;
-    Property description : string Index 48 Read Fdescription Write Setdescription;
-    Property email : string Index 56 Read Femail Write Setemail;
-    Property includeInGlobalAddressList : string Index 64 Read FincludeInGlobalAddressList Write SetincludeInGlobalAddressList;
-    Property isArchived : string Index 72 Read FisArchived Write SetisArchived;
-    Property kind : string Index 80 Read Fkind Write Setkind;
+    Property allowExternalMembers : String Index 0 Read FallowExternalMembers Write SetallowExternalMembers;
+    Property allowGoogleCommunication : String Index 8 Read FallowGoogleCommunication Write SetallowGoogleCommunication;
+    Property allowWebPosting : String Index 16 Read FallowWebPosting Write SetallowWebPosting;
+    Property archiveOnly : String Index 24 Read FarchiveOnly Write SetarchiveOnly;
+    Property customReplyTo : String Index 32 Read FcustomReplyTo Write SetcustomReplyTo;
+    Property defaultMessageDenyNotificationText : String Index 40 Read FdefaultMessageDenyNotificationText Write SetdefaultMessageDenyNotificationText;
+    Property description : String Index 48 Read Fdescription Write Setdescription;
+    Property email : String Index 56 Read Femail Write Setemail;
+    Property includeInGlobalAddressList : String Index 64 Read FincludeInGlobalAddressList Write SetincludeInGlobalAddressList;
+    Property isArchived : String Index 72 Read FisArchived Write SetisArchived;
+    Property kind : String Index 80 Read Fkind Write Setkind;
     Property maxMessageBytes : integer Index 88 Read FmaxMessageBytes Write SetmaxMessageBytes;
-    Property membersCanPostAsTheGroup : string Index 96 Read FmembersCanPostAsTheGroup Write SetmembersCanPostAsTheGroup;
-    Property messageDisplayFont : string Index 104 Read FmessageDisplayFont Write SetmessageDisplayFont;
-    Property messageModerationLevel : string Index 112 Read FmessageModerationLevel Write SetmessageModerationLevel;
-    Property name : string Index 120 Read Fname Write Setname;
-    Property primaryLanguage : string Index 128 Read FprimaryLanguage Write SetprimaryLanguage;
-    Property replyTo : string Index 136 Read FreplyTo Write SetreplyTo;
-    Property sendMessageDenyNotification : string Index 144 Read FsendMessageDenyNotification Write SetsendMessageDenyNotification;
-    Property showInGroupDirectory : string Index 152 Read FshowInGroupDirectory Write SetshowInGroupDirectory;
-    Property spamModerationLevel : string Index 160 Read FspamModerationLevel Write SetspamModerationLevel;
-    Property whoCanContactOwner : string Index 168 Read FwhoCanContactOwner Write SetwhoCanContactOwner;
-    Property whoCanInvite : string Index 176 Read FwhoCanInvite Write SetwhoCanInvite;
-    Property whoCanJoin : string Index 184 Read FwhoCanJoin Write SetwhoCanJoin;
-    Property whoCanLeaveGroup : string Index 192 Read FwhoCanLeaveGroup Write SetwhoCanLeaveGroup;
-    Property whoCanPostMessage : string Index 200 Read FwhoCanPostMessage Write SetwhoCanPostMessage;
-    Property whoCanViewGroup : string Index 208 Read FwhoCanViewGroup Write SetwhoCanViewGroup;
-    Property whoCanViewMembership : string Index 216 Read FwhoCanViewMembership Write SetwhoCanViewMembership;
+    Property membersCanPostAsTheGroup : String Index 96 Read FmembersCanPostAsTheGroup Write SetmembersCanPostAsTheGroup;
+    Property messageDisplayFont : String Index 104 Read FmessageDisplayFont Write SetmessageDisplayFont;
+    Property messageModerationLevel : String Index 112 Read FmessageModerationLevel Write SetmessageModerationLevel;
+    Property name : String Index 120 Read Fname Write Setname;
+    Property primaryLanguage : String Index 128 Read FprimaryLanguage Write SetprimaryLanguage;
+    Property replyTo : String Index 136 Read FreplyTo Write SetreplyTo;
+    Property sendMessageDenyNotification : String Index 144 Read FsendMessageDenyNotification Write SetsendMessageDenyNotification;
+    Property showInGroupDirectory : String Index 152 Read FshowInGroupDirectory Write SetshowInGroupDirectory;
+    Property spamModerationLevel : String Index 160 Read FspamModerationLevel Write SetspamModerationLevel;
+    Property whoCanAdd : String Index 168 Read FwhoCanAdd Write SetwhoCanAdd;
+    Property whoCanContactOwner : String Index 176 Read FwhoCanContactOwner Write SetwhoCanContactOwner;
+    Property whoCanInvite : String Index 184 Read FwhoCanInvite Write SetwhoCanInvite;
+    Property whoCanJoin : String Index 192 Read FwhoCanJoin Write SetwhoCanJoin;
+    Property whoCanLeaveGroup : String Index 200 Read FwhoCanLeaveGroup Write SetwhoCanLeaveGroup;
+    Property whoCanPostMessage : String Index 208 Read FwhoCanPostMessage Write SetwhoCanPostMessage;
+    Property whoCanViewGroup : String Index 216 Read FwhoCanViewGroup Write SetwhoCanViewGroup;
+    Property whoCanViewMembership : String Index 224 Read FwhoCanViewMembership Write SetwhoCanViewMembership;
   end;
   TGroupsClass = Class of TGroups;
   
@@ -194,7 +172,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TGroups.SetallowExternalMembers(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetallowExternalMembers(AIndex : Integer; const AValue : String); 
 
 begin
   If (FallowExternalMembers=AValue) then exit;
@@ -204,7 +182,7 @@ end;
 
 
 
-Procedure TGroups.SetallowGoogleCommunication(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetallowGoogleCommunication(AIndex : Integer; const AValue : String); 
 
 begin
   If (FallowGoogleCommunication=AValue) then exit;
@@ -214,7 +192,7 @@ end;
 
 
 
-Procedure TGroups.SetallowWebPosting(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetallowWebPosting(AIndex : Integer; const AValue : String); 
 
 begin
   If (FallowWebPosting=AValue) then exit;
@@ -224,7 +202,7 @@ end;
 
 
 
-Procedure TGroups.SetarchiveOnly(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetarchiveOnly(AIndex : Integer; const AValue : String); 
 
 begin
   If (FarchiveOnly=AValue) then exit;
@@ -234,7 +212,7 @@ end;
 
 
 
-Procedure TGroups.SetcustomReplyTo(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetcustomReplyTo(AIndex : Integer; const AValue : String); 
 
 begin
   If (FcustomReplyTo=AValue) then exit;
@@ -244,7 +222,7 @@ end;
 
 
 
-Procedure TGroups.SetdefaultMessageDenyNotificationText(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetdefaultMessageDenyNotificationText(AIndex : Integer; const AValue : String); 
 
 begin
   If (FdefaultMessageDenyNotificationText=AValue) then exit;
@@ -254,7 +232,7 @@ end;
 
 
 
-Procedure TGroups.Setdescription(AIndex : Integer; AValue : string); 
+Procedure TGroups.Setdescription(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fdescription=AValue) then exit;
@@ -264,7 +242,7 @@ end;
 
 
 
-Procedure TGroups.Setemail(AIndex : Integer; AValue : string); 
+Procedure TGroups.Setemail(AIndex : Integer; const AValue : String); 
 
 begin
   If (Femail=AValue) then exit;
@@ -274,7 +252,7 @@ end;
 
 
 
-Procedure TGroups.SetincludeInGlobalAddressList(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetincludeInGlobalAddressList(AIndex : Integer; const AValue : String); 
 
 begin
   If (FincludeInGlobalAddressList=AValue) then exit;
@@ -284,7 +262,7 @@ end;
 
 
 
-Procedure TGroups.SetisArchived(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetisArchived(AIndex : Integer; const AValue : String); 
 
 begin
   If (FisArchived=AValue) then exit;
@@ -294,7 +272,7 @@ end;
 
 
 
-Procedure TGroups.Setkind(AIndex : Integer; AValue : string); 
+Procedure TGroups.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -304,7 +282,7 @@ end;
 
 
 
-Procedure TGroups.SetmaxMessageBytes(AIndex : Integer; AValue : integer); 
+Procedure TGroups.SetmaxMessageBytes(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxMessageBytes=AValue) then exit;
@@ -314,7 +292,7 @@ end;
 
 
 
-Procedure TGroups.SetmembersCanPostAsTheGroup(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetmembersCanPostAsTheGroup(AIndex : Integer; const AValue : String); 
 
 begin
   If (FmembersCanPostAsTheGroup=AValue) then exit;
@@ -324,7 +302,7 @@ end;
 
 
 
-Procedure TGroups.SetmessageDisplayFont(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetmessageDisplayFont(AIndex : Integer; const AValue : String); 
 
 begin
   If (FmessageDisplayFont=AValue) then exit;
@@ -334,7 +312,7 @@ end;
 
 
 
-Procedure TGroups.SetmessageModerationLevel(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetmessageModerationLevel(AIndex : Integer; const AValue : String); 
 
 begin
   If (FmessageModerationLevel=AValue) then exit;
@@ -344,7 +322,7 @@ end;
 
 
 
-Procedure TGroups.Setname(AIndex : Integer; AValue : string); 
+Procedure TGroups.Setname(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fname=AValue) then exit;
@@ -354,7 +332,7 @@ end;
 
 
 
-Procedure TGroups.SetprimaryLanguage(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetprimaryLanguage(AIndex : Integer; const AValue : String); 
 
 begin
   If (FprimaryLanguage=AValue) then exit;
@@ -364,7 +342,7 @@ end;
 
 
 
-Procedure TGroups.SetreplyTo(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetreplyTo(AIndex : Integer; const AValue : String); 
 
 begin
   If (FreplyTo=AValue) then exit;
@@ -374,7 +352,7 @@ end;
 
 
 
-Procedure TGroups.SetsendMessageDenyNotification(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetsendMessageDenyNotification(AIndex : Integer; const AValue : String); 
 
 begin
   If (FsendMessageDenyNotification=AValue) then exit;
@@ -384,7 +362,7 @@ end;
 
 
 
-Procedure TGroups.SetshowInGroupDirectory(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetshowInGroupDirectory(AIndex : Integer; const AValue : String); 
 
 begin
   If (FshowInGroupDirectory=AValue) then exit;
@@ -394,7 +372,7 @@ end;
 
 
 
-Procedure TGroups.SetspamModerationLevel(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetspamModerationLevel(AIndex : Integer; const AValue : String); 
 
 begin
   If (FspamModerationLevel=AValue) then exit;
@@ -404,7 +382,17 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanContactOwner(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanAdd(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FwhoCanAdd=AValue) then exit;
+  FwhoCanAdd:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroups.SetwhoCanContactOwner(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanContactOwner=AValue) then exit;
@@ -414,7 +402,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanInvite(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanInvite(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanInvite=AValue) then exit;
@@ -424,7 +412,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanJoin(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanJoin(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanJoin=AValue) then exit;
@@ -434,7 +422,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanLeaveGroup(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanLeaveGroup(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanLeaveGroup=AValue) then exit;
@@ -444,7 +432,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanPostMessage(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanPostMessage(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanPostMessage=AValue) then exit;
@@ -454,7 +442,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanViewGroup(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanViewGroup(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanViewGroup=AValue) then exit;
@@ -464,7 +452,7 @@ end;
 
 
 
-Procedure TGroups.SetwhoCanViewMembership(AIndex : Integer; AValue : string); 
+Procedure TGroups.SetwhoCanViewMembership(AIndex : Integer; const AValue : String); 
 
 begin
   If (FwhoCanViewMembership=AValue) then exit;
@@ -559,7 +547,7 @@ end;
 Class Function TGroupssettingsAPI.APIRevision : String;
 
 begin
-  Result:='20140428';
+  Result:='20160323';
 end;
 
 Class Function TGroupssettingsAPI.APIID : String;
@@ -687,7 +675,7 @@ Function TGroupssettingsAPI.CreateGroupsResource(AOwner : TComponent) : TGroupsR
 
 begin
   Result:=TGroupsResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

+ 1937 - 0
packages/googleapi/src/googleiam.pp

@@ -0,0 +1,1937 @@
+unit googleiam;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TListServiceAccountsResponse = Class;
+  TServiceAccount = Class;
+  TCreateServiceAccountRequest = Class;
+  TEmpty = Class;
+  TListServiceAccountKeysResponse = Class;
+  TServiceAccountKey = Class;
+  TCreateServiceAccountKeyRequest = Class;
+  TSignBlobRequest = Class;
+  TSignBlobResponse = Class;
+  TPolicy = Class;
+  TBinding = Class;
+  TRule = Class;
+  TCondition = Class;
+  TLogConfig = Class;
+  TCounterOptions = Class;
+  TDataAccessOptions = Class;
+  TCloudAuditOptions = Class;
+  TSetIamPolicyRequest = Class;
+  TTestIamPermissionsRequest = Class;
+  TTestIamPermissionsResponse = Class;
+  TListServiceAccountsResponseArray = Array of TListServiceAccountsResponse;
+  TServiceAccountArray = Array of TServiceAccount;
+  TCreateServiceAccountRequestArray = Array of TCreateServiceAccountRequest;
+  TEmptyArray = Array of TEmpty;
+  TListServiceAccountKeysResponseArray = Array of TListServiceAccountKeysResponse;
+  TServiceAccountKeyArray = Array of TServiceAccountKey;
+  TCreateServiceAccountKeyRequestArray = Array of TCreateServiceAccountKeyRequest;
+  TSignBlobRequestArray = Array of TSignBlobRequest;
+  TSignBlobResponseArray = Array of TSignBlobResponse;
+  TPolicyArray = Array of TPolicy;
+  TBindingArray = Array of TBinding;
+  TRuleArray = Array of TRule;
+  TConditionArray = Array of TCondition;
+  TLogConfigArray = Array of TLogConfig;
+  TCounterOptionsArray = Array of TCounterOptions;
+  TDataAccessOptionsArray = Array of TDataAccessOptions;
+  TCloudAuditOptionsArray = Array of TCloudAuditOptions;
+  TSetIamPolicyRequestArray = Array of TSetIamPolicyRequest;
+  TTestIamPermissionsRequestArray = Array of TTestIamPermissionsRequest;
+  TTestIamPermissionsResponseArray = Array of TTestIamPermissionsResponse;
+  //Anonymous types, using auto-generated names
+  TListServiceAccountsResponseTypeaccountsArray = Array of TServiceAccount;
+  TListServiceAccountKeysResponseTypekeysArray = Array of TServiceAccountKey;
+  TPolicyTypebindingsArray = Array of TBinding;
+  TPolicyTyperulesArray = Array of TRule;
+  TRuleTypeconditionsArray = Array of TCondition;
+  TRuleTypelogConfigArray = Array of TLogConfig;
+  
+  { --------------------------------------------------------------------
+    TListServiceAccountsResponse
+    --------------------------------------------------------------------}
+  
+  TListServiceAccountsResponse = Class(TGoogleBaseObject)
+  Private
+    Faccounts : TListServiceAccountsResponseTypeaccountsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setaccounts(AIndex : Integer; const AValue : TListServiceAccountsResponseTypeaccountsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property accounts : TListServiceAccountsResponseTypeaccountsArray Index 0 Read Faccounts Write Setaccounts;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListServiceAccountsResponseClass = Class of TListServiceAccountsResponse;
+  
+  { --------------------------------------------------------------------
+    TServiceAccount
+    --------------------------------------------------------------------}
+  
+  TServiceAccount = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    FprojectId : String;
+    FuniqueId : String;
+    Femail : String;
+    FdisplayName : String;
+    Fetag : String;
+    Foauth2ClientId : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuniqueId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoauth2ClientId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property projectId : String Index 8 Read FprojectId Write SetprojectId;
+    Property uniqueId : String Index 16 Read FuniqueId Write SetuniqueId;
+    Property email : String Index 24 Read Femail Write Setemail;
+    Property displayName : String Index 32 Read FdisplayName Write SetdisplayName;
+    Property etag : String Index 40 Read Fetag Write Setetag;
+    Property oauth2ClientId : String Index 48 Read Foauth2ClientId Write Setoauth2ClientId;
+  end;
+  TServiceAccountClass = Class of TServiceAccount;
+  
+  { --------------------------------------------------------------------
+    TCreateServiceAccountRequest
+    --------------------------------------------------------------------}
+  
+  TCreateServiceAccountRequest = Class(TGoogleBaseObject)
+  Private
+    FaccountId : String;
+    FserviceAccount : TServiceAccount;
+  Protected
+    //Property setters
+    Procedure SetaccountId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetserviceAccount(AIndex : Integer; const AValue : TServiceAccount); virtual;
+  Public
+  Published
+    Property accountId : String Index 0 Read FaccountId Write SetaccountId;
+    Property serviceAccount : TServiceAccount Index 8 Read FserviceAccount Write SetserviceAccount;
+  end;
+  TCreateServiceAccountRequestClass = Class of TCreateServiceAccountRequest;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListServiceAccountKeysResponse
+    --------------------------------------------------------------------}
+  
+  TListServiceAccountKeysResponse = Class(TGoogleBaseObject)
+  Private
+    Fkeys : TListServiceAccountKeysResponseTypekeysArray;
+  Protected
+    //Property setters
+    Procedure Setkeys(AIndex : Integer; const AValue : TListServiceAccountKeysResponseTypekeysArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property keys : TListServiceAccountKeysResponseTypekeysArray Index 0 Read Fkeys Write Setkeys;
+  end;
+  TListServiceAccountKeysResponseClass = Class of TListServiceAccountKeysResponse;
+  
+  { --------------------------------------------------------------------
+    TServiceAccountKey
+    --------------------------------------------------------------------}
+  
+  TServiceAccountKey = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    FprivateKeyType : String;
+    FprivateKeyData : String;
+    FvalidAfterTime : String;
+    FvalidBeforeTime : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprivateKeyType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprivateKeyData(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvalidAfterTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvalidBeforeTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property privateKeyType : String Index 8 Read FprivateKeyType Write SetprivateKeyType;
+    Property privateKeyData : String Index 16 Read FprivateKeyData Write SetprivateKeyData;
+    Property validAfterTime : String Index 24 Read FvalidAfterTime Write SetvalidAfterTime;
+    Property validBeforeTime : String Index 32 Read FvalidBeforeTime Write SetvalidBeforeTime;
+  end;
+  TServiceAccountKeyClass = Class of TServiceAccountKey;
+  
+  { --------------------------------------------------------------------
+    TCreateServiceAccountKeyRequest
+    --------------------------------------------------------------------}
+  
+  TCreateServiceAccountKeyRequest = Class(TGoogleBaseObject)
+  Private
+    FprivateKeyType : String;
+  Protected
+    //Property setters
+    Procedure SetprivateKeyType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property privateKeyType : String Index 0 Read FprivateKeyType Write SetprivateKeyType;
+  end;
+  TCreateServiceAccountKeyRequestClass = Class of TCreateServiceAccountKeyRequest;
+  
+  { --------------------------------------------------------------------
+    TSignBlobRequest
+    --------------------------------------------------------------------}
+  
+  TSignBlobRequest = Class(TGoogleBaseObject)
+  Private
+    FbytesToSign : String;
+  Protected
+    //Property setters
+    Procedure SetbytesToSign(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property bytesToSign : String Index 0 Read FbytesToSign Write SetbytesToSign;
+  end;
+  TSignBlobRequestClass = Class of TSignBlobRequest;
+  
+  { --------------------------------------------------------------------
+    TSignBlobResponse
+    --------------------------------------------------------------------}
+  
+  TSignBlobResponse = Class(TGoogleBaseObject)
+  Private
+    FkeyId : String;
+    Fsignature : String;
+  Protected
+    //Property setters
+    Procedure SetkeyId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsignature(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property keyId : String Index 0 Read FkeyId Write SetkeyId;
+    Property signature : String Index 8 Read Fsignature Write Setsignature;
+  end;
+  TSignBlobResponseClass = Class of TSignBlobResponse;
+  
+  { --------------------------------------------------------------------
+    TPolicy
+    --------------------------------------------------------------------}
+  
+  TPolicy = Class(TGoogleBaseObject)
+  Private
+    Fversion : integer;
+    Fbindings : TPolicyTypebindingsArray;
+    Frules : TPolicyTyperulesArray;
+    Fetag : String;
+  Protected
+    //Property setters
+    Procedure Setversion(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); virtual;
+    Procedure Setrules(AIndex : Integer; const AValue : TPolicyTyperulesArray); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property version : integer Index 0 Read Fversion Write Setversion;
+    Property bindings : TPolicyTypebindingsArray Index 8 Read Fbindings Write Setbindings;
+    Property rules : TPolicyTyperulesArray Index 16 Read Frules Write Setrules;
+    Property etag : String Index 24 Read Fetag Write Setetag;
+  end;
+  TPolicyClass = Class of TPolicy;
+  
+  { --------------------------------------------------------------------
+    TBinding
+    --------------------------------------------------------------------}
+  
+  TBinding = Class(TGoogleBaseObject)
+  Private
+    Frole : String;
+    Fmembers : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmembers(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property role : String Index 0 Read Frole Write Setrole;
+    Property members : TStringArray Index 8 Read Fmembers Write Setmembers;
+  end;
+  TBindingClass = Class of TBinding;
+  
+  { --------------------------------------------------------------------
+    TRule
+    --------------------------------------------------------------------}
+  
+  TRule = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    Fpermissions : TStringArray;
+    Faction : String;
+    F_in : TStringArray;
+    FnotIn : TStringArray;
+    Fconditions : TRuleTypeconditionsArray;
+    FlogConfig : TRuleTypelogConfigArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setaction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_in(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetnotIn(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setconditions(AIndex : Integer; const AValue : TRuleTypeconditionsArray); virtual;
+    Procedure SetlogConfig(AIndex : Integer; const AValue : TRuleTypelogConfigArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property permissions : TStringArray Index 8 Read Fpermissions Write Setpermissions;
+    Property action : String Index 16 Read Faction Write Setaction;
+    Property _in : TStringArray Index 24 Read F_in Write Set_in;
+    Property notIn : TStringArray Index 32 Read FnotIn Write SetnotIn;
+    Property conditions : TRuleTypeconditionsArray Index 40 Read Fconditions Write Setconditions;
+    Property logConfig : TRuleTypelogConfigArray Index 48 Read FlogConfig Write SetlogConfig;
+  end;
+  TRuleClass = Class of TRule;
+  
+  { --------------------------------------------------------------------
+    TCondition
+    --------------------------------------------------------------------}
+  
+  TCondition = Class(TGoogleBaseObject)
+  Private
+    Fiam : String;
+    Fsys : String;
+    Fsvc : String;
+    Fop : String;
+    Fvalue : String;
+    Fvalues : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setiam(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsys(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsvc(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setop(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property iam : String Index 0 Read Fiam Write Setiam;
+    Property sys : String Index 8 Read Fsys Write Setsys;
+    Property svc : String Index 16 Read Fsvc Write Setsvc;
+    Property op : String Index 24 Read Fop Write Setop;
+    Property value : String Index 32 Read Fvalue Write Setvalue;
+    Property values : TStringArray Index 40 Read Fvalues Write Setvalues;
+  end;
+  TConditionClass = Class of TCondition;
+  
+  { --------------------------------------------------------------------
+    TLogConfig
+    --------------------------------------------------------------------}
+  
+  TLogConfig = Class(TGoogleBaseObject)
+  Private
+    Fcounter : TCounterOptions;
+    FdataAccess : TDataAccessOptions;
+    FcloudAudit : TCloudAuditOptions;
+  Protected
+    //Property setters
+    Procedure Setcounter(AIndex : Integer; const AValue : TCounterOptions); virtual;
+    Procedure SetdataAccess(AIndex : Integer; const AValue : TDataAccessOptions); virtual;
+    Procedure SetcloudAudit(AIndex : Integer; const AValue : TCloudAuditOptions); virtual;
+  Public
+  Published
+    Property counter : TCounterOptions Index 0 Read Fcounter Write Setcounter;
+    Property dataAccess : TDataAccessOptions Index 8 Read FdataAccess Write SetdataAccess;
+    Property cloudAudit : TCloudAuditOptions Index 16 Read FcloudAudit Write SetcloudAudit;
+  end;
+  TLogConfigClass = Class of TLogConfig;
+  
+  { --------------------------------------------------------------------
+    TCounterOptions
+    --------------------------------------------------------------------}
+  
+  TCounterOptions = Class(TGoogleBaseObject)
+  Private
+    Fmetric : String;
+    Ffield : String;
+  Protected
+    //Property setters
+    Procedure Setmetric(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfield(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metric : String Index 0 Read Fmetric Write Setmetric;
+    Property field : String Index 8 Read Ffield Write Setfield;
+  end;
+  TCounterOptionsClass = Class of TCounterOptions;
+  
+  { --------------------------------------------------------------------
+    TDataAccessOptions
+    --------------------------------------------------------------------}
+  
+  TDataAccessOptions = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TDataAccessOptionsClass = Class of TDataAccessOptions;
+  
+  { --------------------------------------------------------------------
+    TCloudAuditOptions
+    --------------------------------------------------------------------}
+  
+  TCloudAuditOptions = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TCloudAuditOptionsClass = Class of TCloudAuditOptions;
+  
+  { --------------------------------------------------------------------
+    TSetIamPolicyRequest
+    --------------------------------------------------------------------}
+  
+  TSetIamPolicyRequest = Class(TGoogleBaseObject)
+  Private
+    Fpolicy : TPolicy;
+  Protected
+    //Property setters
+    Procedure Setpolicy(AIndex : Integer; const AValue : TPolicy); virtual;
+  Public
+  Published
+    Property policy : TPolicy Index 0 Read Fpolicy Write Setpolicy;
+  end;
+  TSetIamPolicyRequestClass = Class of TSetIamPolicyRequest;
+  
+  { --------------------------------------------------------------------
+    TTestIamPermissionsRequest
+    --------------------------------------------------------------------}
+  
+  TTestIamPermissionsRequest = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestIamPermissionsRequestClass = Class of TTestIamPermissionsRequest;
+  
+  { --------------------------------------------------------------------
+    TTestIamPermissionsResponse
+    --------------------------------------------------------------------}
+  
+  TTestIamPermissionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fpermissions : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setpermissions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property permissions : TStringArray Index 0 Read Fpermissions Write Setpermissions;
+  end;
+  TTestIamPermissionsResponseClass = Class of TTestIamPermissionsResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectsServiceAccountsKeysResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsServiceAccountsKeysResource, method List
+  
+  TProjectsServiceAccountsKeysListOptions = Record
+    keyTypes : String;
+  end;
+  
+  TProjectsServiceAccountsKeysResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListServiceAccountKeysResponse;
+    Function List(_name: string; AQuery : TProjectsServiceAccountsKeyslistOptions) : TListServiceAccountKeysResponse;
+    Function Get(_name: string) : TServiceAccountKey;
+    Function Create(_name: string; aCreateServiceAccountKeyRequest : TCreateServiceAccountKeyRequest) : TServiceAccountKey;overload;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsServiceAccountsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsServiceAccountsResource, method List
+  
+  TProjectsServiceAccountsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsServiceAccountsResource = Class(TGoogleResource)
+  Private
+    FKeysInstance : TProjectsServiceAccountsKeysResource;
+    Function GetKeysInstance : TProjectsServiceAccountsKeysResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListServiceAccountsResponse;
+    Function List(_name: string; AQuery : TProjectsServiceAccountslistOptions) : TListServiceAccountsResponse;
+    Function Get(_name: string) : TServiceAccount;
+    Function Create(_name: string; aCreateServiceAccountRequest : TCreateServiceAccountRequest) : TServiceAccount;overload;
+    Function Update(_name: string; aServiceAccount : TServiceAccount) : TServiceAccount;
+    Function Delete(_name: string) : TEmpty;
+    Function SignBlob(_name: string; aSignBlobRequest : TSignBlobRequest) : TSignBlobResponse;
+    Function GetIamPolicy(resource: string) : TPolicy;
+    Function SetIamPolicy(resource: string; aSetIamPolicyRequest : TSetIamPolicyRequest) : TPolicy;
+    Function TestIamPermissions(resource: string; aTestIamPermissionsRequest : TTestIamPermissionsRequest) : TTestIamPermissionsResponse;
+    Function CreateKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Function CreateKeysResource : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Property KeysResource : TProjectsServiceAccountsKeysResource Read GetKeysInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;
+    FServiceAccountsInstance : TProjectsServiceAccountsResource;
+    Function GetServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;virtual;
+    Function GetServiceAccountsInstance : TProjectsServiceAccountsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateServiceAccountsKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Function CreateServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Function CreateServiceAccountsResource(AOwner : TComponent) : TProjectsServiceAccountsResource;virtual;overload;
+    Function CreateServiceAccountsResource : TProjectsServiceAccountsResource;virtual;overload;
+    Property ServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource Read GetServiceAccountsKeysInstance;
+    Property ServiceAccountsResource : TProjectsServiceAccountsResource Read GetServiceAccountsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TIamAPI
+    --------------------------------------------------------------------}
+  
+  TIamAPI = Class(TGoogleAPI)
+  Private
+    FProjectsServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;
+    FProjectsServiceAccountsInstance : TProjectsServiceAccountsResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;virtual;
+    Function GetProjectsServiceAccountsInstance : TProjectsServiceAccountsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsServiceAccountsKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Function CreateProjectsServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource;virtual;overload;
+    Function CreateProjectsServiceAccountsResource(AOwner : TComponent) : TProjectsServiceAccountsResource;virtual;overload;
+    Function CreateProjectsServiceAccountsResource : TProjectsServiceAccountsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource Read GetProjectsServiceAccountsKeysInstance;
+    Property ProjectsServiceAccountsResource : TProjectsServiceAccountsResource Read GetProjectsServiceAccountsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TListServiceAccountsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListServiceAccountsResponse.Setaccounts(AIndex : Integer; const AValue : TListServiceAccountsResponseTypeaccountsArray); 
+
+begin
+  If (Faccounts=AValue) then exit;
+  Faccounts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListServiceAccountsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListServiceAccountsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'accounts' : SetLength(Faccounts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TServiceAccount
+  --------------------------------------------------------------------}
+
+
+Procedure TServiceAccount.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.SetuniqueId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuniqueId=AValue) then exit;
+  FuniqueId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.Setemail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Femail=AValue) then exit;
+  Femail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccount.Setoauth2ClientId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Foauth2ClientId=AValue) then exit;
+  Foauth2ClientId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCreateServiceAccountRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateServiceAccountRequest.SetaccountId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaccountId=AValue) then exit;
+  FaccountId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateServiceAccountRequest.SetserviceAccount(AIndex : Integer; const AValue : TServiceAccount); 
+
+begin
+  If (FserviceAccount=AValue) then exit;
+  FserviceAccount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListServiceAccountKeysResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListServiceAccountKeysResponse.Setkeys(AIndex : Integer; const AValue : TListServiceAccountKeysResponseTypekeysArray); 
+
+begin
+  If (Fkeys=AValue) then exit;
+  Fkeys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListServiceAccountKeysResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'keys' : SetLength(Fkeys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TServiceAccountKey
+  --------------------------------------------------------------------}
+
+
+Procedure TServiceAccountKey.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccountKey.SetprivateKeyType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprivateKeyType=AValue) then exit;
+  FprivateKeyType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccountKey.SetprivateKeyData(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprivateKeyData=AValue) then exit;
+  FprivateKeyData:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccountKey.SetvalidAfterTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalidAfterTime=AValue) then exit;
+  FvalidAfterTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TServiceAccountKey.SetvalidBeforeTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalidBeforeTime=AValue) then exit;
+  FvalidBeforeTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCreateServiceAccountKeyRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateServiceAccountKeyRequest.SetprivateKeyType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprivateKeyType=AValue) then exit;
+  FprivateKeyType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSignBlobRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSignBlobRequest.SetbytesToSign(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesToSign=AValue) then exit;
+  FbytesToSign:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSignBlobResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSignBlobResponse.SetkeyId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FkeyId=AValue) then exit;
+  FkeyId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSignBlobResponse.Setsignature(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsignature=AValue) then exit;
+  Fsignature:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPolicy
+  --------------------------------------------------------------------}
+
+
+Procedure TPolicy.Setversion(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fversion=AValue) then exit;
+  Fversion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setbindings(AIndex : Integer; const AValue : TPolicyTypebindingsArray); 
+
+begin
+  If (Fbindings=AValue) then exit;
+  Fbindings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setrules(AIndex : Integer; const AValue : TPolicyTyperulesArray); 
+
+begin
+  If (Frules=AValue) then exit;
+  Frules:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPolicy.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPolicy.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'bindings' : SetLength(Fbindings,ALength);
+  'rules' : SetLength(Frules,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBinding
+  --------------------------------------------------------------------}
+
+
+Procedure TBinding.Setrole(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frole=AValue) then exit;
+  Frole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBinding.Setmembers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBinding.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRule
+  --------------------------------------------------------------------}
+
+
+Procedure TRule.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setaction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faction=AValue) then exit;
+  Faction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Set_in(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (F_in=AValue) then exit;
+  F_in:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.SetnotIn(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FnotIn=AValue) then exit;
+  FnotIn:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.Setconditions(AIndex : Integer; const AValue : TRuleTypeconditionsArray); 
+
+begin
+  If (Fconditions=AValue) then exit;
+  Fconditions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRule.SetlogConfig(AIndex : Integer; const AValue : TRuleTypelogConfigArray); 
+
+begin
+  If (FlogConfig=AValue) then exit;
+  FlogConfig:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TRule.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_in' : Result:='in';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TRule.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  '_in' : SetLength(F_in,ALength);
+  'notin' : SetLength(FnotIn,ALength);
+  'conditions' : SetLength(Fconditions,ALength);
+  'logconfig' : SetLength(FlogConfig,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCondition
+  --------------------------------------------------------------------}
+
+
+Procedure TCondition.Setiam(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fiam=AValue) then exit;
+  Fiam:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setsys(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsys=AValue) then exit;
+  Fsys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setsvc(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsvc=AValue) then exit;
+  Fsvc:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setop(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fop=AValue) then exit;
+  Fop:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCondition.Setvalues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCondition.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TLogConfig.Setcounter(AIndex : Integer; const AValue : TCounterOptions); 
+
+begin
+  If (Fcounter=AValue) then exit;
+  Fcounter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogConfig.SetdataAccess(AIndex : Integer; const AValue : TDataAccessOptions); 
+
+begin
+  If (FdataAccess=AValue) then exit;
+  FdataAccess:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogConfig.SetcloudAudit(AIndex : Integer; const AValue : TCloudAuditOptions); 
+
+begin
+  If (FcloudAudit=AValue) then exit;
+  FcloudAudit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCounterOptions
+  --------------------------------------------------------------------}
+
+
+Procedure TCounterOptions.Setmetric(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmetric=AValue) then exit;
+  Fmetric:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCounterOptions.Setfield(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffield=AValue) then exit;
+  Ffield:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDataAccessOptions
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCloudAuditOptions
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSetIamPolicyRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSetIamPolicyRequest.Setpolicy(AIndex : Integer; const AValue : TPolicy); 
+
+begin
+  If (Fpolicy=AValue) then exit;
+  Fpolicy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestIamPermissionsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTestIamPermissionsRequest.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestIamPermissionsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestIamPermissionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTestIamPermissionsResponse.Setpermissions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fpermissions=AValue) then exit;
+  Fpermissions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestIamPermissionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permissions' : SetLength(Fpermissions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsServiceAccountsKeysResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsServiceAccountsKeysResource.ResourceName : String;
+
+begin
+  Result:='keys';
+end;
+
+Class Function TProjectsServiceAccountsKeysResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TiamAPI;
+end;
+
+Function TProjectsServiceAccountsKeysResource.List(_name: string; AQuery : string = '') : TListServiceAccountKeysResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/keys';
+  _Methodid   = 'iam.projects.serviceAccounts.keys.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListServiceAccountKeysResponse) as TListServiceAccountKeysResponse;
+end;
+
+
+Function TProjectsServiceAccountsKeysResource.List(_name: string; AQuery : TProjectsServiceAccountsKeyslistOptions) : TListServiceAccountKeysResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'keyTypes',AQuery.keyTypes);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsServiceAccountsKeysResource.Get(_name: string) : TServiceAccountKey;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'iam.projects.serviceAccounts.keys.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TServiceAccountKey) as TServiceAccountKey;
+end;
+
+Function TProjectsServiceAccountsKeysResource.Create(_name: string; aCreateServiceAccountKeyRequest : TCreateServiceAccountKeyRequest) : TServiceAccountKey;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}/keys';
+  _Methodid   = 'iam.projects.serviceAccounts.keys.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCreateServiceAccountKeyRequest,TServiceAccountKey) as TServiceAccountKey;
+end;
+
+Function TProjectsServiceAccountsKeysResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'iam.projects.serviceAccounts.keys.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsServiceAccountsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsServiceAccountsResource.ResourceName : String;
+
+begin
+  Result:='serviceAccounts';
+end;
+
+Class Function TProjectsServiceAccountsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TiamAPI;
+end;
+
+Function TProjectsServiceAccountsResource.List(_name: string; AQuery : string = '') : TListServiceAccountsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}/serviceAccounts';
+  _Methodid   = 'iam.projects.serviceAccounts.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListServiceAccountsResponse) as TListServiceAccountsResponse;
+end;
+
+
+Function TProjectsServiceAccountsResource.List(_name: string; AQuery : TProjectsServiceAccountslistOptions) : TListServiceAccountsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsServiceAccountsResource.Get(_name: string) : TServiceAccount;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'iam.projects.serviceAccounts.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TServiceAccount) as TServiceAccount;
+end;
+
+Function TProjectsServiceAccountsResource.Create(_name: string; aCreateServiceAccountRequest : TCreateServiceAccountRequest) : TServiceAccount;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}/serviceAccounts';
+  _Methodid   = 'iam.projects.serviceAccounts.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCreateServiceAccountRequest,TServiceAccount) as TServiceAccount;
+end;
+
+Function TProjectsServiceAccountsResource.Update(_name: string; aServiceAccount : TServiceAccount) : TServiceAccount;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'iam.projects.serviceAccounts.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aServiceAccount,TServiceAccount) as TServiceAccount;
+end;
+
+Function TProjectsServiceAccountsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'iam.projects.serviceAccounts.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TProjectsServiceAccountsResource.SignBlob(_name: string; aSignBlobRequest : TSignBlobRequest) : TSignBlobResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:signBlob';
+  _Methodid   = 'iam.projects.serviceAccounts.signBlob';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSignBlobRequest,TSignBlobResponse) as TSignBlobResponse;
+end;
+
+Function TProjectsServiceAccountsResource.GetIamPolicy(resource: string) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+resource}:getIamPolicy';
+  _Methodid   = 'iam.projects.serviceAccounts.getIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TPolicy) as TPolicy;
+end;
+
+Function TProjectsServiceAccountsResource.SetIamPolicy(resource: string; aSetIamPolicyRequest : TSetIamPolicyRequest) : TPolicy;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+resource}:setIamPolicy';
+  _Methodid   = 'iam.projects.serviceAccounts.setIamPolicy';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSetIamPolicyRequest,TPolicy) as TPolicy;
+end;
+
+Function TProjectsServiceAccountsResource.TestIamPermissions(resource: string; aTestIamPermissionsRequest : TTestIamPermissionsRequest) : TTestIamPermissionsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+resource}:testIamPermissions';
+  _Methodid   = 'iam.projects.serviceAccounts.testIamPermissions';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resource',resource]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aTestIamPermissionsRequest,TTestIamPermissionsResponse) as TTestIamPermissionsResponse;
+end;
+
+
+
+Function TProjectsServiceAccountsResource.GetKeysInstance : TProjectsServiceAccountsKeysResource;
+
+begin
+  if (FKeysInstance=Nil) then
+    FKeysInstance:=CreateKeysResource;
+  Result:=FKeysInstance;
+end;
+
+Function TProjectsServiceAccountsResource.CreateKeysResource : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=CreateKeysResource(Self);
+end;
+
+
+Function TProjectsServiceAccountsResource.CreateKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=TProjectsServiceAccountsKeysResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TiamAPI;
+end;
+
+
+
+Function TProjectsResource.GetServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;
+
+begin
+  if (FServiceAccountsKeysInstance=Nil) then
+    FServiceAccountsKeysInstance:=CreateServiceAccountsKeysResource;
+  Result:=FServiceAccountsKeysInstance;
+end;
+
+Function TProjectsResource.CreateServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=CreateServiceAccountsKeysResource(Self);
+end;
+
+
+Function TProjectsResource.CreateServiceAccountsKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=TProjectsServiceAccountsKeysResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetServiceAccountsInstance : TProjectsServiceAccountsResource;
+
+begin
+  if (FServiceAccountsInstance=Nil) then
+    FServiceAccountsInstance:=CreateServiceAccountsResource;
+  Result:=FServiceAccountsInstance;
+end;
+
+Function TProjectsResource.CreateServiceAccountsResource : TProjectsServiceAccountsResource;
+
+begin
+  Result:=CreateServiceAccountsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateServiceAccountsResource(AOwner : TComponent) : TProjectsServiceAccountsResource;
+
+begin
+  Result:=TProjectsServiceAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TIamAPI
+  --------------------------------------------------------------------}
+
+Class Function TIamAPI.APIName : String;
+
+begin
+  Result:='iam';
+end;
+
+Class Function TIamAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TIamAPI.APIRevision : String;
+
+begin
+  Result:='20160129';
+end;
+
+Class Function TIamAPI.APIID : String;
+
+begin
+  Result:='iam:v1';
+end;
+
+Class Function TIamAPI.APITitle : String;
+
+begin
+  Result:='Google Identity and Access Management API';
+end;
+
+Class Function TIamAPI.APIDescription : String;
+
+begin
+  Result:='Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.';
+end;
+
+Class Function TIamAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TIamAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TIamAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TIamAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TIamAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/iam/';
+end;
+
+Class Function TIamAPI.APIrootUrl : string;
+
+begin
+  Result:='https://iam.googleapis.com/';
+end;
+
+Class Function TIamAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TIamAPI.APIbaseURL : String;
+
+begin
+  Result:='https://iam.googleapis.com/';
+end;
+
+Class Function TIamAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TIamAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TIamAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TIamAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  
+end;
+
+Class Function TIamAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TIamAPI.RegisterAPIResources;
+
+begin
+  TListServiceAccountsResponse.RegisterObject;
+  TServiceAccount.RegisterObject;
+  TCreateServiceAccountRequest.RegisterObject;
+  TEmpty.RegisterObject;
+  TListServiceAccountKeysResponse.RegisterObject;
+  TServiceAccountKey.RegisterObject;
+  TCreateServiceAccountKeyRequest.RegisterObject;
+  TSignBlobRequest.RegisterObject;
+  TSignBlobResponse.RegisterObject;
+  TPolicy.RegisterObject;
+  TBinding.RegisterObject;
+  TRule.RegisterObject;
+  TCondition.RegisterObject;
+  TLogConfig.RegisterObject;
+  TCounterOptions.RegisterObject;
+  TDataAccessOptions.RegisterObject;
+  TCloudAuditOptions.RegisterObject;
+  TSetIamPolicyRequest.RegisterObject;
+  TTestIamPermissionsRequest.RegisterObject;
+  TTestIamPermissionsResponse.RegisterObject;
+end;
+
+
+Function TIamAPI.GetProjectsServiceAccountsKeysInstance : TProjectsServiceAccountsKeysResource;
+
+begin
+  if (FProjectsServiceAccountsKeysInstance=Nil) then
+    FProjectsServiceAccountsKeysInstance:=CreateProjectsServiceAccountsKeysResource;
+  Result:=FProjectsServiceAccountsKeysInstance;
+end;
+
+Function TIamAPI.CreateProjectsServiceAccountsKeysResource : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=CreateProjectsServiceAccountsKeysResource(Self);
+end;
+
+
+Function TIamAPI.CreateProjectsServiceAccountsKeysResource(AOwner : TComponent) : TProjectsServiceAccountsKeysResource;
+
+begin
+  Result:=TProjectsServiceAccountsKeysResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TIamAPI.GetProjectsServiceAccountsInstance : TProjectsServiceAccountsResource;
+
+begin
+  if (FProjectsServiceAccountsInstance=Nil) then
+    FProjectsServiceAccountsInstance:=CreateProjectsServiceAccountsResource;
+  Result:=FProjectsServiceAccountsInstance;
+end;
+
+Function TIamAPI.CreateProjectsServiceAccountsResource : TProjectsServiceAccountsResource;
+
+begin
+  Result:=CreateProjectsServiceAccountsResource(Self);
+end;
+
+
+Function TIamAPI.CreateProjectsServiceAccountsResource(AOwner : TComponent) : TProjectsServiceAccountsResource;
+
+begin
+  Result:=TProjectsServiceAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TIamAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TIamAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TIamAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TIamAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 516 - 278
packages/googleapi/src/googleidentitytoolkit.pp


+ 370 - 0
packages/googleapi/src/googlekgsearch.pp

@@ -0,0 +1,370 @@
+unit googlekgsearch;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TSearchResponse = Class;
+  TSearchResponseArray = Array of TSearchResponse;
+  //Anonymous types, using auto-generated names
+  
+  { --------------------------------------------------------------------
+    TSearchResponse
+    --------------------------------------------------------------------}
+  
+  TSearchResponse = Class(TGoogleBaseObject)
+  Private
+    Fcontext : TJSONSchema;
+    F_type : TJSONSchema;
+    FitemListElement : TTJSONSchemaArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setcontext(AIndex : Integer; const AValue : TJSONSchema); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : TJSONSchema); virtual;
+    Procedure SetitemListElement(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property context : TJSONSchema Index 0 Read Fcontext Write Setcontext;
+    Property _type : TJSONSchema Index 8 Read F_type Write Set_type;
+    Property itemListElement : TTJSONSchemaArray Index 16 Read FitemListElement Write SetitemListElement;
+  end;
+  TSearchResponseClass = Class of TSearchResponse;
+  
+  { --------------------------------------------------------------------
+    TEntitiesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TEntitiesResource, method Search
+  
+  TEntitiesSearchOptions = Record
+    query : String;
+    ids : String;
+    languages : String;
+    types : String;
+    indent : boolean;
+    prefix : boolean;
+    limit : integer;
+  end;
+  
+  TEntitiesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Search(AQuery : string  = '') : TSearchResponse;
+    Function Search(AQuery : TEntitiessearchOptions) : TSearchResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TKgsearchAPI
+    --------------------------------------------------------------------}
+  
+  TKgsearchAPI = Class(TGoogleAPI)
+  Private
+    FEntitiesInstance : TEntitiesResource;
+    Function GetEntitiesInstance : TEntitiesResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateEntitiesResource(AOwner : TComponent) : TEntitiesResource;virtual;overload;
+    Function CreateEntitiesResource : TEntitiesResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property EntitiesResource : TEntitiesResource Read GetEntitiesInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TSearchResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSearchResponse.Setcontext(AIndex : Integer; const AValue : TJSONSchema); 
+
+begin
+  If (Fcontext=AValue) then exit;
+  Fcontext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchResponse.Set_type(AIndex : Integer; const AValue : TJSONSchema); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchResponse.SetitemListElement(AIndex : Integer; const AValue : TTJSONSchemaArray); 
+
+begin
+  If (FitemListElement=AValue) then exit;
+  FitemListElement:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSearchResponse.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSearchResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'itemlistelement' : SetLength(FitemListElement,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEntitiesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TEntitiesResource.ResourceName : String;
+
+begin
+  Result:='entities';
+end;
+
+Class Function TEntitiesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TkgsearchAPI;
+end;
+
+Function TEntitiesResource.Search(AQuery : string = '') : TSearchResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/entities:search';
+  _Methodid   = 'kgsearch.entities.search';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TSearchResponse) as TSearchResponse;
+end;
+
+
+Function TEntitiesResource.Search(AQuery : TEntitiessearchOptions) : TSearchResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'query',AQuery.query);
+  AddToQuery(_Q,'ids',AQuery.ids);
+  AddToQuery(_Q,'languages',AQuery.languages);
+  AddToQuery(_Q,'types',AQuery.types);
+  AddToQuery(_Q,'indent',AQuery.indent);
+  AddToQuery(_Q,'prefix',AQuery.prefix);
+  AddToQuery(_Q,'limit',AQuery.limit);
+  Result:=Search(_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TKgsearchAPI
+  --------------------------------------------------------------------}
+
+Class Function TKgsearchAPI.APIName : String;
+
+begin
+  Result:='kgsearch';
+end;
+
+Class Function TKgsearchAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TKgsearchAPI.APIRevision : String;
+
+begin
+  Result:='20151215';
+end;
+
+Class Function TKgsearchAPI.APIID : String;
+
+begin
+  Result:='kgsearch:v1';
+end;
+
+Class Function TKgsearchAPI.APITitle : String;
+
+begin
+  Result:='Knowledge Graph Search API';
+end;
+
+Class Function TKgsearchAPI.APIDescription : String;
+
+begin
+  Result:='Knowledge Graph Search API allows developers to search the Google Knowledge Graph for entities.';
+end;
+
+Class Function TKgsearchAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TKgsearchAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TKgsearchAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TKgsearchAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TKgsearchAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/knowledge-graph/';
+end;
+
+Class Function TKgsearchAPI.APIrootUrl : string;
+
+begin
+  Result:='https://kgsearch.googleapis.com/';
+end;
+
+Class Function TKgsearchAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TKgsearchAPI.APIbaseURL : String;
+
+begin
+  Result:='https://kgsearch.googleapis.com/';
+end;
+
+Class Function TKgsearchAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TKgsearchAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TKgsearchAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TKgsearchAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,0);
+  
+end;
+
+Class Function TKgsearchAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=False;
+end;
+
+Class Procedure TKgsearchAPI.RegisterAPIResources;
+
+begin
+  TSearchResponse.RegisterObject;
+end;
+
+
+Function TKgsearchAPI.GetEntitiesInstance : TEntitiesResource;
+
+begin
+  if (FEntitiesInstance=Nil) then
+    FEntitiesInstance:=CreateEntitiesResource;
+  Result:=FEntitiesInstance;
+end;
+
+Function TKgsearchAPI.CreateEntitiesResource : TEntitiesResource;
+
+begin
+  Result:=CreateEntitiesResource(Self);
+end;
+
+
+Function TKgsearchAPI.CreateEntitiesResource(AOwner : TComponent) : TEntitiesResource;
+
+begin
+  Result:=TEntitiesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TKgsearchAPI.RegisterAPI;
+end.

+ 72 - 102
packages/googleapi/src/googlelicensing.pp

@@ -1,31 +1,4 @@
 unit googlelicensing;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,15 +7,16 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TLicenseAssignment = class;
+  
+  //Top-level schema types
+  TLicenseAssignment = Class;
+  TLicenseAssignmentInsert = Class;
+  TLicenseAssignmentList = Class;
   TLicenseAssignmentArray = Array of TLicenseAssignment;
-  TLicenseAssignmentInsert = class;
   TLicenseAssignmentInsertArray = Array of TLicenseAssignmentInsert;
-  TLicenseAssignmentList = class;
   TLicenseAssignmentListArray = Array of TLicenseAssignmentList;
-  TLicenseAssignmentListitems = class;
-  TLicenseAssignmentListitemsArray = Array of TLicenseAssignmentListitems;
+  //Anonymous types, using auto-generated names
+  TLicenseAssignmentListTypeitemsArray = Array of TLicenseAssignment;
   
   { --------------------------------------------------------------------
     TLicenseAssignment
@@ -50,28 +24,28 @@ type
   
   TLicenseAssignment = Class(TGoogleBaseObject)
   Private
-    Fetags : string;
-    Fkind : string;
-    FproductId : string;
-    FselfLink : string;
-    FskuId : string;
-    FuserId : string;
+    Fetags : String;
+    Fkind : String;
+    FproductId : String;
+    FselfLink : String;
+    FskuId : String;
+    FuserId : String;
   Protected
     //Property setters
-    Procedure Setetags(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetproductId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SetskuId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetuserId(AIndex : Integer; AValue : string); virtual;
+    Procedure Setetags(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetproductId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetskuId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property etags : string Index 0 Read Fetags Write Setetags;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property productId : string Index 16 Read FproductId Write SetproductId;
-    Property selfLink : string Index 24 Read FselfLink Write SetselfLink;
-    Property skuId : string Index 32 Read FskuId Write SetskuId;
-    Property userId : string Index 40 Read FuserId Write SetuserId;
+    Property etags : String Index 0 Read Fetags Write Setetags;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property productId : String Index 16 Read FproductId Write SetproductId;
+    Property selfLink : String Index 24 Read FselfLink Write SetselfLink;
+    Property skuId : String Index 32 Read FskuId Write SetskuId;
+    Property userId : String Index 40 Read FuserId Write SetuserId;
   end;
   TLicenseAssignmentClass = Class of TLicenseAssignment;
   
@@ -81,13 +55,13 @@ type
   
   TLicenseAssignmentInsert = Class(TGoogleBaseObject)
   Private
-    FuserId : string;
+    FuserId : String;
   Protected
     //Property setters
-    Procedure SetuserId(AIndex : Integer; AValue : string); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property userId : string Index 0 Read FuserId Write SetuserId;
+    Property userId : String Index 0 Read FuserId Write SetuserId;
   end;
   TLicenseAssignmentInsertClass = Class of TLicenseAssignmentInsert;
   
@@ -97,38 +71,29 @@ type
   
   TLicenseAssignmentList = Class(TGoogleBaseObject)
   Private
-    Fetag : string;
-    Fitems : TLicenseAssignmentListitems;
-    Fkind : string;
-    FnextPageToken : string;
+    Fetag : String;
+    Fitems : TLicenseAssignmentListTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TLicenseAssignmentListitems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TLicenseAssignmentListTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property items : TLicenseAssignmentListitems Index 8 Read Fitems Write Setitems;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property nextPageToken : string Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property items : TLicenseAssignmentListTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
   end;
   TLicenseAssignmentListClass = Class of TLicenseAssignmentList;
   
-  { --------------------------------------------------------------------
-    TLicenseAssignmentListitems
-    --------------------------------------------------------------------}
-  
-  TLicenseAssignmentListitems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TLicenseAssignmentListitemsClass = Class of TLicenseAssignmentListitems;
-  
   { --------------------------------------------------------------------
     TLicenseAssignmentsResource
     --------------------------------------------------------------------}
@@ -137,18 +102,18 @@ type
   //Optional query Options for TLicenseAssignmentsResource, method ListForProduct
   
   TLicenseAssignmentsListForProductOptions = Record
-    customerId : string;
+    customerId : String;
     maxResults : integer;
-    pageToken : string;
+    pageToken : String;
   end;
   
   
   //Optional query Options for TLicenseAssignmentsResource, method ListForProductAndSku
   
   TLicenseAssignmentsListForProductAndSkuOptions = Record
-    customerId : string;
+    customerId : String;
     maxResults : integer;
-    pageToken : string;
+    pageToken : String;
   end;
   
   TLicenseAssignmentsResource = Class(TGoogleResource)
@@ -212,7 +177,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TLicenseAssignment.Setetags(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.Setetags(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fetags=AValue) then exit;
@@ -222,7 +187,7 @@ end;
 
 
 
-Procedure TLicenseAssignment.Setkind(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -232,7 +197,7 @@ end;
 
 
 
-Procedure TLicenseAssignment.SetproductId(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.SetproductId(AIndex : Integer; const AValue : String); 
 
 begin
   If (FproductId=AValue) then exit;
@@ -242,7 +207,7 @@ end;
 
 
 
-Procedure TLicenseAssignment.SetselfLink(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.SetselfLink(AIndex : Integer; const AValue : String); 
 
 begin
   If (FselfLink=AValue) then exit;
@@ -252,7 +217,7 @@ end;
 
 
 
-Procedure TLicenseAssignment.SetskuId(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.SetskuId(AIndex : Integer; const AValue : String); 
 
 begin
   If (FskuId=AValue) then exit;
@@ -262,7 +227,7 @@ end;
 
 
 
-Procedure TLicenseAssignment.SetuserId(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignment.SetuserId(AIndex : Integer; const AValue : String); 
 
 begin
   If (FuserId=AValue) then exit;
@@ -279,7 +244,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLicenseAssignmentInsert.SetuserId(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignmentInsert.SetuserId(AIndex : Integer; const AValue : String); 
 
 begin
   If (FuserId=AValue) then exit;
@@ -296,7 +261,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLicenseAssignmentList.Setetag(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignmentList.Setetag(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fetag=AValue) then exit;
@@ -306,7 +271,7 @@ end;
 
 
 
-Procedure TLicenseAssignmentList.Setitems(AIndex : Integer; AValue : TLicenseAssignmentListitems); 
+Procedure TLicenseAssignmentList.Setitems(AIndex : Integer; const AValue : TLicenseAssignmentListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -316,7 +281,7 @@ end;
 
 
 
-Procedure TLicenseAssignmentList.Setkind(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignmentList.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkind=AValue) then exit;
@@ -326,7 +291,7 @@ end;
 
 
 
-Procedure TLicenseAssignmentList.SetnextPageToken(AIndex : Integer; AValue : string); 
+Procedure TLicenseAssignmentList.SetnextPageToken(AIndex : Integer; const AValue : String); 
 
 begin
   If (FnextPageToken=AValue) then exit;
@@ -335,12 +300,18 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLicenseAssignmentList.SetArrayLength(Const AName : String; ALength : Longint); 
 
-
-
-{ --------------------------------------------------------------------
-  TLicenseAssignmentListitems
-  --------------------------------------------------------------------}
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
 
 
 
@@ -516,7 +487,7 @@ end;
 Class Function TLicensingAPI.APIRevision : String;
 
 begin
-  Result:='20140122';
+  Result:='20150901';
 end;
 
 Class Function TLicensingAPI.APIID : String;
@@ -624,7 +595,6 @@ begin
   TLicenseAssignment.RegisterObject;
   TLicenseAssignmentInsert.RegisterObject;
   TLicenseAssignmentList.RegisterObject;
-  TLicenseAssignmentListitems.RegisterObject;
 end;
 
 
@@ -647,7 +617,7 @@ Function TLicensingAPI.CreateLicenseAssignmentsResource(AOwner : TComponent) : T
 
 begin
   Result:=TLicenseAssignmentsResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

File diff suppressed because it is too large
+ 618 - 277
packages/googleapi/src/googlelogging.pp


File diff suppressed because it is too large
+ 247 - 406
packages/googleapi/src/googlemanager.pp


File diff suppressed because it is too large
+ 256 - 437
packages/googleapi/src/googlemapsengine.pp


File diff suppressed because it is too large
+ 337 - 575
packages/googleapi/src/googlemirror.pp


+ 3702 - 0
packages/googleapi/src/googlemonitoring.pp

@@ -0,0 +1,3702 @@
+unit googlemonitoring;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TCreateCollectdTimeSeriesRequest = Class;
+  TMonitoredResource = Class;
+  TCollectdPayload = Class;
+  TCollectdValue = Class;
+  TTypedValue = Class;
+  TDistribution = Class;
+  TRange = Class;
+  TBucketOptions = Class;
+  TLinear = Class;
+  TExponential = Class;
+  TExplicit = Class;
+  TEmpty = Class;
+  TListGroupsResponse = Class;
+  TGroup = Class;
+  TListGroupMembersResponse = Class;
+  TListMonitoredResourceDescriptorsResponse = Class;
+  TMonitoredResourceDescriptor = Class;
+  TLabelDescriptor = Class;
+  TListMetricDescriptorsResponse = Class;
+  TMetricDescriptor = Class;
+  TListTimeSeriesResponse = Class;
+  TTimeSeries = Class;
+  TMetric = Class;
+  TPoint = Class;
+  TTimeInterval = Class;
+  TCreateTimeSeriesRequest = Class;
+  TType = Class;
+  TField = Class;
+  TOption = Class;
+  TSourceContext = Class;
+  TCreateCollectdTimeSeriesRequestArray = Array of TCreateCollectdTimeSeriesRequest;
+  TMonitoredResourceArray = Array of TMonitoredResource;
+  TCollectdPayloadArray = Array of TCollectdPayload;
+  TCollectdValueArray = Array of TCollectdValue;
+  TTypedValueArray = Array of TTypedValue;
+  TDistributionArray = Array of TDistribution;
+  TRangeArray = Array of TRange;
+  TBucketOptionsArray = Array of TBucketOptions;
+  TLinearArray = Array of TLinear;
+  TExponentialArray = Array of TExponential;
+  TExplicitArray = Array of TExplicit;
+  TEmptyArray = Array of TEmpty;
+  TListGroupsResponseArray = Array of TListGroupsResponse;
+  TGroupArray = Array of TGroup;
+  TListGroupMembersResponseArray = Array of TListGroupMembersResponse;
+  TListMonitoredResourceDescriptorsResponseArray = Array of TListMonitoredResourceDescriptorsResponse;
+  TMonitoredResourceDescriptorArray = Array of TMonitoredResourceDescriptor;
+  TLabelDescriptorArray = Array of TLabelDescriptor;
+  TListMetricDescriptorsResponseArray = Array of TListMetricDescriptorsResponse;
+  TMetricDescriptorArray = Array of TMetricDescriptor;
+  TListTimeSeriesResponseArray = Array of TListTimeSeriesResponse;
+  TTimeSeriesArray = Array of TTimeSeries;
+  TMetricArray = Array of TMetric;
+  TPointArray = Array of TPoint;
+  TTimeIntervalArray = Array of TTimeInterval;
+  TCreateTimeSeriesRequestArray = Array of TCreateTimeSeriesRequest;
+  TTypeArray = Array of TType;
+  TFieldArray = Array of TField;
+  TOptionArray = Array of TOption;
+  TSourceContextArray = Array of TSourceContext;
+  //Anonymous types, using auto-generated names
+  TMonitoredResourceTypelabels = Class;
+  TCollectdPayloadTypemetadata = Class;
+  TMetricTypelabels = Class;
+  TOptionTypevalue = Class;
+  TCreateCollectdTimeSeriesRequestTypecollectdPayloadsArray = Array of TCollectdPayload;
+  TCollectdPayloadTypevaluesArray = Array of TCollectdValue;
+  TListGroupsResponseTypegroupArray = Array of TGroup;
+  TListGroupMembersResponseTypemembersArray = Array of TMonitoredResource;
+  TListMonitoredResourceDescriptorsResponseTyperesourceDescriptorsArray = Array of TMonitoredResourceDescriptor;
+  TMonitoredResourceDescriptorTypelabelsArray = Array of TLabelDescriptor;
+  TListMetricDescriptorsResponseTypemetricDescriptorsArray = Array of TMetricDescriptor;
+  TMetricDescriptorTypelabelsArray = Array of TLabelDescriptor;
+  TListTimeSeriesResponseTypetimeSeriesArray = Array of TTimeSeries;
+  TTimeSeriesTypepointsArray = Array of TPoint;
+  TCreateTimeSeriesRequestTypetimeSeriesArray = Array of TTimeSeries;
+  TTypeTypefieldsArray = Array of TField;
+  TTypeTypeoptionsArray = Array of TOption;
+  TFieldTypeoptionsArray = Array of TOption;
+  
+  { --------------------------------------------------------------------
+    TCreateCollectdTimeSeriesRequest
+    --------------------------------------------------------------------}
+  
+  TCreateCollectdTimeSeriesRequest = Class(TGoogleBaseObject)
+  Private
+    Fresource : TMonitoredResource;
+    FcollectdVersion : String;
+    FcollectdPayloads : TCreateCollectdTimeSeriesRequestTypecollectdPayloadsArray;
+  Protected
+    //Property setters
+    Procedure Setresource(AIndex : Integer; const AValue : TMonitoredResource); virtual;
+    Procedure SetcollectdVersion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcollectdPayloads(AIndex : Integer; const AValue : TCreateCollectdTimeSeriesRequestTypecollectdPayloadsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property resource : TMonitoredResource Index 0 Read Fresource Write Setresource;
+    Property collectdVersion : String Index 8 Read FcollectdVersion Write SetcollectdVersion;
+    Property collectdPayloads : TCreateCollectdTimeSeriesRequestTypecollectdPayloadsArray Index 16 Read FcollectdPayloads Write SetcollectdPayloads;
+  end;
+  TCreateCollectdTimeSeriesRequestClass = Class of TCreateCollectdTimeSeriesRequest;
+  
+  { --------------------------------------------------------------------
+    TMonitoredResourceTypelabels
+    --------------------------------------------------------------------}
+  
+  TMonitoredResourceTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TMonitoredResourceTypelabelsClass = Class of TMonitoredResourceTypelabels;
+  
+  { --------------------------------------------------------------------
+    TMonitoredResource
+    --------------------------------------------------------------------}
+  
+  TMonitoredResource = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Flabels : TMonitoredResourceTypelabels;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TMonitoredResourceTypelabels); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property labels : TMonitoredResourceTypelabels Index 8 Read Flabels Write Setlabels;
+  end;
+  TMonitoredResourceClass = Class of TMonitoredResource;
+  
+  { --------------------------------------------------------------------
+    TCollectdPayloadTypemetadata
+    --------------------------------------------------------------------}
+  
+  TCollectdPayloadTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TCollectdPayloadTypemetadataClass = Class of TCollectdPayloadTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TCollectdPayload
+    --------------------------------------------------------------------}
+  
+  TCollectdPayload = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TCollectdPayloadTypevaluesArray;
+    FstartTime : String;
+    FendTime : String;
+    Fplugin : String;
+    FpluginInstance : String;
+    F_type : String;
+    FtypeInstance : String;
+    Fmetadata : TCollectdPayloadTypemetadata;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TCollectdPayloadTypevaluesArray); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setplugin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpluginInstance(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettypeInstance(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TCollectdPayloadTypemetadata); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property values : TCollectdPayloadTypevaluesArray Index 0 Read Fvalues Write Setvalues;
+    Property startTime : String Index 8 Read FstartTime Write SetstartTime;
+    Property endTime : String Index 16 Read FendTime Write SetendTime;
+    Property plugin : String Index 24 Read Fplugin Write Setplugin;
+    Property pluginInstance : String Index 32 Read FpluginInstance Write SetpluginInstance;
+    Property _type : String Index 40 Read F_type Write Set_type;
+    Property typeInstance : String Index 48 Read FtypeInstance Write SettypeInstance;
+    Property metadata : TCollectdPayloadTypemetadata Index 56 Read Fmetadata Write Setmetadata;
+  end;
+  TCollectdPayloadClass = Class of TCollectdPayload;
+  
+  { --------------------------------------------------------------------
+    TCollectdValue
+    --------------------------------------------------------------------}
+  
+  TCollectdValue = Class(TGoogleBaseObject)
+  Private
+    FdataSourceName : String;
+    FdataSourceType : String;
+    Fvalue : TTypedValue;
+  Protected
+    //Property setters
+    Procedure SetdataSourceName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdataSourceType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : TTypedValue); virtual;
+  Public
+  Published
+    Property dataSourceName : String Index 0 Read FdataSourceName Write SetdataSourceName;
+    Property dataSourceType : String Index 8 Read FdataSourceType Write SetdataSourceType;
+    Property value : TTypedValue Index 16 Read Fvalue Write Setvalue;
+  end;
+  TCollectdValueClass = Class of TCollectdValue;
+  
+  { --------------------------------------------------------------------
+    TTypedValue
+    --------------------------------------------------------------------}
+  
+  TTypedValue = Class(TGoogleBaseObject)
+  Private
+    FboolValue : boolean;
+    Fint64Value : String;
+    FdoubleValue : double;
+    FstringValue : String;
+    FdistributionValue : TDistribution;
+  Protected
+    //Property setters
+    Procedure SetboolValue(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setint64Value(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdoubleValue(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetstringValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdistributionValue(AIndex : Integer; const AValue : TDistribution); virtual;
+  Public
+  Published
+    Property boolValue : boolean Index 0 Read FboolValue Write SetboolValue;
+    Property int64Value : String Index 8 Read Fint64Value Write Setint64Value;
+    Property doubleValue : double Index 16 Read FdoubleValue Write SetdoubleValue;
+    Property stringValue : String Index 24 Read FstringValue Write SetstringValue;
+    Property distributionValue : TDistribution Index 32 Read FdistributionValue Write SetdistributionValue;
+  end;
+  TTypedValueClass = Class of TTypedValue;
+  
+  { --------------------------------------------------------------------
+    TDistribution
+    --------------------------------------------------------------------}
+  
+  TDistribution = Class(TGoogleBaseObject)
+  Private
+    Fcount : String;
+    Fmean : double;
+    FsumOfSquaredDeviation : double;
+    Frange : TRange;
+    FbucketOptions : TBucketOptions;
+    FbucketCounts : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmean(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetsumOfSquaredDeviation(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TRange); virtual;
+    Procedure SetbucketOptions(AIndex : Integer; const AValue : TBucketOptions); virtual;
+    Procedure SetbucketCounts(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property count : String Index 0 Read Fcount Write Setcount;
+    Property mean : double Index 8 Read Fmean Write Setmean;
+    Property sumOfSquaredDeviation : double Index 16 Read FsumOfSquaredDeviation Write SetsumOfSquaredDeviation;
+    Property range : TRange Index 24 Read Frange Write Setrange;
+    Property bucketOptions : TBucketOptions Index 32 Read FbucketOptions Write SetbucketOptions;
+    Property bucketCounts : TStringArray Index 40 Read FbucketCounts Write SetbucketCounts;
+  end;
+  TDistributionClass = Class of TDistribution;
+  
+  { --------------------------------------------------------------------
+    TRange
+    --------------------------------------------------------------------}
+  
+  TRange = Class(TGoogleBaseObject)
+  Private
+    Fmin : double;
+    Fmax : double;
+  Protected
+    //Property setters
+    Procedure Setmin(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setmax(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property min : double Index 0 Read Fmin Write Setmin;
+    Property max : double Index 8 Read Fmax Write Setmax;
+  end;
+  TRangeClass = Class of TRange;
+  
+  { --------------------------------------------------------------------
+    TBucketOptions
+    --------------------------------------------------------------------}
+  
+  TBucketOptions = Class(TGoogleBaseObject)
+  Private
+    FlinearBuckets : TLinear;
+    FexponentialBuckets : TExponential;
+    FexplicitBuckets : TExplicit;
+  Protected
+    //Property setters
+    Procedure SetlinearBuckets(AIndex : Integer; const AValue : TLinear); virtual;
+    Procedure SetexponentialBuckets(AIndex : Integer; const AValue : TExponential); virtual;
+    Procedure SetexplicitBuckets(AIndex : Integer; const AValue : TExplicit); virtual;
+  Public
+  Published
+    Property linearBuckets : TLinear Index 0 Read FlinearBuckets Write SetlinearBuckets;
+    Property exponentialBuckets : TExponential Index 8 Read FexponentialBuckets Write SetexponentialBuckets;
+    Property explicitBuckets : TExplicit Index 16 Read FexplicitBuckets Write SetexplicitBuckets;
+  end;
+  TBucketOptionsClass = Class of TBucketOptions;
+  
+  { --------------------------------------------------------------------
+    TLinear
+    --------------------------------------------------------------------}
+  
+  TLinear = Class(TGoogleBaseObject)
+  Private
+    FnumFiniteBuckets : integer;
+    Fwidth : double;
+    Foffset : double;
+  Protected
+    //Property setters
+    Procedure SetnumFiniteBuckets(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setoffset(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property numFiniteBuckets : integer Index 0 Read FnumFiniteBuckets Write SetnumFiniteBuckets;
+    Property width : double Index 8 Read Fwidth Write Setwidth;
+    Property offset : double Index 16 Read Foffset Write Setoffset;
+  end;
+  TLinearClass = Class of TLinear;
+  
+  { --------------------------------------------------------------------
+    TExponential
+    --------------------------------------------------------------------}
+  
+  TExponential = Class(TGoogleBaseObject)
+  Private
+    FnumFiniteBuckets : integer;
+    FgrowthFactor : double;
+    Fscale : double;
+  Protected
+    //Property setters
+    Procedure SetnumFiniteBuckets(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetgrowthFactor(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setscale(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property numFiniteBuckets : integer Index 0 Read FnumFiniteBuckets Write SetnumFiniteBuckets;
+    Property growthFactor : double Index 8 Read FgrowthFactor Write SetgrowthFactor;
+    Property scale : double Index 16 Read Fscale Write Setscale;
+  end;
+  TExponentialClass = Class of TExponential;
+  
+  { --------------------------------------------------------------------
+    TExplicit
+    --------------------------------------------------------------------}
+  
+  TExplicit = Class(TGoogleBaseObject)
+  Private
+    Fbounds : TdoubleArray;
+  Protected
+    //Property setters
+    Procedure Setbounds(AIndex : Integer; const AValue : TdoubleArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property bounds : TdoubleArray Index 0 Read Fbounds Write Setbounds;
+  end;
+  TExplicitClass = Class of TExplicit;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListGroupsResponse
+    --------------------------------------------------------------------}
+  
+  TListGroupsResponse = Class(TGoogleBaseObject)
+  Private
+    Fgroup : TListGroupsResponseTypegroupArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setgroup(AIndex : Integer; const AValue : TListGroupsResponseTypegroupArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property group : TListGroupsResponseTypegroupArray Index 0 Read Fgroup Write Setgroup;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListGroupsResponseClass = Class of TListGroupsResponse;
+  
+  { --------------------------------------------------------------------
+    TGroup
+    --------------------------------------------------------------------}
+  
+  TGroup = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    FdisplayName : String;
+    FparentName : String;
+    Ffilter : String;
+    FisCluster : boolean;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetparentName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfilter(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetisCluster(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property parentName : String Index 16 Read FparentName Write SetparentName;
+    Property filter : String Index 24 Read Ffilter Write Setfilter;
+    Property isCluster : boolean Index 32 Read FisCluster Write SetisCluster;
+  end;
+  TGroupClass = Class of TGroup;
+  
+  { --------------------------------------------------------------------
+    TListGroupMembersResponse
+    --------------------------------------------------------------------}
+  
+  TListGroupMembersResponse = Class(TGoogleBaseObject)
+  Private
+    Fmembers : TListGroupMembersResponseTypemembersArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure Setmembers(AIndex : Integer; const AValue : TListGroupMembersResponseTypemembersArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property members : TListGroupMembersResponseTypemembersArray Index 0 Read Fmembers Write Setmembers;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListGroupMembersResponseClass = Class of TListGroupMembersResponse;
+  
+  { --------------------------------------------------------------------
+    TListMonitoredResourceDescriptorsResponse
+    --------------------------------------------------------------------}
+  
+  TListMonitoredResourceDescriptorsResponse = Class(TGoogleBaseObject)
+  Private
+    FresourceDescriptors : TListMonitoredResourceDescriptorsResponseTyperesourceDescriptorsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetresourceDescriptors(AIndex : Integer; const AValue : TListMonitoredResourceDescriptorsResponseTyperesourceDescriptorsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property resourceDescriptors : TListMonitoredResourceDescriptorsResponseTyperesourceDescriptorsArray Index 0 Read FresourceDescriptors Write SetresourceDescriptors;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListMonitoredResourceDescriptorsResponseClass = Class of TListMonitoredResourceDescriptorsResponse;
+  
+  { --------------------------------------------------------------------
+    TMonitoredResourceDescriptor
+    --------------------------------------------------------------------}
+  
+  TMonitoredResourceDescriptor = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    F_type : String;
+    FdisplayName : String;
+    Fdescription : String;
+    Flabels : TMonitoredResourceDescriptorTypelabelsArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TMonitoredResourceDescriptorTypelabelsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property displayName : String Index 16 Read FdisplayName Write SetdisplayName;
+    Property description : String Index 24 Read Fdescription Write Setdescription;
+    Property labels : TMonitoredResourceDescriptorTypelabelsArray Index 32 Read Flabels Write Setlabels;
+  end;
+  TMonitoredResourceDescriptorClass = Class of TMonitoredResourceDescriptor;
+  
+  { --------------------------------------------------------------------
+    TLabelDescriptor
+    --------------------------------------------------------------------}
+  
+  TLabelDescriptor = Class(TGoogleBaseObject)
+  Private
+    Fkey : String;
+    FvalueType : String;
+    Fdescription : String;
+  Protected
+    //Property setters
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvalueType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property key : String Index 0 Read Fkey Write Setkey;
+    Property valueType : String Index 8 Read FvalueType Write SetvalueType;
+    Property description : String Index 16 Read Fdescription Write Setdescription;
+  end;
+  TLabelDescriptorClass = Class of TLabelDescriptor;
+  
+  { --------------------------------------------------------------------
+    TListMetricDescriptorsResponse
+    --------------------------------------------------------------------}
+  
+  TListMetricDescriptorsResponse = Class(TGoogleBaseObject)
+  Private
+    FmetricDescriptors : TListMetricDescriptorsResponseTypemetricDescriptorsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetmetricDescriptors(AIndex : Integer; const AValue : TListMetricDescriptorsResponseTypemetricDescriptorsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property metricDescriptors : TListMetricDescriptorsResponseTypemetricDescriptorsArray Index 0 Read FmetricDescriptors Write SetmetricDescriptors;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListMetricDescriptorsResponseClass = Class of TListMetricDescriptorsResponse;
+  
+  { --------------------------------------------------------------------
+    TMetricDescriptor
+    --------------------------------------------------------------------}
+  
+  TMetricDescriptor = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    F_type : String;
+    Flabels : TMetricDescriptorTypelabelsArray;
+    FmetricKind : String;
+    FvalueType : String;
+    F_unit : String;
+    Fdescription : String;
+    FdisplayName : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TMetricDescriptorTypelabelsArray); virtual;
+    Procedure SetmetricKind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvalueType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_unit(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property labels : TMetricDescriptorTypelabelsArray Index 16 Read Flabels Write Setlabels;
+    Property metricKind : String Index 24 Read FmetricKind Write SetmetricKind;
+    Property valueType : String Index 32 Read FvalueType Write SetvalueType;
+    Property _unit : String Index 40 Read F_unit Write Set_unit;
+    Property description : String Index 48 Read Fdescription Write Setdescription;
+    Property displayName : String Index 56 Read FdisplayName Write SetdisplayName;
+  end;
+  TMetricDescriptorClass = Class of TMetricDescriptor;
+  
+  { --------------------------------------------------------------------
+    TListTimeSeriesResponse
+    --------------------------------------------------------------------}
+  
+  TListTimeSeriesResponse = Class(TGoogleBaseObject)
+  Private
+    FtimeSeries : TListTimeSeriesResponseTypetimeSeriesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SettimeSeries(AIndex : Integer; const AValue : TListTimeSeriesResponseTypetimeSeriesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property timeSeries : TListTimeSeriesResponseTypetimeSeriesArray Index 0 Read FtimeSeries Write SettimeSeries;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListTimeSeriesResponseClass = Class of TListTimeSeriesResponse;
+  
+  { --------------------------------------------------------------------
+    TTimeSeries
+    --------------------------------------------------------------------}
+  
+  TTimeSeries = Class(TGoogleBaseObject)
+  Private
+    Fmetric : TMetric;
+    Fresource : TMonitoredResource;
+    FmetricKind : String;
+    FvalueType : String;
+    Fpoints : TTimeSeriesTypepointsArray;
+  Protected
+    //Property setters
+    Procedure Setmetric(AIndex : Integer; const AValue : TMetric); virtual;
+    Procedure Setresource(AIndex : Integer; const AValue : TMonitoredResource); virtual;
+    Procedure SetmetricKind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvalueType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpoints(AIndex : Integer; const AValue : TTimeSeriesTypepointsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property metric : TMetric Index 0 Read Fmetric Write Setmetric;
+    Property resource : TMonitoredResource Index 8 Read Fresource Write Setresource;
+    Property metricKind : String Index 16 Read FmetricKind Write SetmetricKind;
+    Property valueType : String Index 24 Read FvalueType Write SetvalueType;
+    Property points : TTimeSeriesTypepointsArray Index 32 Read Fpoints Write Setpoints;
+  end;
+  TTimeSeriesClass = Class of TTimeSeries;
+  
+  { --------------------------------------------------------------------
+    TMetricTypelabels
+    --------------------------------------------------------------------}
+  
+  TMetricTypelabels = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TMetricTypelabelsClass = Class of TMetricTypelabels;
+  
+  { --------------------------------------------------------------------
+    TMetric
+    --------------------------------------------------------------------}
+  
+  TMetric = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Flabels : TMetricTypelabels;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TMetricTypelabels); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property labels : TMetricTypelabels Index 8 Read Flabels Write Setlabels;
+  end;
+  TMetricClass = Class of TMetric;
+  
+  { --------------------------------------------------------------------
+    TPoint
+    --------------------------------------------------------------------}
+  
+  TPoint = Class(TGoogleBaseObject)
+  Private
+    Finterval : TTimeInterval;
+    Fvalue : TTypedValue;
+  Protected
+    //Property setters
+    Procedure Setinterval(AIndex : Integer; const AValue : TTimeInterval); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : TTypedValue); virtual;
+  Public
+  Published
+    Property interval : TTimeInterval Index 0 Read Finterval Write Setinterval;
+    Property value : TTypedValue Index 8 Read Fvalue Write Setvalue;
+  end;
+  TPointClass = Class of TPoint;
+  
+  { --------------------------------------------------------------------
+    TTimeInterval
+    --------------------------------------------------------------------}
+  
+  TTimeInterval = Class(TGoogleBaseObject)
+  Private
+    FendTime : String;
+    FstartTime : String;
+  Protected
+    //Property setters
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property endTime : String Index 0 Read FendTime Write SetendTime;
+    Property startTime : String Index 8 Read FstartTime Write SetstartTime;
+  end;
+  TTimeIntervalClass = Class of TTimeInterval;
+  
+  { --------------------------------------------------------------------
+    TCreateTimeSeriesRequest
+    --------------------------------------------------------------------}
+  
+  TCreateTimeSeriesRequest = Class(TGoogleBaseObject)
+  Private
+    FtimeSeries : TCreateTimeSeriesRequestTypetimeSeriesArray;
+  Protected
+    //Property setters
+    Procedure SettimeSeries(AIndex : Integer; const AValue : TCreateTimeSeriesRequestTypetimeSeriesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property timeSeries : TCreateTimeSeriesRequestTypetimeSeriesArray Index 0 Read FtimeSeries Write SettimeSeries;
+  end;
+  TCreateTimeSeriesRequestClass = Class of TCreateTimeSeriesRequest;
+  
+  { --------------------------------------------------------------------
+    TType
+    --------------------------------------------------------------------}
+  
+  TType = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Ffields : TTypeTypefieldsArray;
+    Foneofs : TStringArray;
+    Foptions : TTypeTypeoptionsArray;
+    FsourceContext : TSourceContext;
+    Fsyntax : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : TTypeTypefieldsArray); virtual;
+    Procedure Setoneofs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setoptions(AIndex : Integer; const AValue : TTypeTypeoptionsArray); virtual;
+    Procedure SetsourceContext(AIndex : Integer; const AValue : TSourceContext); virtual;
+    Procedure Setsyntax(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property fields : TTypeTypefieldsArray Index 8 Read Ffields Write Setfields;
+    Property oneofs : TStringArray Index 16 Read Foneofs Write Setoneofs;
+    Property options : TTypeTypeoptionsArray Index 24 Read Foptions Write Setoptions;
+    Property sourceContext : TSourceContext Index 32 Read FsourceContext Write SetsourceContext;
+    Property syntax : String Index 40 Read Fsyntax Write Setsyntax;
+  end;
+  TTypeClass = Class of TType;
+  
+  { --------------------------------------------------------------------
+    TField
+    --------------------------------------------------------------------}
+  
+  TField = Class(TGoogleBaseObject)
+  Private
+    Fkind : String;
+    Fcardinality : String;
+    Fnumber : integer;
+    Fname : String;
+    FtypeUrl : String;
+    FoneofIndex : integer;
+    F_packed : boolean;
+    Foptions : TFieldTypeoptionsArray;
+    FjsonName : String;
+    FdefaultValue : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcardinality(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnumber(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettypeUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoneofIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_packed(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setoptions(AIndex : Integer; const AValue : TFieldTypeoptionsArray); virtual;
+    Procedure SetjsonName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultValue(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property kind : String Index 0 Read Fkind Write Setkind;
+    Property cardinality : String Index 8 Read Fcardinality Write Setcardinality;
+    Property number : integer Index 16 Read Fnumber Write Setnumber;
+    Property name : String Index 24 Read Fname Write Setname;
+    Property typeUrl : String Index 32 Read FtypeUrl Write SettypeUrl;
+    Property oneofIndex : integer Index 40 Read FoneofIndex Write SetoneofIndex;
+    Property _packed : boolean Index 48 Read F_packed Write Set_packed;
+    Property options : TFieldTypeoptionsArray Index 56 Read Foptions Write Setoptions;
+    Property jsonName : String Index 64 Read FjsonName Write SetjsonName;
+    Property defaultValue : String Index 72 Read FdefaultValue Write SetdefaultValue;
+  end;
+  TFieldClass = Class of TField;
+  
+  { --------------------------------------------------------------------
+    TOptionTypevalue
+    --------------------------------------------------------------------}
+  
+  TOptionTypevalue = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOptionTypevalueClass = Class of TOptionTypevalue;
+  
+  { --------------------------------------------------------------------
+    TOption
+    --------------------------------------------------------------------}
+  
+  TOption = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fvalue : TOptionTypevalue;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : TOptionTypevalue); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property value : TOptionTypevalue Index 8 Read Fvalue Write Setvalue;
+  end;
+  TOptionClass = Class of TOption;
+  
+  { --------------------------------------------------------------------
+    TSourceContext
+    --------------------------------------------------------------------}
+  
+  TSourceContext = Class(TGoogleBaseObject)
+  Private
+    FfileName : String;
+  Protected
+    //Property setters
+    Procedure SetfileName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property fileName : String Index 0 Read FfileName Write SetfileName;
+  end;
+  TSourceContextClass = Class of TSourceContext;
+  
+  { --------------------------------------------------------------------
+    TProjectsCollectdTimeSeriesResource
+    --------------------------------------------------------------------}
+  
+  TProjectsCollectdTimeSeriesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(_name: string; aCreateCollectdTimeSeriesRequest : TCreateCollectdTimeSeriesRequest) : TEmpty;overload;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsGroupsMembersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsGroupsMembersResource, method List
+  
+  TProjectsGroupsMembersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    filter : String;
+    intervalendTime : String;
+    intervalstartTime : String;
+  end;
+  
+  TProjectsGroupsMembersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListGroupMembersResponse;
+    Function List(_name: string; AQuery : TProjectsGroupsMemberslistOptions) : TListGroupMembersResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsGroupsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsGroupsResource, method List
+  
+  TProjectsGroupsListOptions = Record
+    childrenOfGroup : String;
+    ancestorsOfGroup : String;
+    descendantsOfGroup : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsGroupsResource, method Create
+  
+  TProjectsGroupsCreateOptions = Record
+    validateOnly : boolean;
+  end;
+  
+  
+  //Optional query Options for TProjectsGroupsResource, method Update
+  
+  TProjectsGroupsUpdateOptions = Record
+    validateOnly : boolean;
+  end;
+  
+  TProjectsGroupsResource = Class(TGoogleResource)
+  Private
+    FMembersInstance : TProjectsGroupsMembersResource;
+    Function GetMembersInstance : TProjectsGroupsMembersResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListGroupsResponse;
+    Function List(_name: string; AQuery : TProjectsGroupslistOptions) : TListGroupsResponse;
+    Function Get(_name: string) : TGroup;
+    Function Create(_name: string; aGroup : TGroup; AQuery : string  = '') : TGroup;overload;
+    Function Create(_name: string; aGroup : TGroup; AQuery : TProjectsGroupscreateOptions) : TGroup;overload;
+    Function Update(_name: string; aGroup : TGroup; AQuery : string  = '') : TGroup;
+    Function Update(_name: string; aGroup : TGroup; AQuery : TProjectsGroupsupdateOptions) : TGroup;
+    Function Delete(_name: string) : TEmpty;
+    Function CreateMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;virtual;overload;
+    Function CreateMembersResource : TProjectsGroupsMembersResource;virtual;overload;
+    Property MembersResource : TProjectsGroupsMembersResource Read GetMembersInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsMonitoredResourceDescriptorsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsMonitoredResourceDescriptorsResource, method List
+  
+  TProjectsMonitoredResourceDescriptorsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsMonitoredResourceDescriptorsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListMonitoredResourceDescriptorsResponse;
+    Function List(_name: string; AQuery : TProjectsMonitoredResourceDescriptorslistOptions) : TListMonitoredResourceDescriptorsResponse;
+    Function Get(_name: string) : TMonitoredResourceDescriptor;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsMetricDescriptorsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsMetricDescriptorsResource, method List
+  
+  TProjectsMetricDescriptorsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsMetricDescriptorsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListMetricDescriptorsResponse;
+    Function List(_name: string; AQuery : TProjectsMetricDescriptorslistOptions) : TListMetricDescriptorsResponse;
+    Function Get(_name: string) : TMetricDescriptor;
+    Function Create(_name: string; aMetricDescriptor : TMetricDescriptor) : TMetricDescriptor;overload;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsTimeSeriesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsTimeSeriesResource, method List
+  
+  TProjectsTimeSeriesListOptions = Record
+    filter : String;
+    intervalendTime : String;
+    intervalstartTime : String;
+    aggregationalignmentPeriod : String;
+    aggregationperSeriesAligner : String;
+    aggregationcrossSeriesReducer : String;
+    aggregationgroupByFields : String;
+    orderBy : String;
+    view : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsTimeSeriesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_name: string; AQuery : string  = '') : TListTimeSeriesResponse;
+    Function List(_name: string; AQuery : TProjectsTimeSerieslistOptions) : TListTimeSeriesResponse;
+    Function Create(_name: string; aCreateTimeSeriesRequest : TCreateTimeSeriesRequest) : TEmpty;overload;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;
+    FGroupsMembersInstance : TProjectsGroupsMembersResource;
+    FGroupsInstance : TProjectsGroupsResource;
+    FMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;
+    FMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;
+    FTimeSeriesInstance : TProjectsTimeSeriesResource;
+    Function GetCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;virtual;
+    Function GetGroupsMembersInstance : TProjectsGroupsMembersResource;virtual;
+    Function GetGroupsInstance : TProjectsGroupsResource;virtual;
+    Function GetMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;virtual;
+    Function GetMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;virtual;
+    Function GetTimeSeriesInstance : TProjectsTimeSeriesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateCollectdTimeSeriesResource(AOwner : TComponent) : TProjectsCollectdTimeSeriesResource;virtual;overload;
+    Function CreateCollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource;virtual;overload;
+    Function CreateGroupsMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;virtual;overload;
+    Function CreateGroupsMembersResource : TProjectsGroupsMembersResource;virtual;overload;
+    Function CreateGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;virtual;overload;
+    Function CreateGroupsResource : TProjectsGroupsResource;virtual;overload;
+    Function CreateMonitoredResourceDescriptorsResource(AOwner : TComponent) : TProjectsMonitoredResourceDescriptorsResource;virtual;overload;
+    Function CreateMonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource;virtual;overload;
+    Function CreateMetricDescriptorsResource(AOwner : TComponent) : TProjectsMetricDescriptorsResource;virtual;overload;
+    Function CreateMetricDescriptorsResource : TProjectsMetricDescriptorsResource;virtual;overload;
+    Function CreateTimeSeriesResource(AOwner : TComponent) : TProjectsTimeSeriesResource;virtual;overload;
+    Function CreateTimeSeriesResource : TProjectsTimeSeriesResource;virtual;overload;
+    Property CollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource Read GetCollectdTimeSeriesInstance;
+    Property GroupsMembersResource : TProjectsGroupsMembersResource Read GetGroupsMembersInstance;
+    Property GroupsResource : TProjectsGroupsResource Read GetGroupsInstance;
+    Property MonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource Read GetMonitoredResourceDescriptorsInstance;
+    Property MetricDescriptorsResource : TProjectsMetricDescriptorsResource Read GetMetricDescriptorsInstance;
+    Property TimeSeriesResource : TProjectsTimeSeriesResource Read GetTimeSeriesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TMonitoringAPI
+    --------------------------------------------------------------------}
+  
+  TMonitoringAPI = Class(TGoogleAPI)
+  Private
+    FProjectsCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;
+    FProjectsGroupsMembersInstance : TProjectsGroupsMembersResource;
+    FProjectsGroupsInstance : TProjectsGroupsResource;
+    FProjectsMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;
+    FProjectsMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;
+    FProjectsTimeSeriesInstance : TProjectsTimeSeriesResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;virtual;
+    Function GetProjectsGroupsMembersInstance : TProjectsGroupsMembersResource;virtual;
+    Function GetProjectsGroupsInstance : TProjectsGroupsResource;virtual;
+    Function GetProjectsMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;virtual;
+    Function GetProjectsMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;virtual;
+    Function GetProjectsTimeSeriesInstance : TProjectsTimeSeriesResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsCollectdTimeSeriesResource(AOwner : TComponent) : TProjectsCollectdTimeSeriesResource;virtual;overload;
+    Function CreateProjectsCollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource;virtual;overload;
+    Function CreateProjectsGroupsMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;virtual;overload;
+    Function CreateProjectsGroupsMembersResource : TProjectsGroupsMembersResource;virtual;overload;
+    Function CreateProjectsGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;virtual;overload;
+    Function CreateProjectsGroupsResource : TProjectsGroupsResource;virtual;overload;
+    Function CreateProjectsMonitoredResourceDescriptorsResource(AOwner : TComponent) : TProjectsMonitoredResourceDescriptorsResource;virtual;overload;
+    Function CreateProjectsMonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource;virtual;overload;
+    Function CreateProjectsMetricDescriptorsResource(AOwner : TComponent) : TProjectsMetricDescriptorsResource;virtual;overload;
+    Function CreateProjectsMetricDescriptorsResource : TProjectsMetricDescriptorsResource;virtual;overload;
+    Function CreateProjectsTimeSeriesResource(AOwner : TComponent) : TProjectsTimeSeriesResource;virtual;overload;
+    Function CreateProjectsTimeSeriesResource : TProjectsTimeSeriesResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsCollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource Read GetProjectsCollectdTimeSeriesInstance;
+    Property ProjectsGroupsMembersResource : TProjectsGroupsMembersResource Read GetProjectsGroupsMembersInstance;
+    Property ProjectsGroupsResource : TProjectsGroupsResource Read GetProjectsGroupsInstance;
+    Property ProjectsMonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource Read GetProjectsMonitoredResourceDescriptorsInstance;
+    Property ProjectsMetricDescriptorsResource : TProjectsMetricDescriptorsResource Read GetProjectsMetricDescriptorsInstance;
+    Property ProjectsTimeSeriesResource : TProjectsTimeSeriesResource Read GetProjectsTimeSeriesInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TCreateCollectdTimeSeriesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateCollectdTimeSeriesRequest.Setresource(AIndex : Integer; const AValue : TMonitoredResource); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateCollectdTimeSeriesRequest.SetcollectdVersion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcollectdVersion=AValue) then exit;
+  FcollectdVersion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateCollectdTimeSeriesRequest.SetcollectdPayloads(AIndex : Integer; const AValue : TCreateCollectdTimeSeriesRequestTypecollectdPayloadsArray); 
+
+begin
+  If (FcollectdPayloads=AValue) then exit;
+  FcollectdPayloads:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCreateCollectdTimeSeriesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'collectdpayloads' : SetLength(FcollectdPayloads,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMonitoredResourceTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TMonitoredResourceTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TMonitoredResource
+  --------------------------------------------------------------------}
+
+
+Procedure TMonitoredResource.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMonitoredResource.Setlabels(AIndex : Integer; const AValue : TMonitoredResourceTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMonitoredResource.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TCollectdPayloadTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TCollectdPayloadTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCollectdPayload
+  --------------------------------------------------------------------}
+
+
+Procedure TCollectdPayload.Setvalues(AIndex : Integer; const AValue : TCollectdPayloadTypevaluesArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.Setplugin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fplugin=AValue) then exit;
+  Fplugin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.SetpluginInstance(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpluginInstance=AValue) then exit;
+  FpluginInstance:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.SettypeInstance(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtypeInstance=AValue) then exit;
+  FtypeInstance:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdPayload.Setmetadata(AIndex : Integer; const AValue : TCollectdPayloadTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TCollectdPayload.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCollectdPayload.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCollectdValue
+  --------------------------------------------------------------------}
+
+
+Procedure TCollectdValue.SetdataSourceName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdataSourceName=AValue) then exit;
+  FdataSourceName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdValue.SetdataSourceType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdataSourceType=AValue) then exit;
+  FdataSourceType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCollectdValue.Setvalue(AIndex : Integer; const AValue : TTypedValue); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTypedValue
+  --------------------------------------------------------------------}
+
+
+Procedure TTypedValue.SetboolValue(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FboolValue=AValue) then exit;
+  FboolValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTypedValue.Setint64Value(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fint64Value=AValue) then exit;
+  Fint64Value:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTypedValue.SetdoubleValue(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FdoubleValue=AValue) then exit;
+  FdoubleValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTypedValue.SetstringValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstringValue=AValue) then exit;
+  FstringValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTypedValue.SetdistributionValue(AIndex : Integer; const AValue : TDistribution); 
+
+begin
+  If (FdistributionValue=AValue) then exit;
+  FdistributionValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDistribution
+  --------------------------------------------------------------------}
+
+
+Procedure TDistribution.Setcount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcount=AValue) then exit;
+  Fcount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDistribution.Setmean(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fmean=AValue) then exit;
+  Fmean:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDistribution.SetsumOfSquaredDeviation(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FsumOfSquaredDeviation=AValue) then exit;
+  FsumOfSquaredDeviation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDistribution.Setrange(AIndex : Integer; const AValue : TRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDistribution.SetbucketOptions(AIndex : Integer; const AValue : TBucketOptions); 
+
+begin
+  If (FbucketOptions=AValue) then exit;
+  FbucketOptions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDistribution.SetbucketCounts(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FbucketCounts=AValue) then exit;
+  FbucketCounts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDistribution.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'bucketcounts' : SetLength(FbucketCounts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRange
+  --------------------------------------------------------------------}
+
+
+Procedure TRange.Setmin(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fmin=AValue) then exit;
+  Fmin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRange.Setmax(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fmax=AValue) then exit;
+  Fmax:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBucketOptions
+  --------------------------------------------------------------------}
+
+
+Procedure TBucketOptions.SetlinearBuckets(AIndex : Integer; const AValue : TLinear); 
+
+begin
+  If (FlinearBuckets=AValue) then exit;
+  FlinearBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBucketOptions.SetexponentialBuckets(AIndex : Integer; const AValue : TExponential); 
+
+begin
+  If (FexponentialBuckets=AValue) then exit;
+  FexponentialBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBucketOptions.SetexplicitBuckets(AIndex : Integer; const AValue : TExplicit); 
+
+begin
+  If (FexplicitBuckets=AValue) then exit;
+  FexplicitBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLinear
+  --------------------------------------------------------------------}
+
+
+Procedure TLinear.SetnumFiniteBuckets(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumFiniteBuckets=AValue) then exit;
+  FnumFiniteBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinear.Setwidth(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLinear.Setoffset(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Foffset=AValue) then exit;
+  Foffset:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TExponential
+  --------------------------------------------------------------------}
+
+
+Procedure TExponential.SetnumFiniteBuckets(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumFiniteBuckets=AValue) then exit;
+  FnumFiniteBuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExponential.SetgrowthFactor(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FgrowthFactor=AValue) then exit;
+  FgrowthFactor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExponential.Setscale(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fscale=AValue) then exit;
+  Fscale:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TExplicit
+  --------------------------------------------------------------------}
+
+
+Procedure TExplicit.Setbounds(AIndex : Integer; const AValue : TdoubleArray); 
+
+begin
+  If (Fbounds=AValue) then exit;
+  Fbounds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TExplicit.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'bounds' : SetLength(Fbounds,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListGroupsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListGroupsResponse.Setgroup(AIndex : Integer; const AValue : TListGroupsResponseTypegroupArray); 
+
+begin
+  If (Fgroup=AValue) then exit;
+  Fgroup:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListGroupsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListGroupsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'group' : SetLength(Fgroup,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TGroup.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.SetparentName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FparentName=AValue) then exit;
+  FparentName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.Setfilter(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGroup.SetisCluster(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisCluster=AValue) then exit;
+  FisCluster:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListGroupMembersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListGroupMembersResponse.Setmembers(AIndex : Integer; const AValue : TListGroupMembersResponseTypemembersArray); 
+
+begin
+  If (Fmembers=AValue) then exit;
+  Fmembers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListGroupMembersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListGroupMembersResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListGroupMembersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'members' : SetLength(Fmembers,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListMonitoredResourceDescriptorsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListMonitoredResourceDescriptorsResponse.SetresourceDescriptors(AIndex : Integer; const AValue : TListMonitoredResourceDescriptorsResponseTyperesourceDescriptorsArray); 
+
+begin
+  If (FresourceDescriptors=AValue) then exit;
+  FresourceDescriptors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListMonitoredResourceDescriptorsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListMonitoredResourceDescriptorsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'resourcedescriptors' : SetLength(FresourceDescriptors,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMonitoredResourceDescriptor
+  --------------------------------------------------------------------}
+
+
+Procedure TMonitoredResourceDescriptor.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMonitoredResourceDescriptor.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMonitoredResourceDescriptor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMonitoredResourceDescriptor.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMonitoredResourceDescriptor.Setlabels(AIndex : Integer; const AValue : TMonitoredResourceDescriptorTypelabelsArray); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMonitoredResourceDescriptor.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMonitoredResourceDescriptor.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'labels' : SetLength(Flabels,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLabelDescriptor
+  --------------------------------------------------------------------}
+
+
+Procedure TLabelDescriptor.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLabelDescriptor.SetvalueType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalueType=AValue) then exit;
+  FvalueType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLabelDescriptor.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListMetricDescriptorsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListMetricDescriptorsResponse.SetmetricDescriptors(AIndex : Integer; const AValue : TListMetricDescriptorsResponseTypemetricDescriptorsArray); 
+
+begin
+  If (FmetricDescriptors=AValue) then exit;
+  FmetricDescriptors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListMetricDescriptorsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListMetricDescriptorsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'metricdescriptors' : SetLength(FmetricDescriptors,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricDescriptor
+  --------------------------------------------------------------------}
+
+
+Procedure TMetricDescriptor.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.Setlabels(AIndex : Integer; const AValue : TMetricDescriptorTypelabelsArray); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.SetmetricKind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmetricKind=AValue) then exit;
+  FmetricKind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.SetvalueType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalueType=AValue) then exit;
+  FvalueType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.Set_unit(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_unit=AValue) then exit;
+  F_unit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetricDescriptor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMetricDescriptor.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  '_unit' : Result:='unit';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMetricDescriptor.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'labels' : SetLength(Flabels,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListTimeSeriesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListTimeSeriesResponse.SettimeSeries(AIndex : Integer; const AValue : TListTimeSeriesResponseTypetimeSeriesArray); 
+
+begin
+  If (FtimeSeries=AValue) then exit;
+  FtimeSeries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListTimeSeriesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListTimeSeriesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'timeseries' : SetLength(FtimeSeries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimeSeries
+  --------------------------------------------------------------------}
+
+
+Procedure TTimeSeries.Setmetric(AIndex : Integer; const AValue : TMetric); 
+
+begin
+  If (Fmetric=AValue) then exit;
+  Fmetric:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeSeries.Setresource(AIndex : Integer; const AValue : TMonitoredResource); 
+
+begin
+  If (Fresource=AValue) then exit;
+  Fresource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeSeries.SetmetricKind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmetricKind=AValue) then exit;
+  FmetricKind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeSeries.SetvalueType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalueType=AValue) then exit;
+  FvalueType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeSeries.Setpoints(AIndex : Integer; const AValue : TTimeSeriesTypepointsArray); 
+
+begin
+  If (Fpoints=AValue) then exit;
+  Fpoints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTimeSeries.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'points' : SetLength(Fpoints,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetricTypelabels
+  --------------------------------------------------------------------}
+
+
+Class Function TMetricTypelabels.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TMetric
+  --------------------------------------------------------------------}
+
+
+Procedure TMetric.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetric.Setlabels(AIndex : Integer; const AValue : TMetricTypelabels); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMetric.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPoint
+  --------------------------------------------------------------------}
+
+
+Procedure TPoint.Setinterval(AIndex : Integer; const AValue : TTimeInterval); 
+
+begin
+  If (Finterval=AValue) then exit;
+  Finterval:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPoint.Setvalue(AIndex : Integer; const AValue : TTypedValue); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimeInterval
+  --------------------------------------------------------------------}
+
+
+Procedure TTimeInterval.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeInterval.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCreateTimeSeriesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateTimeSeriesRequest.SettimeSeries(AIndex : Integer; const AValue : TCreateTimeSeriesRequestTypetimeSeriesArray); 
+
+begin
+  If (FtimeSeries=AValue) then exit;
+  FtimeSeries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCreateTimeSeriesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'timeseries' : SetLength(FtimeSeries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TType
+  --------------------------------------------------------------------}
+
+
+Procedure TType.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TType.Setfields(AIndex : Integer; const AValue : TTypeTypefieldsArray); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TType.Setoneofs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Foneofs=AValue) then exit;
+  Foneofs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TType.Setoptions(AIndex : Integer; const AValue : TTypeTypeoptionsArray); 
+
+begin
+  If (Foptions=AValue) then exit;
+  Foptions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TType.SetsourceContext(AIndex : Integer; const AValue : TSourceContext); 
+
+begin
+  If (FsourceContext=AValue) then exit;
+  FsourceContext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TType.Setsyntax(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsyntax=AValue) then exit;
+  Fsyntax:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TType.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'fields' : SetLength(Ffields,ALength);
+  'oneofs' : SetLength(Foneofs,ALength);
+  'options' : SetLength(Foptions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TField
+  --------------------------------------------------------------------}
+
+
+Procedure TField.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.Setcardinality(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcardinality=AValue) then exit;
+  Fcardinality:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.Setnumber(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnumber=AValue) then exit;
+  Fnumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.SettypeUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtypeUrl=AValue) then exit;
+  FtypeUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.SetoneofIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FoneofIndex=AValue) then exit;
+  FoneofIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.Set_packed(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_packed=AValue) then exit;
+  F_packed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.Setoptions(AIndex : Integer; const AValue : TFieldTypeoptionsArray); 
+
+begin
+  If (Foptions=AValue) then exit;
+  Foptions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.SetjsonName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FjsonName=AValue) then exit;
+  FjsonName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TField.SetdefaultValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultValue=AValue) then exit;
+  FdefaultValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TField.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_packed' : Result:='packed';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TField.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'options' : SetLength(Foptions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOptionTypevalue
+  --------------------------------------------------------------------}
+
+
+Class Function TOptionTypevalue.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOption
+  --------------------------------------------------------------------}
+
+
+Procedure TOption.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOption.Setvalue(AIndex : Integer; const AValue : TOptionTypevalue); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourceContext
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceContext.SetfileName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfileName=AValue) then exit;
+  FfileName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsCollectdTimeSeriesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsCollectdTimeSeriesResource.ResourceName : String;
+
+begin
+  Result:='collectdTimeSeries';
+end;
+
+Class Function TProjectsCollectdTimeSeriesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsCollectdTimeSeriesResource.Create(_name: string; aCreateCollectdTimeSeriesRequest : TCreateCollectdTimeSeriesRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v3/{+name}/collectdTimeSeries';
+  _Methodid   = 'monitoring.projects.collectdTimeSeries.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCreateCollectdTimeSeriesRequest,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsGroupsMembersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsGroupsMembersResource.ResourceName : String;
+
+begin
+  Result:='members';
+end;
+
+Class Function TProjectsGroupsMembersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsGroupsMembersResource.List(_name: string; AQuery : string = '') : TListGroupMembersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}/members';
+  _Methodid   = 'monitoring.projects.groups.members.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListGroupMembersResponse) as TListGroupMembersResponse;
+end;
+
+
+Function TProjectsGroupsMembersResource.List(_name: string; AQuery : TProjectsGroupsMemberslistOptions) : TListGroupMembersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'interval.endTime',AQuery.intervalendTime);
+  AddToQuery(_Q,'interval.startTime',AQuery.intervalstartTime);
+  Result:=List(_name,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsGroupsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsGroupsResource.ResourceName : String;
+
+begin
+  Result:='groups';
+end;
+
+Class Function TProjectsGroupsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsGroupsResource.List(_name: string; AQuery : string = '') : TListGroupsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}/groups';
+  _Methodid   = 'monitoring.projects.groups.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListGroupsResponse) as TListGroupsResponse;
+end;
+
+
+Function TProjectsGroupsResource.List(_name: string; AQuery : TProjectsGroupslistOptions) : TListGroupsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'childrenOfGroup',AQuery.childrenOfGroup);
+  AddToQuery(_Q,'ancestorsOfGroup',AQuery.ancestorsOfGroup);
+  AddToQuery(_Q,'descendantsOfGroup',AQuery.descendantsOfGroup);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsGroupsResource.Get(_name: string) : TGroup;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.groups.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TGroup) as TGroup;
+end;
+
+Function TProjectsGroupsResource.Create(_name: string; aGroup : TGroup; AQuery : string = '') : TGroup;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v3/{+name}/groups';
+  _Methodid   = 'monitoring.projects.groups.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aGroup,TGroup) as TGroup;
+end;
+
+
+Function TProjectsGroupsResource.Create(_name: string; aGroup : TGroup; AQuery : TProjectsGroupscreateOptions) : TGroup;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'validateOnly',AQuery.validateOnly);
+  Result:=Create(_name,aGroup,_Q);
+end;
+
+Function TProjectsGroupsResource.Update(_name: string; aGroup : TGroup; AQuery : string = '') : TGroup;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.groups.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aGroup,TGroup) as TGroup;
+end;
+
+
+Function TProjectsGroupsResource.Update(_name: string; aGroup : TGroup; AQuery : TProjectsGroupsupdateOptions) : TGroup;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'validateOnly',AQuery.validateOnly);
+  Result:=Update(_name,aGroup,_Q);
+end;
+
+Function TProjectsGroupsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.groups.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+Function TProjectsGroupsResource.GetMembersInstance : TProjectsGroupsMembersResource;
+
+begin
+  if (FMembersInstance=Nil) then
+    FMembersInstance:=CreateMembersResource;
+  Result:=FMembersInstance;
+end;
+
+Function TProjectsGroupsResource.CreateMembersResource : TProjectsGroupsMembersResource;
+
+begin
+  Result:=CreateMembersResource(Self);
+end;
+
+
+Function TProjectsGroupsResource.CreateMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;
+
+begin
+  Result:=TProjectsGroupsMembersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsMonitoredResourceDescriptorsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsMonitoredResourceDescriptorsResource.ResourceName : String;
+
+begin
+  Result:='monitoredResourceDescriptors';
+end;
+
+Class Function TProjectsMonitoredResourceDescriptorsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsMonitoredResourceDescriptorsResource.List(_name: string; AQuery : string = '') : TListMonitoredResourceDescriptorsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}/monitoredResourceDescriptors';
+  _Methodid   = 'monitoring.projects.monitoredResourceDescriptors.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListMonitoredResourceDescriptorsResponse) as TListMonitoredResourceDescriptorsResponse;
+end;
+
+
+Function TProjectsMonitoredResourceDescriptorsResource.List(_name: string; AQuery : TProjectsMonitoredResourceDescriptorslistOptions) : TListMonitoredResourceDescriptorsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsMonitoredResourceDescriptorsResource.Get(_name: string) : TMonitoredResourceDescriptor;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.monitoredResourceDescriptors.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TMonitoredResourceDescriptor) as TMonitoredResourceDescriptor;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsMetricDescriptorsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsMetricDescriptorsResource.ResourceName : String;
+
+begin
+  Result:='metricDescriptors';
+end;
+
+Class Function TProjectsMetricDescriptorsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsMetricDescriptorsResource.List(_name: string; AQuery : string = '') : TListMetricDescriptorsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}/metricDescriptors';
+  _Methodid   = 'monitoring.projects.metricDescriptors.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListMetricDescriptorsResponse) as TListMetricDescriptorsResponse;
+end;
+
+
+Function TProjectsMetricDescriptorsResource.List(_name: string; AQuery : TProjectsMetricDescriptorslistOptions) : TListMetricDescriptorsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsMetricDescriptorsResource.Get(_name: string) : TMetricDescriptor;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.metricDescriptors.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TMetricDescriptor) as TMetricDescriptor;
+end;
+
+Function TProjectsMetricDescriptorsResource.Create(_name: string; aMetricDescriptor : TMetricDescriptor) : TMetricDescriptor;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v3/{+name}/metricDescriptors';
+  _Methodid   = 'monitoring.projects.metricDescriptors.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aMetricDescriptor,TMetricDescriptor) as TMetricDescriptor;
+end;
+
+Function TProjectsMetricDescriptorsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v3/{+name}';
+  _Methodid   = 'monitoring.projects.metricDescriptors.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsTimeSeriesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsTimeSeriesResource.ResourceName : String;
+
+begin
+  Result:='timeSeries';
+end;
+
+Class Function TProjectsTimeSeriesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+Function TProjectsTimeSeriesResource.List(_name: string; AQuery : string = '') : TListTimeSeriesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v3/{+name}/timeSeries';
+  _Methodid   = 'monitoring.projects.timeSeries.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListTimeSeriesResponse) as TListTimeSeriesResponse;
+end;
+
+
+Function TProjectsTimeSeriesResource.List(_name: string; AQuery : TProjectsTimeSerieslistOptions) : TListTimeSeriesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'interval.endTime',AQuery.intervalendTime);
+  AddToQuery(_Q,'interval.startTime',AQuery.intervalstartTime);
+  AddToQuery(_Q,'aggregation.alignmentPeriod',AQuery.aggregationalignmentPeriod);
+  AddToQuery(_Q,'aggregation.perSeriesAligner',AQuery.aggregationperSeriesAligner);
+  AddToQuery(_Q,'aggregation.crossSeriesReducer',AQuery.aggregationcrossSeriesReducer);
+  AddToQuery(_Q,'aggregation.groupByFields',AQuery.aggregationgroupByFields);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'view',AQuery.view);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_name,_Q);
+end;
+
+Function TProjectsTimeSeriesResource.Create(_name: string; aCreateTimeSeriesRequest : TCreateTimeSeriesRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v3/{+name}/timeSeries';
+  _Methodid   = 'monitoring.projects.timeSeries.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCreateTimeSeriesRequest,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TmonitoringAPI;
+end;
+
+
+
+Function TProjectsResource.GetCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;
+
+begin
+  if (FCollectdTimeSeriesInstance=Nil) then
+    FCollectdTimeSeriesInstance:=CreateCollectdTimeSeriesResource;
+  Result:=FCollectdTimeSeriesInstance;
+end;
+
+Function TProjectsResource.CreateCollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource;
+
+begin
+  Result:=CreateCollectdTimeSeriesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateCollectdTimeSeriesResource(AOwner : TComponent) : TProjectsCollectdTimeSeriesResource;
+
+begin
+  Result:=TProjectsCollectdTimeSeriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetGroupsMembersInstance : TProjectsGroupsMembersResource;
+
+begin
+  if (FGroupsMembersInstance=Nil) then
+    FGroupsMembersInstance:=CreateGroupsMembersResource;
+  Result:=FGroupsMembersInstance;
+end;
+
+Function TProjectsResource.CreateGroupsMembersResource : TProjectsGroupsMembersResource;
+
+begin
+  Result:=CreateGroupsMembersResource(Self);
+end;
+
+
+Function TProjectsResource.CreateGroupsMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;
+
+begin
+  Result:=TProjectsGroupsMembersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetGroupsInstance : TProjectsGroupsResource;
+
+begin
+  if (FGroupsInstance=Nil) then
+    FGroupsInstance:=CreateGroupsResource;
+  Result:=FGroupsInstance;
+end;
+
+Function TProjectsResource.CreateGroupsResource : TProjectsGroupsResource;
+
+begin
+  Result:=CreateGroupsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;
+
+begin
+  Result:=TProjectsGroupsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  if (FMonitoredResourceDescriptorsInstance=Nil) then
+    FMonitoredResourceDescriptorsInstance:=CreateMonitoredResourceDescriptorsResource;
+  Result:=FMonitoredResourceDescriptorsInstance;
+end;
+
+Function TProjectsResource.CreateMonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  Result:=CreateMonitoredResourceDescriptorsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateMonitoredResourceDescriptorsResource(AOwner : TComponent) : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  Result:=TProjectsMonitoredResourceDescriptorsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;
+
+begin
+  if (FMetricDescriptorsInstance=Nil) then
+    FMetricDescriptorsInstance:=CreateMetricDescriptorsResource;
+  Result:=FMetricDescriptorsInstance;
+end;
+
+Function TProjectsResource.CreateMetricDescriptorsResource : TProjectsMetricDescriptorsResource;
+
+begin
+  Result:=CreateMetricDescriptorsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateMetricDescriptorsResource(AOwner : TComponent) : TProjectsMetricDescriptorsResource;
+
+begin
+  Result:=TProjectsMetricDescriptorsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetTimeSeriesInstance : TProjectsTimeSeriesResource;
+
+begin
+  if (FTimeSeriesInstance=Nil) then
+    FTimeSeriesInstance:=CreateTimeSeriesResource;
+  Result:=FTimeSeriesInstance;
+end;
+
+Function TProjectsResource.CreateTimeSeriesResource : TProjectsTimeSeriesResource;
+
+begin
+  Result:=CreateTimeSeriesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateTimeSeriesResource(AOwner : TComponent) : TProjectsTimeSeriesResource;
+
+begin
+  Result:=TProjectsTimeSeriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TMonitoringAPI
+  --------------------------------------------------------------------}
+
+Class Function TMonitoringAPI.APIName : String;
+
+begin
+  Result:='monitoring';
+end;
+
+Class Function TMonitoringAPI.APIVersion : String;
+
+begin
+  Result:='v3';
+end;
+
+Class Function TMonitoringAPI.APIRevision : String;
+
+begin
+  Result:='20160425';
+end;
+
+Class Function TMonitoringAPI.APIID : String;
+
+begin
+  Result:='monitoring:v3';
+end;
+
+Class Function TMonitoringAPI.APITitle : String;
+
+begin
+  Result:='Google Monitoring API';
+end;
+
+Class Function TMonitoringAPI.APIDescription : String;
+
+begin
+  Result:='Manages your Stackdriver monitoring data and configurations. Projects must be associated with a Stackdriver account, except for the following methods: [monitoredResourceDescriptors.list](v3/projects.monitoredResourceDescriptors/list), [monitoredResourceDescriptors.get](v3/projects.monitoredResourceDescriptors/get), [metricDescriptors.list](v3/projects.metricDescriptors/list), [metricDescriptors.get](v3/projects.metricDescriptors/get), and [timeSeries.list](v3/projects.timeSeries/list).';
+end;
+
+Class Function TMonitoringAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TMonitoringAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TMonitoringAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TMonitoringAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TMonitoringAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/monitoring/api/';
+end;
+
+Class Function TMonitoringAPI.APIrootUrl : string;
+
+begin
+  Result:='https://monitoring.googleapis.com/';
+end;
+
+Class Function TMonitoringAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TMonitoringAPI.APIbaseURL : String;
+
+begin
+  Result:='https://monitoring.googleapis.com/';
+end;
+
+Class Function TMonitoringAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TMonitoringAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TMonitoringAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TMonitoringAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,4);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/monitoring';
+  Result[1].Description:='View and write monitoring data for all of your Google and third-party Cloud and API projects';
+  Result[2].Name:='https://www.googleapis.com/auth/monitoring.read';
+  Result[2].Description:='View monitoring data for all of your Google Cloud and third-party projects';
+  Result[3].Name:='https://www.googleapis.com/auth/monitoring.write';
+  Result[3].Description:='Publish metric data to your Google Cloud projects';
+  
+end;
+
+Class Function TMonitoringAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TMonitoringAPI.RegisterAPIResources;
+
+begin
+  TCreateCollectdTimeSeriesRequest.RegisterObject;
+  TMonitoredResourceTypelabels.RegisterObject;
+  TMonitoredResource.RegisterObject;
+  TCollectdPayloadTypemetadata.RegisterObject;
+  TCollectdPayload.RegisterObject;
+  TCollectdValue.RegisterObject;
+  TTypedValue.RegisterObject;
+  TDistribution.RegisterObject;
+  TRange.RegisterObject;
+  TBucketOptions.RegisterObject;
+  TLinear.RegisterObject;
+  TExponential.RegisterObject;
+  TExplicit.RegisterObject;
+  TEmpty.RegisterObject;
+  TListGroupsResponse.RegisterObject;
+  TGroup.RegisterObject;
+  TListGroupMembersResponse.RegisterObject;
+  TListMonitoredResourceDescriptorsResponse.RegisterObject;
+  TMonitoredResourceDescriptor.RegisterObject;
+  TLabelDescriptor.RegisterObject;
+  TListMetricDescriptorsResponse.RegisterObject;
+  TMetricDescriptor.RegisterObject;
+  TListTimeSeriesResponse.RegisterObject;
+  TTimeSeries.RegisterObject;
+  TMetricTypelabels.RegisterObject;
+  TMetric.RegisterObject;
+  TPoint.RegisterObject;
+  TTimeInterval.RegisterObject;
+  TCreateTimeSeriesRequest.RegisterObject;
+  TType.RegisterObject;
+  TField.RegisterObject;
+  TOptionTypevalue.RegisterObject;
+  TOption.RegisterObject;
+  TSourceContext.RegisterObject;
+end;
+
+
+Function TMonitoringAPI.GetProjectsCollectdTimeSeriesInstance : TProjectsCollectdTimeSeriesResource;
+
+begin
+  if (FProjectsCollectdTimeSeriesInstance=Nil) then
+    FProjectsCollectdTimeSeriesInstance:=CreateProjectsCollectdTimeSeriesResource;
+  Result:=FProjectsCollectdTimeSeriesInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsCollectdTimeSeriesResource : TProjectsCollectdTimeSeriesResource;
+
+begin
+  Result:=CreateProjectsCollectdTimeSeriesResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsCollectdTimeSeriesResource(AOwner : TComponent) : TProjectsCollectdTimeSeriesResource;
+
+begin
+  Result:=TProjectsCollectdTimeSeriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsGroupsMembersInstance : TProjectsGroupsMembersResource;
+
+begin
+  if (FProjectsGroupsMembersInstance=Nil) then
+    FProjectsGroupsMembersInstance:=CreateProjectsGroupsMembersResource;
+  Result:=FProjectsGroupsMembersInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsGroupsMembersResource : TProjectsGroupsMembersResource;
+
+begin
+  Result:=CreateProjectsGroupsMembersResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsGroupsMembersResource(AOwner : TComponent) : TProjectsGroupsMembersResource;
+
+begin
+  Result:=TProjectsGroupsMembersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsGroupsInstance : TProjectsGroupsResource;
+
+begin
+  if (FProjectsGroupsInstance=Nil) then
+    FProjectsGroupsInstance:=CreateProjectsGroupsResource;
+  Result:=FProjectsGroupsInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsGroupsResource : TProjectsGroupsResource;
+
+begin
+  Result:=CreateProjectsGroupsResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsGroupsResource(AOwner : TComponent) : TProjectsGroupsResource;
+
+begin
+  Result:=TProjectsGroupsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsMonitoredResourceDescriptorsInstance : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  if (FProjectsMonitoredResourceDescriptorsInstance=Nil) then
+    FProjectsMonitoredResourceDescriptorsInstance:=CreateProjectsMonitoredResourceDescriptorsResource;
+  Result:=FProjectsMonitoredResourceDescriptorsInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsMonitoredResourceDescriptorsResource : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  Result:=CreateProjectsMonitoredResourceDescriptorsResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsMonitoredResourceDescriptorsResource(AOwner : TComponent) : TProjectsMonitoredResourceDescriptorsResource;
+
+begin
+  Result:=TProjectsMonitoredResourceDescriptorsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsMetricDescriptorsInstance : TProjectsMetricDescriptorsResource;
+
+begin
+  if (FProjectsMetricDescriptorsInstance=Nil) then
+    FProjectsMetricDescriptorsInstance:=CreateProjectsMetricDescriptorsResource;
+  Result:=FProjectsMetricDescriptorsInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsMetricDescriptorsResource : TProjectsMetricDescriptorsResource;
+
+begin
+  Result:=CreateProjectsMetricDescriptorsResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsMetricDescriptorsResource(AOwner : TComponent) : TProjectsMetricDescriptorsResource;
+
+begin
+  Result:=TProjectsMetricDescriptorsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsTimeSeriesInstance : TProjectsTimeSeriesResource;
+
+begin
+  if (FProjectsTimeSeriesInstance=Nil) then
+    FProjectsTimeSeriesInstance:=CreateProjectsTimeSeriesResource;
+  Result:=FProjectsTimeSeriesInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsTimeSeriesResource : TProjectsTimeSeriesResource;
+
+begin
+  Result:=CreateProjectsTimeSeriesResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsTimeSeriesResource(AOwner : TComponent) : TProjectsTimeSeriesResource;
+
+begin
+  Result:=TProjectsTimeSeriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TMonitoringAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TMonitoringAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TMonitoringAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TMonitoringAPI.RegisterAPI;
+end.

+ 374 - 163
packages/googleapi/src/googleoauth2.pp

@@ -1,31 +1,4 @@
 unit googleoauth2;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
 {$MODE objfpc}
 {$H+}
 
@@ -34,62 +7,68 @@ interface
 uses sysutils, classes, googleservice, restbase, googlebase;
 
 type
-  //
-  TJwk = class;
+  
+  //Top-level schema types
+  TJwk = Class;
+  TTokeninfo = Class;
+  TUserinfoplus = Class;
   TJwkArray = Array of TJwk;
-  TJwkkeys = class;
-  TJwkkeysArray = Array of TJwkkeys;
-  TTokeninfo = class;
   TTokeninfoArray = Array of TTokeninfo;
-  TUserinfoplus = class;
   TUserinfoplusArray = Array of TUserinfoplus;
+  //Anonymous types, using auto-generated names
+  TJwkTypekeysItem = Class;
+  TJwkTypekeysArray = Array of TJwkTypekeysItem;
   
   { --------------------------------------------------------------------
-    TJwk
+    TJwkTypekeysItem
     --------------------------------------------------------------------}
   
-  TJwk = Class(TGoogleBaseObject)
+  TJwkTypekeysItem = Class(TGoogleBaseObject)
   Private
-    Fkeys : TJwkkeys;
+    Falg : String;
+    Fe : String;
+    Fkid : String;
+    Fkty : String;
+    Fn : String;
+    Fuse : String;
   Protected
     //Property setters
-    Procedure Setkeys(AIndex : Integer; AValue : TJwkkeys); virtual;
+    Procedure Setalg(AIndex : Integer; const AValue : String); virtual;
+    Procedure Sete(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkty(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setn(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuse(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
-    Property keys : TJwkkeys Index 0 Read Fkeys Write Setkeys;
+    Property alg : String Index 0 Read Falg Write Setalg;
+    Property e : String Index 8 Read Fe Write Sete;
+    Property kid : String Index 16 Read Fkid Write Setkid;
+    Property kty : String Index 24 Read Fkty Write Setkty;
+    Property n : String Index 32 Read Fn Write Setn;
+    Property use : String Index 40 Read Fuse Write Setuse;
   end;
-  TJwkClass = Class of TJwk;
+  TJwkTypekeysItemClass = Class of TJwkTypekeysItem;
   
   { --------------------------------------------------------------------
-    TJwkkeys
+    TJwk
     --------------------------------------------------------------------}
   
-  TJwkkeys = Class(TGoogleBaseObject)
+  TJwk = Class(TGoogleBaseObject)
   Private
-    Falg : string;
-    Fe : string;
-    Fkid : string;
-    Fkty : string;
-    Fn : string;
-    Fuse : string;
+    Fkeys : TJwkTypekeysArray;
   Protected
     //Property setters
-    Procedure Setalg(AIndex : Integer; AValue : string); virtual;
-    Procedure Sete(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkty(AIndex : Integer; AValue : string); virtual;
-    Procedure Setn(AIndex : Integer; AValue : string); virtual;
-    Procedure Setuse(AIndex : Integer; AValue : string); virtual;
+    Procedure Setkeys(AIndex : Integer; const AValue : TJwkTypekeysArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
-    Property alg : string Index 0 Read Falg Write Setalg;
-    Property e : string Index 8 Read Fe Write Sete;
-    Property kid : string Index 16 Read Fkid Write Setkid;
-    Property kty : string Index 24 Read Fkty Write Setkty;
-    Property n : string Index 32 Read Fn Write Setn;
-    Property use : string Index 40 Read Fuse Write Setuse;
+    Property keys : TJwkTypekeysArray Index 0 Read Fkeys Write Setkeys;
   end;
-  TJwkkeysClass = Class of TJwkkeys;
+  TJwkClass = Class of TJwk;
   
   { --------------------------------------------------------------------
     TTokeninfo
@@ -97,36 +76,36 @@ type
   
   TTokeninfo = Class(TGoogleBaseObject)
   Private
-    Faccess_type : string;
-    Faudience : string;
-    Femail : string;
+    Faccess_type : String;
+    Faudience : String;
+    Femail : String;
     Fexpires_in : integer;
-    Fissued_to : string;
-    Fscope : string;
-    Ftoken_handle : string;
-    Fuser_id : string;
+    Fissued_to : String;
+    Fscope : String;
+    Ftoken_handle : String;
+    Fuser_id : String;
     Fverified_email : boolean;
   Protected
     //Property setters
-    Procedure Setaccess_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Setaudience(AIndex : Integer; AValue : string); virtual;
-    Procedure Setemail(AIndex : Integer; AValue : string); virtual;
-    Procedure Setexpires_in(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setissued_to(AIndex : Integer; AValue : string); virtual;
-    Procedure Setscope(AIndex : Integer; AValue : string); virtual;
-    Procedure Settoken_handle(AIndex : Integer; AValue : string); virtual;
-    Procedure Setuser_id(AIndex : Integer; AValue : string); virtual;
-    Procedure Setverified_email(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setaccess_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setaudience(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpires_in(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setissued_to(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setscope(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settoken_handle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setuser_id(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
-    Property access_type : string Index 0 Read Faccess_type Write Setaccess_type;
-    Property audience : string Index 8 Read Faudience Write Setaudience;
-    Property email : string Index 16 Read Femail Write Setemail;
+    Property access_type : String Index 0 Read Faccess_type Write Setaccess_type;
+    Property audience : String Index 8 Read Faudience Write Setaudience;
+    Property email : String Index 16 Read Femail Write Setemail;
     Property expires_in : integer Index 24 Read Fexpires_in Write Setexpires_in;
-    Property issued_to : string Index 32 Read Fissued_to Write Setissued_to;
-    Property scope : string Index 40 Read Fscope Write Setscope;
-    Property token_handle : string Index 48 Read Ftoken_handle Write Settoken_handle;
-    Property user_id : string Index 56 Read Fuser_id Write Setuser_id;
+    Property issued_to : String Index 32 Read Fissued_to Write Setissued_to;
+    Property scope : String Index 40 Read Fscope Write Setscope;
+    Property token_handle : String Index 48 Read Ftoken_handle Write Settoken_handle;
+    Property user_id : String Index 56 Read Fuser_id Write Setuser_id;
     Property verified_email : boolean Index 64 Read Fverified_email Write Setverified_email;
   end;
   TTokeninfoClass = Class of TTokeninfo;
@@ -137,55 +116,95 @@ type
   
   TUserinfoplus = Class(TGoogleBaseObject)
   Private
-    Femail : string;
-    Ffamily_name : string;
-    Fgender : string;
-    Fgiven_name : string;
-    Fhd : string;
-    Fid : string;
-    Flink : string;
-    Flocale : string;
-    Fname : string;
-    Fpicture : string;
+    Femail : String;
+    Ffamily_name : String;
+    Fgender : String;
+    Fgiven_name : String;
+    Fhd : String;
+    Fid : String;
+    Flink : String;
+    Flocale : String;
+    Fname : String;
+    Fpicture : String;
     Fverified_email : boolean;
   Protected
     //Property setters
-    Procedure Setemail(AIndex : Integer; AValue : string); virtual;
-    Procedure Setfamily_name(AIndex : Integer; AValue : string); virtual;
-    Procedure Setgender(AIndex : Integer; AValue : string); virtual;
-    Procedure Setgiven_name(AIndex : Integer; AValue : string); virtual;
-    Procedure Sethd(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setlink(AIndex : Integer; AValue : string); virtual;
-    Procedure Setlocale(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpicture(AIndex : Integer; AValue : string); virtual;
-    Procedure Setverified_email(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfamily_name(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgender(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgiven_name(AIndex : Integer; const AValue : String); virtual;
+    Procedure Sethd(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpicture(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
-    Property email : string Index 0 Read Femail Write Setemail;
-    Property family_name : string Index 8 Read Ffamily_name Write Setfamily_name;
-    Property gender : string Index 16 Read Fgender Write Setgender;
-    Property given_name : string Index 24 Read Fgiven_name Write Setgiven_name;
-    Property hd : string Index 32 Read Fhd Write Sethd;
-    Property id : string Index 40 Read Fid Write Setid;
-    Property link : string Index 48 Read Flink Write Setlink;
-    Property locale : string Index 56 Read Flocale Write Setlocale;
-    Property name : string Index 64 Read Fname Write Setname;
-    Property picture : string Index 72 Read Fpicture Write Setpicture;
+    Property email : String Index 0 Read Femail Write Setemail;
+    Property family_name : String Index 8 Read Ffamily_name Write Setfamily_name;
+    Property gender : String Index 16 Read Fgender Write Setgender;
+    Property given_name : String Index 24 Read Fgiven_name Write Setgiven_name;
+    Property hd : String Index 32 Read Fhd Write Sethd;
+    Property id : String Index 40 Read Fid Write Setid;
+    Property link : String Index 48 Read Flink Write Setlink;
+    Property locale : String Index 56 Read Flocale Write Setlocale;
+    Property name : String Index 64 Read Fname Write Setname;
+    Property picture : String Index 72 Read Fpicture Write Setpicture;
     Property verified_email : boolean Index 80 Read Fverified_email Write Setverified_email;
   end;
   TUserinfoplusClass = Class of TUserinfoplus;
   
+  { --------------------------------------------------------------------
+    TUserinfoV2MeResource
+    --------------------------------------------------------------------}
+  
+  TUserinfoV2MeResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get : TUserinfoplus;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TUserinfoV2Resource
+    --------------------------------------------------------------------}
+  
+  TUserinfoV2Resource = Class(TGoogleResource)
+  Private
+    FMeInstance : TUserinfoV2MeResource;
+    Function GetMeInstance : TUserinfoV2MeResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateMeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
+    Function CreateMeResource : TUserinfoV2MeResource;virtual;overload;
+    Property MeResource : TUserinfoV2MeResource Read GetMeInstance;
+  end;
+  
+  
   { --------------------------------------------------------------------
     TUserinfoResource
     --------------------------------------------------------------------}
   
   TUserinfoResource = Class(TGoogleResource)
+  Private
+    FV2MeInstance : TUserinfoV2MeResource;
+    FV2Instance : TUserinfoV2Resource;
+    Function GetV2MeInstance : TUserinfoV2MeResource;virtual;
+    Function GetV2Instance : TUserinfoV2Resource;virtual;
   Public
     Class Function ResourceName : String; override;
     Class Function DefaultAPI : TGoogleAPIClass; override;
     Function Get : TUserinfoplus;
+    Function CreateV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
+    Function CreateV2MeResource : TUserinfoV2MeResource;virtual;overload;
+    Function CreateV2Resource(AOwner : TComponent) : TUserinfoV2Resource;virtual;overload;
+    Function CreateV2Resource : TUserinfoV2Resource;virtual;overload;
+    Property V2MeResource : TUserinfoV2MeResource Read GetV2MeInstance;
+    Property V2Resource : TUserinfoV2Resource Read GetV2Instance;
   end;
   
   
@@ -195,7 +214,11 @@ type
   
   TOauth2API = Class(TGoogleAPI)
   Private
+    FUserinfoV2MeInstance : TUserinfoV2MeResource;
+    FUserinfoV2Instance : TUserinfoV2Resource;
     FUserinfoInstance : TUserinfoResource;
+    Function GetUserinfoV2MeInstance : TUserinfoV2MeResource;virtual;
+    Function GetUserinfoV2Instance : TUserinfoV2Resource;virtual;
     Function GetUserinfoInstance : TUserinfoResource;virtual;
   Public
     //Override class functions with API info
@@ -220,9 +243,15 @@ type
     Class Function APINeedsAuth : Boolean;override;
     Class Procedure RegisterAPIResources; override;
     //Add create function for resources
+    Function CreateUserinfoV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
+    Function CreateUserinfoV2MeResource : TUserinfoV2MeResource;virtual;overload;
+    Function CreateUserinfoV2Resource(AOwner : TComponent) : TUserinfoV2Resource;virtual;overload;
+    Function CreateUserinfoV2Resource : TUserinfoV2Resource;virtual;overload;
     Function CreateUserinfoResource(AOwner : TComponent) : TUserinfoResource;virtual;overload;
     Function CreateUserinfoResource : TUserinfoResource;virtual;overload;
     //Add default on-demand instances for resources
+    Property UserinfoV2MeResource : TUserinfoV2MeResource Read GetUserinfoV2MeInstance;
+    Property UserinfoV2Resource : TUserinfoV2Resource Read GetUserinfoV2Instance;
     Property UserinfoResource : TUserinfoResource Read GetUserinfoInstance;
   end;
 
@@ -230,28 +259,11 @@ implementation
 
 
 { --------------------------------------------------------------------
-  TJwk
-  --------------------------------------------------------------------}
-
-
-Procedure TJwk.Setkeys(AIndex : Integer; AValue : TJwkkeys); 
-
-begin
-  If (Fkeys=AValue) then exit;
-  Fkeys:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TJwkkeys
+  TJwkTypekeysItem
   --------------------------------------------------------------------}
 
 
-Procedure TJwkkeys.Setalg(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Setalg(AIndex : Integer; const AValue : String); 
 
 begin
   If (Falg=AValue) then exit;
@@ -261,7 +273,7 @@ end;
 
 
 
-Procedure TJwkkeys.Sete(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Sete(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fe=AValue) then exit;
@@ -271,7 +283,7 @@ end;
 
 
 
-Procedure TJwkkeys.Setkid(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Setkid(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkid=AValue) then exit;
@@ -281,7 +293,7 @@ end;
 
 
 
-Procedure TJwkkeys.Setkty(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Setkty(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fkty=AValue) then exit;
@@ -291,7 +303,7 @@ end;
 
 
 
-Procedure TJwkkeys.Setn(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Setn(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fn=AValue) then exit;
@@ -301,7 +313,7 @@ end;
 
 
 
-Procedure TJwkkeys.Setuse(AIndex : Integer; AValue : string); 
+Procedure TJwkTypekeysItem.Setuse(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fuse=AValue) then exit;
@@ -313,12 +325,42 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TJwk
+  --------------------------------------------------------------------}
+
+
+Procedure TJwk.Setkeys(AIndex : Integer; const AValue : TJwkTypekeysArray); 
+
+begin
+  If (Fkeys=AValue) then exit;
+  Fkeys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TJwk.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'keys' : SetLength(Fkeys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
 { --------------------------------------------------------------------
   TTokeninfo
   --------------------------------------------------------------------}
 
 
-Procedure TTokeninfo.Setaccess_type(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setaccess_type(AIndex : Integer; const AValue : String); 
 
 begin
   If (Faccess_type=AValue) then exit;
@@ -328,7 +370,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setaudience(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setaudience(AIndex : Integer; const AValue : String); 
 
 begin
   If (Faudience=AValue) then exit;
@@ -338,7 +380,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setemail(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setemail(AIndex : Integer; const AValue : String); 
 
 begin
   If (Femail=AValue) then exit;
@@ -348,7 +390,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setexpires_in(AIndex : Integer; AValue : integer); 
+Procedure TTokeninfo.Setexpires_in(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fexpires_in=AValue) then exit;
@@ -358,7 +400,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setissued_to(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setissued_to(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fissued_to=AValue) then exit;
@@ -368,7 +410,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setscope(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setscope(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fscope=AValue) then exit;
@@ -378,7 +420,7 @@ end;
 
 
 
-Procedure TTokeninfo.Settoken_handle(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Settoken_handle(AIndex : Integer; const AValue : String); 
 
 begin
   If (Ftoken_handle=AValue) then exit;
@@ -388,7 +430,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setuser_id(AIndex : Integer; AValue : string); 
+Procedure TTokeninfo.Setuser_id(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fuser_id=AValue) then exit;
@@ -398,7 +440,7 @@ end;
 
 
 
-Procedure TTokeninfo.Setverified_email(AIndex : Integer; AValue : boolean); 
+Procedure TTokeninfo.Setverified_email(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fverified_email=AValue) then exit;
@@ -415,7 +457,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUserinfoplus.Setemail(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setemail(AIndex : Integer; const AValue : String); 
 
 begin
   If (Femail=AValue) then exit;
@@ -425,7 +467,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setfamily_name(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setfamily_name(AIndex : Integer; const AValue : String); 
 
 begin
   If (Ffamily_name=AValue) then exit;
@@ -435,7 +477,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setgender(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setgender(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fgender=AValue) then exit;
@@ -445,7 +487,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setgiven_name(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setgiven_name(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fgiven_name=AValue) then exit;
@@ -455,7 +497,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Sethd(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Sethd(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fhd=AValue) then exit;
@@ -465,7 +507,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setid(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setid(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fid=AValue) then exit;
@@ -475,7 +517,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setlink(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setlink(AIndex : Integer; const AValue : String); 
 
 begin
   If (Flink=AValue) then exit;
@@ -485,7 +527,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setlocale(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setlocale(AIndex : Integer; const AValue : String); 
 
 begin
   If (Flocale=AValue) then exit;
@@ -495,7 +537,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setname(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setname(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fname=AValue) then exit;
@@ -505,7 +547,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setpicture(AIndex : Integer; AValue : string); 
+Procedure TUserinfoplus.Setpicture(AIndex : Integer; const AValue : String); 
 
 begin
   If (Fpicture=AValue) then exit;
@@ -515,7 +557,7 @@ end;
 
 
 
-Procedure TUserinfoplus.Setverified_email(AIndex : Integer; AValue : boolean); 
+Procedure TUserinfoplus.Setverified_email(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fverified_email=AValue) then exit;
@@ -527,6 +569,79 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TUserinfoV2MeResource
+  --------------------------------------------------------------------}
+
+
+Class Function TUserinfoV2MeResource.ResourceName : String;
+
+begin
+  Result:='me';
+end;
+
+Class Function TUserinfoV2MeResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Toauth2API;
+end;
+
+Function TUserinfoV2MeResource.Get : TUserinfoplus;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'userinfo/v2/me';
+  _Methodid   = 'oauth2.userinfo.v2.me.get';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',Nil,TUserinfoplus) as TUserinfoplus;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TUserinfoV2Resource
+  --------------------------------------------------------------------}
+
+
+Class Function TUserinfoV2Resource.ResourceName : String;
+
+begin
+  Result:='v2';
+end;
+
+Class Function TUserinfoV2Resource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=Toauth2API;
+end;
+
+
+
+Function TUserinfoV2Resource.GetMeInstance : TUserinfoV2MeResource;
+
+begin
+  if (FMeInstance=Nil) then
+    FMeInstance:=CreateMeResource;
+  Result:=FMeInstance;
+end;
+
+Function TUserinfoV2Resource.CreateMeResource : TUserinfoV2MeResource;
+
+begin
+  Result:=CreateMeResource(Self);
+end;
+
+
+Function TUserinfoV2Resource.CreateMeResource(AOwner : TComponent) : TUserinfoV2MeResource;
+
+begin
+  Result:=TUserinfoV2MeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
 { --------------------------------------------------------------------
   TUserinfoResource
   --------------------------------------------------------------------}
@@ -557,6 +672,54 @@ end;
 
 
 
+Function TUserinfoResource.GetV2MeInstance : TUserinfoV2MeResource;
+
+begin
+  if (FV2MeInstance=Nil) then
+    FV2MeInstance:=CreateV2MeResource;
+  Result:=FV2MeInstance;
+end;
+
+Function TUserinfoResource.CreateV2MeResource : TUserinfoV2MeResource;
+
+begin
+  Result:=CreateV2MeResource(Self);
+end;
+
+
+Function TUserinfoResource.CreateV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;
+
+begin
+  Result:=TUserinfoV2MeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TUserinfoResource.GetV2Instance : TUserinfoV2Resource;
+
+begin
+  if (FV2Instance=Nil) then
+    FV2Instance:=CreateV2Resource;
+  Result:=FV2Instance;
+end;
+
+Function TUserinfoResource.CreateV2Resource : TUserinfoV2Resource;
+
+begin
+  Result:=CreateV2Resource(Self);
+end;
+
+
+Function TUserinfoResource.CreateV2Resource(AOwner : TComponent) : TUserinfoV2Resource;
+
+begin
+  Result:=TUserinfoV2Resource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
 { --------------------------------------------------------------------
   TOauth2API
   --------------------------------------------------------------------}
@@ -576,7 +739,7 @@ end;
 Class Function TOauth2API.APIRevision : String;
 
 begin
-  Result:='20150416';
+  Result:='20160330';
 end;
 
 Class Function TOauth2API.APIID : String;
@@ -594,7 +757,7 @@ end;
 Class Function TOauth2API.APIDescription : String;
 
 begin
-  Result:='Lets you access OAuth2 protocol related APIs.';
+  Result:='Obtains end-user authorization grants for use with other Google APIs.';
 end;
 
 Class Function TOauth2API.APIOwnerDomain : String;
@@ -668,7 +831,7 @@ Class Function TOauth2API.APIAuthScopes : TScopeInfoArray;
 begin
   SetLength(Result,4);
   Result[0].Name:='https://www.googleapis.com/auth/plus.login';
-  Result[0].Description:='Know your basic profile info and list of people in your circles.';
+  Result[0].Description:='Know the list of people in your circles, your age range, and language';
   Result[1].Name:='https://www.googleapis.com/auth/plus.me';
   Result[1].Description:='Know who you are on Google';
   Result[2].Name:='https://www.googleapis.com/auth/userinfo.email';
@@ -687,13 +850,61 @@ end;
 Class Procedure TOauth2API.RegisterAPIResources;
 
 begin
+  TJwkTypekeysItem.RegisterObject;
   TJwk.RegisterObject;
-  TJwkkeys.RegisterObject;
   TTokeninfo.RegisterObject;
   TUserinfoplus.RegisterObject;
 end;
 
 
+Function TOauth2API.GetUserinfoV2MeInstance : TUserinfoV2MeResource;
+
+begin
+  if (FUserinfoV2MeInstance=Nil) then
+    FUserinfoV2MeInstance:=CreateUserinfoV2MeResource;
+  Result:=FUserinfoV2MeInstance;
+end;
+
+Function TOauth2API.CreateUserinfoV2MeResource : TUserinfoV2MeResource;
+
+begin
+  Result:=CreateUserinfoV2MeResource(Self);
+end;
+
+
+Function TOauth2API.CreateUserinfoV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;
+
+begin
+  Result:=TUserinfoV2MeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TOauth2API.GetUserinfoV2Instance : TUserinfoV2Resource;
+
+begin
+  if (FUserinfoV2Instance=Nil) then
+    FUserinfoV2Instance:=CreateUserinfoV2Resource;
+  Result:=FUserinfoV2Instance;
+end;
+
+Function TOauth2API.CreateUserinfoV2Resource : TUserinfoV2Resource;
+
+begin
+  Result:=CreateUserinfoV2Resource(Self);
+end;
+
+
+Function TOauth2API.CreateUserinfoV2Resource(AOwner : TComponent) : TUserinfoV2Resource;
+
+begin
+  Result:=TUserinfoV2Resource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
 Function TOauth2API.GetUserinfoInstance : TUserinfoResource;
 
 begin
@@ -713,7 +924,7 @@ Function TOauth2API.CreateUserinfoResource(AOwner : TComponent) : TUserinfoResou
 
 begin
   Result:=TUserinfoResource.Create(AOwner);
-  Result.API:=Self;
+  Result.API:=Self.API;
 end;
 
 

File diff suppressed because it is too large
+ 341 - 308
packages/googleapi/src/googlepagespeedonline.pp


+ 2690 - 0
packages/googleapi/src/googlepartners.pp

@@ -0,0 +1,2690 @@
+unit googlepartners;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TLogUserEventRequest = Class;
+  TRequestMetadata = Class;
+  TUserOverrides = Class;
+  TTrafficSource = Class;
+  TEventData = Class;
+  TLead = Class;
+  TMoney = Class;
+  TLogUserEventResponse = Class;
+  TResponseMetadata = Class;
+  TDebugInfo = Class;
+  TLogMessageRequest = Class;
+  TLogMessageResponse = Class;
+  TListUserStatesResponse = Class;
+  TGetCompanyResponse = Class;
+  TCompany = Class;
+  TLocalizedCompanyInfo = Class;
+  TLocation = Class;
+  TLatLng = Class;
+  TPublicProfile = Class;
+  TCertificationStatus = Class;
+  TCertificationExamStatus = Class;
+  TRank = Class;
+  TListCompaniesResponse = Class;
+  TCreateLeadRequest = Class;
+  TRecaptchaChallenge = Class;
+  TCreateLeadResponse = Class;
+  TLogUserEventRequestArray = Array of TLogUserEventRequest;
+  TRequestMetadataArray = Array of TRequestMetadata;
+  TUserOverridesArray = Array of TUserOverrides;
+  TTrafficSourceArray = Array of TTrafficSource;
+  TEventDataArray = Array of TEventData;
+  TLeadArray = Array of TLead;
+  TMoneyArray = Array of TMoney;
+  TLogUserEventResponseArray = Array of TLogUserEventResponse;
+  TResponseMetadataArray = Array of TResponseMetadata;
+  TDebugInfoArray = Array of TDebugInfo;
+  TLogMessageRequestArray = Array of TLogMessageRequest;
+  TLogMessageResponseArray = Array of TLogMessageResponse;
+  TListUserStatesResponseArray = Array of TListUserStatesResponse;
+  TGetCompanyResponseArray = Array of TGetCompanyResponse;
+  TCompanyArray = Array of TCompany;
+  TLocalizedCompanyInfoArray = Array of TLocalizedCompanyInfo;
+  TLocationArray = Array of TLocation;
+  TLatLngArray = Array of TLatLng;
+  TPublicProfileArray = Array of TPublicProfile;
+  TCertificationStatusArray = Array of TCertificationStatus;
+  TCertificationExamStatusArray = Array of TCertificationExamStatus;
+  TRankArray = Array of TRank;
+  TListCompaniesResponseArray = Array of TListCompaniesResponse;
+  TCreateLeadRequestArray = Array of TCreateLeadRequest;
+  TRecaptchaChallengeArray = Array of TRecaptchaChallenge;
+  TCreateLeadResponseArray = Array of TCreateLeadResponse;
+  //Anonymous types, using auto-generated names
+  TLogMessageRequestTypeclientInfo = Class;
+  TLogUserEventRequestTypeeventDatasArray = Array of TEventData;
+  TCompanyTypelocalizedInfosArray = Array of TLocalizedCompanyInfo;
+  TCompanyTypelocationsArray = Array of TLocation;
+  TCompanyTypecertificationStatusesArray = Array of TCertificationStatus;
+  TCompanyTyperanksArray = Array of TRank;
+  TCertificationStatusTypeexamStatusesArray = Array of TCertificationExamStatus;
+  TListCompaniesResponseTypecompaniesArray = Array of TCompany;
+  
+  { --------------------------------------------------------------------
+    TLogUserEventRequest
+    --------------------------------------------------------------------}
+  
+  TLogUserEventRequest = Class(TGoogleBaseObject)
+  Private
+    FrequestMetadata : TRequestMetadata;
+    FeventAction : String;
+    FeventCategory : String;
+    FeventScope : String;
+    FeventDatas : TLogUserEventRequestTypeeventDatasArray;
+    Furl : String;
+    Flead : TLead;
+  Protected
+    //Property setters
+    Procedure SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); virtual;
+    Procedure SeteventAction(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteventCategory(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteventScope(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteventDatas(AIndex : Integer; const AValue : TLogUserEventRequestTypeeventDatasArray); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlead(AIndex : Integer; const AValue : TLead); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property requestMetadata : TRequestMetadata Index 0 Read FrequestMetadata Write SetrequestMetadata;
+    Property eventAction : String Index 8 Read FeventAction Write SeteventAction;
+    Property eventCategory : String Index 16 Read FeventCategory Write SeteventCategory;
+    Property eventScope : String Index 24 Read FeventScope Write SeteventScope;
+    Property eventDatas : TLogUserEventRequestTypeeventDatasArray Index 32 Read FeventDatas Write SeteventDatas;
+    Property url : String Index 40 Read Furl Write Seturl;
+    Property lead : TLead Index 48 Read Flead Write Setlead;
+  end;
+  TLogUserEventRequestClass = Class of TLogUserEventRequest;
+  
+  { --------------------------------------------------------------------
+    TRequestMetadata
+    --------------------------------------------------------------------}
+  
+  TRequestMetadata = Class(TGoogleBaseObject)
+  Private
+    FuserOverrides : TUserOverrides;
+    Flocale : String;
+    FpartnersSessionId : String;
+    FexperimentIds : TStringArray;
+    FtrafficSource : TTrafficSource;
+  Protected
+    //Property setters
+    Procedure SetuserOverrides(AIndex : Integer; const AValue : TUserOverrides); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpartnersSessionId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetexperimentIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SettrafficSource(AIndex : Integer; const AValue : TTrafficSource); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property userOverrides : TUserOverrides Index 0 Read FuserOverrides Write SetuserOverrides;
+    Property locale : String Index 8 Read Flocale Write Setlocale;
+    Property partnersSessionId : String Index 16 Read FpartnersSessionId Write SetpartnersSessionId;
+    Property experimentIds : TStringArray Index 24 Read FexperimentIds Write SetexperimentIds;
+    Property trafficSource : TTrafficSource Index 32 Read FtrafficSource Write SettrafficSource;
+  end;
+  TRequestMetadataClass = Class of TRequestMetadata;
+  
+  { --------------------------------------------------------------------
+    TUserOverrides
+    --------------------------------------------------------------------}
+  
+  TUserOverrides = Class(TGoogleBaseObject)
+  Private
+    FipAddress : String;
+    FuserId : String;
+  Protected
+    //Property setters
+    Procedure SetipAddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property ipAddress : String Index 0 Read FipAddress Write SetipAddress;
+    Property userId : String Index 8 Read FuserId Write SetuserId;
+  end;
+  TUserOverridesClass = Class of TUserOverrides;
+  
+  { --------------------------------------------------------------------
+    TTrafficSource
+    --------------------------------------------------------------------}
+  
+  TTrafficSource = Class(TGoogleBaseObject)
+  Private
+    FtrafficSourceId : String;
+    FtrafficSubId : String;
+  Protected
+    //Property setters
+    Procedure SettrafficSourceId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettrafficSubId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property trafficSourceId : String Index 0 Read FtrafficSourceId Write SettrafficSourceId;
+    Property trafficSubId : String Index 8 Read FtrafficSubId Write SettrafficSubId;
+  end;
+  TTrafficSourceClass = Class of TTrafficSource;
+  
+  { --------------------------------------------------------------------
+    TEventData
+    --------------------------------------------------------------------}
+  
+  TEventData = Class(TGoogleBaseObject)
+  Private
+    Fkey : String;
+    Fvalues : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property key : String Index 0 Read Fkey Write Setkey;
+    Property values : TStringArray Index 8 Read Fvalues Write Setvalues;
+  end;
+  TEventDataClass = Class of TEventData;
+  
+  { --------------------------------------------------------------------
+    TLead
+    --------------------------------------------------------------------}
+  
+  TLead = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    F_type : String;
+    Femail : String;
+    FgivenName : String;
+    FfamilyName : String;
+    FwebsiteUrl : String;
+    FphoneNumber : String;
+    Fcomments : String;
+    FgpsMotivations : TStringArray;
+    FminMonthlyBudget : TMoney;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetwebsiteUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcomments(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgpsMotivations(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetminMonthlyBudget(AIndex : Integer; const AValue : TMoney); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property email : String Index 16 Read Femail Write Setemail;
+    Property givenName : String Index 24 Read FgivenName Write SetgivenName;
+    Property familyName : String Index 32 Read FfamilyName Write SetfamilyName;
+    Property websiteUrl : String Index 40 Read FwebsiteUrl Write SetwebsiteUrl;
+    Property phoneNumber : String Index 48 Read FphoneNumber Write SetphoneNumber;
+    Property comments : String Index 56 Read Fcomments Write Setcomments;
+    Property gpsMotivations : TStringArray Index 64 Read FgpsMotivations Write SetgpsMotivations;
+    Property minMonthlyBudget : TMoney Index 72 Read FminMonthlyBudget Write SetminMonthlyBudget;
+  end;
+  TLeadClass = Class of TLead;
+  
+  { --------------------------------------------------------------------
+    TMoney
+    --------------------------------------------------------------------}
+  
+  TMoney = Class(TGoogleBaseObject)
+  Private
+    FcurrencyCode : String;
+    Funits : String;
+    Fnanos : integer;
+  Protected
+    //Property setters
+    Procedure SetcurrencyCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setunits(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnanos(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property currencyCode : String Index 0 Read FcurrencyCode Write SetcurrencyCode;
+    Property units : String Index 8 Read Funits Write Setunits;
+    Property nanos : integer Index 16 Read Fnanos Write Setnanos;
+  end;
+  TMoneyClass = Class of TMoney;
+  
+  { --------------------------------------------------------------------
+    TLogUserEventResponse
+    --------------------------------------------------------------------}
+  
+  TLogUserEventResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+  end;
+  TLogUserEventResponseClass = Class of TLogUserEventResponse;
+  
+  { --------------------------------------------------------------------
+    TResponseMetadata
+    --------------------------------------------------------------------}
+  
+  TResponseMetadata = Class(TGoogleBaseObject)
+  Private
+    FdebugInfo : TDebugInfo;
+  Protected
+    //Property setters
+    Procedure SetdebugInfo(AIndex : Integer; const AValue : TDebugInfo); virtual;
+  Public
+  Published
+    Property debugInfo : TDebugInfo Index 0 Read FdebugInfo Write SetdebugInfo;
+  end;
+  TResponseMetadataClass = Class of TResponseMetadata;
+  
+  { --------------------------------------------------------------------
+    TDebugInfo
+    --------------------------------------------------------------------}
+  
+  TDebugInfo = Class(TGoogleBaseObject)
+  Private
+    FserverInfo : String;
+    FserviceUrl : String;
+    FserverTraceInfo : String;
+  Protected
+    //Property setters
+    Procedure SetserverInfo(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetserviceUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetserverTraceInfo(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property serverInfo : String Index 0 Read FserverInfo Write SetserverInfo;
+    Property serviceUrl : String Index 8 Read FserviceUrl Write SetserviceUrl;
+    Property serverTraceInfo : String Index 16 Read FserverTraceInfo Write SetserverTraceInfo;
+  end;
+  TDebugInfoClass = Class of TDebugInfo;
+  
+  { --------------------------------------------------------------------
+    TLogMessageRequestTypeclientInfo
+    --------------------------------------------------------------------}
+  
+  TLogMessageRequestTypeclientInfo = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TLogMessageRequestTypeclientInfoClass = Class of TLogMessageRequestTypeclientInfo;
+  
+  { --------------------------------------------------------------------
+    TLogMessageRequest
+    --------------------------------------------------------------------}
+  
+  TLogMessageRequest = Class(TGoogleBaseObject)
+  Private
+    FrequestMetadata : TRequestMetadata;
+    Flevel : String;
+    Fdetails : String;
+    FclientInfo : TLogMessageRequestTypeclientInfo;
+  Protected
+    //Property setters
+    Procedure SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); virtual;
+    Procedure Setlevel(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientInfo(AIndex : Integer; const AValue : TLogMessageRequestTypeclientInfo); virtual;
+  Public
+  Published
+    Property requestMetadata : TRequestMetadata Index 0 Read FrequestMetadata Write SetrequestMetadata;
+    Property level : String Index 8 Read Flevel Write Setlevel;
+    Property details : String Index 16 Read Fdetails Write Setdetails;
+    Property clientInfo : TLogMessageRequestTypeclientInfo Index 24 Read FclientInfo Write SetclientInfo;
+  end;
+  TLogMessageRequestClass = Class of TLogMessageRequest;
+  
+  { --------------------------------------------------------------------
+    TLogMessageResponse
+    --------------------------------------------------------------------}
+  
+  TLogMessageResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+  end;
+  TLogMessageResponseClass = Class of TLogMessageResponse;
+  
+  { --------------------------------------------------------------------
+    TListUserStatesResponse
+    --------------------------------------------------------------------}
+  
+  TListUserStatesResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+    FuserStates : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+    Procedure SetuserStates(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+    Property userStates : TStringArray Index 8 Read FuserStates Write SetuserStates;
+  end;
+  TListUserStatesResponseClass = Class of TListUserStatesResponse;
+  
+  { --------------------------------------------------------------------
+    TGetCompanyResponse
+    --------------------------------------------------------------------}
+  
+  TGetCompanyResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+    Fcompany : TCompany;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+    Procedure Setcompany(AIndex : Integer; const AValue : TCompany); virtual;
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+    Property company : TCompany Index 8 Read Fcompany Write Setcompany;
+  end;
+  TGetCompanyResponseClass = Class of TGetCompanyResponse;
+  
+  { --------------------------------------------------------------------
+    TCompany
+    --------------------------------------------------------------------}
+  
+  TCompany = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fname : String;
+    FlocalizedInfos : TCompanyTypelocalizedInfosArray;
+    Flocations : TCompanyTypelocationsArray;
+    FconvertedMinMonthlyBudget : TMoney;
+    ForiginalMinMonthlyBudget : TMoney;
+    FpublicProfile : TPublicProfile;
+    FcertificationStatuses : TCompanyTypecertificationStatusesArray;
+    Franks : TCompanyTyperanksArray;
+    FwebsiteUrl : String;
+    Findustries : TStringArray;
+    Fservices : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlocalizedInfos(AIndex : Integer; const AValue : TCompanyTypelocalizedInfosArray); virtual;
+    Procedure Setlocations(AIndex : Integer; const AValue : TCompanyTypelocationsArray); virtual;
+    Procedure SetconvertedMinMonthlyBudget(AIndex : Integer; const AValue : TMoney); virtual;
+    Procedure SetoriginalMinMonthlyBudget(AIndex : Integer; const AValue : TMoney); virtual;
+    Procedure SetpublicProfile(AIndex : Integer; const AValue : TPublicProfile); virtual;
+    Procedure SetcertificationStatuses(AIndex : Integer; const AValue : TCompanyTypecertificationStatusesArray); virtual;
+    Procedure Setranks(AIndex : Integer; const AValue : TCompanyTyperanksArray); virtual;
+    Procedure SetwebsiteUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setindustries(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setservices(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property localizedInfos : TCompanyTypelocalizedInfosArray Index 16 Read FlocalizedInfos Write SetlocalizedInfos;
+    Property locations : TCompanyTypelocationsArray Index 24 Read Flocations Write Setlocations;
+    Property convertedMinMonthlyBudget : TMoney Index 32 Read FconvertedMinMonthlyBudget Write SetconvertedMinMonthlyBudget;
+    Property originalMinMonthlyBudget : TMoney Index 40 Read ForiginalMinMonthlyBudget Write SetoriginalMinMonthlyBudget;
+    Property publicProfile : TPublicProfile Index 48 Read FpublicProfile Write SetpublicProfile;
+    Property certificationStatuses : TCompanyTypecertificationStatusesArray Index 56 Read FcertificationStatuses Write SetcertificationStatuses;
+    Property ranks : TCompanyTyperanksArray Index 64 Read Franks Write Setranks;
+    Property websiteUrl : String Index 72 Read FwebsiteUrl Write SetwebsiteUrl;
+    Property industries : TStringArray Index 80 Read Findustries Write Setindustries;
+    Property services : TStringArray Index 88 Read Fservices Write Setservices;
+  end;
+  TCompanyClass = Class of TCompany;
+  
+  { --------------------------------------------------------------------
+    TLocalizedCompanyInfo
+    --------------------------------------------------------------------}
+  
+  TLocalizedCompanyInfo = Class(TGoogleBaseObject)
+  Private
+    FlanguageCode : String;
+    FdisplayName : String;
+    Foverview : String;
+    FcountryCodes : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetlanguageCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoverview(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcountryCodes(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property languageCode : String Index 0 Read FlanguageCode Write SetlanguageCode;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property overview : String Index 16 Read Foverview Write Setoverview;
+    Property countryCodes : TStringArray Index 24 Read FcountryCodes Write SetcountryCodes;
+  end;
+  TLocalizedCompanyInfoClass = Class of TLocalizedCompanyInfo;
+  
+  { --------------------------------------------------------------------
+    TLocation
+    --------------------------------------------------------------------}
+  
+  TLocation = Class(TGoogleBaseObject)
+  Private
+    Faddress : String;
+    FlatLng : TLatLng;
+  Protected
+    //Property setters
+    Procedure Setaddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlatLng(AIndex : Integer; const AValue : TLatLng); virtual;
+  Public
+  Published
+    Property address : String Index 0 Read Faddress Write Setaddress;
+    Property latLng : TLatLng Index 8 Read FlatLng Write SetlatLng;
+  end;
+  TLocationClass = Class of TLocation;
+  
+  { --------------------------------------------------------------------
+    TLatLng
+    --------------------------------------------------------------------}
+  
+  TLatLng = Class(TGoogleBaseObject)
+  Private
+    Flatitude : double;
+    Flongitude : double;
+  Protected
+    //Property setters
+    Procedure Setlatitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlongitude(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property latitude : double Index 0 Read Flatitude Write Setlatitude;
+    Property longitude : double Index 8 Read Flongitude Write Setlongitude;
+  end;
+  TLatLngClass = Class of TLatLng;
+  
+  { --------------------------------------------------------------------
+    TPublicProfile
+    --------------------------------------------------------------------}
+  
+  TPublicProfile = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    FdisplayName : String;
+    Furl : String;
+    FdisplayImageUrl : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayImageUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property url : String Index 16 Read Furl Write Seturl;
+    Property displayImageUrl : String Index 24 Read FdisplayImageUrl Write SetdisplayImageUrl;
+  end;
+  TPublicProfileClass = Class of TPublicProfile;
+  
+  { --------------------------------------------------------------------
+    TCertificationStatus
+    --------------------------------------------------------------------}
+  
+  TCertificationStatus = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    FexamStatuses : TCertificationStatusTypeexamStatusesArray;
+    FisCertified : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetexamStatuses(AIndex : Integer; const AValue : TCertificationStatusTypeexamStatusesArray); virtual;
+    Procedure SetisCertified(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property examStatuses : TCertificationStatusTypeexamStatusesArray Index 8 Read FexamStatuses Write SetexamStatuses;
+    Property isCertified : boolean Index 16 Read FisCertified Write SetisCertified;
+  end;
+  TCertificationStatusClass = Class of TCertificationStatus;
+  
+  { --------------------------------------------------------------------
+    TCertificationExamStatus
+    --------------------------------------------------------------------}
+  
+  TCertificationExamStatus = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    FnumberUsersPass : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnumberUsersPass(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property numberUsersPass : integer Index 8 Read FnumberUsersPass Write SetnumberUsersPass;
+  end;
+  TCertificationExamStatusClass = Class of TCertificationExamStatus;
+  
+  { --------------------------------------------------------------------
+    TRank
+    --------------------------------------------------------------------}
+  
+  TRank = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fvalue : double;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property value : double Index 8 Read Fvalue Write Setvalue;
+  end;
+  TRankClass = Class of TRank;
+  
+  { --------------------------------------------------------------------
+    TListCompaniesResponse
+    --------------------------------------------------------------------}
+  
+  TListCompaniesResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+    Fcompanies : TListCompaniesResponseTypecompaniesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+    Procedure Setcompanies(AIndex : Integer; const AValue : TListCompaniesResponseTypecompaniesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+    Property companies : TListCompaniesResponseTypecompaniesArray Index 8 Read Fcompanies Write Setcompanies;
+    Property nextPageToken : String Index 16 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListCompaniesResponseClass = Class of TListCompaniesResponse;
+  
+  { --------------------------------------------------------------------
+    TCreateLeadRequest
+    --------------------------------------------------------------------}
+  
+  TCreateLeadRequest = Class(TGoogleBaseObject)
+  Private
+    FrequestMetadata : TRequestMetadata;
+    Flead : TLead;
+    FrecaptchaChallenge : TRecaptchaChallenge;
+  Protected
+    //Property setters
+    Procedure SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); virtual;
+    Procedure Setlead(AIndex : Integer; const AValue : TLead); virtual;
+    Procedure SetrecaptchaChallenge(AIndex : Integer; const AValue : TRecaptchaChallenge); virtual;
+  Public
+  Published
+    Property requestMetadata : TRequestMetadata Index 0 Read FrequestMetadata Write SetrequestMetadata;
+    Property lead : TLead Index 8 Read Flead Write Setlead;
+    Property recaptchaChallenge : TRecaptchaChallenge Index 16 Read FrecaptchaChallenge Write SetrecaptchaChallenge;
+  end;
+  TCreateLeadRequestClass = Class of TCreateLeadRequest;
+  
+  { --------------------------------------------------------------------
+    TRecaptchaChallenge
+    --------------------------------------------------------------------}
+  
+  TRecaptchaChallenge = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fresponse : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property response : String Index 8 Read Fresponse Write Setresponse;
+  end;
+  TRecaptchaChallengeClass = Class of TRecaptchaChallenge;
+  
+  { --------------------------------------------------------------------
+    TCreateLeadResponse
+    --------------------------------------------------------------------}
+  
+  TCreateLeadResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseMetadata : TResponseMetadata;
+    Flead : TLead;
+    FrecaptchaStatus : String;
+  Protected
+    //Property setters
+    Procedure SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); virtual;
+    Procedure Setlead(AIndex : Integer; const AValue : TLead); virtual;
+    Procedure SetrecaptchaStatus(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property responseMetadata : TResponseMetadata Index 0 Read FresponseMetadata Write SetresponseMetadata;
+    Property lead : TLead Index 8 Read Flead Write Setlead;
+    Property recaptchaStatus : String Index 16 Read FrecaptchaStatus Write SetrecaptchaStatus;
+  end;
+  TCreateLeadResponseClass = Class of TCreateLeadResponse;
+  
+  { --------------------------------------------------------------------
+    TUserEventsResource
+    --------------------------------------------------------------------}
+  
+  TUserEventsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Log(aLogUserEventRequest : TLogUserEventRequest) : TLogUserEventResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TClientMessagesResource
+    --------------------------------------------------------------------}
+  
+  TClientMessagesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Log(aLogMessageRequest : TLogMessageRequest) : TLogMessageResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TUserStatesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TUserStatesResource, method List
+  
+  TUserStatesListOptions = Record
+    requestMetadatauserOverridesipAddress : String;
+    requestMetadatauserOverridesuserId : String;
+    requestMetadatalocale : String;
+    requestMetadatapartnersSessionId : String;
+    requestMetadataexperimentIds : String;
+    requestMetadatatrafficSourcetrafficSourceId : String;
+    requestMetadatatrafficSourcetrafficSubId : String;
+  end;
+  
+  TUserStatesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(AQuery : string  = '') : TListUserStatesResponse;
+    Function List(AQuery : TUserStateslistOptions) : TListUserStatesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCompaniesLeadsResource
+    --------------------------------------------------------------------}
+  
+  TCompaniesLeadsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(companyId: string; aCreateLeadRequest : TCreateLeadRequest) : TCreateLeadResponse;overload;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCompaniesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCompaniesResource, method Get
+  
+  TCompaniesGetOptions = Record
+    requestMetadatauserOverridesipAddress : String;
+    requestMetadatauserOverridesuserId : String;
+    requestMetadatalocale : String;
+    requestMetadatapartnersSessionId : String;
+    requestMetadataexperimentIds : String;
+    requestMetadatatrafficSourcetrafficSourceId : String;
+    requestMetadatatrafficSourcetrafficSubId : String;
+    view : String;
+    orderBy : String;
+    currencyCode : String;
+    address : String;
+  end;
+  
+  
+  //Optional query Options for TCompaniesResource, method List
+  
+  TCompaniesListOptions = Record
+    requestMetadatauserOverridesipAddress : String;
+    requestMetadatauserOverridesuserId : String;
+    requestMetadatalocale : String;
+    requestMetadatapartnersSessionId : String;
+    requestMetadataexperimentIds : String;
+    requestMetadatatrafficSourcetrafficSourceId : String;
+    requestMetadatatrafficSourcetrafficSubId : String;
+    pageSize : integer;
+    pageToken : String;
+    companyName : String;
+    view : String;
+    minMonthlyBudgetcurrencyCode : String;
+    minMonthlyBudgetunits : int64;
+    minMonthlyBudgetnanos : integer;
+    maxMonthlyBudgetcurrencyCode : String;
+    maxMonthlyBudgetunits : int64;
+    maxMonthlyBudgetnanos : integer;
+    industries : String;
+    services : String;
+    languageCodes : String;
+    address : String;
+    orderBy : String;
+    gpsMotivations : String;
+    websiteUrl : String;
+  end;
+  
+  TCompaniesResource = Class(TGoogleResource)
+  Private
+    FLeadsInstance : TCompaniesLeadsResource;
+    Function GetLeadsInstance : TCompaniesLeadsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(companyId: string; AQuery : string  = '') : TGetCompanyResponse;
+    Function Get(companyId: string; AQuery : TCompaniesgetOptions) : TGetCompanyResponse;
+    Function List(AQuery : string  = '') : TListCompaniesResponse;
+    Function List(AQuery : TCompanieslistOptions) : TListCompaniesResponse;
+    Function CreateLeadsResource(AOwner : TComponent) : TCompaniesLeadsResource;virtual;overload;
+    Function CreateLeadsResource : TCompaniesLeadsResource;virtual;overload;
+    Property LeadsResource : TCompaniesLeadsResource Read GetLeadsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPartnersAPI
+    --------------------------------------------------------------------}
+  
+  TPartnersAPI = Class(TGoogleAPI)
+  Private
+    FUserEventsInstance : TUserEventsResource;
+    FClientMessagesInstance : TClientMessagesResource;
+    FUserStatesInstance : TUserStatesResource;
+    FCompaniesLeadsInstance : TCompaniesLeadsResource;
+    FCompaniesInstance : TCompaniesResource;
+    Function GetUserEventsInstance : TUserEventsResource;virtual;
+    Function GetClientMessagesInstance : TClientMessagesResource;virtual;
+    Function GetUserStatesInstance : TUserStatesResource;virtual;
+    Function GetCompaniesLeadsInstance : TCompaniesLeadsResource;virtual;
+    Function GetCompaniesInstance : TCompaniesResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateUserEventsResource(AOwner : TComponent) : TUserEventsResource;virtual;overload;
+    Function CreateUserEventsResource : TUserEventsResource;virtual;overload;
+    Function CreateClientMessagesResource(AOwner : TComponent) : TClientMessagesResource;virtual;overload;
+    Function CreateClientMessagesResource : TClientMessagesResource;virtual;overload;
+    Function CreateUserStatesResource(AOwner : TComponent) : TUserStatesResource;virtual;overload;
+    Function CreateUserStatesResource : TUserStatesResource;virtual;overload;
+    Function CreateCompaniesLeadsResource(AOwner : TComponent) : TCompaniesLeadsResource;virtual;overload;
+    Function CreateCompaniesLeadsResource : TCompaniesLeadsResource;virtual;overload;
+    Function CreateCompaniesResource(AOwner : TComponent) : TCompaniesResource;virtual;overload;
+    Function CreateCompaniesResource : TCompaniesResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property UserEventsResource : TUserEventsResource Read GetUserEventsInstance;
+    Property ClientMessagesResource : TClientMessagesResource Read GetClientMessagesInstance;
+    Property UserStatesResource : TUserStatesResource Read GetUserStatesInstance;
+    Property CompaniesLeadsResource : TCompaniesLeadsResource Read GetCompaniesLeadsInstance;
+    Property CompaniesResource : TCompaniesResource Read GetCompaniesInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TLogUserEventRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TLogUserEventRequest.SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); 
+
+begin
+  If (FrequestMetadata=AValue) then exit;
+  FrequestMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.SeteventAction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeventAction=AValue) then exit;
+  FeventAction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.SeteventCategory(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeventCategory=AValue) then exit;
+  FeventCategory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.SeteventScope(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeventScope=AValue) then exit;
+  FeventScope:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.SeteventDatas(AIndex : Integer; const AValue : TLogUserEventRequestTypeeventDatasArray); 
+
+begin
+  If (FeventDatas=AValue) then exit;
+  FeventDatas:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogUserEventRequest.Setlead(AIndex : Integer; const AValue : TLead); 
+
+begin
+  If (Flead=AValue) then exit;
+  Flead:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLogUserEventRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'eventdatas' : SetLength(FeventDatas,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRequestMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TRequestMetadata.SetuserOverrides(AIndex : Integer; const AValue : TUserOverrides); 
+
+begin
+  If (FuserOverrides=AValue) then exit;
+  FuserOverrides:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequestMetadata.Setlocale(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocale=AValue) then exit;
+  Flocale:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequestMetadata.SetpartnersSessionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpartnersSessionId=AValue) then exit;
+  FpartnersSessionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequestMetadata.SetexperimentIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FexperimentIds=AValue) then exit;
+  FexperimentIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequestMetadata.SettrafficSource(AIndex : Integer; const AValue : TTrafficSource); 
+
+begin
+  If (FtrafficSource=AValue) then exit;
+  FtrafficSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TRequestMetadata.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'experimentids' : SetLength(FexperimentIds,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUserOverrides
+  --------------------------------------------------------------------}
+
+
+Procedure TUserOverrides.SetipAddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FipAddress=AValue) then exit;
+  FipAddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUserOverrides.SetuserId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserId=AValue) then exit;
+  FuserId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTrafficSource
+  --------------------------------------------------------------------}
+
+
+Procedure TTrafficSource.SettrafficSourceId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtrafficSourceId=AValue) then exit;
+  FtrafficSourceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTrafficSource.SettrafficSubId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtrafficSubId=AValue) then exit;
+  FtrafficSubId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEventData
+  --------------------------------------------------------------------}
+
+
+Procedure TEventData.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEventData.Setvalues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TEventData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLead
+  --------------------------------------------------------------------}
+
+
+Procedure TLead.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.Setemail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Femail=AValue) then exit;
+  Femail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetgivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgivenName=AValue) then exit;
+  FgivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetfamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfamilyName=AValue) then exit;
+  FfamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetwebsiteUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FwebsiteUrl=AValue) then exit;
+  FwebsiteUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetphoneNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneNumber=AValue) then exit;
+  FphoneNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.Setcomments(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcomments=AValue) then exit;
+  Fcomments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetgpsMotivations(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FgpsMotivations=AValue) then exit;
+  FgpsMotivations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLead.SetminMonthlyBudget(AIndex : Integer; const AValue : TMoney); 
+
+begin
+  If (FminMonthlyBudget=AValue) then exit;
+  FminMonthlyBudget:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TLead.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLead.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'gpsmotivations' : SetLength(FgpsMotivations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMoney
+  --------------------------------------------------------------------}
+
+
+Procedure TMoney.SetcurrencyCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcurrencyCode=AValue) then exit;
+  FcurrencyCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMoney.Setunits(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Funits=AValue) then exit;
+  Funits:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMoney.Setnanos(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnanos=AValue) then exit;
+  Fnanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogUserEventResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TLogUserEventResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResponseMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TResponseMetadata.SetdebugInfo(AIndex : Integer; const AValue : TDebugInfo); 
+
+begin
+  If (FdebugInfo=AValue) then exit;
+  FdebugInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDebugInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TDebugInfo.SetserverInfo(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FserverInfo=AValue) then exit;
+  FserverInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebugInfo.SetserviceUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FserviceUrl=AValue) then exit;
+  FserviceUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDebugInfo.SetserverTraceInfo(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FserverTraceInfo=AValue) then exit;
+  FserverTraceInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogMessageRequestTypeclientInfo
+  --------------------------------------------------------------------}
+
+
+Class Function TLogMessageRequestTypeclientInfo.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TLogMessageRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TLogMessageRequest.SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); 
+
+begin
+  If (FrequestMetadata=AValue) then exit;
+  FrequestMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogMessageRequest.Setlevel(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flevel=AValue) then exit;
+  Flevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogMessageRequest.Setdetails(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLogMessageRequest.SetclientInfo(AIndex : Integer; const AValue : TLogMessageRequestTypeclientInfo); 
+
+begin
+  If (FclientInfo=AValue) then exit;
+  FclientInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLogMessageResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TLogMessageResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListUserStatesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListUserStatesResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUserStatesResponse.SetuserStates(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FuserStates=AValue) then exit;
+  FuserStates:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListUserStatesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'userstates' : SetLength(FuserStates,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetCompanyResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TGetCompanyResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGetCompanyResponse.Setcompany(AIndex : Integer; const AValue : TCompany); 
+
+begin
+  If (Fcompany=AValue) then exit;
+  Fcompany:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCompany
+  --------------------------------------------------------------------}
+
+
+Procedure TCompany.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetlocalizedInfos(AIndex : Integer; const AValue : TCompanyTypelocalizedInfosArray); 
+
+begin
+  If (FlocalizedInfos=AValue) then exit;
+  FlocalizedInfos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.Setlocations(AIndex : Integer; const AValue : TCompanyTypelocationsArray); 
+
+begin
+  If (Flocations=AValue) then exit;
+  Flocations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetconvertedMinMonthlyBudget(AIndex : Integer; const AValue : TMoney); 
+
+begin
+  If (FconvertedMinMonthlyBudget=AValue) then exit;
+  FconvertedMinMonthlyBudget:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetoriginalMinMonthlyBudget(AIndex : Integer; const AValue : TMoney); 
+
+begin
+  If (ForiginalMinMonthlyBudget=AValue) then exit;
+  ForiginalMinMonthlyBudget:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetpublicProfile(AIndex : Integer; const AValue : TPublicProfile); 
+
+begin
+  If (FpublicProfile=AValue) then exit;
+  FpublicProfile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetcertificationStatuses(AIndex : Integer; const AValue : TCompanyTypecertificationStatusesArray); 
+
+begin
+  If (FcertificationStatuses=AValue) then exit;
+  FcertificationStatuses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.Setranks(AIndex : Integer; const AValue : TCompanyTyperanksArray); 
+
+begin
+  If (Franks=AValue) then exit;
+  Franks:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.SetwebsiteUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FwebsiteUrl=AValue) then exit;
+  FwebsiteUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.Setindustries(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Findustries=AValue) then exit;
+  Findustries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCompany.Setservices(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fservices=AValue) then exit;
+  Fservices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCompany.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'localizedinfos' : SetLength(FlocalizedInfos,ALength);
+  'locations' : SetLength(Flocations,ALength);
+  'certificationstatuses' : SetLength(FcertificationStatuses,ALength);
+  'ranks' : SetLength(Franks,ALength);
+  'industries' : SetLength(Findustries,ALength);
+  'services' : SetLength(Fservices,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLocalizedCompanyInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TLocalizedCompanyInfo.SetlanguageCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlanguageCode=AValue) then exit;
+  FlanguageCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLocalizedCompanyInfo.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLocalizedCompanyInfo.Setoverview(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Foverview=AValue) then exit;
+  Foverview:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLocalizedCompanyInfo.SetcountryCodes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FcountryCodes=AValue) then exit;
+  FcountryCodes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TLocalizedCompanyInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'countrycodes' : SetLength(FcountryCodes,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLocation
+  --------------------------------------------------------------------}
+
+
+Procedure TLocation.Setaddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faddress=AValue) then exit;
+  Faddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLocation.SetlatLng(AIndex : Integer; const AValue : TLatLng); 
+
+begin
+  If (FlatLng=AValue) then exit;
+  FlatLng:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLatLng
+  --------------------------------------------------------------------}
+
+
+Procedure TLatLng.Setlatitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flatitude=AValue) then exit;
+  Flatitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLatLng.Setlongitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flongitude=AValue) then exit;
+  Flongitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPublicProfile
+  --------------------------------------------------------------------}
+
+
+Procedure TPublicProfile.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicProfile.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicProfile.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPublicProfile.SetdisplayImageUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayImageUrl=AValue) then exit;
+  FdisplayImageUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCertificationStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TCertificationStatus.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCertificationStatus.SetexamStatuses(AIndex : Integer; const AValue : TCertificationStatusTypeexamStatusesArray); 
+
+begin
+  If (FexamStatuses=AValue) then exit;
+  FexamStatuses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCertificationStatus.SetisCertified(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisCertified=AValue) then exit;
+  FisCertified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TCertificationStatus.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCertificationStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'examstatuses' : SetLength(FexamStatuses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCertificationExamStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TCertificationExamStatus.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCertificationExamStatus.SetnumberUsersPass(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumberUsersPass=AValue) then exit;
+  FnumberUsersPass:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TCertificationExamStatus.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TRank
+  --------------------------------------------------------------------}
+
+
+Procedure TRank.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRank.Setvalue(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TRank.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TListCompaniesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListCompaniesResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListCompaniesResponse.Setcompanies(AIndex : Integer; const AValue : TListCompaniesResponseTypecompaniesArray); 
+
+begin
+  If (Fcompanies=AValue) then exit;
+  Fcompanies:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListCompaniesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListCompaniesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'companies' : SetLength(Fcompanies,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCreateLeadRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateLeadRequest.SetrequestMetadata(AIndex : Integer; const AValue : TRequestMetadata); 
+
+begin
+  If (FrequestMetadata=AValue) then exit;
+  FrequestMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateLeadRequest.Setlead(AIndex : Integer; const AValue : TLead); 
+
+begin
+  If (Flead=AValue) then exit;
+  Flead:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateLeadRequest.SetrecaptchaChallenge(AIndex : Integer; const AValue : TRecaptchaChallenge); 
+
+begin
+  If (FrecaptchaChallenge=AValue) then exit;
+  FrecaptchaChallenge:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRecaptchaChallenge
+  --------------------------------------------------------------------}
+
+
+Procedure TRecaptchaChallenge.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRecaptchaChallenge.Setresponse(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCreateLeadResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TCreateLeadResponse.SetresponseMetadata(AIndex : Integer; const AValue : TResponseMetadata); 
+
+begin
+  If (FresponseMetadata=AValue) then exit;
+  FresponseMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateLeadResponse.Setlead(AIndex : Integer; const AValue : TLead); 
+
+begin
+  If (Flead=AValue) then exit;
+  Flead:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCreateLeadResponse.SetrecaptchaStatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrecaptchaStatus=AValue) then exit;
+  FrecaptchaStatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUserEventsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TUserEventsResource.ResourceName : String;
+
+begin
+  Result:='userEvents';
+end;
+
+Class Function TUserEventsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpartnersAPI;
+end;
+
+Function TUserEventsResource.Log(aLogUserEventRequest : TLogUserEventRequest) : TLogUserEventResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2/userEvents:log';
+  _Methodid   = 'partners.userEvents.log';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aLogUserEventRequest,TLogUserEventResponse) as TLogUserEventResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TClientMessagesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TClientMessagesResource.ResourceName : String;
+
+begin
+  Result:='clientMessages';
+end;
+
+Class Function TClientMessagesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpartnersAPI;
+end;
+
+Function TClientMessagesResource.Log(aLogMessageRequest : TLogMessageRequest) : TLogMessageResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2/clientMessages:log';
+  _Methodid   = 'partners.clientMessages.log';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aLogMessageRequest,TLogMessageResponse) as TLogMessageResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TUserStatesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TUserStatesResource.ResourceName : String;
+
+begin
+  Result:='userStates';
+end;
+
+Class Function TUserStatesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpartnersAPI;
+end;
+
+Function TUserStatesResource.List(AQuery : string = '') : TListUserStatesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/userStates';
+  _Methodid   = 'partners.userStates.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListUserStatesResponse) as TListUserStatesResponse;
+end;
+
+
+Function TUserStatesResource.List(AQuery : TUserStateslistOptions) : TListUserStatesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestMetadata.userOverrides.ipAddress',AQuery.requestMetadatauserOverridesipAddress);
+  AddToQuery(_Q,'requestMetadata.userOverrides.userId',AQuery.requestMetadatauserOverridesuserId);
+  AddToQuery(_Q,'requestMetadata.locale',AQuery.requestMetadatalocale);
+  AddToQuery(_Q,'requestMetadata.partnersSessionId',AQuery.requestMetadatapartnersSessionId);
+  AddToQuery(_Q,'requestMetadata.experimentIds',AQuery.requestMetadataexperimentIds);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSourceId',AQuery.requestMetadatatrafficSourcetrafficSourceId);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSubId',AQuery.requestMetadatatrafficSourcetrafficSubId);
+  Result:=List(_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCompaniesLeadsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCompaniesLeadsResource.ResourceName : String;
+
+begin
+  Result:='leads';
+end;
+
+Class Function TCompaniesLeadsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpartnersAPI;
+end;
+
+Function TCompaniesLeadsResource.Create(companyId: string; aCreateLeadRequest : TCreateLeadRequest) : TCreateLeadResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v2/companies/{companyId}/leads';
+  _Methodid   = 'partners.companies.leads.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['companyId',companyId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCreateLeadRequest,TCreateLeadResponse) as TCreateLeadResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCompaniesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCompaniesResource.ResourceName : String;
+
+begin
+  Result:='companies';
+end;
+
+Class Function TCompaniesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpartnersAPI;
+end;
+
+Function TCompaniesResource.Get(companyId: string; AQuery : string = '') : TGetCompanyResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/companies/{companyId}';
+  _Methodid   = 'partners.companies.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['companyId',companyId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TGetCompanyResponse) as TGetCompanyResponse;
+end;
+
+
+Function TCompaniesResource.Get(companyId: string; AQuery : TCompaniesgetOptions) : TGetCompanyResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestMetadata.userOverrides.ipAddress',AQuery.requestMetadatauserOverridesipAddress);
+  AddToQuery(_Q,'requestMetadata.userOverrides.userId',AQuery.requestMetadatauserOverridesuserId);
+  AddToQuery(_Q,'requestMetadata.locale',AQuery.requestMetadatalocale);
+  AddToQuery(_Q,'requestMetadata.partnersSessionId',AQuery.requestMetadatapartnersSessionId);
+  AddToQuery(_Q,'requestMetadata.experimentIds',AQuery.requestMetadataexperimentIds);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSourceId',AQuery.requestMetadatatrafficSourcetrafficSourceId);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSubId',AQuery.requestMetadatatrafficSourcetrafficSubId);
+  AddToQuery(_Q,'view',AQuery.view);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'currencyCode',AQuery.currencyCode);
+  AddToQuery(_Q,'address',AQuery.address);
+  Result:=Get(companyId,_Q);
+end;
+
+Function TCompaniesResource.List(AQuery : string = '') : TListCompaniesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v2/companies';
+  _Methodid   = 'partners.companies.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListCompaniesResponse) as TListCompaniesResponse;
+end;
+
+
+Function TCompaniesResource.List(AQuery : TCompanieslistOptions) : TListCompaniesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestMetadata.userOverrides.ipAddress',AQuery.requestMetadatauserOverridesipAddress);
+  AddToQuery(_Q,'requestMetadata.userOverrides.userId',AQuery.requestMetadatauserOverridesuserId);
+  AddToQuery(_Q,'requestMetadata.locale',AQuery.requestMetadatalocale);
+  AddToQuery(_Q,'requestMetadata.partnersSessionId',AQuery.requestMetadatapartnersSessionId);
+  AddToQuery(_Q,'requestMetadata.experimentIds',AQuery.requestMetadataexperimentIds);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSourceId',AQuery.requestMetadatatrafficSourcetrafficSourceId);
+  AddToQuery(_Q,'requestMetadata.trafficSource.trafficSubId',AQuery.requestMetadatatrafficSourcetrafficSubId);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'companyName',AQuery.companyName);
+  AddToQuery(_Q,'view',AQuery.view);
+  AddToQuery(_Q,'minMonthlyBudget.currencyCode',AQuery.minMonthlyBudgetcurrencyCode);
+  AddToQuery(_Q,'minMonthlyBudget.units',AQuery.minMonthlyBudgetunits);
+  AddToQuery(_Q,'minMonthlyBudget.nanos',AQuery.minMonthlyBudgetnanos);
+  AddToQuery(_Q,'maxMonthlyBudget.currencyCode',AQuery.maxMonthlyBudgetcurrencyCode);
+  AddToQuery(_Q,'maxMonthlyBudget.units',AQuery.maxMonthlyBudgetunits);
+  AddToQuery(_Q,'maxMonthlyBudget.nanos',AQuery.maxMonthlyBudgetnanos);
+  AddToQuery(_Q,'industries',AQuery.industries);
+  AddToQuery(_Q,'services',AQuery.services);
+  AddToQuery(_Q,'languageCodes',AQuery.languageCodes);
+  AddToQuery(_Q,'address',AQuery.address);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'gpsMotivations',AQuery.gpsMotivations);
+  AddToQuery(_Q,'websiteUrl',AQuery.websiteUrl);
+  Result:=List(_Q);
+end;
+
+
+
+Function TCompaniesResource.GetLeadsInstance : TCompaniesLeadsResource;
+
+begin
+  if (FLeadsInstance=Nil) then
+    FLeadsInstance:=CreateLeadsResource;
+  Result:=FLeadsInstance;
+end;
+
+Function TCompaniesResource.CreateLeadsResource : TCompaniesLeadsResource;
+
+begin
+  Result:=CreateLeadsResource(Self);
+end;
+
+
+Function TCompaniesResource.CreateLeadsResource(AOwner : TComponent) : TCompaniesLeadsResource;
+
+begin
+  Result:=TCompaniesLeadsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPartnersAPI
+  --------------------------------------------------------------------}
+
+Class Function TPartnersAPI.APIName : String;
+
+begin
+  Result:='partners';
+end;
+
+Class Function TPartnersAPI.APIVersion : String;
+
+begin
+  Result:='v2';
+end;
+
+Class Function TPartnersAPI.APIRevision : String;
+
+begin
+  Result:='20151009';
+end;
+
+Class Function TPartnersAPI.APIID : String;
+
+begin
+  Result:='partners:v2';
+end;
+
+Class Function TPartnersAPI.APITitle : String;
+
+begin
+  Result:='Google Partners API';
+end;
+
+Class Function TPartnersAPI.APIDescription : String;
+
+begin
+  Result:='Lets advertisers search certified companies and create contact leads with them, and also audits the usage of clients.';
+end;
+
+Class Function TPartnersAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TPartnersAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TPartnersAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TPartnersAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TPartnersAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/partners/';
+end;
+
+Class Function TPartnersAPI.APIrootUrl : string;
+
+begin
+  Result:='https://partners.googleapis.com/';
+end;
+
+Class Function TPartnersAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPartnersAPI.APIbaseURL : String;
+
+begin
+  Result:='https://partners.googleapis.com/';
+end;
+
+Class Function TPartnersAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TPartnersAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPartnersAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TPartnersAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,0);
+  
+end;
+
+Class Function TPartnersAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=False;
+end;
+
+Class Procedure TPartnersAPI.RegisterAPIResources;
+
+begin
+  TLogUserEventRequest.RegisterObject;
+  TRequestMetadata.RegisterObject;
+  TUserOverrides.RegisterObject;
+  TTrafficSource.RegisterObject;
+  TEventData.RegisterObject;
+  TLead.RegisterObject;
+  TMoney.RegisterObject;
+  TLogUserEventResponse.RegisterObject;
+  TResponseMetadata.RegisterObject;
+  TDebugInfo.RegisterObject;
+  TLogMessageRequestTypeclientInfo.RegisterObject;
+  TLogMessageRequest.RegisterObject;
+  TLogMessageResponse.RegisterObject;
+  TListUserStatesResponse.RegisterObject;
+  TGetCompanyResponse.RegisterObject;
+  TCompany.RegisterObject;
+  TLocalizedCompanyInfo.RegisterObject;
+  TLocation.RegisterObject;
+  TLatLng.RegisterObject;
+  TPublicProfile.RegisterObject;
+  TCertificationStatus.RegisterObject;
+  TCertificationExamStatus.RegisterObject;
+  TRank.RegisterObject;
+  TListCompaniesResponse.RegisterObject;
+  TCreateLeadRequest.RegisterObject;
+  TRecaptchaChallenge.RegisterObject;
+  TCreateLeadResponse.RegisterObject;
+end;
+
+
+Function TPartnersAPI.GetUserEventsInstance : TUserEventsResource;
+
+begin
+  if (FUserEventsInstance=Nil) then
+    FUserEventsInstance:=CreateUserEventsResource;
+  Result:=FUserEventsInstance;
+end;
+
+Function TPartnersAPI.CreateUserEventsResource : TUserEventsResource;
+
+begin
+  Result:=CreateUserEventsResource(Self);
+end;
+
+
+Function TPartnersAPI.CreateUserEventsResource(AOwner : TComponent) : TUserEventsResource;
+
+begin
+  Result:=TUserEventsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPartnersAPI.GetClientMessagesInstance : TClientMessagesResource;
+
+begin
+  if (FClientMessagesInstance=Nil) then
+    FClientMessagesInstance:=CreateClientMessagesResource;
+  Result:=FClientMessagesInstance;
+end;
+
+Function TPartnersAPI.CreateClientMessagesResource : TClientMessagesResource;
+
+begin
+  Result:=CreateClientMessagesResource(Self);
+end;
+
+
+Function TPartnersAPI.CreateClientMessagesResource(AOwner : TComponent) : TClientMessagesResource;
+
+begin
+  Result:=TClientMessagesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPartnersAPI.GetUserStatesInstance : TUserStatesResource;
+
+begin
+  if (FUserStatesInstance=Nil) then
+    FUserStatesInstance:=CreateUserStatesResource;
+  Result:=FUserStatesInstance;
+end;
+
+Function TPartnersAPI.CreateUserStatesResource : TUserStatesResource;
+
+begin
+  Result:=CreateUserStatesResource(Self);
+end;
+
+
+Function TPartnersAPI.CreateUserStatesResource(AOwner : TComponent) : TUserStatesResource;
+
+begin
+  Result:=TUserStatesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPartnersAPI.GetCompaniesLeadsInstance : TCompaniesLeadsResource;
+
+begin
+  if (FCompaniesLeadsInstance=Nil) then
+    FCompaniesLeadsInstance:=CreateCompaniesLeadsResource;
+  Result:=FCompaniesLeadsInstance;
+end;
+
+Function TPartnersAPI.CreateCompaniesLeadsResource : TCompaniesLeadsResource;
+
+begin
+  Result:=CreateCompaniesLeadsResource(Self);
+end;
+
+
+Function TPartnersAPI.CreateCompaniesLeadsResource(AOwner : TComponent) : TCompaniesLeadsResource;
+
+begin
+  Result:=TCompaniesLeadsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPartnersAPI.GetCompaniesInstance : TCompaniesResource;
+
+begin
+  if (FCompaniesInstance=Nil) then
+    FCompaniesInstance:=CreateCompaniesResource;
+  Result:=FCompaniesInstance;
+end;
+
+Function TPartnersAPI.CreateCompaniesResource : TCompaniesResource;
+
+begin
+  Result:=CreateCompaniesResource(Self);
+end;
+
+
+Function TPartnersAPI.CreateCompaniesResource(AOwner : TComponent) : TCompaniesResource;
+
+begin
+  Result:=TCompaniesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TPartnersAPI.RegisterAPI;
+end.

+ 3517 - 0
packages/googleapi/src/googlepeople.pp

@@ -0,0 +1,3517 @@
+unit googlepeople;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TPerson = Class;
+  TPersonMetadata = Class;
+  TSource = Class;
+  TLocale = Class;
+  TFieldMetadata = Class;
+  TName = Class;
+  TNickname = Class;
+  TCoverPhoto = Class;
+  TPhoto = Class;
+  TGender = Class;
+  TBirthday = Class;
+  TDate = Class;
+  TEvent = Class;
+  TAddress = Class;
+  TResidence = Class;
+  TEmailAddress = Class;
+  TPhoneNumber = Class;
+  TImClient = Class;
+  TTagline = Class;
+  TBiography = Class;
+  TUrl = Class;
+  TOrganization = Class;
+  TOccupation = Class;
+  TInterest = Class;
+  TSkill = Class;
+  TBraggingRights = Class;
+  TRelation = Class;
+  TRelationshipInterest = Class;
+  TRelationshipStatus = Class;
+  TMembership = Class;
+  TContactGroupMembership = Class;
+  TDomainMembership = Class;
+  TGetPeopleResponse = Class;
+  TPersonResponse = Class;
+  TListConnectionsResponse = Class;
+  TPersonArray = Array of TPerson;
+  TPersonMetadataArray = Array of TPersonMetadata;
+  TSourceArray = Array of TSource;
+  TLocaleArray = Array of TLocale;
+  TFieldMetadataArray = Array of TFieldMetadata;
+  TNameArray = Array of TName;
+  TNicknameArray = Array of TNickname;
+  TCoverPhotoArray = Array of TCoverPhoto;
+  TPhotoArray = Array of TPhoto;
+  TGenderArray = Array of TGender;
+  TBirthdayArray = Array of TBirthday;
+  TDateArray = Array of TDate;
+  TEventArray = Array of TEvent;
+  TAddressArray = Array of TAddress;
+  TResidenceArray = Array of TResidence;
+  TEmailAddressArray = Array of TEmailAddress;
+  TPhoneNumberArray = Array of TPhoneNumber;
+  TImClientArray = Array of TImClient;
+  TTaglineArray = Array of TTagline;
+  TBiographyArray = Array of TBiography;
+  TUrlArray = Array of TUrl;
+  TOrganizationArray = Array of TOrganization;
+  TOccupationArray = Array of TOccupation;
+  TInterestArray = Array of TInterest;
+  TSkillArray = Array of TSkill;
+  TBraggingRightsArray = Array of TBraggingRights;
+  TRelationArray = Array of TRelation;
+  TRelationshipInterestArray = Array of TRelationshipInterest;
+  TRelationshipStatusArray = Array of TRelationshipStatus;
+  TMembershipArray = Array of TMembership;
+  TContactGroupMembershipArray = Array of TContactGroupMembership;
+  TDomainMembershipArray = Array of TDomainMembership;
+  TGetPeopleResponseArray = Array of TGetPeopleResponse;
+  TPersonResponseArray = Array of TPersonResponse;
+  TListConnectionsResponseArray = Array of TListConnectionsResponse;
+  //Anonymous types, using auto-generated names
+  TPersonTypelocalesArray = Array of TLocale;
+  TPersonTypenamesArray = Array of TName;
+  TPersonTypenicknamesArray = Array of TNickname;
+  TPersonTypecoverPhotosArray = Array of TCoverPhoto;
+  TPersonTypephotosArray = Array of TPhoto;
+  TPersonTypegendersArray = Array of TGender;
+  TPersonTypebirthdaysArray = Array of TBirthday;
+  TPersonTypeeventsArray = Array of TEvent;
+  TPersonTypeaddressesArray = Array of TAddress;
+  TPersonTyperesidencesArray = Array of TResidence;
+  TPersonTypeemailAddressesArray = Array of TEmailAddress;
+  TPersonTypephoneNumbersArray = Array of TPhoneNumber;
+  TPersonTypeimClientsArray = Array of TImClient;
+  TPersonTypetaglinesArray = Array of TTagline;
+  TPersonTypebiographiesArray = Array of TBiography;
+  TPersonTypeurlsArray = Array of TUrl;
+  TPersonTypeorganizationsArray = Array of TOrganization;
+  TPersonTypeoccupationsArray = Array of TOccupation;
+  TPersonTypeinterestsArray = Array of TInterest;
+  TPersonTypeskillsArray = Array of TSkill;
+  TPersonTypebraggingRightsArray = Array of TBraggingRights;
+  TPersonTyperelationsArray = Array of TRelation;
+  TPersonTyperelationshipInterestsArray = Array of TRelationshipInterest;
+  TPersonTyperelationshipStatusesArray = Array of TRelationshipStatus;
+  TPersonTypemembershipsArray = Array of TMembership;
+  TPersonMetadataTypesourcesArray = Array of TSource;
+  TGetPeopleResponseTyperesponsesArray = Array of TPersonResponse;
+  TListConnectionsResponseTypeconnectionsArray = Array of TPerson;
+  
+  { --------------------------------------------------------------------
+    TPerson
+    --------------------------------------------------------------------}
+  
+  TPerson = Class(TGoogleBaseObject)
+  Private
+    FresourceName : String;
+    Fetag : String;
+    Fmetadata : TPersonMetadata;
+    Flocales : TPersonTypelocalesArray;
+    Fnames : TPersonTypenamesArray;
+    Fnicknames : TPersonTypenicknamesArray;
+    FcoverPhotos : TPersonTypecoverPhotosArray;
+    Fphotos : TPersonTypephotosArray;
+    Fgenders : TPersonTypegendersArray;
+    FageRange : String;
+    Fbirthdays : TPersonTypebirthdaysArray;
+    Fevents : TPersonTypeeventsArray;
+    Faddresses : TPersonTypeaddressesArray;
+    Fresidences : TPersonTyperesidencesArray;
+    FemailAddresses : TPersonTypeemailAddressesArray;
+    FphoneNumbers : TPersonTypephoneNumbersArray;
+    FimClients : TPersonTypeimClientsArray;
+    Ftaglines : TPersonTypetaglinesArray;
+    Fbiographies : TPersonTypebiographiesArray;
+    Furls : TPersonTypeurlsArray;
+    Forganizations : TPersonTypeorganizationsArray;
+    Foccupations : TPersonTypeoccupationsArray;
+    Finterests : TPersonTypeinterestsArray;
+    Fskills : TPersonTypeskillsArray;
+    FbraggingRights : TPersonTypebraggingRightsArray;
+    Frelations : TPersonTyperelationsArray;
+    FrelationshipInterests : TPersonTyperelationshipInterestsArray;
+    FrelationshipStatuses : TPersonTyperelationshipStatusesArray;
+    Fmemberships : TPersonTypemembershipsArray;
+  Protected
+    //Property setters
+    Procedure SetresourceName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TPersonMetadata); virtual;
+    Procedure Setlocales(AIndex : Integer; const AValue : TPersonTypelocalesArray); virtual;
+    Procedure Setnames(AIndex : Integer; const AValue : TPersonTypenamesArray); virtual;
+    Procedure Setnicknames(AIndex : Integer; const AValue : TPersonTypenicknamesArray); virtual;
+    Procedure SetcoverPhotos(AIndex : Integer; const AValue : TPersonTypecoverPhotosArray); virtual;
+    Procedure Setphotos(AIndex : Integer; const AValue : TPersonTypephotosArray); virtual;
+    Procedure Setgenders(AIndex : Integer; const AValue : TPersonTypegendersArray); virtual;
+    Procedure SetageRange(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setbirthdays(AIndex : Integer; const AValue : TPersonTypebirthdaysArray); virtual;
+    Procedure Setevents(AIndex : Integer; const AValue : TPersonTypeeventsArray); virtual;
+    Procedure Setaddresses(AIndex : Integer; const AValue : TPersonTypeaddressesArray); virtual;
+    Procedure Setresidences(AIndex : Integer; const AValue : TPersonTyperesidencesArray); virtual;
+    Procedure SetemailAddresses(AIndex : Integer; const AValue : TPersonTypeemailAddressesArray); virtual;
+    Procedure SetphoneNumbers(AIndex : Integer; const AValue : TPersonTypephoneNumbersArray); virtual;
+    Procedure SetimClients(AIndex : Integer; const AValue : TPersonTypeimClientsArray); virtual;
+    Procedure Settaglines(AIndex : Integer; const AValue : TPersonTypetaglinesArray); virtual;
+    Procedure Setbiographies(AIndex : Integer; const AValue : TPersonTypebiographiesArray); virtual;
+    Procedure Seturls(AIndex : Integer; const AValue : TPersonTypeurlsArray); virtual;
+    Procedure Setorganizations(AIndex : Integer; const AValue : TPersonTypeorganizationsArray); virtual;
+    Procedure Setoccupations(AIndex : Integer; const AValue : TPersonTypeoccupationsArray); virtual;
+    Procedure Setinterests(AIndex : Integer; const AValue : TPersonTypeinterestsArray); virtual;
+    Procedure Setskills(AIndex : Integer; const AValue : TPersonTypeskillsArray); virtual;
+    Procedure SetbraggingRights(AIndex : Integer; const AValue : TPersonTypebraggingRightsArray); virtual;
+    Procedure Setrelations(AIndex : Integer; const AValue : TPersonTyperelationsArray); virtual;
+    Procedure SetrelationshipInterests(AIndex : Integer; const AValue : TPersonTyperelationshipInterestsArray); virtual;
+    Procedure SetrelationshipStatuses(AIndex : Integer; const AValue : TPersonTyperelationshipStatusesArray); virtual;
+    Procedure Setmemberships(AIndex : Integer; const AValue : TPersonTypemembershipsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property resourceName : String Index 0 Read FresourceName Write SetresourceName;
+    Property etag : String Index 8 Read Fetag Write Setetag;
+    Property metadata : TPersonMetadata Index 16 Read Fmetadata Write Setmetadata;
+    Property locales : TPersonTypelocalesArray Index 24 Read Flocales Write Setlocales;
+    Property names : TPersonTypenamesArray Index 32 Read Fnames Write Setnames;
+    Property nicknames : TPersonTypenicknamesArray Index 40 Read Fnicknames Write Setnicknames;
+    Property coverPhotos : TPersonTypecoverPhotosArray Index 48 Read FcoverPhotos Write SetcoverPhotos;
+    Property photos : TPersonTypephotosArray Index 56 Read Fphotos Write Setphotos;
+    Property genders : TPersonTypegendersArray Index 64 Read Fgenders Write Setgenders;
+    Property ageRange : String Index 72 Read FageRange Write SetageRange;
+    Property birthdays : TPersonTypebirthdaysArray Index 80 Read Fbirthdays Write Setbirthdays;
+    Property events : TPersonTypeeventsArray Index 88 Read Fevents Write Setevents;
+    Property addresses : TPersonTypeaddressesArray Index 96 Read Faddresses Write Setaddresses;
+    Property residences : TPersonTyperesidencesArray Index 104 Read Fresidences Write Setresidences;
+    Property emailAddresses : TPersonTypeemailAddressesArray Index 112 Read FemailAddresses Write SetemailAddresses;
+    Property phoneNumbers : TPersonTypephoneNumbersArray Index 120 Read FphoneNumbers Write SetphoneNumbers;
+    Property imClients : TPersonTypeimClientsArray Index 128 Read FimClients Write SetimClients;
+    Property taglines : TPersonTypetaglinesArray Index 136 Read Ftaglines Write Settaglines;
+    Property biographies : TPersonTypebiographiesArray Index 144 Read Fbiographies Write Setbiographies;
+    Property urls : TPersonTypeurlsArray Index 152 Read Furls Write Seturls;
+    Property organizations : TPersonTypeorganizationsArray Index 160 Read Forganizations Write Setorganizations;
+    Property occupations : TPersonTypeoccupationsArray Index 168 Read Foccupations Write Setoccupations;
+    Property interests : TPersonTypeinterestsArray Index 176 Read Finterests Write Setinterests;
+    Property skills : TPersonTypeskillsArray Index 184 Read Fskills Write Setskills;
+    Property braggingRights : TPersonTypebraggingRightsArray Index 192 Read FbraggingRights Write SetbraggingRights;
+    Property relations : TPersonTyperelationsArray Index 200 Read Frelations Write Setrelations;
+    Property relationshipInterests : TPersonTyperelationshipInterestsArray Index 208 Read FrelationshipInterests Write SetrelationshipInterests;
+    Property relationshipStatuses : TPersonTyperelationshipStatusesArray Index 216 Read FrelationshipStatuses Write SetrelationshipStatuses;
+    Property memberships : TPersonTypemembershipsArray Index 224 Read Fmemberships Write Setmemberships;
+  end;
+  TPersonClass = Class of TPerson;
+  
+  { --------------------------------------------------------------------
+    TPersonMetadata
+    --------------------------------------------------------------------}
+  
+  TPersonMetadata = Class(TGoogleBaseObject)
+  Private
+    Fsources : TPersonMetadataTypesourcesArray;
+    FpreviousResourceNames : TStringArray;
+    Fdeleted : boolean;
+    FobjectType : String;
+  Protected
+    //Property setters
+    Procedure Setsources(AIndex : Integer; const AValue : TPersonMetadataTypesourcesArray); virtual;
+    Procedure SetpreviousResourceNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setdeleted(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetobjectType(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property sources : TPersonMetadataTypesourcesArray Index 0 Read Fsources Write Setsources;
+    Property previousResourceNames : TStringArray Index 8 Read FpreviousResourceNames Write SetpreviousResourceNames;
+    Property deleted : boolean Index 16 Read Fdeleted Write Setdeleted;
+    Property objectType : String Index 24 Read FobjectType Write SetobjectType;
+  end;
+  TPersonMetadataClass = Class of TPersonMetadata;
+  
+  { --------------------------------------------------------------------
+    TSource
+    --------------------------------------------------------------------}
+  
+  TSource = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fid : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property id : String Index 8 Read Fid Write Setid;
+  end;
+  TSourceClass = Class of TSource;
+  
+  { --------------------------------------------------------------------
+    TLocale
+    --------------------------------------------------------------------}
+  
+  TLocale = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TLocaleClass = Class of TLocale;
+  
+  { --------------------------------------------------------------------
+    TFieldMetadata
+    --------------------------------------------------------------------}
+  
+  TFieldMetadata = Class(TGoogleBaseObject)
+  Private
+    Fprimary : boolean;
+    Fverified : boolean;
+    Fsource : TSource;
+  Protected
+    //Property setters
+    Procedure Setprimary(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setverified(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : TSource); virtual;
+  Public
+  Published
+    Property primary : boolean Index 0 Read Fprimary Write Setprimary;
+    Property verified : boolean Index 8 Read Fverified Write Setverified;
+    Property source : TSource Index 16 Read Fsource Write Setsource;
+  end;
+  TFieldMetadataClass = Class of TFieldMetadata;
+  
+  { --------------------------------------------------------------------
+    TName
+    --------------------------------------------------------------------}
+  
+  TName = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    FdisplayName : String;
+    FfamilyName : String;
+    FgivenName : String;
+    FmiddleName : String;
+    FhonorificPrefix : String;
+    FhonorificSuffix : String;
+    FphoneticFamilyName : String;
+    FphoneticGivenName : String;
+    FphoneticMiddleName : String;
+    FphoneticHonorificPrefix : String;
+    FphoneticHonorificSuffix : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmiddleName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethonorificPrefix(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethonorificSuffix(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticFamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticGivenName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticMiddleName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticHonorificPrefix(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticHonorificSuffix(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property familyName : String Index 16 Read FfamilyName Write SetfamilyName;
+    Property givenName : String Index 24 Read FgivenName Write SetgivenName;
+    Property middleName : String Index 32 Read FmiddleName Write SetmiddleName;
+    Property honorificPrefix : String Index 40 Read FhonorificPrefix Write SethonorificPrefix;
+    Property honorificSuffix : String Index 48 Read FhonorificSuffix Write SethonorificSuffix;
+    Property phoneticFamilyName : String Index 56 Read FphoneticFamilyName Write SetphoneticFamilyName;
+    Property phoneticGivenName : String Index 64 Read FphoneticGivenName Write SetphoneticGivenName;
+    Property phoneticMiddleName : String Index 72 Read FphoneticMiddleName Write SetphoneticMiddleName;
+    Property phoneticHonorificPrefix : String Index 80 Read FphoneticHonorificPrefix Write SetphoneticHonorificPrefix;
+    Property phoneticHonorificSuffix : String Index 88 Read FphoneticHonorificSuffix Write SetphoneticHonorificSuffix;
+  end;
+  TNameClass = Class of TName;
+  
+  { --------------------------------------------------------------------
+    TNickname
+    --------------------------------------------------------------------}
+  
+  TNickname = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property _type : String Index 16 Read F_type Write Set_type;
+  end;
+  TNicknameClass = Class of TNickname;
+  
+  { --------------------------------------------------------------------
+    TCoverPhoto
+    --------------------------------------------------------------------}
+  
+  TCoverPhoto = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Furl : String;
+    Fdefault : boolean;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdefault(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property url : String Index 8 Read Furl Write Seturl;
+    Property default : boolean Index 16 Read Fdefault Write Setdefault;
+  end;
+  TCoverPhotoClass = Class of TCoverPhoto;
+  
+  { --------------------------------------------------------------------
+    TPhoto
+    --------------------------------------------------------------------}
+  
+  TPhoto = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property url : String Index 8 Read Furl Write Seturl;
+  end;
+  TPhotoClass = Class of TPhoto;
+  
+  { --------------------------------------------------------------------
+    TGender
+    --------------------------------------------------------------------}
+  
+  TGender = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    FformattedValue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property formattedValue : String Index 16 Read FformattedValue Write SetformattedValue;
+  end;
+  TGenderClass = Class of TGender;
+  
+  { --------------------------------------------------------------------
+    TBirthday
+    --------------------------------------------------------------------}
+  
+  TBirthday = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fdate : TDate;
+    Ftext : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setdate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure Settext(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property date : TDate Index 8 Read Fdate Write Setdate;
+    Property text : String Index 16 Read Ftext Write Settext;
+  end;
+  TBirthdayClass = Class of TBirthday;
+  
+  { --------------------------------------------------------------------
+    TDate
+    --------------------------------------------------------------------}
+  
+  TDate = Class(TGoogleBaseObject)
+  Private
+    Fyear : integer;
+    Fmonth : integer;
+    Fday : integer;
+  Protected
+    //Property setters
+    Procedure Setyear(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmonth(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setday(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property year : integer Index 0 Read Fyear Write Setyear;
+    Property month : integer Index 8 Read Fmonth Write Setmonth;
+    Property day : integer Index 16 Read Fday Write Setday;
+  end;
+  TDateClass = Class of TDate;
+  
+  { --------------------------------------------------------------------
+    TEvent
+    --------------------------------------------------------------------}
+  
+  TEvent = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fdate : TDate;
+    F_type : String;
+    FformattedType : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setdate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property date : TDate Index 8 Read Fdate Write Setdate;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+  end;
+  TEventClass = Class of TEvent;
+  
+  { --------------------------------------------------------------------
+    TAddress
+    --------------------------------------------------------------------}
+  
+  TAddress = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    FformattedValue : String;
+    F_type : String;
+    FformattedType : String;
+    FpoBox : String;
+    FstreetAddress : String;
+    FextendedAddress : String;
+    Fcity : String;
+    Fregion : String;
+    FpostalCode : String;
+    Fcountry : String;
+    FcountryCode : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure SetformattedValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpoBox(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstreetAddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetextendedAddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcity(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setregion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpostalCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcountryCode(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property formattedValue : String Index 8 Read FformattedValue Write SetformattedValue;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+    Property poBox : String Index 32 Read FpoBox Write SetpoBox;
+    Property streetAddress : String Index 40 Read FstreetAddress Write SetstreetAddress;
+    Property extendedAddress : String Index 48 Read FextendedAddress Write SetextendedAddress;
+    Property city : String Index 56 Read Fcity Write Setcity;
+    Property region : String Index 64 Read Fregion Write Setregion;
+    Property postalCode : String Index 72 Read FpostalCode Write SetpostalCode;
+    Property country : String Index 80 Read Fcountry Write Setcountry;
+    Property countryCode : String Index 88 Read FcountryCode Write SetcountryCode;
+  end;
+  TAddressClass = Class of TAddress;
+  
+  { --------------------------------------------------------------------
+    TResidence
+    --------------------------------------------------------------------}
+  
+  TResidence = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    Fcurrent : boolean;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcurrent(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property current : boolean Index 16 Read Fcurrent Write Setcurrent;
+  end;
+  TResidenceClass = Class of TResidence;
+  
+  { --------------------------------------------------------------------
+    TEmailAddress
+    --------------------------------------------------------------------}
+  
+  TEmailAddress = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    F_type : String;
+    FformattedType : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+  end;
+  TEmailAddressClass = Class of TEmailAddress;
+  
+  { --------------------------------------------------------------------
+    TPhoneNumber
+    --------------------------------------------------------------------}
+  
+  TPhoneNumber = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    FcanonicalForm : String;
+    F_type : String;
+    FformattedType : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcanonicalForm(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property canonicalForm : String Index 16 Read FcanonicalForm Write SetcanonicalForm;
+    Property _type : String Index 24 Read F_type Write Set_type;
+    Property formattedType : String Index 32 Read FformattedType Write SetformattedType;
+  end;
+  TPhoneNumberClass = Class of TPhoneNumber;
+  
+  { --------------------------------------------------------------------
+    TImClient
+    --------------------------------------------------------------------}
+  
+  TImClient = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fusername : String;
+    F_type : String;
+    FformattedType : String;
+    Fprotocol : String;
+    FformattedProtocol : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setusername(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprotocol(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedProtocol(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property username : String Index 8 Read Fusername Write Setusername;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+    Property protocol : String Index 32 Read Fprotocol Write Setprotocol;
+    Property formattedProtocol : String Index 40 Read FformattedProtocol Write SetformattedProtocol;
+  end;
+  TImClientClass = Class of TImClient;
+  
+  { --------------------------------------------------------------------
+    TTagline
+    --------------------------------------------------------------------}
+  
+  TTagline = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TTaglineClass = Class of TTagline;
+  
+  { --------------------------------------------------------------------
+    TBiography
+    --------------------------------------------------------------------}
+  
+  TBiography = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TBiographyClass = Class of TBiography;
+  
+  { --------------------------------------------------------------------
+    TUrl
+    --------------------------------------------------------------------}
+  
+  TUrl = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    F_type : String;
+    FformattedType : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+  end;
+  TUrlClass = Class of TUrl;
+  
+  { --------------------------------------------------------------------
+    TOrganization
+    --------------------------------------------------------------------}
+  
+  TOrganization = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    F_type : String;
+    FformattedType : String;
+    FstartDate : TDate;
+    FendDate : TDate;
+    Fcurrent : boolean;
+    Fname : String;
+    FphoneticName : String;
+    Fdepartment : String;
+    Ftitle : String;
+    FjobDescription : String;
+    Fsymbol : String;
+    Fdomain : String;
+    Flocation : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure SetendDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure Setcurrent(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetphoneticName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdepartment(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetjobDescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsymbol(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdomain(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property formattedType : String Index 16 Read FformattedType Write SetformattedType;
+    Property startDate : TDate Index 24 Read FstartDate Write SetstartDate;
+    Property endDate : TDate Index 32 Read FendDate Write SetendDate;
+    Property current : boolean Index 40 Read Fcurrent Write Setcurrent;
+    Property name : String Index 48 Read Fname Write Setname;
+    Property phoneticName : String Index 56 Read FphoneticName Write SetphoneticName;
+    Property department : String Index 64 Read Fdepartment Write Setdepartment;
+    Property title : String Index 72 Read Ftitle Write Settitle;
+    Property jobDescription : String Index 80 Read FjobDescription Write SetjobDescription;
+    Property symbol : String Index 88 Read Fsymbol Write Setsymbol;
+    Property domain : String Index 96 Read Fdomain Write Setdomain;
+    Property location : String Index 104 Read Flocation Write Setlocation;
+  end;
+  TOrganizationClass = Class of TOrganization;
+  
+  { --------------------------------------------------------------------
+    TOccupation
+    --------------------------------------------------------------------}
+  
+  TOccupation = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TOccupationClass = Class of TOccupation;
+  
+  { --------------------------------------------------------------------
+    TInterest
+    --------------------------------------------------------------------}
+  
+  TInterest = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TInterestClass = Class of TInterest;
+  
+  { --------------------------------------------------------------------
+    TSkill
+    --------------------------------------------------------------------}
+  
+  TSkill = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TSkillClass = Class of TSkill;
+  
+  { --------------------------------------------------------------------
+    TBraggingRights
+    --------------------------------------------------------------------}
+  
+  TBraggingRights = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TBraggingRightsClass = Class of TBraggingRights;
+  
+  { --------------------------------------------------------------------
+    TRelation
+    --------------------------------------------------------------------}
+  
+  TRelation = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fperson : String;
+    F_type : String;
+    FformattedType : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setperson(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property person : String Index 8 Read Fperson Write Setperson;
+    Property _type : String Index 16 Read F_type Write Set_type;
+    Property formattedType : String Index 24 Read FformattedType Write SetformattedType;
+  end;
+  TRelationClass = Class of TRelation;
+  
+  { --------------------------------------------------------------------
+    TRelationshipInterest
+    --------------------------------------------------------------------}
+  
+  TRelationshipInterest = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    FformattedValue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property formattedValue : String Index 16 Read FformattedValue Write SetformattedValue;
+  end;
+  TRelationshipInterestClass = Class of TRelationshipInterest;
+  
+  { --------------------------------------------------------------------
+    TRelationshipStatus
+    --------------------------------------------------------------------}
+  
+  TRelationshipStatus = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    Fvalue : String;
+    FformattedValue : String;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+    Property formattedValue : String Index 16 Read FformattedValue Write SetformattedValue;
+  end;
+  TRelationshipStatusClass = Class of TRelationshipStatus;
+  
+  { --------------------------------------------------------------------
+    TMembership
+    --------------------------------------------------------------------}
+  
+  TMembership = Class(TGoogleBaseObject)
+  Private
+    Fmetadata : TFieldMetadata;
+    FcontactGroupMembership : TContactGroupMembership;
+    FdomainMembership : TDomainMembership;
+  Protected
+    //Property setters
+    Procedure Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); virtual;
+    Procedure SetcontactGroupMembership(AIndex : Integer; const AValue : TContactGroupMembership); virtual;
+    Procedure SetdomainMembership(AIndex : Integer; const AValue : TDomainMembership); virtual;
+  Public
+  Published
+    Property metadata : TFieldMetadata Index 0 Read Fmetadata Write Setmetadata;
+    Property contactGroupMembership : TContactGroupMembership Index 8 Read FcontactGroupMembership Write SetcontactGroupMembership;
+    Property domainMembership : TDomainMembership Index 16 Read FdomainMembership Write SetdomainMembership;
+  end;
+  TMembershipClass = Class of TMembership;
+  
+  { --------------------------------------------------------------------
+    TContactGroupMembership
+    --------------------------------------------------------------------}
+  
+  TContactGroupMembership = Class(TGoogleBaseObject)
+  Private
+    FcontactGroupId : String;
+  Protected
+    //Property setters
+    Procedure SetcontactGroupId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property contactGroupId : String Index 0 Read FcontactGroupId Write SetcontactGroupId;
+  end;
+  TContactGroupMembershipClass = Class of TContactGroupMembership;
+  
+  { --------------------------------------------------------------------
+    TDomainMembership
+    --------------------------------------------------------------------}
+  
+  TDomainMembership = Class(TGoogleBaseObject)
+  Private
+    FinViewerDomain : boolean;
+  Protected
+    //Property setters
+    Procedure SetinViewerDomain(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property inViewerDomain : boolean Index 0 Read FinViewerDomain Write SetinViewerDomain;
+  end;
+  TDomainMembershipClass = Class of TDomainMembership;
+  
+  { --------------------------------------------------------------------
+    TGetPeopleResponse
+    --------------------------------------------------------------------}
+  
+  TGetPeopleResponse = Class(TGoogleBaseObject)
+  Private
+    Fresponses : TGetPeopleResponseTyperesponsesArray;
+  Protected
+    //Property setters
+    Procedure Setresponses(AIndex : Integer; const AValue : TGetPeopleResponseTyperesponsesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property responses : TGetPeopleResponseTyperesponsesArray Index 0 Read Fresponses Write Setresponses;
+  end;
+  TGetPeopleResponseClass = Class of TGetPeopleResponse;
+  
+  { --------------------------------------------------------------------
+    TPersonResponse
+    --------------------------------------------------------------------}
+  
+  TPersonResponse = Class(TGoogleBaseObject)
+  Private
+    FhttpStatusCode : integer;
+    Fperson : TPerson;
+    FrequestedResourceName : String;
+  Protected
+    //Property setters
+    Procedure SethttpStatusCode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setperson(AIndex : Integer; const AValue : TPerson); virtual;
+    Procedure SetrequestedResourceName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property httpStatusCode : integer Index 0 Read FhttpStatusCode Write SethttpStatusCode;
+    Property person : TPerson Index 8 Read Fperson Write Setperson;
+    Property requestedResourceName : String Index 16 Read FrequestedResourceName Write SetrequestedResourceName;
+  end;
+  TPersonResponseClass = Class of TPersonResponse;
+  
+  { --------------------------------------------------------------------
+    TListConnectionsResponse
+    --------------------------------------------------------------------}
+  
+  TListConnectionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fconnections : TListConnectionsResponseTypeconnectionsArray;
+    FnextPageToken : String;
+    FnextSyncToken : String;
+  Protected
+    //Property setters
+    Procedure Setconnections(AIndex : Integer; const AValue : TListConnectionsResponseTypeconnectionsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextSyncToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property connections : TListConnectionsResponseTypeconnectionsArray Index 0 Read Fconnections Write Setconnections;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property nextSyncToken : String Index 16 Read FnextSyncToken Write SetnextSyncToken;
+  end;
+  TListConnectionsResponseClass = Class of TListConnectionsResponse;
+  
+  { --------------------------------------------------------------------
+    TPeopleConnectionsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TPeopleConnectionsResource, method List
+  
+  TPeopleConnectionsListOptions = Record
+    pageToken : String;
+    pageSize : integer;
+    sortOrder : String;
+    syncToken : String;
+    requestMaskincludeField : String;
+  end;
+  
+  TPeopleConnectionsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(_resourceName: string; AQuery : string  = '') : TListConnectionsResponse;
+    Function List(_resourceName: string; AQuery : TPeopleConnectionslistOptions) : TListConnectionsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPeopleResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TPeopleResource, method Get
+  
+  TPeopleGetOptions = Record
+    requestMaskincludeField : String;
+  end;
+  
+  
+  //Optional query Options for TPeopleResource, method GetBatchGet
+  
+  TPeopleGetBatchGetOptions = Record
+    resourceNames : String;
+    requestMaskincludeField : String;
+  end;
+  
+  TPeopleResource = Class(TGoogleResource)
+  Private
+    FConnectionsInstance : TPeopleConnectionsResource;
+    Function GetConnectionsInstance : TPeopleConnectionsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_resourceName: string; AQuery : string  = '') : TPerson;
+    Function Get(_resourceName: string; AQuery : TPeoplegetOptions) : TPerson;
+    Function GetBatchGet(AQuery : string  = '') : TGetPeopleResponse;
+    Function GetBatchGet(AQuery : TPeoplegetBatchGetOptions) : TGetPeopleResponse;
+    Function CreateConnectionsResource(AOwner : TComponent) : TPeopleConnectionsResource;virtual;overload;
+    Function CreateConnectionsResource : TPeopleConnectionsResource;virtual;overload;
+    Property ConnectionsResource : TPeopleConnectionsResource Read GetConnectionsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPeopleAPI
+    --------------------------------------------------------------------}
+  
+  TPeopleAPI = Class(TGoogleAPI)
+  Private
+    FPeopleConnectionsInstance : TPeopleConnectionsResource;
+    FPeopleInstance : TPeopleResource;
+    Function GetPeopleConnectionsInstance : TPeopleConnectionsResource;virtual;
+    Function GetPeopleInstance : TPeopleResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreatePeopleConnectionsResource(AOwner : TComponent) : TPeopleConnectionsResource;virtual;overload;
+    Function CreatePeopleConnectionsResource : TPeopleConnectionsResource;virtual;overload;
+    Function CreatePeopleResource(AOwner : TComponent) : TPeopleResource;virtual;overload;
+    Function CreatePeopleResource : TPeopleResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property PeopleConnectionsResource : TPeopleConnectionsResource Read GetPeopleConnectionsInstance;
+    Property PeopleResource : TPeopleResource Read GetPeopleInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TPerson
+  --------------------------------------------------------------------}
+
+
+Procedure TPerson.SetresourceName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FresourceName=AValue) then exit;
+  FresourceName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setmetadata(AIndex : Integer; const AValue : TPersonMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setlocales(AIndex : Integer; const AValue : TPersonTypelocalesArray); 
+
+begin
+  If (Flocales=AValue) then exit;
+  Flocales:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setnames(AIndex : Integer; const AValue : TPersonTypenamesArray); 
+
+begin
+  If (Fnames=AValue) then exit;
+  Fnames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setnicknames(AIndex : Integer; const AValue : TPersonTypenicknamesArray); 
+
+begin
+  If (Fnicknames=AValue) then exit;
+  Fnicknames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetcoverPhotos(AIndex : Integer; const AValue : TPersonTypecoverPhotosArray); 
+
+begin
+  If (FcoverPhotos=AValue) then exit;
+  FcoverPhotos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setphotos(AIndex : Integer; const AValue : TPersonTypephotosArray); 
+
+begin
+  If (Fphotos=AValue) then exit;
+  Fphotos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setgenders(AIndex : Integer; const AValue : TPersonTypegendersArray); 
+
+begin
+  If (Fgenders=AValue) then exit;
+  Fgenders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetageRange(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FageRange=AValue) then exit;
+  FageRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setbirthdays(AIndex : Integer; const AValue : TPersonTypebirthdaysArray); 
+
+begin
+  If (Fbirthdays=AValue) then exit;
+  Fbirthdays:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setevents(AIndex : Integer; const AValue : TPersonTypeeventsArray); 
+
+begin
+  If (Fevents=AValue) then exit;
+  Fevents:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setaddresses(AIndex : Integer; const AValue : TPersonTypeaddressesArray); 
+
+begin
+  If (Faddresses=AValue) then exit;
+  Faddresses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setresidences(AIndex : Integer; const AValue : TPersonTyperesidencesArray); 
+
+begin
+  If (Fresidences=AValue) then exit;
+  Fresidences:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetemailAddresses(AIndex : Integer; const AValue : TPersonTypeemailAddressesArray); 
+
+begin
+  If (FemailAddresses=AValue) then exit;
+  FemailAddresses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetphoneNumbers(AIndex : Integer; const AValue : TPersonTypephoneNumbersArray); 
+
+begin
+  If (FphoneNumbers=AValue) then exit;
+  FphoneNumbers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetimClients(AIndex : Integer; const AValue : TPersonTypeimClientsArray); 
+
+begin
+  If (FimClients=AValue) then exit;
+  FimClients:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Settaglines(AIndex : Integer; const AValue : TPersonTypetaglinesArray); 
+
+begin
+  If (Ftaglines=AValue) then exit;
+  Ftaglines:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setbiographies(AIndex : Integer; const AValue : TPersonTypebiographiesArray); 
+
+begin
+  If (Fbiographies=AValue) then exit;
+  Fbiographies:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Seturls(AIndex : Integer; const AValue : TPersonTypeurlsArray); 
+
+begin
+  If (Furls=AValue) then exit;
+  Furls:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setorganizations(AIndex : Integer; const AValue : TPersonTypeorganizationsArray); 
+
+begin
+  If (Forganizations=AValue) then exit;
+  Forganizations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setoccupations(AIndex : Integer; const AValue : TPersonTypeoccupationsArray); 
+
+begin
+  If (Foccupations=AValue) then exit;
+  Foccupations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setinterests(AIndex : Integer; const AValue : TPersonTypeinterestsArray); 
+
+begin
+  If (Finterests=AValue) then exit;
+  Finterests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setskills(AIndex : Integer; const AValue : TPersonTypeskillsArray); 
+
+begin
+  If (Fskills=AValue) then exit;
+  Fskills:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetbraggingRights(AIndex : Integer; const AValue : TPersonTypebraggingRightsArray); 
+
+begin
+  If (FbraggingRights=AValue) then exit;
+  FbraggingRights:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setrelations(AIndex : Integer; const AValue : TPersonTyperelationsArray); 
+
+begin
+  If (Frelations=AValue) then exit;
+  Frelations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetrelationshipInterests(AIndex : Integer; const AValue : TPersonTyperelationshipInterestsArray); 
+
+begin
+  If (FrelationshipInterests=AValue) then exit;
+  FrelationshipInterests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetrelationshipStatuses(AIndex : Integer; const AValue : TPersonTyperelationshipStatusesArray); 
+
+begin
+  If (FrelationshipStatuses=AValue) then exit;
+  FrelationshipStatuses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setmemberships(AIndex : Integer; const AValue : TPersonTypemembershipsArray); 
+
+begin
+  If (Fmemberships=AValue) then exit;
+  Fmemberships:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPerson.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'locales' : SetLength(Flocales,ALength);
+  'names' : SetLength(Fnames,ALength);
+  'nicknames' : SetLength(Fnicknames,ALength);
+  'coverphotos' : SetLength(FcoverPhotos,ALength);
+  'photos' : SetLength(Fphotos,ALength);
+  'genders' : SetLength(Fgenders,ALength);
+  'birthdays' : SetLength(Fbirthdays,ALength);
+  'events' : SetLength(Fevents,ALength);
+  'addresses' : SetLength(Faddresses,ALength);
+  'residences' : SetLength(Fresidences,ALength);
+  'emailaddresses' : SetLength(FemailAddresses,ALength);
+  'phonenumbers' : SetLength(FphoneNumbers,ALength);
+  'imclients' : SetLength(FimClients,ALength);
+  'taglines' : SetLength(Ftaglines,ALength);
+  'biographies' : SetLength(Fbiographies,ALength);
+  'urls' : SetLength(Furls,ALength);
+  'organizations' : SetLength(Forganizations,ALength);
+  'occupations' : SetLength(Foccupations,ALength);
+  'interests' : SetLength(Finterests,ALength);
+  'skills' : SetLength(Fskills,ALength);
+  'braggingrights' : SetLength(FbraggingRights,ALength);
+  'relations' : SetLength(Frelations,ALength);
+  'relationshipinterests' : SetLength(FrelationshipInterests,ALength);
+  'relationshipstatuses' : SetLength(FrelationshipStatuses,ALength);
+  'memberships' : SetLength(Fmemberships,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonMetadata.Setsources(AIndex : Integer; const AValue : TPersonMetadataTypesourcesArray); 
+
+begin
+  If (Fsources=AValue) then exit;
+  Fsources:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonMetadata.SetpreviousResourceNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpreviousResourceNames=AValue) then exit;
+  FpreviousResourceNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonMetadata.Setdeleted(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdeleted=AValue) then exit;
+  Fdeleted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonMetadata.SetobjectType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectType=AValue) then exit;
+  FobjectType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPersonMetadata.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sources' : SetLength(Fsources,ALength);
+  'previousresourcenames' : SetLength(FpreviousResourceNames,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSource
+  --------------------------------------------------------------------}
+
+
+Procedure TSource.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSource.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TSource.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TLocale
+  --------------------------------------------------------------------}
+
+
+Procedure TLocale.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLocale.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFieldMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TFieldMetadata.Setprimary(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fprimary=AValue) then exit;
+  Fprimary:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFieldMetadata.Setverified(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fverified=AValue) then exit;
+  Fverified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFieldMetadata.Setsource(AIndex : Integer; const AValue : TSource); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TName
+  --------------------------------------------------------------------}
+
+
+Procedure TName.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetfamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfamilyName=AValue) then exit;
+  FfamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetgivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgivenName=AValue) then exit;
+  FgivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetmiddleName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmiddleName=AValue) then exit;
+  FmiddleName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SethonorificPrefix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhonorificPrefix=AValue) then exit;
+  FhonorificPrefix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SethonorificSuffix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhonorificSuffix=AValue) then exit;
+  FhonorificSuffix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetphoneticFamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticFamilyName=AValue) then exit;
+  FphoneticFamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetphoneticGivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticGivenName=AValue) then exit;
+  FphoneticGivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetphoneticMiddleName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticMiddleName=AValue) then exit;
+  FphoneticMiddleName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetphoneticHonorificPrefix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticHonorificPrefix=AValue) then exit;
+  FphoneticHonorificPrefix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TName.SetphoneticHonorificSuffix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticHonorificSuffix=AValue) then exit;
+  FphoneticHonorificSuffix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNickname
+  --------------------------------------------------------------------}
+
+
+Procedure TNickname.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNickname.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNickname.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TNickname.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TCoverPhoto
+  --------------------------------------------------------------------}
+
+
+Procedure TCoverPhoto.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCoverPhoto.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCoverPhoto.Setdefault(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdefault=AValue) then exit;
+  Fdefault:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPhoto
+  --------------------------------------------------------------------}
+
+
+Procedure TPhoto.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPhoto.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGender
+  --------------------------------------------------------------------}
+
+
+Procedure TGender.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGender.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGender.SetformattedValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedValue=AValue) then exit;
+  FformattedValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBirthday
+  --------------------------------------------------------------------}
+
+
+Procedure TBirthday.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBirthday.Setdate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (Fdate=AValue) then exit;
+  Fdate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBirthday.Settext(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftext=AValue) then exit;
+  Ftext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDate
+  --------------------------------------------------------------------}
+
+
+Procedure TDate.Setyear(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fyear=AValue) then exit;
+  Fyear:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setmonth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fmonth=AValue) then exit;
+  Fmonth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setday(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fday=AValue) then exit;
+  Fday:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEvent
+  --------------------------------------------------------------------}
+
+
+Procedure TEvent.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEvent.Setdate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (Fdate=AValue) then exit;
+  Fdate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEvent.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEvent.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TEvent.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddress
+  --------------------------------------------------------------------}
+
+
+Procedure TAddress.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetformattedValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedValue=AValue) then exit;
+  FformattedValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetpoBox(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpoBox=AValue) then exit;
+  FpoBox:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetstreetAddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstreetAddress=AValue) then exit;
+  FstreetAddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetextendedAddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FextendedAddress=AValue) then exit;
+  FextendedAddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.Setcity(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcity=AValue) then exit;
+  Fcity:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.Setregion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fregion=AValue) then exit;
+  Fregion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetpostalCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpostalCode=AValue) then exit;
+  FpostalCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddress.SetcountryCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcountryCode=AValue) then exit;
+  FcountryCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TAddress.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TResidence
+  --------------------------------------------------------------------}
+
+
+Procedure TResidence.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResidence.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResidence.Setcurrent(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fcurrent=AValue) then exit;
+  Fcurrent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmailAddress
+  --------------------------------------------------------------------}
+
+
+Procedure TEmailAddress.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmailAddress.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmailAddress.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmailAddress.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TEmailAddress.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPhoneNumber
+  --------------------------------------------------------------------}
+
+
+Procedure TPhoneNumber.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPhoneNumber.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPhoneNumber.SetcanonicalForm(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcanonicalForm=AValue) then exit;
+  FcanonicalForm:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPhoneNumber.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPhoneNumber.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPhoneNumber.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TImClient
+  --------------------------------------------------------------------}
+
+
+Procedure TImClient.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImClient.Setusername(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fusername=AValue) then exit;
+  Fusername:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImClient.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImClient.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImClient.Setprotocol(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fprotocol=AValue) then exit;
+  Fprotocol:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImClient.SetformattedProtocol(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedProtocol=AValue) then exit;
+  FformattedProtocol:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TImClient.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TTagline
+  --------------------------------------------------------------------}
+
+
+Procedure TTagline.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTagline.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBiography
+  --------------------------------------------------------------------}
+
+
+Procedure TBiography.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBiography.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUrl
+  --------------------------------------------------------------------}
+
+
+Procedure TUrl.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrl.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrl.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUrl.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TUrl.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TOrganization
+  --------------------------------------------------------------------}
+
+
+Procedure TOrganization.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.SetstartDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FstartDate=AValue) then exit;
+  FstartDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.SetendDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FendDate=AValue) then exit;
+  FendDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setcurrent(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fcurrent=AValue) then exit;
+  Fcurrent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.SetphoneticName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FphoneticName=AValue) then exit;
+  FphoneticName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setdepartment(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdepartment=AValue) then exit;
+  Fdepartment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.SetjobDescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FjobDescription=AValue) then exit;
+  FjobDescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setsymbol(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsymbol=AValue) then exit;
+  Fsymbol:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setdomain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdomain=AValue) then exit;
+  Fdomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrganization.Setlocation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TOrganization.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TOccupation
+  --------------------------------------------------------------------}
+
+
+Procedure TOccupation.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOccupation.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TInterest
+  --------------------------------------------------------------------}
+
+
+Procedure TInterest.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInterest.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSkill
+  --------------------------------------------------------------------}
+
+
+Procedure TSkill.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSkill.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBraggingRights
+  --------------------------------------------------------------------}
+
+
+Procedure TBraggingRights.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBraggingRights.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRelation
+  --------------------------------------------------------------------}
+
+
+Procedure TRelation.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelation.Setperson(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fperson=AValue) then exit;
+  Fperson:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelation.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelation.SetformattedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedType=AValue) then exit;
+  FformattedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TRelation.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TRelationshipInterest
+  --------------------------------------------------------------------}
+
+
+Procedure TRelationshipInterest.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelationshipInterest.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelationshipInterest.SetformattedValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedValue=AValue) then exit;
+  FformattedValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRelationshipStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TRelationshipStatus.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelationshipStatus.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRelationshipStatus.SetformattedValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedValue=AValue) then exit;
+  FformattedValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMembership
+  --------------------------------------------------------------------}
+
+
+Procedure TMembership.Setmetadata(AIndex : Integer; const AValue : TFieldMetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMembership.SetcontactGroupMembership(AIndex : Integer; const AValue : TContactGroupMembership); 
+
+begin
+  If (FcontactGroupMembership=AValue) then exit;
+  FcontactGroupMembership:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMembership.SetdomainMembership(AIndex : Integer; const AValue : TDomainMembership); 
+
+begin
+  If (FdomainMembership=AValue) then exit;
+  FdomainMembership:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TContactGroupMembership
+  --------------------------------------------------------------------}
+
+
+Procedure TContactGroupMembership.SetcontactGroupId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcontactGroupId=AValue) then exit;
+  FcontactGroupId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDomainMembership
+  --------------------------------------------------------------------}
+
+
+Procedure TDomainMembership.SetinViewerDomain(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FinViewerDomain=AValue) then exit;
+  FinViewerDomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetPeopleResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TGetPeopleResponse.Setresponses(AIndex : Integer; const AValue : TGetPeopleResponseTyperesponsesArray); 
+
+begin
+  If (Fresponses=AValue) then exit;
+  Fresponses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGetPeopleResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'responses' : SetLength(Fresponses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonResponse.SethttpStatusCode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FhttpStatusCode=AValue) then exit;
+  FhttpStatusCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonResponse.Setperson(AIndex : Integer; const AValue : TPerson); 
+
+begin
+  If (Fperson=AValue) then exit;
+  Fperson:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonResponse.SetrequestedResourceName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrequestedResourceName=AValue) then exit;
+  FrequestedResourceName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListConnectionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListConnectionsResponse.Setconnections(AIndex : Integer; const AValue : TListConnectionsResponseTypeconnectionsArray); 
+
+begin
+  If (Fconnections=AValue) then exit;
+  Fconnections:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListConnectionsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListConnectionsResponse.SetnextSyncToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextSyncToken=AValue) then exit;
+  FnextSyncToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListConnectionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'connections' : SetLength(Fconnections,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPeopleConnectionsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TPeopleConnectionsResource.ResourceName : String;
+
+begin
+  Result:='connections';
+end;
+
+Class Function TPeopleConnectionsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpeopleAPI;
+end;
+
+Function TPeopleConnectionsResource.List(_resourceName: string; AQuery : string = '') : TListConnectionsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+resourceName}/connections';
+  _Methodid   = 'people.people.connections.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resourceName',_resourceName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListConnectionsResponse) as TListConnectionsResponse;
+end;
+
+
+Function TPeopleConnectionsResource.List(_resourceName: string; AQuery : TPeopleConnectionslistOptions) : TListConnectionsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'sortOrder',AQuery.sortOrder);
+  AddToQuery(_Q,'syncToken',AQuery.syncToken);
+  AddToQuery(_Q,'requestMask.includeField',AQuery.requestMaskincludeField);
+  Result:=List(_resourceName,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPeopleResource
+  --------------------------------------------------------------------}
+
+
+Class Function TPeopleResource.ResourceName : String;
+
+begin
+  Result:='people';
+end;
+
+Class Function TPeopleResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TpeopleAPI;
+end;
+
+Function TPeopleResource.Get(_resourceName: string; AQuery : string = '') : TPerson;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+resourceName}';
+  _Methodid   = 'people.people.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['resourceName',_resourceName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPerson) as TPerson;
+end;
+
+
+Function TPeopleResource.Get(_resourceName: string; AQuery : TPeoplegetOptions) : TPerson;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestMask.includeField',AQuery.requestMaskincludeField);
+  Result:=Get(_resourceName,_Q);
+end;
+
+Function TPeopleResource.GetBatchGet(AQuery : string = '') : TGetPeopleResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/people:batchGet';
+  _Methodid   = 'people.people.getBatchGet';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TGetPeopleResponse) as TGetPeopleResponse;
+end;
+
+
+Function TPeopleResource.GetBatchGet(AQuery : TPeoplegetBatchGetOptions) : TGetPeopleResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'resourceNames',AQuery.resourceNames);
+  AddToQuery(_Q,'requestMask.includeField',AQuery.requestMaskincludeField);
+  Result:=GetBatchGet(_Q);
+end;
+
+
+
+Function TPeopleResource.GetConnectionsInstance : TPeopleConnectionsResource;
+
+begin
+  if (FConnectionsInstance=Nil) then
+    FConnectionsInstance:=CreateConnectionsResource;
+  Result:=FConnectionsInstance;
+end;
+
+Function TPeopleResource.CreateConnectionsResource : TPeopleConnectionsResource;
+
+begin
+  Result:=CreateConnectionsResource(Self);
+end;
+
+
+Function TPeopleResource.CreateConnectionsResource(AOwner : TComponent) : TPeopleConnectionsResource;
+
+begin
+  Result:=TPeopleConnectionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPeopleAPI
+  --------------------------------------------------------------------}
+
+Class Function TPeopleAPI.APIName : String;
+
+begin
+  Result:='people';
+end;
+
+Class Function TPeopleAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TPeopleAPI.APIRevision : String;
+
+begin
+  Result:='20160210';
+end;
+
+Class Function TPeopleAPI.APIID : String;
+
+begin
+  Result:='people:v1';
+end;
+
+Class Function TPeopleAPI.APITitle : String;
+
+begin
+  Result:='Google People API';
+end;
+
+Class Function TPeopleAPI.APIDescription : String;
+
+begin
+  Result:='The Google People API service gives access to information about profiles and contacts.';
+end;
+
+Class Function TPeopleAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TPeopleAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TPeopleAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TPeopleAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TPeopleAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/people/';
+end;
+
+Class Function TPeopleAPI.APIrootUrl : string;
+
+begin
+  Result:='https://people.googleapis.com/';
+end;
+
+Class Function TPeopleAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPeopleAPI.APIbaseURL : String;
+
+begin
+  Result:='https://people.googleapis.com/';
+end;
+
+Class Function TPeopleAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TPeopleAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPeopleAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TPeopleAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,9);
+  Result[0].Name:='https://www.googleapis.com/auth/contacts';
+  Result[0].Description:='Manage your contacts';
+  Result[1].Name:='https://www.googleapis.com/auth/contacts.readonly';
+  Result[1].Description:='View your contacts';
+  Result[2].Name:='https://www.googleapis.com/auth/plus.login';
+  Result[2].Description:='Know your basic profile info and list of people in your circles.';
+  Result[3].Name:='https://www.googleapis.com/auth/user.addresses.read';
+  Result[3].Description:='View your street addresses';
+  Result[4].Name:='https://www.googleapis.com/auth/user.birthday.read';
+  Result[4].Description:='View your complete date of birth';
+  Result[5].Name:='https://www.googleapis.com/auth/user.emails.read';
+  Result[5].Description:='View your email addresses';
+  Result[6].Name:='https://www.googleapis.com/auth/user.phonenumbers.read';
+  Result[6].Description:='View your phone numbers';
+  Result[7].Name:='https://www.googleapis.com/auth/userinfo.email';
+  Result[7].Description:='View your email address';
+  Result[8].Name:='https://www.googleapis.com/auth/userinfo.profile';
+  Result[8].Description:='View your basic profile info';
+  
+end;
+
+Class Function TPeopleAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TPeopleAPI.RegisterAPIResources;
+
+begin
+  TPerson.RegisterObject;
+  TPersonMetadata.RegisterObject;
+  TSource.RegisterObject;
+  TLocale.RegisterObject;
+  TFieldMetadata.RegisterObject;
+  TName.RegisterObject;
+  TNickname.RegisterObject;
+  TCoverPhoto.RegisterObject;
+  TPhoto.RegisterObject;
+  TGender.RegisterObject;
+  TBirthday.RegisterObject;
+  TDate.RegisterObject;
+  TEvent.RegisterObject;
+  TAddress.RegisterObject;
+  TResidence.RegisterObject;
+  TEmailAddress.RegisterObject;
+  TPhoneNumber.RegisterObject;
+  TImClient.RegisterObject;
+  TTagline.RegisterObject;
+  TBiography.RegisterObject;
+  TUrl.RegisterObject;
+  TOrganization.RegisterObject;
+  TOccupation.RegisterObject;
+  TInterest.RegisterObject;
+  TSkill.RegisterObject;
+  TBraggingRights.RegisterObject;
+  TRelation.RegisterObject;
+  TRelationshipInterest.RegisterObject;
+  TRelationshipStatus.RegisterObject;
+  TMembership.RegisterObject;
+  TContactGroupMembership.RegisterObject;
+  TDomainMembership.RegisterObject;
+  TGetPeopleResponse.RegisterObject;
+  TPersonResponse.RegisterObject;
+  TListConnectionsResponse.RegisterObject;
+end;
+
+
+Function TPeopleAPI.GetPeopleConnectionsInstance : TPeopleConnectionsResource;
+
+begin
+  if (FPeopleConnectionsInstance=Nil) then
+    FPeopleConnectionsInstance:=CreatePeopleConnectionsResource;
+  Result:=FPeopleConnectionsInstance;
+end;
+
+Function TPeopleAPI.CreatePeopleConnectionsResource : TPeopleConnectionsResource;
+
+begin
+  Result:=CreatePeopleConnectionsResource(Self);
+end;
+
+
+Function TPeopleAPI.CreatePeopleConnectionsResource(AOwner : TComponent) : TPeopleConnectionsResource;
+
+begin
+  Result:=TPeopleConnectionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPeopleAPI.GetPeopleInstance : TPeopleResource;
+
+begin
+  if (FPeopleInstance=Nil) then
+    FPeopleInstance:=CreatePeopleResource;
+  Result:=FPeopleInstance;
+end;
+
+Function TPeopleAPI.CreatePeopleResource : TPeopleResource;
+
+begin
+  Result:=CreatePeopleResource(Self);
+end;
+
+
+Function TPeopleAPI.CreatePeopleResource(AOwner : TComponent) : TPeopleResource;
+
+begin
+  Result:=TPeopleResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TPeopleAPI.RegisterAPI;
+end.

+ 3570 - 0
packages/googleapi/src/googleplaymoviespartner.pp

@@ -0,0 +1,3570 @@
+unit googleplaymoviespartner;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAvail = Class;
+  TListAvailsResponse = Class;
+  TOrder = Class;
+  TListOrdersResponse = Class;
+  TExperienceLocale = Class;
+  TListExperienceLocalesResponse = Class;
+  T_Component = Class;
+  TListComponentsResponse = Class;
+  TStoreInfo = Class;
+  TListStoreInfosResponse = Class;
+  TAvailArray = Array of TAvail;
+  TListAvailsResponseArray = Array of TListAvailsResponse;
+  TOrderArray = Array of TOrder;
+  TListOrdersResponseArray = Array of TListOrdersResponse;
+  TExperienceLocaleArray = Array of TExperienceLocale;
+  TListExperienceLocalesResponseArray = Array of TListExperienceLocalesResponse;
+  T_ComponentArray = Array of T_Component;
+  TListComponentsResponseArray = Array of TListComponentsResponse;
+  TStoreInfoArray = Array of TStoreInfo;
+  TListStoreInfosResponseArray = Array of TListStoreInfosResponse;
+  //Anonymous types, using auto-generated names
+  TListAvailsResponseTypeavailsArray = Array of TAvail;
+  TListOrdersResponseTypeordersArray = Array of TOrder;
+  TListExperienceLocalesResponseTypeexperienceLocalesArray = Array of TExperienceLocale;
+  TListComponentsResponseTypecomponentsArray = Array of T_Component;
+  TListStoreInfosResponseTypestoreInfosArray = Array of TStoreInfo;
+  
+  { --------------------------------------------------------------------
+    TAvail
+    --------------------------------------------------------------------}
+  
+  TAvail = Class(TGoogleBaseObject)
+  Private
+    FavailId : String;
+    FdisplayName : String;
+    FstoreLanguage : String;
+    Fterritory : String;
+    FworkType : String;
+    FseriesTitleInternalAlias : String;
+    FseasonNumber : String;
+    FepisodeNumber : String;
+    FseasonTitleInternalAlias : String;
+    FepisodeTitleInternalAlias : String;
+    FtitleInternalAlias : String;
+    FlicenseType : String;
+    FformatProfile : String;
+    Fstart : String;
+    F_end : String;
+    FpriceType : String;
+    FpriceValue : String;
+    FcontentId : String;
+    FproductId : String;
+    FencodeId : String;
+    FseriesAltId : String;
+    FseasonAltId : String;
+    FepisodeAltId : String;
+    FaltId : String;
+    FsuppressionLiftDate : String;
+    FreleaseDate : String;
+    FratingSystem : String;
+    FratingValue : String;
+    FratingReason : String;
+    FcaptionIncluded : boolean;
+    FcaptionExemption : String;
+    FvideoId : String;
+    FpphNames : TStringArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetavailId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstoreLanguage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setterritory(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetworkType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseriesTitleInternalAlias(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetepisodeNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonTitleInternalAlias(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetepisodeTitleInternalAlias(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettitleInternalAlias(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlicenseType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformatProfile(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstart(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_end(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpriceType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpriceValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcontentId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetproductId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetencodeId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseriesAltId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonAltId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetepisodeAltId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaltId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsuppressionLiftDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreleaseDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetratingSystem(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetratingValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetratingReason(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcaptionIncluded(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetcaptionExemption(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpphNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property availId : String Index 0 Read FavailId Write SetavailId;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property storeLanguage : String Index 16 Read FstoreLanguage Write SetstoreLanguage;
+    Property territory : String Index 24 Read Fterritory Write Setterritory;
+    Property workType : String Index 32 Read FworkType Write SetworkType;
+    Property seriesTitleInternalAlias : String Index 40 Read FseriesTitleInternalAlias Write SetseriesTitleInternalAlias;
+    Property seasonNumber : String Index 48 Read FseasonNumber Write SetseasonNumber;
+    Property episodeNumber : String Index 56 Read FepisodeNumber Write SetepisodeNumber;
+    Property seasonTitleInternalAlias : String Index 64 Read FseasonTitleInternalAlias Write SetseasonTitleInternalAlias;
+    Property episodeTitleInternalAlias : String Index 72 Read FepisodeTitleInternalAlias Write SetepisodeTitleInternalAlias;
+    Property titleInternalAlias : String Index 80 Read FtitleInternalAlias Write SettitleInternalAlias;
+    Property licenseType : String Index 88 Read FlicenseType Write SetlicenseType;
+    Property formatProfile : String Index 96 Read FformatProfile Write SetformatProfile;
+    Property start : String Index 104 Read Fstart Write Setstart;
+    Property _end : String Index 112 Read F_end Write Set_end;
+    Property priceType : String Index 120 Read FpriceType Write SetpriceType;
+    Property priceValue : String Index 128 Read FpriceValue Write SetpriceValue;
+    Property contentId : String Index 136 Read FcontentId Write SetcontentId;
+    Property productId : String Index 144 Read FproductId Write SetproductId;
+    Property encodeId : String Index 152 Read FencodeId Write SetencodeId;
+    Property seriesAltId : String Index 160 Read FseriesAltId Write SetseriesAltId;
+    Property seasonAltId : String Index 168 Read FseasonAltId Write SetseasonAltId;
+    Property episodeAltId : String Index 176 Read FepisodeAltId Write SetepisodeAltId;
+    Property altId : String Index 184 Read FaltId Write SetaltId;
+    Property suppressionLiftDate : String Index 192 Read FsuppressionLiftDate Write SetsuppressionLiftDate;
+    Property releaseDate : String Index 200 Read FreleaseDate Write SetreleaseDate;
+    Property ratingSystem : String Index 208 Read FratingSystem Write SetratingSystem;
+    Property ratingValue : String Index 216 Read FratingValue Write SetratingValue;
+    Property ratingReason : String Index 224 Read FratingReason Write SetratingReason;
+    Property captionIncluded : boolean Index 232 Read FcaptionIncluded Write SetcaptionIncluded;
+    Property captionExemption : String Index 240 Read FcaptionExemption Write SetcaptionExemption;
+    Property videoId : String Index 248 Read FvideoId Write SetvideoId;
+    Property pphNames : TStringArray Index 256 Read FpphNames Write SetpphNames;
+  end;
+  TAvailClass = Class of TAvail;
+  
+  { --------------------------------------------------------------------
+    TListAvailsResponse
+    --------------------------------------------------------------------}
+  
+  TListAvailsResponse = Class(TGoogleBaseObject)
+  Private
+    Favails : TListAvailsResponseTypeavailsArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure Setavails(AIndex : Integer; const AValue : TListAvailsResponseTypeavailsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property avails : TListAvailsResponseTypeavailsArray Index 0 Read Favails Write Setavails;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListAvailsResponseClass = Class of TListAvailsResponse;
+  
+  { --------------------------------------------------------------------
+    TOrder
+    --------------------------------------------------------------------}
+  
+  TOrder = Class(TGoogleBaseObject)
+  Private
+    ForderId : String;
+    FcustomId : String;
+    FvideoId : String;
+    Fcountries : TStringArray;
+    F_type : String;
+    Fname : String;
+    FepisodeName : String;
+    FseasonName : String;
+    FshowName : String;
+    Fstatus : String;
+    FstatusDetail : String;
+    FrejectionNote : String;
+    ForderedTime : String;
+    FapprovedTime : String;
+    FreceivedTime : String;
+    FearliestAvailStartTime : String;
+    Fpriority : double;
+    FlegacyPriority : String;
+    FchannelId : String;
+    FchannelName : String;
+    FstudioName : String;
+    FpphName : String;
+    FnormalizedPriority : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetorderId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountries(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetepisodeName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetshowName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstatusDetail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrejectionNote(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetorderedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetapprovedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreceivedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetearliestAvailStartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpriority(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetlegacyPriority(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetchannelId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetchannelName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstudioName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpphName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnormalizedPriority(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property orderId : String Index 0 Read ForderId Write SetorderId;
+    Property customId : String Index 8 Read FcustomId Write SetcustomId;
+    Property videoId : String Index 16 Read FvideoId Write SetvideoId;
+    Property countries : TStringArray Index 24 Read Fcountries Write Setcountries;
+    Property _type : String Index 32 Read F_type Write Set_type;
+    Property name : String Index 40 Read Fname Write Setname;
+    Property episodeName : String Index 48 Read FepisodeName Write SetepisodeName;
+    Property seasonName : String Index 56 Read FseasonName Write SetseasonName;
+    Property showName : String Index 64 Read FshowName Write SetshowName;
+    Property status : String Index 72 Read Fstatus Write Setstatus;
+    Property statusDetail : String Index 80 Read FstatusDetail Write SetstatusDetail;
+    Property rejectionNote : String Index 88 Read FrejectionNote Write SetrejectionNote;
+    Property orderedTime : String Index 96 Read ForderedTime Write SetorderedTime;
+    Property approvedTime : String Index 104 Read FapprovedTime Write SetapprovedTime;
+    Property receivedTime : String Index 112 Read FreceivedTime Write SetreceivedTime;
+    Property earliestAvailStartTime : String Index 120 Read FearliestAvailStartTime Write SetearliestAvailStartTime;
+    Property priority : double Index 128 Read Fpriority Write Setpriority;
+    Property legacyPriority : String Index 136 Read FlegacyPriority Write SetlegacyPriority;
+    Property channelId : String Index 144 Read FchannelId Write SetchannelId;
+    Property channelName : String Index 152 Read FchannelName Write SetchannelName;
+    Property studioName : String Index 160 Read FstudioName Write SetstudioName;
+    Property pphName : String Index 168 Read FpphName Write SetpphName;
+    Property normalizedPriority : String Index 176 Read FnormalizedPriority Write SetnormalizedPriority;
+  end;
+  TOrderClass = Class of TOrder;
+  
+  { --------------------------------------------------------------------
+    TListOrdersResponse
+    --------------------------------------------------------------------}
+  
+  TListOrdersResponse = Class(TGoogleBaseObject)
+  Private
+    Forders : TListOrdersResponseTypeordersArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure Setorders(AIndex : Integer; const AValue : TListOrdersResponseTypeordersArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property orders : TListOrdersResponseTypeordersArray Index 0 Read Forders Write Setorders;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListOrdersResponseClass = Class of TListOrdersResponse;
+  
+  { --------------------------------------------------------------------
+    TExperienceLocale
+    --------------------------------------------------------------------}
+  
+  TExperienceLocale = Class(TGoogleBaseObject)
+  Private
+    FelId : String;
+    Fcountry : String;
+    Flanguage : String;
+    FvideoId : String;
+    FtrailerId : String;
+    FtitleLevelEidr : String;
+    FeditLevelEidr : String;
+    FaltCutId : String;
+    FcustomIds : TStringArray;
+    FpresentationId : String;
+    FinventoryId : String;
+    FplayableSequenceId : String;
+    F_type : String;
+    Fname : String;
+    Fstatus : String;
+    Fpriority : double;
+    FcreatedTime : String;
+    FapprovedTime : String;
+    FearliestAvailStartTime : String;
+    FchannelId : String;
+    FstudioName : String;
+    FpphNames : TStringArray;
+    FnormalizedPriority : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetelId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlanguage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettrailerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettitleLevelEidr(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteditLevelEidr(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetaltCutId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetpresentationId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinventoryId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplayableSequenceId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpriority(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetcreatedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetapprovedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetearliestAvailStartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetchannelId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstudioName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpphNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetnormalizedPriority(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property elId : String Index 0 Read FelId Write SetelId;
+    Property country : String Index 8 Read Fcountry Write Setcountry;
+    Property language : String Index 16 Read Flanguage Write Setlanguage;
+    Property videoId : String Index 24 Read FvideoId Write SetvideoId;
+    Property trailerId : String Index 32 Read FtrailerId Write SettrailerId;
+    Property titleLevelEidr : String Index 40 Read FtitleLevelEidr Write SettitleLevelEidr;
+    Property editLevelEidr : String Index 48 Read FeditLevelEidr Write SeteditLevelEidr;
+    Property altCutId : String Index 56 Read FaltCutId Write SetaltCutId;
+    Property customIds : TStringArray Index 64 Read FcustomIds Write SetcustomIds;
+    Property presentationId : String Index 72 Read FpresentationId Write SetpresentationId;
+    Property inventoryId : String Index 80 Read FinventoryId Write SetinventoryId;
+    Property playableSequenceId : String Index 88 Read FplayableSequenceId Write SetplayableSequenceId;
+    Property _type : String Index 96 Read F_type Write Set_type;
+    Property name : String Index 104 Read Fname Write Setname;
+    Property status : String Index 112 Read Fstatus Write Setstatus;
+    Property priority : double Index 120 Read Fpriority Write Setpriority;
+    Property createdTime : String Index 128 Read FcreatedTime Write SetcreatedTime;
+    Property approvedTime : String Index 136 Read FapprovedTime Write SetapprovedTime;
+    Property earliestAvailStartTime : String Index 144 Read FearliestAvailStartTime Write SetearliestAvailStartTime;
+    Property channelId : String Index 152 Read FchannelId Write SetchannelId;
+    Property studioName : String Index 160 Read FstudioName Write SetstudioName;
+    Property pphNames : TStringArray Index 168 Read FpphNames Write SetpphNames;
+    Property normalizedPriority : String Index 176 Read FnormalizedPriority Write SetnormalizedPriority;
+  end;
+  TExperienceLocaleClass = Class of TExperienceLocale;
+  
+  { --------------------------------------------------------------------
+    TListExperienceLocalesResponse
+    --------------------------------------------------------------------}
+  
+  TListExperienceLocalesResponse = Class(TGoogleBaseObject)
+  Private
+    FexperienceLocales : TListExperienceLocalesResponseTypeexperienceLocalesArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure SetexperienceLocales(AIndex : Integer; const AValue : TListExperienceLocalesResponseTypeexperienceLocalesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property experienceLocales : TListExperienceLocalesResponseTypeexperienceLocalesArray Index 0 Read FexperienceLocales Write SetexperienceLocales;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListExperienceLocalesResponseClass = Class of TListExperienceLocalesResponse;
+  
+  { --------------------------------------------------------------------
+    T_Component
+    --------------------------------------------------------------------}
+  
+  T_Component = Class(TGoogleBaseObject)
+  Private
+    FcomponentId : String;
+    F_type : String;
+    FelIds : TStringArray;
+    Flanguage : String;
+    FtitleLevelEidrs : TStringArray;
+    FeditLevelEidrs : TStringArray;
+    FaltCutIds : TStringArray;
+    FcustomIds : TStringArray;
+    FcomponentDetailType : String;
+    FplayableUnitType : String;
+    Fstatus : String;
+    FstatusDetail : String;
+    FrejectionNote : String;
+    FapprovedTime : String;
+    Fname : String;
+    FprocessingErrors : TStringArray;
+    Fpriority : double;
+    FreceivedTime : String;
+    Ffilename : String;
+    FstudioName : String;
+    FpphName : String;
+    FnormalizedPriority : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetcomponentId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setlanguage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettitleLevelEidrs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SeteditLevelEidrs(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetaltCutIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetcustomIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetcomponentDetailType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplayableUnitType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstatusDetail(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrejectionNote(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetapprovedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprocessingErrors(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setpriority(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetreceivedTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfilename(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstudioName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpphName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnormalizedPriority(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property componentId : String Index 0 Read FcomponentId Write SetcomponentId;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property elIds : TStringArray Index 16 Read FelIds Write SetelIds;
+    Property language : String Index 24 Read Flanguage Write Setlanguage;
+    Property titleLevelEidrs : TStringArray Index 32 Read FtitleLevelEidrs Write SettitleLevelEidrs;
+    Property editLevelEidrs : TStringArray Index 40 Read FeditLevelEidrs Write SeteditLevelEidrs;
+    Property altCutIds : TStringArray Index 48 Read FaltCutIds Write SetaltCutIds;
+    Property customIds : TStringArray Index 56 Read FcustomIds Write SetcustomIds;
+    Property componentDetailType : String Index 64 Read FcomponentDetailType Write SetcomponentDetailType;
+    Property playableUnitType : String Index 72 Read FplayableUnitType Write SetplayableUnitType;
+    Property status : String Index 80 Read Fstatus Write Setstatus;
+    Property statusDetail : String Index 88 Read FstatusDetail Write SetstatusDetail;
+    Property rejectionNote : String Index 96 Read FrejectionNote Write SetrejectionNote;
+    Property approvedTime : String Index 104 Read FapprovedTime Write SetapprovedTime;
+    Property name : String Index 112 Read Fname Write Setname;
+    Property processingErrors : TStringArray Index 120 Read FprocessingErrors Write SetprocessingErrors;
+    Property priority : double Index 128 Read Fpriority Write Setpriority;
+    Property receivedTime : String Index 136 Read FreceivedTime Write SetreceivedTime;
+    Property filename : String Index 144 Read Ffilename Write Setfilename;
+    Property studioName : String Index 152 Read FstudioName Write SetstudioName;
+    Property pphName : String Index 160 Read FpphName Write SetpphName;
+    Property normalizedPriority : String Index 168 Read FnormalizedPriority Write SetnormalizedPriority;
+  end;
+  T_ComponentClass = Class of T_Component;
+  
+  { --------------------------------------------------------------------
+    TListComponentsResponse
+    --------------------------------------------------------------------}
+  
+  TListComponentsResponse = Class(TGoogleBaseObject)
+  Private
+    Fcomponents : TListComponentsResponseTypecomponentsArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure Setcomponents(AIndex : Integer; const AValue : TListComponentsResponseTypecomponentsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property components : TListComponentsResponseTypecomponentsArray Index 0 Read Fcomponents Write Setcomponents;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListComponentsResponseClass = Class of TListComponentsResponse;
+  
+  { --------------------------------------------------------------------
+    TStoreInfo
+    --------------------------------------------------------------------}
+  
+  TStoreInfo = Class(TGoogleBaseObject)
+  Private
+    FvideoId : String;
+    FseasonId : String;
+    FshowId : String;
+    Fcountry : String;
+    FliveTime : String;
+    F_type : String;
+    Fname : String;
+    FtitleLevelEidr : String;
+    FeditLevelEidr : String;
+    FseasonName : String;
+    FshowName : String;
+    FseasonNumber : String;
+    FepisodeNumber : String;
+    FhasSdOffer : boolean;
+    FhasHdOffer : boolean;
+    FhasVodOffer : boolean;
+    FhasEstOffer : boolean;
+    FhasAudio51 : boolean;
+    FaudioTracks : TStringArray;
+    Fsubtitles : TStringArray;
+    FhasInfoCards : boolean;
+    Fmid : String;
+    FtrailerId : String;
+    FstudioName : String;
+    FpphNames : TStringArray;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetvideoId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetshowId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetliveTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettitleLevelEidr(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteditLevelEidr(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetshowName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseasonNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetepisodeNumber(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethasSdOffer(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SethasHdOffer(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SethasVodOffer(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SethasEstOffer(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SethasAudio51(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetaudioTracks(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setsubtitles(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SethasInfoCards(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setmid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettrailerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstudioName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpphNames(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property videoId : String Index 0 Read FvideoId Write SetvideoId;
+    Property seasonId : String Index 8 Read FseasonId Write SetseasonId;
+    Property showId : String Index 16 Read FshowId Write SetshowId;
+    Property country : String Index 24 Read Fcountry Write Setcountry;
+    Property liveTime : String Index 32 Read FliveTime Write SetliveTime;
+    Property _type : String Index 40 Read F_type Write Set_type;
+    Property name : String Index 48 Read Fname Write Setname;
+    Property titleLevelEidr : String Index 56 Read FtitleLevelEidr Write SettitleLevelEidr;
+    Property editLevelEidr : String Index 64 Read FeditLevelEidr Write SeteditLevelEidr;
+    Property seasonName : String Index 72 Read FseasonName Write SetseasonName;
+    Property showName : String Index 80 Read FshowName Write SetshowName;
+    Property seasonNumber : String Index 88 Read FseasonNumber Write SetseasonNumber;
+    Property episodeNumber : String Index 96 Read FepisodeNumber Write SetepisodeNumber;
+    Property hasSdOffer : boolean Index 104 Read FhasSdOffer Write SethasSdOffer;
+    Property hasHdOffer : boolean Index 112 Read FhasHdOffer Write SethasHdOffer;
+    Property hasVodOffer : boolean Index 120 Read FhasVodOffer Write SethasVodOffer;
+    Property hasEstOffer : boolean Index 128 Read FhasEstOffer Write SethasEstOffer;
+    Property hasAudio51 : boolean Index 136 Read FhasAudio51 Write SethasAudio51;
+    Property audioTracks : TStringArray Index 144 Read FaudioTracks Write SetaudioTracks;
+    Property subtitles : TStringArray Index 152 Read Fsubtitles Write Setsubtitles;
+    Property hasInfoCards : boolean Index 160 Read FhasInfoCards Write SethasInfoCards;
+    Property mid : String Index 168 Read Fmid Write Setmid;
+    Property trailerId : String Index 176 Read FtrailerId Write SettrailerId;
+    Property studioName : String Index 184 Read FstudioName Write SetstudioName;
+    Property pphNames : TStringArray Index 192 Read FpphNames Write SetpphNames;
+  end;
+  TStoreInfoClass = Class of TStoreInfo;
+  
+  { --------------------------------------------------------------------
+    TListStoreInfosResponse
+    --------------------------------------------------------------------}
+  
+  TListStoreInfosResponse = Class(TGoogleBaseObject)
+  Private
+    FstoreInfos : TListStoreInfosResponseTypestoreInfosArray;
+    FnextPageToken : String;
+    FtotalSize : integer;
+  Protected
+    //Property setters
+    Procedure SetstoreInfos(AIndex : Integer; const AValue : TListStoreInfosResponseTypestoreInfosArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalSize(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property storeInfos : TListStoreInfosResponseTypestoreInfosArray Index 0 Read FstoreInfos Write SetstoreInfos;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalSize : integer Index 16 Read FtotalSize Write SettotalSize;
+  end;
+  TListStoreInfosResponseClass = Class of TListStoreInfosResponse;
+  
+  { --------------------------------------------------------------------
+    TAccountsAvailsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsAvailsResource, method List
+  
+  TAccountsAvailsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    pphNames : String;
+    studioNames : String;
+    title : String;
+    territories : String;
+    altId : String;
+    videoIds : String;
+    altIds : String;
+  end;
+  
+  TAccountsAvailsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(accountId: string; availId: string) : TAvail;
+    Function List(accountId: string; AQuery : string  = '') : TListAvailsResponse;
+    Function List(accountId: string; AQuery : TAccountsAvailslistOptions) : TListAvailsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsOrdersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsOrdersResource, method List
+  
+  TAccountsOrdersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    pphNames : String;
+    studioNames : String;
+    _name : String;
+    status : String;
+    customId : String;
+    videoIds : String;
+  end;
+  
+  TAccountsOrdersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(accountId: string; orderId: string) : TOrder;
+    Function List(accountId: string; AQuery : string  = '') : TListOrdersResponse;
+    Function List(accountId: string; AQuery : TAccountsOrderslistOptions) : TListOrdersResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsExperienceLocalesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsExperienceLocalesResource, method List
+  
+  TAccountsExperienceLocalesListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    pphNames : String;
+    studioNames : String;
+    titleLevelEidr : String;
+    editLevelEidr : String;
+    status : String;
+    customId : String;
+    altCutId : String;
+  end;
+  
+  TAccountsExperienceLocalesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(accountId: string; elId: string) : TExperienceLocale;
+    Function List(accountId: string; AQuery : string  = '') : TListExperienceLocalesResponse;
+    Function List(accountId: string; AQuery : TAccountsExperienceLocaleslistOptions) : TListExperienceLocalesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsComponentsTypeResource
+    --------------------------------------------------------------------}
+  
+  TAccountsComponentsTypeResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(accountId: string; componentId: string; _type: string) : T_Component;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsComponentsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsComponentsResource, method List
+  
+  TAccountsComponentsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    pphNames : String;
+    studioNames : String;
+    titleLevelEidr : String;
+    editLevelEidr : String;
+    status : String;
+    customId : String;
+    inventoryId : String;
+    presentationId : String;
+    playableSequenceId : String;
+    elId : String;
+    altCutId : String;
+    filename : String;
+  end;
+  
+  TAccountsComponentsResource = Class(TGoogleResource)
+  Private
+    FTypeInstance : TAccountsComponentsTypeResource;
+    Function GetTypeInstance : TAccountsComponentsTypeResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(accountId: string; AQuery : string  = '') : TListComponentsResponse;
+    Function List(accountId: string; AQuery : TAccountsComponentslistOptions) : TListComponentsResponse;
+    Function CreateTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;virtual;overload;
+    Function CreateTypeResource : TAccountsComponentsTypeResource;virtual;overload;
+    Property TypeResource : TAccountsComponentsTypeResource Read GetTypeInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsStoreInfosCountryResource
+    --------------------------------------------------------------------}
+  
+  TAccountsStoreInfosCountryResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(accountId: string; videoId: string; country: string) : TStoreInfo;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsStoreInfosResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAccountsStoreInfosResource, method List
+  
+  TAccountsStoreInfosListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    pphNames : String;
+    studioNames : String;
+    videoId : String;
+    countries : String;
+    _name : String;
+    videoIds : String;
+    mids : String;
+    seasonIds : String;
+  end;
+  
+  TAccountsStoreInfosResource = Class(TGoogleResource)
+  Private
+    FCountryInstance : TAccountsStoreInfosCountryResource;
+    Function GetCountryInstance : TAccountsStoreInfosCountryResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(accountId: string; AQuery : string  = '') : TListStoreInfosResponse;
+    Function List(accountId: string; AQuery : TAccountsStoreInfoslistOptions) : TListStoreInfosResponse;
+    Function CreateCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;virtual;overload;
+    Function CreateCountryResource : TAccountsStoreInfosCountryResource;virtual;overload;
+    Property CountryResource : TAccountsStoreInfosCountryResource Read GetCountryInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAccountsResource
+    --------------------------------------------------------------------}
+  
+  TAccountsResource = Class(TGoogleResource)
+  Private
+    FAvailsInstance : TAccountsAvailsResource;
+    FOrdersInstance : TAccountsOrdersResource;
+    FExperienceLocalesInstance : TAccountsExperienceLocalesResource;
+    FComponentsTypeInstance : TAccountsComponentsTypeResource;
+    FComponentsInstance : TAccountsComponentsResource;
+    FStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;
+    FStoreInfosInstance : TAccountsStoreInfosResource;
+    Function GetAvailsInstance : TAccountsAvailsResource;virtual;
+    Function GetOrdersInstance : TAccountsOrdersResource;virtual;
+    Function GetExperienceLocalesInstance : TAccountsExperienceLocalesResource;virtual;
+    Function GetComponentsTypeInstance : TAccountsComponentsTypeResource;virtual;
+    Function GetComponentsInstance : TAccountsComponentsResource;virtual;
+    Function GetStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;virtual;
+    Function GetStoreInfosInstance : TAccountsStoreInfosResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateAvailsResource(AOwner : TComponent) : TAccountsAvailsResource;virtual;overload;
+    Function CreateAvailsResource : TAccountsAvailsResource;virtual;overload;
+    Function CreateOrdersResource(AOwner : TComponent) : TAccountsOrdersResource;virtual;overload;
+    Function CreateOrdersResource : TAccountsOrdersResource;virtual;overload;
+    Function CreateExperienceLocalesResource(AOwner : TComponent) : TAccountsExperienceLocalesResource;virtual;overload;
+    Function CreateExperienceLocalesResource : TAccountsExperienceLocalesResource;virtual;overload;
+    Function CreateComponentsTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;virtual;overload;
+    Function CreateComponentsTypeResource : TAccountsComponentsTypeResource;virtual;overload;
+    Function CreateComponentsResource(AOwner : TComponent) : TAccountsComponentsResource;virtual;overload;
+    Function CreateComponentsResource : TAccountsComponentsResource;virtual;overload;
+    Function CreateStoreInfosCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;virtual;overload;
+    Function CreateStoreInfosCountryResource : TAccountsStoreInfosCountryResource;virtual;overload;
+    Function CreateStoreInfosResource(AOwner : TComponent) : TAccountsStoreInfosResource;virtual;overload;
+    Function CreateStoreInfosResource : TAccountsStoreInfosResource;virtual;overload;
+    Property AvailsResource : TAccountsAvailsResource Read GetAvailsInstance;
+    Property OrdersResource : TAccountsOrdersResource Read GetOrdersInstance;
+    Property ExperienceLocalesResource : TAccountsExperienceLocalesResource Read GetExperienceLocalesInstance;
+    Property ComponentsTypeResource : TAccountsComponentsTypeResource Read GetComponentsTypeInstance;
+    Property ComponentsResource : TAccountsComponentsResource Read GetComponentsInstance;
+    Property StoreInfosCountryResource : TAccountsStoreInfosCountryResource Read GetStoreInfosCountryInstance;
+    Property StoreInfosResource : TAccountsStoreInfosResource Read GetStoreInfosInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPlaymoviespartnerAPI
+    --------------------------------------------------------------------}
+  
+  TPlaymoviespartnerAPI = Class(TGoogleAPI)
+  Private
+    FAccountsAvailsInstance : TAccountsAvailsResource;
+    FAccountsOrdersInstance : TAccountsOrdersResource;
+    FAccountsExperienceLocalesInstance : TAccountsExperienceLocalesResource;
+    FAccountsComponentsTypeInstance : TAccountsComponentsTypeResource;
+    FAccountsComponentsInstance : TAccountsComponentsResource;
+    FAccountsStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;
+    FAccountsStoreInfosInstance : TAccountsStoreInfosResource;
+    FAccountsInstance : TAccountsResource;
+    Function GetAccountsAvailsInstance : TAccountsAvailsResource;virtual;
+    Function GetAccountsOrdersInstance : TAccountsOrdersResource;virtual;
+    Function GetAccountsExperienceLocalesInstance : TAccountsExperienceLocalesResource;virtual;
+    Function GetAccountsComponentsTypeInstance : TAccountsComponentsTypeResource;virtual;
+    Function GetAccountsComponentsInstance : TAccountsComponentsResource;virtual;
+    Function GetAccountsStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;virtual;
+    Function GetAccountsStoreInfosInstance : TAccountsStoreInfosResource;virtual;
+    Function GetAccountsInstance : TAccountsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateAccountsAvailsResource(AOwner : TComponent) : TAccountsAvailsResource;virtual;overload;
+    Function CreateAccountsAvailsResource : TAccountsAvailsResource;virtual;overload;
+    Function CreateAccountsOrdersResource(AOwner : TComponent) : TAccountsOrdersResource;virtual;overload;
+    Function CreateAccountsOrdersResource : TAccountsOrdersResource;virtual;overload;
+    Function CreateAccountsExperienceLocalesResource(AOwner : TComponent) : TAccountsExperienceLocalesResource;virtual;overload;
+    Function CreateAccountsExperienceLocalesResource : TAccountsExperienceLocalesResource;virtual;overload;
+    Function CreateAccountsComponentsTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;virtual;overload;
+    Function CreateAccountsComponentsTypeResource : TAccountsComponentsTypeResource;virtual;overload;
+    Function CreateAccountsComponentsResource(AOwner : TComponent) : TAccountsComponentsResource;virtual;overload;
+    Function CreateAccountsComponentsResource : TAccountsComponentsResource;virtual;overload;
+    Function CreateAccountsStoreInfosCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;virtual;overload;
+    Function CreateAccountsStoreInfosCountryResource : TAccountsStoreInfosCountryResource;virtual;overload;
+    Function CreateAccountsStoreInfosResource(AOwner : TComponent) : TAccountsStoreInfosResource;virtual;overload;
+    Function CreateAccountsStoreInfosResource : TAccountsStoreInfosResource;virtual;overload;
+    Function CreateAccountsResource(AOwner : TComponent) : TAccountsResource;virtual;overload;
+    Function CreateAccountsResource : TAccountsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property AccountsAvailsResource : TAccountsAvailsResource Read GetAccountsAvailsInstance;
+    Property AccountsOrdersResource : TAccountsOrdersResource Read GetAccountsOrdersInstance;
+    Property AccountsExperienceLocalesResource : TAccountsExperienceLocalesResource Read GetAccountsExperienceLocalesInstance;
+    Property AccountsComponentsTypeResource : TAccountsComponentsTypeResource Read GetAccountsComponentsTypeInstance;
+    Property AccountsComponentsResource : TAccountsComponentsResource Read GetAccountsComponentsInstance;
+    Property AccountsStoreInfosCountryResource : TAccountsStoreInfosCountryResource Read GetAccountsStoreInfosCountryInstance;
+    Property AccountsStoreInfosResource : TAccountsStoreInfosResource Read GetAccountsStoreInfosInstance;
+    Property AccountsResource : TAccountsResource Read GetAccountsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAvail
+  --------------------------------------------------------------------}
+
+
+Procedure TAvail.SetavailId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FavailId=AValue) then exit;
+  FavailId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetstoreLanguage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstoreLanguage=AValue) then exit;
+  FstoreLanguage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.Setterritory(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fterritory=AValue) then exit;
+  Fterritory:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetworkType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FworkType=AValue) then exit;
+  FworkType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetseriesTitleInternalAlias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseriesTitleInternalAlias=AValue) then exit;
+  FseriesTitleInternalAlias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetseasonNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonNumber=AValue) then exit;
+  FseasonNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetepisodeNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FepisodeNumber=AValue) then exit;
+  FepisodeNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetseasonTitleInternalAlias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonTitleInternalAlias=AValue) then exit;
+  FseasonTitleInternalAlias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetepisodeTitleInternalAlias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FepisodeTitleInternalAlias=AValue) then exit;
+  FepisodeTitleInternalAlias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SettitleInternalAlias(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtitleInternalAlias=AValue) then exit;
+  FtitleInternalAlias:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetlicenseType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlicenseType=AValue) then exit;
+  FlicenseType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetformatProfile(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformatProfile=AValue) then exit;
+  FformatProfile:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.Setstart(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstart=AValue) then exit;
+  Fstart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.Set_end(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_end=AValue) then exit;
+  F_end:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetpriceType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpriceType=AValue) then exit;
+  FpriceType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetpriceValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpriceValue=AValue) then exit;
+  FpriceValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetcontentId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcontentId=AValue) then exit;
+  FcontentId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetproductId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FproductId=AValue) then exit;
+  FproductId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetencodeId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FencodeId=AValue) then exit;
+  FencodeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetseriesAltId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseriesAltId=AValue) then exit;
+  FseriesAltId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetseasonAltId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonAltId=AValue) then exit;
+  FseasonAltId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetepisodeAltId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FepisodeAltId=AValue) then exit;
+  FepisodeAltId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetaltId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaltId=AValue) then exit;
+  FaltId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetsuppressionLiftDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsuppressionLiftDate=AValue) then exit;
+  FsuppressionLiftDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetreleaseDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreleaseDate=AValue) then exit;
+  FreleaseDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetratingSystem(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FratingSystem=AValue) then exit;
+  FratingSystem:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetratingValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FratingValue=AValue) then exit;
+  FratingValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetratingReason(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FratingReason=AValue) then exit;
+  FratingReason:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetcaptionIncluded(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcaptionIncluded=AValue) then exit;
+  FcaptionIncluded:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetcaptionExemption(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcaptionExemption=AValue) then exit;
+  FcaptionExemption:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetvideoId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoId=AValue) then exit;
+  FvideoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAvail.SetpphNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpphNames=AValue) then exit;
+  FpphNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TAvail.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_end' : Result:='end';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAvail.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'pphnames' : SetLength(FpphNames,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListAvailsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListAvailsResponse.Setavails(AIndex : Integer; const AValue : TListAvailsResponseTypeavailsArray); 
+
+begin
+  If (Favails=AValue) then exit;
+  Favails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListAvailsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListAvailsResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListAvailsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'avails' : SetLength(Favails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOrder
+  --------------------------------------------------------------------}
+
+
+Procedure TOrder.SetorderId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForderId=AValue) then exit;
+  ForderId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetcustomId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcustomId=AValue) then exit;
+  FcustomId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetvideoId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoId=AValue) then exit;
+  FvideoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.Setcountries(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fcountries=AValue) then exit;
+  Fcountries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetepisodeName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FepisodeName=AValue) then exit;
+  FepisodeName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetseasonName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonName=AValue) then exit;
+  FseasonName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetshowName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FshowName=AValue) then exit;
+  FshowName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetstatusDetail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstatusDetail=AValue) then exit;
+  FstatusDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetrejectionNote(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrejectionNote=AValue) then exit;
+  FrejectionNote:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetorderedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForderedTime=AValue) then exit;
+  ForderedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetapprovedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FapprovedTime=AValue) then exit;
+  FapprovedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetreceivedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreceivedTime=AValue) then exit;
+  FreceivedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetearliestAvailStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FearliestAvailStartTime=AValue) then exit;
+  FearliestAvailStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.Setpriority(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fpriority=AValue) then exit;
+  Fpriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetlegacyPriority(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlegacyPriority=AValue) then exit;
+  FlegacyPriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetchannelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelId=AValue) then exit;
+  FchannelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetchannelName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelName=AValue) then exit;
+  FchannelName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetstudioName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstudioName=AValue) then exit;
+  FstudioName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetpphName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpphName=AValue) then exit;
+  FpphName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOrder.SetnormalizedPriority(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnormalizedPriority=AValue) then exit;
+  FnormalizedPriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TOrder.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOrder.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'countries' : SetLength(Fcountries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListOrdersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListOrdersResponse.Setorders(AIndex : Integer; const AValue : TListOrdersResponseTypeordersArray); 
+
+begin
+  If (Forders=AValue) then exit;
+  Forders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListOrdersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListOrdersResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListOrdersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'orders' : SetLength(Forders,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TExperienceLocale
+  --------------------------------------------------------------------}
+
+
+Procedure TExperienceLocale.SetelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FelId=AValue) then exit;
+  FelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Setlanguage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flanguage=AValue) then exit;
+  Flanguage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetvideoId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoId=AValue) then exit;
+  FvideoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SettrailerId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtrailerId=AValue) then exit;
+  FtrailerId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SettitleLevelEidr(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtitleLevelEidr=AValue) then exit;
+  FtitleLevelEidr:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SeteditLevelEidr(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeditLevelEidr=AValue) then exit;
+  FeditLevelEidr:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetaltCutId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaltCutId=AValue) then exit;
+  FaltCutId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetcustomIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FcustomIds=AValue) then exit;
+  FcustomIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetpresentationId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpresentationId=AValue) then exit;
+  FpresentationId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetinventoryId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinventoryId=AValue) then exit;
+  FinventoryId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetplayableSequenceId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplayableSequenceId=AValue) then exit;
+  FplayableSequenceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.Setpriority(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fpriority=AValue) then exit;
+  Fpriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetcreatedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreatedTime=AValue) then exit;
+  FcreatedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetapprovedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FapprovedTime=AValue) then exit;
+  FapprovedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetearliestAvailStartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FearliestAvailStartTime=AValue) then exit;
+  FearliestAvailStartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetchannelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelId=AValue) then exit;
+  FchannelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetstudioName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstudioName=AValue) then exit;
+  FstudioName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetpphNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpphNames=AValue) then exit;
+  FpphNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExperienceLocale.SetnormalizedPriority(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnormalizedPriority=AValue) then exit;
+  FnormalizedPriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TExperienceLocale.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TExperienceLocale.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'customids' : SetLength(FcustomIds,ALength);
+  'pphnames' : SetLength(FpphNames,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListExperienceLocalesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListExperienceLocalesResponse.SetexperienceLocales(AIndex : Integer; const AValue : TListExperienceLocalesResponseTypeexperienceLocalesArray); 
+
+begin
+  If (FexperienceLocales=AValue) then exit;
+  FexperienceLocales:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListExperienceLocalesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListExperienceLocalesResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListExperienceLocalesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'experiencelocales' : SetLength(FexperienceLocales,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  T_Component
+  --------------------------------------------------------------------}
+
+
+Procedure T_Component.SetcomponentId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcomponentId=AValue) then exit;
+  FcomponentId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetelIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FelIds=AValue) then exit;
+  FelIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Setlanguage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flanguage=AValue) then exit;
+  Flanguage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SettitleLevelEidrs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FtitleLevelEidrs=AValue) then exit;
+  FtitleLevelEidrs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SeteditLevelEidrs(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FeditLevelEidrs=AValue) then exit;
+  FeditLevelEidrs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetaltCutIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FaltCutIds=AValue) then exit;
+  FaltCutIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetcustomIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FcustomIds=AValue) then exit;
+  FcustomIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetcomponentDetailType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcomponentDetailType=AValue) then exit;
+  FcomponentDetailType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetplayableUnitType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplayableUnitType=AValue) then exit;
+  FplayableUnitType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetstatusDetail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstatusDetail=AValue) then exit;
+  FstatusDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetrejectionNote(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrejectionNote=AValue) then exit;
+  FrejectionNote:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetapprovedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FapprovedTime=AValue) then exit;
+  FapprovedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetprocessingErrors(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FprocessingErrors=AValue) then exit;
+  FprocessingErrors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Setpriority(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fpriority=AValue) then exit;
+  Fpriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetreceivedTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreceivedTime=AValue) then exit;
+  FreceivedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.Setfilename(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffilename=AValue) then exit;
+  Ffilename:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetstudioName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstudioName=AValue) then exit;
+  FstudioName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetpphName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpphName=AValue) then exit;
+  FpphName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure T_Component.SetnormalizedPriority(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnormalizedPriority=AValue) then exit;
+  FnormalizedPriority:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function T_Component.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure T_Component.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'elids' : SetLength(FelIds,ALength);
+  'titleleveleidrs' : SetLength(FtitleLevelEidrs,ALength);
+  'editleveleidrs' : SetLength(FeditLevelEidrs,ALength);
+  'altcutids' : SetLength(FaltCutIds,ALength);
+  'customids' : SetLength(FcustomIds,ALength);
+  'processingerrors' : SetLength(FprocessingErrors,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListComponentsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListComponentsResponse.Setcomponents(AIndex : Integer; const AValue : TListComponentsResponseTypecomponentsArray); 
+
+begin
+  If (Fcomponents=AValue) then exit;
+  Fcomponents:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListComponentsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListComponentsResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListComponentsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'components' : SetLength(Fcomponents,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStoreInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TStoreInfo.SetvideoId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoId=AValue) then exit;
+  FvideoId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetseasonId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonId=AValue) then exit;
+  FseasonId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetshowId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FshowId=AValue) then exit;
+  FshowId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetliveTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FliveTime=AValue) then exit;
+  FliveTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SettitleLevelEidr(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtitleLevelEidr=AValue) then exit;
+  FtitleLevelEidr:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SeteditLevelEidr(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FeditLevelEidr=AValue) then exit;
+  FeditLevelEidr:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetseasonName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonName=AValue) then exit;
+  FseasonName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetshowName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FshowName=AValue) then exit;
+  FshowName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetseasonNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FseasonNumber=AValue) then exit;
+  FseasonNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetepisodeNumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FepisodeNumber=AValue) then exit;
+  FepisodeNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasSdOffer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasSdOffer=AValue) then exit;
+  FhasSdOffer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasHdOffer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasHdOffer=AValue) then exit;
+  FhasHdOffer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasVodOffer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasVodOffer=AValue) then exit;
+  FhasVodOffer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasEstOffer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasEstOffer=AValue) then exit;
+  FhasEstOffer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasAudio51(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasAudio51=AValue) then exit;
+  FhasAudio51:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetaudioTracks(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FaudioTracks=AValue) then exit;
+  FaudioTracks:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.Setsubtitles(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fsubtitles=AValue) then exit;
+  Fsubtitles:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SethasInfoCards(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasInfoCards=AValue) then exit;
+  FhasInfoCards:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.Setmid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmid=AValue) then exit;
+  Fmid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SettrailerId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtrailerId=AValue) then exit;
+  FtrailerId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetstudioName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstudioName=AValue) then exit;
+  FstudioName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStoreInfo.SetpphNames(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpphNames=AValue) then exit;
+  FpphNames:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TStoreInfo.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStoreInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'audiotracks' : SetLength(FaudioTracks,ALength);
+  'subtitles' : SetLength(Fsubtitles,ALength);
+  'pphnames' : SetLength(FpphNames,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListStoreInfosResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListStoreInfosResponse.SetstoreInfos(AIndex : Integer; const AValue : TListStoreInfosResponseTypestoreInfosArray); 
+
+begin
+  If (FstoreInfos=AValue) then exit;
+  FstoreInfos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStoreInfosResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStoreInfosResponse.SettotalSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalSize=AValue) then exit;
+  FtotalSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListStoreInfosResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'storeinfos' : SetLength(FstoreInfos,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsAvailsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsAvailsResource.ResourceName : String;
+
+begin
+  Result:='avails';
+end;
+
+Class Function TAccountsAvailsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsAvailsResource.Get(accountId: string; availId: string) : TAvail;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/avails/{availId}';
+  _Methodid   = 'playmoviespartner.accounts.avails.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId,'availId',availId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TAvail) as TAvail;
+end;
+
+Function TAccountsAvailsResource.List(accountId: string; AQuery : string = '') : TListAvailsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/avails';
+  _Methodid   = 'playmoviespartner.accounts.avails.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListAvailsResponse) as TListAvailsResponse;
+end;
+
+
+Function TAccountsAvailsResource.List(accountId: string; AQuery : TAccountsAvailslistOptions) : TListAvailsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pphNames',AQuery.pphNames);
+  AddToQuery(_Q,'studioNames',AQuery.studioNames);
+  AddToQuery(_Q,'title',AQuery.title);
+  AddToQuery(_Q,'territories',AQuery.territories);
+  AddToQuery(_Q,'altId',AQuery.altId);
+  AddToQuery(_Q,'videoIds',AQuery.videoIds);
+  AddToQuery(_Q,'altIds',AQuery.altIds);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsOrdersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsOrdersResource.ResourceName : String;
+
+begin
+  Result:='orders';
+end;
+
+Class Function TAccountsOrdersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsOrdersResource.Get(accountId: string; orderId: string) : TOrder;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/orders/{orderId}';
+  _Methodid   = 'playmoviespartner.accounts.orders.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId,'orderId',orderId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOrder) as TOrder;
+end;
+
+Function TAccountsOrdersResource.List(accountId: string; AQuery : string = '') : TListOrdersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/orders';
+  _Methodid   = 'playmoviespartner.accounts.orders.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListOrdersResponse) as TListOrdersResponse;
+end;
+
+
+Function TAccountsOrdersResource.List(accountId: string; AQuery : TAccountsOrderslistOptions) : TListOrdersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pphNames',AQuery.pphNames);
+  AddToQuery(_Q,'studioNames',AQuery.studioNames);
+  AddToQuery(_Q,'name',AQuery._name);
+  AddToQuery(_Q,'status',AQuery.status);
+  AddToQuery(_Q,'customId',AQuery.customId);
+  AddToQuery(_Q,'videoIds',AQuery.videoIds);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsExperienceLocalesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsExperienceLocalesResource.ResourceName : String;
+
+begin
+  Result:='experienceLocales';
+end;
+
+Class Function TAccountsExperienceLocalesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsExperienceLocalesResource.Get(accountId: string; elId: string) : TExperienceLocale;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/experienceLocales/{elId}';
+  _Methodid   = 'playmoviespartner.accounts.experienceLocales.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId,'elId',elId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TExperienceLocale) as TExperienceLocale;
+end;
+
+Function TAccountsExperienceLocalesResource.List(accountId: string; AQuery : string = '') : TListExperienceLocalesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/experienceLocales';
+  _Methodid   = 'playmoviespartner.accounts.experienceLocales.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListExperienceLocalesResponse) as TListExperienceLocalesResponse;
+end;
+
+
+Function TAccountsExperienceLocalesResource.List(accountId: string; AQuery : TAccountsExperienceLocaleslistOptions) : TListExperienceLocalesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pphNames',AQuery.pphNames);
+  AddToQuery(_Q,'studioNames',AQuery.studioNames);
+  AddToQuery(_Q,'titleLevelEidr',AQuery.titleLevelEidr);
+  AddToQuery(_Q,'editLevelEidr',AQuery.editLevelEidr);
+  AddToQuery(_Q,'status',AQuery.status);
+  AddToQuery(_Q,'customId',AQuery.customId);
+  AddToQuery(_Q,'altCutId',AQuery.altCutId);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsComponentsTypeResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsComponentsTypeResource.ResourceName : String;
+
+begin
+  Result:='type';
+end;
+
+Class Function TAccountsComponentsTypeResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsComponentsTypeResource.Get(accountId: string; componentId: string; _type: string) : T_Component;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/components/{componentId}/type/{type}';
+  _Methodid   = 'playmoviespartner.accounts.components.type.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId,'componentId',componentId,'type',_type]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,T_Component) as T_Component;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsComponentsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsComponentsResource.ResourceName : String;
+
+begin
+  Result:='components';
+end;
+
+Class Function TAccountsComponentsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsComponentsResource.List(accountId: string; AQuery : string = '') : TListComponentsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/components';
+  _Methodid   = 'playmoviespartner.accounts.components.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListComponentsResponse) as TListComponentsResponse;
+end;
+
+
+Function TAccountsComponentsResource.List(accountId: string; AQuery : TAccountsComponentslistOptions) : TListComponentsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pphNames',AQuery.pphNames);
+  AddToQuery(_Q,'studioNames',AQuery.studioNames);
+  AddToQuery(_Q,'titleLevelEidr',AQuery.titleLevelEidr);
+  AddToQuery(_Q,'editLevelEidr',AQuery.editLevelEidr);
+  AddToQuery(_Q,'status',AQuery.status);
+  AddToQuery(_Q,'customId',AQuery.customId);
+  AddToQuery(_Q,'inventoryId',AQuery.inventoryId);
+  AddToQuery(_Q,'presentationId',AQuery.presentationId);
+  AddToQuery(_Q,'playableSequenceId',AQuery.playableSequenceId);
+  AddToQuery(_Q,'elId',AQuery.elId);
+  AddToQuery(_Q,'altCutId',AQuery.altCutId);
+  AddToQuery(_Q,'filename',AQuery.filename);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+Function TAccountsComponentsResource.GetTypeInstance : TAccountsComponentsTypeResource;
+
+begin
+  if (FTypeInstance=Nil) then
+    FTypeInstance:=CreateTypeResource;
+  Result:=FTypeInstance;
+end;
+
+Function TAccountsComponentsResource.CreateTypeResource : TAccountsComponentsTypeResource;
+
+begin
+  Result:=CreateTypeResource(Self);
+end;
+
+
+Function TAccountsComponentsResource.CreateTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;
+
+begin
+  Result:=TAccountsComponentsTypeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsStoreInfosCountryResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsStoreInfosCountryResource.ResourceName : String;
+
+begin
+  Result:='country';
+end;
+
+Class Function TAccountsStoreInfosCountryResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsStoreInfosCountryResource.Get(accountId: string; videoId: string; country: string) : TStoreInfo;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/storeInfos/{videoId}/country/{country}';
+  _Methodid   = 'playmoviespartner.accounts.storeInfos.country.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId,'videoId',videoId,'country',country]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStoreInfo) as TStoreInfo;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsStoreInfosResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsStoreInfosResource.ResourceName : String;
+
+begin
+  Result:='storeInfos';
+end;
+
+Class Function TAccountsStoreInfosResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+Function TAccountsStoreInfosResource.List(accountId: string; AQuery : string = '') : TListStoreInfosResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/accounts/{accountId}/storeInfos';
+  _Methodid   = 'playmoviespartner.accounts.storeInfos.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['accountId',accountId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStoreInfosResponse) as TListStoreInfosResponse;
+end;
+
+
+Function TAccountsStoreInfosResource.List(accountId: string; AQuery : TAccountsStoreInfoslistOptions) : TListStoreInfosResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pphNames',AQuery.pphNames);
+  AddToQuery(_Q,'studioNames',AQuery.studioNames);
+  AddToQuery(_Q,'videoId',AQuery.videoId);
+  AddToQuery(_Q,'countries',AQuery.countries);
+  AddToQuery(_Q,'name',AQuery._name);
+  AddToQuery(_Q,'videoIds',AQuery.videoIds);
+  AddToQuery(_Q,'mids',AQuery.mids);
+  AddToQuery(_Q,'seasonIds',AQuery.seasonIds);
+  Result:=List(accountId,_Q);
+end;
+
+
+
+Function TAccountsStoreInfosResource.GetCountryInstance : TAccountsStoreInfosCountryResource;
+
+begin
+  if (FCountryInstance=Nil) then
+    FCountryInstance:=CreateCountryResource;
+  Result:=FCountryInstance;
+end;
+
+Function TAccountsStoreInfosResource.CreateCountryResource : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=CreateCountryResource(Self);
+end;
+
+
+Function TAccountsStoreInfosResource.CreateCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=TAccountsStoreInfosCountryResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAccountsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAccountsResource.ResourceName : String;
+
+begin
+  Result:='accounts';
+end;
+
+Class Function TAccountsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplaymoviespartnerAPI;
+end;
+
+
+
+Function TAccountsResource.GetAvailsInstance : TAccountsAvailsResource;
+
+begin
+  if (FAvailsInstance=Nil) then
+    FAvailsInstance:=CreateAvailsResource;
+  Result:=FAvailsInstance;
+end;
+
+Function TAccountsResource.CreateAvailsResource : TAccountsAvailsResource;
+
+begin
+  Result:=CreateAvailsResource(Self);
+end;
+
+
+Function TAccountsResource.CreateAvailsResource(AOwner : TComponent) : TAccountsAvailsResource;
+
+begin
+  Result:=TAccountsAvailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetOrdersInstance : TAccountsOrdersResource;
+
+begin
+  if (FOrdersInstance=Nil) then
+    FOrdersInstance:=CreateOrdersResource;
+  Result:=FOrdersInstance;
+end;
+
+Function TAccountsResource.CreateOrdersResource : TAccountsOrdersResource;
+
+begin
+  Result:=CreateOrdersResource(Self);
+end;
+
+
+Function TAccountsResource.CreateOrdersResource(AOwner : TComponent) : TAccountsOrdersResource;
+
+begin
+  Result:=TAccountsOrdersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetExperienceLocalesInstance : TAccountsExperienceLocalesResource;
+
+begin
+  if (FExperienceLocalesInstance=Nil) then
+    FExperienceLocalesInstance:=CreateExperienceLocalesResource;
+  Result:=FExperienceLocalesInstance;
+end;
+
+Function TAccountsResource.CreateExperienceLocalesResource : TAccountsExperienceLocalesResource;
+
+begin
+  Result:=CreateExperienceLocalesResource(Self);
+end;
+
+
+Function TAccountsResource.CreateExperienceLocalesResource(AOwner : TComponent) : TAccountsExperienceLocalesResource;
+
+begin
+  Result:=TAccountsExperienceLocalesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetComponentsTypeInstance : TAccountsComponentsTypeResource;
+
+begin
+  if (FComponentsTypeInstance=Nil) then
+    FComponentsTypeInstance:=CreateComponentsTypeResource;
+  Result:=FComponentsTypeInstance;
+end;
+
+Function TAccountsResource.CreateComponentsTypeResource : TAccountsComponentsTypeResource;
+
+begin
+  Result:=CreateComponentsTypeResource(Self);
+end;
+
+
+Function TAccountsResource.CreateComponentsTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;
+
+begin
+  Result:=TAccountsComponentsTypeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetComponentsInstance : TAccountsComponentsResource;
+
+begin
+  if (FComponentsInstance=Nil) then
+    FComponentsInstance:=CreateComponentsResource;
+  Result:=FComponentsInstance;
+end;
+
+Function TAccountsResource.CreateComponentsResource : TAccountsComponentsResource;
+
+begin
+  Result:=CreateComponentsResource(Self);
+end;
+
+
+Function TAccountsResource.CreateComponentsResource(AOwner : TComponent) : TAccountsComponentsResource;
+
+begin
+  Result:=TAccountsComponentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;
+
+begin
+  if (FStoreInfosCountryInstance=Nil) then
+    FStoreInfosCountryInstance:=CreateStoreInfosCountryResource;
+  Result:=FStoreInfosCountryInstance;
+end;
+
+Function TAccountsResource.CreateStoreInfosCountryResource : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=CreateStoreInfosCountryResource(Self);
+end;
+
+
+Function TAccountsResource.CreateStoreInfosCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=TAccountsStoreInfosCountryResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TAccountsResource.GetStoreInfosInstance : TAccountsStoreInfosResource;
+
+begin
+  if (FStoreInfosInstance=Nil) then
+    FStoreInfosInstance:=CreateStoreInfosResource;
+  Result:=FStoreInfosInstance;
+end;
+
+Function TAccountsResource.CreateStoreInfosResource : TAccountsStoreInfosResource;
+
+begin
+  Result:=CreateStoreInfosResource(Self);
+end;
+
+
+Function TAccountsResource.CreateStoreInfosResource(AOwner : TComponent) : TAccountsStoreInfosResource;
+
+begin
+  Result:=TAccountsStoreInfosResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPlaymoviespartnerAPI
+  --------------------------------------------------------------------}
+
+Class Function TPlaymoviespartnerAPI.APIName : String;
+
+begin
+  Result:='playmoviespartner';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIRevision : String;
+
+begin
+  Result:='20160518';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIID : String;
+
+begin
+  Result:='playmoviespartner:v1';
+end;
+
+Class Function TPlaymoviespartnerAPI.APITitle : String;
+
+begin
+  Result:='Google Play Movies Partner API';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIDescription : String;
+
+begin
+  Result:='Gets the delivery status of titles for Google Play Movies Partners.';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/playmoviespartner/';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIrootUrl : string;
+
+begin
+  Result:='https://playmoviespartner.googleapis.com/';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIbaseURL : String;
+
+begin
+  Result:='https://playmoviespartner.googleapis.com/';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TPlaymoviespartnerAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/playmovies_partner.readonly';
+  Result[0].Description:='View the digital assets you publish on Google Play Movies and TV';
+  
+end;
+
+Class Function TPlaymoviespartnerAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TPlaymoviespartnerAPI.RegisterAPIResources;
+
+begin
+  TAvail.RegisterObject;
+  TListAvailsResponse.RegisterObject;
+  TOrder.RegisterObject;
+  TListOrdersResponse.RegisterObject;
+  TExperienceLocale.RegisterObject;
+  TListExperienceLocalesResponse.RegisterObject;
+  T_Component.RegisterObject;
+  TListComponentsResponse.RegisterObject;
+  TStoreInfo.RegisterObject;
+  TListStoreInfosResponse.RegisterObject;
+end;
+
+
+Function TPlaymoviespartnerAPI.GetAccountsAvailsInstance : TAccountsAvailsResource;
+
+begin
+  if (FAccountsAvailsInstance=Nil) then
+    FAccountsAvailsInstance:=CreateAccountsAvailsResource;
+  Result:=FAccountsAvailsInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsAvailsResource : TAccountsAvailsResource;
+
+begin
+  Result:=CreateAccountsAvailsResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsAvailsResource(AOwner : TComponent) : TAccountsAvailsResource;
+
+begin
+  Result:=TAccountsAvailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsOrdersInstance : TAccountsOrdersResource;
+
+begin
+  if (FAccountsOrdersInstance=Nil) then
+    FAccountsOrdersInstance:=CreateAccountsOrdersResource;
+  Result:=FAccountsOrdersInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsOrdersResource : TAccountsOrdersResource;
+
+begin
+  Result:=CreateAccountsOrdersResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsOrdersResource(AOwner : TComponent) : TAccountsOrdersResource;
+
+begin
+  Result:=TAccountsOrdersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsExperienceLocalesInstance : TAccountsExperienceLocalesResource;
+
+begin
+  if (FAccountsExperienceLocalesInstance=Nil) then
+    FAccountsExperienceLocalesInstance:=CreateAccountsExperienceLocalesResource;
+  Result:=FAccountsExperienceLocalesInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsExperienceLocalesResource : TAccountsExperienceLocalesResource;
+
+begin
+  Result:=CreateAccountsExperienceLocalesResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsExperienceLocalesResource(AOwner : TComponent) : TAccountsExperienceLocalesResource;
+
+begin
+  Result:=TAccountsExperienceLocalesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsComponentsTypeInstance : TAccountsComponentsTypeResource;
+
+begin
+  if (FAccountsComponentsTypeInstance=Nil) then
+    FAccountsComponentsTypeInstance:=CreateAccountsComponentsTypeResource;
+  Result:=FAccountsComponentsTypeInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsComponentsTypeResource : TAccountsComponentsTypeResource;
+
+begin
+  Result:=CreateAccountsComponentsTypeResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsComponentsTypeResource(AOwner : TComponent) : TAccountsComponentsTypeResource;
+
+begin
+  Result:=TAccountsComponentsTypeResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsComponentsInstance : TAccountsComponentsResource;
+
+begin
+  if (FAccountsComponentsInstance=Nil) then
+    FAccountsComponentsInstance:=CreateAccountsComponentsResource;
+  Result:=FAccountsComponentsInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsComponentsResource : TAccountsComponentsResource;
+
+begin
+  Result:=CreateAccountsComponentsResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsComponentsResource(AOwner : TComponent) : TAccountsComponentsResource;
+
+begin
+  Result:=TAccountsComponentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsStoreInfosCountryInstance : TAccountsStoreInfosCountryResource;
+
+begin
+  if (FAccountsStoreInfosCountryInstance=Nil) then
+    FAccountsStoreInfosCountryInstance:=CreateAccountsStoreInfosCountryResource;
+  Result:=FAccountsStoreInfosCountryInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsStoreInfosCountryResource : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=CreateAccountsStoreInfosCountryResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsStoreInfosCountryResource(AOwner : TComponent) : TAccountsStoreInfosCountryResource;
+
+begin
+  Result:=TAccountsStoreInfosCountryResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsStoreInfosInstance : TAccountsStoreInfosResource;
+
+begin
+  if (FAccountsStoreInfosInstance=Nil) then
+    FAccountsStoreInfosInstance:=CreateAccountsStoreInfosResource;
+  Result:=FAccountsStoreInfosInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsStoreInfosResource : TAccountsStoreInfosResource;
+
+begin
+  Result:=CreateAccountsStoreInfosResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsStoreInfosResource(AOwner : TComponent) : TAccountsStoreInfosResource;
+
+begin
+  Result:=TAccountsStoreInfosResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlaymoviespartnerAPI.GetAccountsInstance : TAccountsResource;
+
+begin
+  if (FAccountsInstance=Nil) then
+    FAccountsInstance:=CreateAccountsResource;
+  Result:=FAccountsInstance;
+end;
+
+Function TPlaymoviespartnerAPI.CreateAccountsResource : TAccountsResource;
+
+begin
+  Result:=CreateAccountsResource(Self);
+end;
+
+
+Function TPlaymoviespartnerAPI.CreateAccountsResource(AOwner : TComponent) : TAccountsResource;
+
+begin
+  Result:=TAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TPlaymoviespartnerAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 586 - 847
packages/googleapi/src/googleplus.pp


+ 0 - 6011
packages/googleapi/src/googleplusDomains.pp

@@ -1,6011 +0,0 @@
-unit googleplusDomains;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
-{$MODE objfpc}
-{$H+}
-
-interface
-
-uses sysutils, classes, googleservice, restbase, googlebase;
-
-type
-  //
-  TAcl = class;
-  TAclArray = Array of TAcl;
-  TAclitems = class;
-  TAclitemsArray = Array of TAclitems;
-  TActivity = class;
-  TActivityArray = Array of TActivity;
-  TActivityactor = class;
-  TActivityactorArray = Array of TActivityactor;
-  TActivityactorimage = class;
-  TActivityactorimageArray = Array of TActivityactorimage;
-  TActivityactorname = class;
-  TActivityactornameArray = Array of TActivityactorname;
-  TActivityobject = class;
-  TActivityobjectArray = Array of TActivityobject;
-  TActivityobjectactor = class;
-  TActivityobjectactorArray = Array of TActivityobjectactor;
-  TActivityobjectactorimage = class;
-  TActivityobjectactorimageArray = Array of TActivityobjectactorimage;
-  TActivityobjectattachments = class;
-  TActivityobjectattachmentsArray = Array of TActivityobjectattachments;
-  TActivityobjectattachmentsembed = class;
-  TActivityobjectattachmentsembedArray = Array of TActivityobjectattachmentsembed;
-  TActivityobjectattachmentsfullImage = class;
-  TActivityobjectattachmentsfullImageArray = Array of TActivityobjectattachmentsfullImage;
-  TActivityobjectattachmentsimage = class;
-  TActivityobjectattachmentsimageArray = Array of TActivityobjectattachmentsimage;
-  TActivityobjectattachmentspreviewThumbnails = class;
-  TActivityobjectattachmentspreviewThumbnailsArray = Array of TActivityobjectattachmentspreviewThumbnails;
-  TActivityobjectattachmentsthumbnails = class;
-  TActivityobjectattachmentsthumbnailsArray = Array of TActivityobjectattachmentsthumbnails;
-  TActivityobjectattachmentsthumbnailsimage = class;
-  TActivityobjectattachmentsthumbnailsimageArray = Array of TActivityobjectattachmentsthumbnailsimage;
-  TActivityobjectplusoners = class;
-  TActivityobjectplusonersArray = Array of TActivityobjectplusoners;
-  TActivityobjectreplies = class;
-  TActivityobjectrepliesArray = Array of TActivityobjectreplies;
-  TActivityobjectresharers = class;
-  TActivityobjectresharersArray = Array of TActivityobjectresharers;
-  TActivityobjectstatusForViewer = class;
-  TActivityobjectstatusForViewerArray = Array of TActivityobjectstatusForViewer;
-  TActivityprovider = class;
-  TActivityproviderArray = Array of TActivityprovider;
-  TActivityFeed = class;
-  TActivityFeedArray = Array of TActivityFeed;
-  TActivityFeeditems = class;
-  TActivityFeeditemsArray = Array of TActivityFeeditems;
-  TAudience = class;
-  TAudienceArray = Array of TAudience;
-  TAudiencesFeed = class;
-  TAudiencesFeedArray = Array of TAudiencesFeed;
-  TAudiencesFeeditems = class;
-  TAudiencesFeeditemsArray = Array of TAudiencesFeeditems;
-  TCircle = class;
-  TCircleArray = Array of TCircle;
-  TCirclepeople = class;
-  TCirclepeopleArray = Array of TCirclepeople;
-  TCircleFeed = class;
-  TCircleFeedArray = Array of TCircleFeed;
-  TCircleFeeditems = class;
-  TCircleFeeditemsArray = Array of TCircleFeeditems;
-  TComment = class;
-  TCommentArray = Array of TComment;
-  TCommentactor = class;
-  TCommentactorArray = Array of TCommentactor;
-  TCommentactorimage = class;
-  TCommentactorimageArray = Array of TCommentactorimage;
-  TCommentinReplyTo = class;
-  TCommentinReplyToArray = Array of TCommentinReplyTo;
-  TCommentobject = class;
-  TCommentobjectArray = Array of TCommentobject;
-  TCommentplusoners = class;
-  TCommentplusonersArray = Array of TCommentplusoners;
-  TCommentFeed = class;
-  TCommentFeedArray = Array of TCommentFeed;
-  TCommentFeeditems = class;
-  TCommentFeeditemsArray = Array of TCommentFeeditems;
-  TMedia = class;
-  TMediaArray = Array of TMedia;
-  TMediaauthor = class;
-  TMediaauthorArray = Array of TMediaauthor;
-  TMediaauthorimage = class;
-  TMediaauthorimageArray = Array of TMediaauthorimage;
-  TMediaexif = class;
-  TMediaexifArray = Array of TMediaexif;
-  TMediastreams = class;
-  TMediastreamsArray = Array of TMediastreams;
-  TPeopleFeed = class;
-  TPeopleFeedArray = Array of TPeopleFeed;
-  TPeopleFeeditems = class;
-  TPeopleFeeditemsArray = Array of TPeopleFeeditems;
-  TPerson = class;
-  TPersonArray = Array of TPerson;
-  TPersoncover = class;
-  TPersoncoverArray = Array of TPersoncover;
-  TPersoncovercoverInfo = class;
-  TPersoncovercoverInfoArray = Array of TPersoncovercoverInfo;
-  TPersoncovercoverPhoto = class;
-  TPersoncovercoverPhotoArray = Array of TPersoncovercoverPhoto;
-  TPersonemails = class;
-  TPersonemailsArray = Array of TPersonemails;
-  TPersonimage = class;
-  TPersonimageArray = Array of TPersonimage;
-  TPersonname = class;
-  TPersonnameArray = Array of TPersonname;
-  TPersonorganizations = class;
-  TPersonorganizationsArray = Array of TPersonorganizations;
-  TPersonplacesLived = class;
-  TPersonplacesLivedArray = Array of TPersonplacesLived;
-  TPersonurls = class;
-  TPersonurlsArray = Array of TPersonurls;
-  TPlace = class;
-  TPlaceArray = Array of TPlace;
-  TPlaceaddress = class;
-  TPlaceaddressArray = Array of TPlaceaddress;
-  TPlaceposition = class;
-  TPlacepositionArray = Array of TPlaceposition;
-  TPlusDomainsAclentryResource = class;
-  TPlusDomainsAclentryResourceArray = Array of TPlusDomainsAclentryResource;
-  TVideostream = class;
-  TVideostreamArray = Array of TVideostream;
-  
-  { --------------------------------------------------------------------
-    TAcl
-    --------------------------------------------------------------------}
-  
-  TAcl = Class(TGoogleBaseObject)
-  Private
-    Fdescription : string;
-    FdomainRestricted : boolean;
-    Fitems : TAclitems;
-    Fkind : string;
-  Protected
-    //Property setters
-    Procedure Setdescription(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdomainRestricted(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAclitems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property description : string Index 0 Read Fdescription Write Setdescription;
-    Property domainRestricted : boolean Index 8 Read FdomainRestricted Write SetdomainRestricted;
-    Property items : TAclitems Index 16 Read Fitems Write Setitems;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-  end;
-  TAclClass = Class of TAcl;
-  
-  { --------------------------------------------------------------------
-    TAclitems
-    --------------------------------------------------------------------}
-  
-  TAclitems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TAclitemsClass = Class of TAclitems;
-  
-  { --------------------------------------------------------------------
-    TActivity
-    --------------------------------------------------------------------}
-  
-  TActivity = Class(TGoogleBaseObject)
-  Private
-    Faccess : TAcl;
-    Factor : TActivityactor;
-    Faddress : string;
-    Fannotation : string;
-    FcrosspostSource : string;
-    Fetag : string;
-    Fgeocode : string;
-    Fid : string;
-    Fkind : string;
-    Flocation : TPlace;
-    F_object : TActivityobject;
-    FplaceId : string;
-    FplaceName : string;
-    Fprovider : TActivityprovider;
-    F_published : TDatetime;
-    Fradius : string;
-    Ftitle : string;
-    Fupdated : TDatetime;
-    Furl : string;
-    Fverb : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setaccess(AIndex : Integer; AValue : TAcl); virtual;
-    Procedure Setactor(AIndex : Integer; AValue : TActivityactor); virtual;
-    Procedure Setaddress(AIndex : Integer; AValue : string); virtual;
-    Procedure Setannotation(AIndex : Integer; AValue : string); virtual;
-    Procedure SetcrosspostSource(AIndex : Integer; AValue : string); virtual;
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setgeocode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setlocation(AIndex : Integer; AValue : TPlace); virtual;
-    Procedure Set_object(AIndex : Integer; AValue : TActivityobject); virtual;
-    Procedure SetplaceId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetplaceName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setprovider(AIndex : Integer; AValue : TActivityprovider); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setradius(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setverb(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property access : TAcl Index 0 Read Faccess Write Setaccess;
-    Property actor : TActivityactor Index 8 Read Factor Write Setactor;
-    Property address : string Index 16 Read Faddress Write Setaddress;
-    Property annotation : string Index 24 Read Fannotation Write Setannotation;
-    Property crosspostSource : string Index 32 Read FcrosspostSource Write SetcrosspostSource;
-    Property etag : string Index 40 Read Fetag Write Setetag;
-    Property geocode : string Index 48 Read Fgeocode Write Setgeocode;
-    Property id : string Index 56 Read Fid Write Setid;
-    Property kind : string Index 64 Read Fkind Write Setkind;
-    Property location : TPlace Index 72 Read Flocation Write Setlocation;
-    Property _object : TActivityobject Index 80 Read F_object Write Set_object;
-    Property placeId : string Index 88 Read FplaceId Write SetplaceId;
-    Property placeName : string Index 96 Read FplaceName Write SetplaceName;
-    Property provider : TActivityprovider Index 104 Read Fprovider Write Setprovider;
-    Property _published : TDatetime Index 112 Read F_published Write Set_published;
-    Property radius : string Index 120 Read Fradius Write Setradius;
-    Property title : string Index 128 Read Ftitle Write Settitle;
-    Property updated : TDatetime Index 136 Read Fupdated Write Setupdated;
-    Property url : string Index 144 Read Furl Write Seturl;
-    Property verb : string Index 152 Read Fverb Write Setverb;
-  end;
-  TActivityClass = Class of TActivity;
-  
-  { --------------------------------------------------------------------
-    TActivityactor
-    --------------------------------------------------------------------}
-  
-  TActivityactor = Class(TGoogleBaseObject)
-  Private
-    FdisplayName : string;
-    Fid : string;
-    Fimage : TActivityactorimage;
-    Fname : TActivityactorname;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TActivityactorimage); virtual;
-    Procedure Setname(AIndex : Integer; AValue : TActivityactorname); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property displayName : string Index 0 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property image : TActivityactorimage Index 16 Read Fimage Write Setimage;
-    Property name : TActivityactorname Index 24 Read Fname Write Setname;
-    Property url : string Index 32 Read Furl Write Seturl;
-  end;
-  TActivityactorClass = Class of TActivityactor;
-  
-  { --------------------------------------------------------------------
-    TActivityactorimage
-    --------------------------------------------------------------------}
-  
-  TActivityactorimage = Class(TGoogleBaseObject)
-  Private
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property url : string Index 0 Read Furl Write Seturl;
-  end;
-  TActivityactorimageClass = Class of TActivityactorimage;
-  
-  { --------------------------------------------------------------------
-    TActivityactorname
-    --------------------------------------------------------------------}
-  
-  TActivityactorname = Class(TGoogleBaseObject)
-  Private
-    FfamilyName : string;
-    FgivenName : string;
-  Protected
-    //Property setters
-    Procedure SetfamilyName(AIndex : Integer; AValue : string); virtual;
-    Procedure SetgivenName(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property familyName : string Index 0 Read FfamilyName Write SetfamilyName;
-    Property givenName : string Index 8 Read FgivenName Write SetgivenName;
-  end;
-  TActivityactornameClass = Class of TActivityactorname;
-  
-  { --------------------------------------------------------------------
-    TActivityobject
-    --------------------------------------------------------------------}
-  
-  TActivityobject = Class(TGoogleBaseObject)
-  Private
-    Factor : TActivityobjectactor;
-    Fattachments : TActivityobjectattachments;
-    Fcontent : string;
-    Fid : string;
-    FobjectType : string;
-    ForiginalContent : string;
-    Fplusoners : TActivityobjectplusoners;
-    Freplies : TActivityobjectreplies;
-    Fresharers : TActivityobjectresharers;
-    FstatusForViewer : TActivityobjectstatusForViewer;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Setactor(AIndex : Integer; AValue : TActivityobjectactor); virtual;
-    Procedure Setattachments(AIndex : Integer; AValue : TActivityobjectattachments); virtual;
-    Procedure Setcontent(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure SetobjectType(AIndex : Integer; AValue : string); virtual;
-    Procedure SetoriginalContent(AIndex : Integer; AValue : string); virtual;
-    Procedure Setplusoners(AIndex : Integer; AValue : TActivityobjectplusoners); virtual;
-    Procedure Setreplies(AIndex : Integer; AValue : TActivityobjectreplies); virtual;
-    Procedure Setresharers(AIndex : Integer; AValue : TActivityobjectresharers); virtual;
-    Procedure SetstatusForViewer(AIndex : Integer; AValue : TActivityobjectstatusForViewer); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property actor : TActivityobjectactor Index 0 Read Factor Write Setactor;
-    Property attachments : TActivityobjectattachments Index 8 Read Fattachments Write Setattachments;
-    Property content : string Index 16 Read Fcontent Write Setcontent;
-    Property id : string Index 24 Read Fid Write Setid;
-    Property objectType : string Index 32 Read FobjectType Write SetobjectType;
-    Property originalContent : string Index 40 Read ForiginalContent Write SetoriginalContent;
-    Property plusoners : TActivityobjectplusoners Index 48 Read Fplusoners Write Setplusoners;
-    Property replies : TActivityobjectreplies Index 56 Read Freplies Write Setreplies;
-    Property resharers : TActivityobjectresharers Index 64 Read Fresharers Write Setresharers;
-    Property statusForViewer : TActivityobjectstatusForViewer Index 72 Read FstatusForViewer Write SetstatusForViewer;
-    Property url : string Index 80 Read Furl Write Seturl;
-  end;
-  TActivityobjectClass = Class of TActivityobject;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectactor
-    --------------------------------------------------------------------}
-  
-  TActivityobjectactor = Class(TGoogleBaseObject)
-  Private
-    FdisplayName : string;
-    Fid : string;
-    Fimage : TActivityobjectactorimage;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TActivityobjectactorimage); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property displayName : string Index 0 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property image : TActivityobjectactorimage Index 16 Read Fimage Write Setimage;
-    Property url : string Index 24 Read Furl Write Seturl;
-  end;
-  TActivityobjectactorClass = Class of TActivityobjectactor;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectactorimage
-    --------------------------------------------------------------------}
-  
-  TActivityobjectactorimage = Class(TGoogleBaseObject)
-  Private
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property url : string Index 0 Read Furl Write Seturl;
-  end;
-  TActivityobjectactorimageClass = Class of TActivityobjectactorimage;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachments
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachments = Class(TGoogleBaseObject)
-  Private
-    Fcontent : string;
-    FdisplayName : string;
-    Fembed : TActivityobjectattachmentsembed;
-    FfullImage : TActivityobjectattachmentsfullImage;
-    Fid : string;
-    Fimage : TActivityobjectattachmentsimage;
-    FobjectType : string;
-    FpreviewThumbnails : TActivityobjectattachmentspreviewThumbnails;
-    Fthumbnails : TActivityobjectattachmentsthumbnails;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Setcontent(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setembed(AIndex : Integer; AValue : TActivityobjectattachmentsembed); virtual;
-    Procedure SetfullImage(AIndex : Integer; AValue : TActivityobjectattachmentsfullImage); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TActivityobjectattachmentsimage); virtual;
-    Procedure SetobjectType(AIndex : Integer; AValue : string); virtual;
-    Procedure SetpreviewThumbnails(AIndex : Integer; AValue : TActivityobjectattachmentspreviewThumbnails); virtual;
-    Procedure Setthumbnails(AIndex : Integer; AValue : TActivityobjectattachmentsthumbnails); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property content : string Index 0 Read Fcontent Write Setcontent;
-    Property displayName : string Index 8 Read FdisplayName Write SetdisplayName;
-    Property embed : TActivityobjectattachmentsembed Index 16 Read Fembed Write Setembed;
-    Property fullImage : TActivityobjectattachmentsfullImage Index 24 Read FfullImage Write SetfullImage;
-    Property id : string Index 32 Read Fid Write Setid;
-    Property image : TActivityobjectattachmentsimage Index 40 Read Fimage Write Setimage;
-    Property objectType : string Index 48 Read FobjectType Write SetobjectType;
-    Property previewThumbnails : TActivityobjectattachmentspreviewThumbnails Index 56 Read FpreviewThumbnails Write SetpreviewThumbnails;
-    Property thumbnails : TActivityobjectattachmentsthumbnails Index 64 Read Fthumbnails Write Setthumbnails;
-    Property url : string Index 72 Read Furl Write Seturl;
-  end;
-  TActivityobjectattachmentsClass = Class of TActivityobjectattachments;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentsembed
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentsembed = Class(TGoogleBaseObject)
-  Private
-    F_type : string;
-    Furl : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property _type : string Index 0 Read F_type Write Set_type;
-    Property url : string Index 8 Read Furl Write Seturl;
-  end;
-  TActivityobjectattachmentsembedClass = Class of TActivityobjectattachmentsembed;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentsfullImage
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentsfullImage = Class(TGoogleBaseObject)
-  Private
-    Fheight : integer;
-    F_type : string;
-    Furl : string;
-    Fwidth : integer;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property height : integer Index 0 Read Fheight Write Setheight;
-    Property _type : string Index 8 Read F_type Write Set_type;
-    Property url : string Index 16 Read Furl Write Seturl;
-    Property width : integer Index 24 Read Fwidth Write Setwidth;
-  end;
-  TActivityobjectattachmentsfullImageClass = Class of TActivityobjectattachmentsfullImage;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentsimage
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentsimage = Class(TGoogleBaseObject)
-  Private
-    Fheight : integer;
-    F_type : string;
-    Furl : string;
-    Fwidth : integer;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property height : integer Index 0 Read Fheight Write Setheight;
-    Property _type : string Index 8 Read F_type Write Set_type;
-    Property url : string Index 16 Read Furl Write Seturl;
-    Property width : integer Index 24 Read Fwidth Write Setwidth;
-  end;
-  TActivityobjectattachmentsimageClass = Class of TActivityobjectattachmentsimage;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentspreviewThumbnails
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentspreviewThumbnails = Class(TGoogleBaseObject)
-  Private
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property url : string Index 0 Read Furl Write Seturl;
-  end;
-  TActivityobjectattachmentspreviewThumbnailsClass = Class of TActivityobjectattachmentspreviewThumbnails;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentsthumbnails
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentsthumbnails = Class(TGoogleBaseObject)
-  Private
-    Fdescription : string;
-    Fimage : TActivityobjectattachmentsthumbnailsimage;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Setdescription(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TActivityobjectattachmentsthumbnailsimage); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property description : string Index 0 Read Fdescription Write Setdescription;
-    Property image : TActivityobjectattachmentsthumbnailsimage Index 8 Read Fimage Write Setimage;
-    Property url : string Index 16 Read Furl Write Seturl;
-  end;
-  TActivityobjectattachmentsthumbnailsClass = Class of TActivityobjectattachmentsthumbnails;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectattachmentsthumbnailsimage
-    --------------------------------------------------------------------}
-  
-  TActivityobjectattachmentsthumbnailsimage = Class(TGoogleBaseObject)
-  Private
-    Fheight : integer;
-    F_type : string;
-    Furl : string;
-    Fwidth : integer;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property height : integer Index 0 Read Fheight Write Setheight;
-    Property _type : string Index 8 Read F_type Write Set_type;
-    Property url : string Index 16 Read Furl Write Seturl;
-    Property width : integer Index 24 Read Fwidth Write Setwidth;
-  end;
-  TActivityobjectattachmentsthumbnailsimageClass = Class of TActivityobjectattachmentsthumbnailsimage;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectplusoners
-    --------------------------------------------------------------------}
-  
-  TActivityobjectplusoners = Class(TGoogleBaseObject)
-  Private
-    FselfLink : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property selfLink : string Index 0 Read FselfLink Write SetselfLink;
-    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
-  end;
-  TActivityobjectplusonersClass = Class of TActivityobjectplusoners;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectreplies
-    --------------------------------------------------------------------}
-  
-  TActivityobjectreplies = Class(TGoogleBaseObject)
-  Private
-    FselfLink : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property selfLink : string Index 0 Read FselfLink Write SetselfLink;
-    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
-  end;
-  TActivityobjectrepliesClass = Class of TActivityobjectreplies;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectresharers
-    --------------------------------------------------------------------}
-  
-  TActivityobjectresharers = Class(TGoogleBaseObject)
-  Private
-    FselfLink : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property selfLink : string Index 0 Read FselfLink Write SetselfLink;
-    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
-  end;
-  TActivityobjectresharersClass = Class of TActivityobjectresharers;
-  
-  { --------------------------------------------------------------------
-    TActivityobjectstatusForViewer
-    --------------------------------------------------------------------}
-  
-  TActivityobjectstatusForViewer = Class(TGoogleBaseObject)
-  Private
-    FcanComment : boolean;
-    FcanPlusone : boolean;
-    FcanUpdate : boolean;
-    FisPlusOned : boolean;
-    FresharingDisabled : boolean;
-  Protected
-    //Property setters
-    Procedure SetcanComment(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetcanPlusone(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetcanUpdate(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetisPlusOned(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetresharingDisabled(AIndex : Integer; AValue : boolean); virtual;
-  Public
-  Published
-    Property canComment : boolean Index 0 Read FcanComment Write SetcanComment;
-    Property canPlusone : boolean Index 8 Read FcanPlusone Write SetcanPlusone;
-    Property canUpdate : boolean Index 16 Read FcanUpdate Write SetcanUpdate;
-    Property isPlusOned : boolean Index 24 Read FisPlusOned Write SetisPlusOned;
-    Property resharingDisabled : boolean Index 32 Read FresharingDisabled Write SetresharingDisabled;
-  end;
-  TActivityobjectstatusForViewerClass = Class of TActivityobjectstatusForViewer;
-  
-  { --------------------------------------------------------------------
-    TActivityprovider
-    --------------------------------------------------------------------}
-  
-  TActivityprovider = Class(TGoogleBaseObject)
-  Private
-    Ftitle : string;
-  Protected
-    //Property setters
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property title : string Index 0 Read Ftitle Write Settitle;
-  end;
-  TActivityproviderClass = Class of TActivityprovider;
-  
-  { --------------------------------------------------------------------
-    TActivityFeed
-    --------------------------------------------------------------------}
-  
-  TActivityFeed = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fid : string;
-    Fitems : TActivityFeeditems;
-    Fkind : string;
-    FnextLink : string;
-    FnextPageToken : string;
-    FselfLink : string;
-    Ftitle : string;
-    Fupdated : TDatetime;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TActivityFeeditems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property items : TActivityFeeditems Index 16 Read Fitems Write Setitems;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property nextLink : string Index 32 Read FnextLink Write SetnextLink;
-    Property nextPageToken : string Index 40 Read FnextPageToken Write SetnextPageToken;
-    Property selfLink : string Index 48 Read FselfLink Write SetselfLink;
-    Property title : string Index 56 Read Ftitle Write Settitle;
-    Property updated : TDatetime Index 64 Read Fupdated Write Setupdated;
-  end;
-  TActivityFeedClass = Class of TActivityFeed;
-  
-  { --------------------------------------------------------------------
-    TActivityFeeditems
-    --------------------------------------------------------------------}
-  
-  TActivityFeeditems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TActivityFeeditemsClass = Class of TActivityFeeditems;
-  
-  { --------------------------------------------------------------------
-    TAudience
-    --------------------------------------------------------------------}
-  
-  TAudience = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fitem : TPlusDomainsAclentryResource;
-    Fkind : string;
-    FmemberCount : integer;
-    Fvisibility : string;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitem(AIndex : Integer; AValue : TPlusDomainsAclentryResource); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmemberCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setvisibility(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property item : TPlusDomainsAclentryResource Index 8 Read Fitem Write Setitem;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property memberCount : integer Index 24 Read FmemberCount Write SetmemberCount;
-    Property visibility : string Index 32 Read Fvisibility Write Setvisibility;
-  end;
-  TAudienceClass = Class of TAudience;
-  
-  { --------------------------------------------------------------------
-    TAudiencesFeed
-    --------------------------------------------------------------------}
-  
-  TAudiencesFeed = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fitems : TAudiencesFeeditems;
-    Fkind : string;
-    FnextPageToken : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAudiencesFeeditems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property items : TAudiencesFeeditems Index 8 Read Fitems Write Setitems;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property nextPageToken : string Index 24 Read FnextPageToken Write SetnextPageToken;
-    Property totalItems : integer Index 32 Read FtotalItems Write SettotalItems;
-  end;
-  TAudiencesFeedClass = Class of TAudiencesFeed;
-  
-  { --------------------------------------------------------------------
-    TAudiencesFeeditems
-    --------------------------------------------------------------------}
-  
-  TAudiencesFeeditems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TAudiencesFeeditemsClass = Class of TAudiencesFeeditems;
-  
-  { --------------------------------------------------------------------
-    TCircle
-    --------------------------------------------------------------------}
-  
-  TCircle = Class(TGoogleBaseObject)
-  Private
-    Fdescription : string;
-    FdisplayName : string;
-    Fetag : string;
-    Fid : string;
-    Fkind : string;
-    Fpeople : TCirclepeople;
-    FselfLink : string;
-  Protected
-    //Property setters
-    Procedure Setdescription(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpeople(AIndex : Integer; AValue : TCirclepeople); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property description : string Index 0 Read Fdescription Write Setdescription;
-    Property displayName : string Index 8 Read FdisplayName Write SetdisplayName;
-    Property etag : string Index 16 Read Fetag Write Setetag;
-    Property id : string Index 24 Read Fid Write Setid;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property people : TCirclepeople Index 40 Read Fpeople Write Setpeople;
-    Property selfLink : string Index 48 Read FselfLink Write SetselfLink;
-  end;
-  TCircleClass = Class of TCircle;
-  
-  { --------------------------------------------------------------------
-    TCirclepeople
-    --------------------------------------------------------------------}
-  
-  TCirclepeople = Class(TGoogleBaseObject)
-  Private
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property totalItems : integer Index 0 Read FtotalItems Write SettotalItems;
-  end;
-  TCirclepeopleClass = Class of TCirclepeople;
-  
-  { --------------------------------------------------------------------
-    TCircleFeed
-    --------------------------------------------------------------------}
-  
-  TCircleFeed = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fitems : TCircleFeeditems;
-    Fkind : string;
-    FnextLink : string;
-    FnextPageToken : string;
-    FselfLink : string;
-    Ftitle : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCircleFeeditems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property items : TCircleFeeditems Index 8 Read Fitems Write Setitems;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property nextLink : string Index 24 Read FnextLink Write SetnextLink;
-    Property nextPageToken : string Index 32 Read FnextPageToken Write SetnextPageToken;
-    Property selfLink : string Index 40 Read FselfLink Write SetselfLink;
-    Property title : string Index 48 Read Ftitle Write Settitle;
-    Property totalItems : integer Index 56 Read FtotalItems Write SettotalItems;
-  end;
-  TCircleFeedClass = Class of TCircleFeed;
-  
-  { --------------------------------------------------------------------
-    TCircleFeeditems
-    --------------------------------------------------------------------}
-  
-  TCircleFeeditems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TCircleFeeditemsClass = Class of TCircleFeeditems;
-  
-  { --------------------------------------------------------------------
-    TComment
-    --------------------------------------------------------------------}
-  
-  TComment = Class(TGoogleBaseObject)
-  Private
-    Factor : TCommentactor;
-    Fetag : string;
-    Fid : string;
-    FinReplyTo : TCommentinReplyTo;
-    Fkind : string;
-    F_object : TCommentobject;
-    Fplusoners : TCommentplusoners;
-    F_published : TDatetime;
-    FselfLink : string;
-    Fupdated : TDatetime;
-    Fverb : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setactor(AIndex : Integer; AValue : TCommentactor); virtual;
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure SetinReplyTo(AIndex : Integer; AValue : TCommentinReplyTo); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_object(AIndex : Integer; AValue : TCommentobject); virtual;
-    Procedure Setplusoners(AIndex : Integer; AValue : TCommentplusoners); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setverb(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property actor : TCommentactor Index 0 Read Factor Write Setactor;
-    Property etag : string Index 8 Read Fetag Write Setetag;
-    Property id : string Index 16 Read Fid Write Setid;
-    Property inReplyTo : TCommentinReplyTo Index 24 Read FinReplyTo Write SetinReplyTo;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property _object : TCommentobject Index 40 Read F_object Write Set_object;
-    Property plusoners : TCommentplusoners Index 48 Read Fplusoners Write Setplusoners;
-    Property _published : TDatetime Index 56 Read F_published Write Set_published;
-    Property selfLink : string Index 64 Read FselfLink Write SetselfLink;
-    Property updated : TDatetime Index 72 Read Fupdated Write Setupdated;
-    Property verb : string Index 80 Read Fverb Write Setverb;
-  end;
-  TCommentClass = Class of TComment;
-  
-  { --------------------------------------------------------------------
-    TCommentactor
-    --------------------------------------------------------------------}
-  
-  TCommentactor = Class(TGoogleBaseObject)
-  Private
-    FdisplayName : string;
-    Fid : string;
-    Fimage : TCommentactorimage;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TCommentactorimage); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property displayName : string Index 0 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property image : TCommentactorimage Index 16 Read Fimage Write Setimage;
-    Property url : string Index 24 Read Furl Write Seturl;
-  end;
-  TCommentactorClass = Class of TCommentactor;
-  
-  { --------------------------------------------------------------------
-    TCommentactorimage
-    --------------------------------------------------------------------}
-  
-  TCommentactorimage = Class(TGoogleBaseObject)
-  Private
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property url : string Index 0 Read Furl Write Seturl;
-  end;
-  TCommentactorimageClass = Class of TCommentactorimage;
-  
-  { --------------------------------------------------------------------
-    TCommentinReplyTo
-    --------------------------------------------------------------------}
-  
-  TCommentinReplyTo = Class(TGoogleBaseObject)
-  Private
-    Fid : string;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property id : string Index 0 Read Fid Write Setid;
-    Property url : string Index 8 Read Furl Write Seturl;
-  end;
-  TCommentinReplyToClass = Class of TCommentinReplyTo;
-  
-  { --------------------------------------------------------------------
-    TCommentobject
-    --------------------------------------------------------------------}
-  
-  TCommentobject = Class(TGoogleBaseObject)
-  Private
-    Fcontent : string;
-    FobjectType : string;
-    ForiginalContent : string;
-  Protected
-    //Property setters
-    Procedure Setcontent(AIndex : Integer; AValue : string); virtual;
-    Procedure SetobjectType(AIndex : Integer; AValue : string); virtual;
-    Procedure SetoriginalContent(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property content : string Index 0 Read Fcontent Write Setcontent;
-    Property objectType : string Index 8 Read FobjectType Write SetobjectType;
-    Property originalContent : string Index 16 Read ForiginalContent Write SetoriginalContent;
-  end;
-  TCommentobjectClass = Class of TCommentobject;
-  
-  { --------------------------------------------------------------------
-    TCommentplusoners
-    --------------------------------------------------------------------}
-  
-  TCommentplusoners = Class(TGoogleBaseObject)
-  Private
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property totalItems : integer Index 0 Read FtotalItems Write SettotalItems;
-  end;
-  TCommentplusonersClass = Class of TCommentplusoners;
-  
-  { --------------------------------------------------------------------
-    TCommentFeed
-    --------------------------------------------------------------------}
-  
-  TCommentFeed = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fid : string;
-    Fitems : TCommentFeeditems;
-    Fkind : string;
-    FnextLink : string;
-    FnextPageToken : string;
-    Ftitle : string;
-    Fupdated : TDatetime;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCommentFeeditems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextLink(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property items : TCommentFeeditems Index 16 Read Fitems Write Setitems;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property nextLink : string Index 32 Read FnextLink Write SetnextLink;
-    Property nextPageToken : string Index 40 Read FnextPageToken Write SetnextPageToken;
-    Property title : string Index 48 Read Ftitle Write Settitle;
-    Property updated : TDatetime Index 56 Read Fupdated Write Setupdated;
-  end;
-  TCommentFeedClass = Class of TCommentFeed;
-  
-  { --------------------------------------------------------------------
-    TCommentFeeditems
-    --------------------------------------------------------------------}
-  
-  TCommentFeeditems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TCommentFeeditemsClass = Class of TCommentFeeditems;
-  
-  { --------------------------------------------------------------------
-    TMedia
-    --------------------------------------------------------------------}
-  
-  TMedia = Class(TGoogleBaseObject)
-  Private
-    Fauthor : TMediaauthor;
-    FdisplayName : string;
-    Fetag : string;
-    Fexif : TMediaexif;
-    Fheight : integer;
-    Fid : string;
-    Fkind : string;
-    FmediaCreatedTime : TDatetime;
-    FmediaUrl : string;
-    F_published : TDatetime;
-    FsizeBytes : string;
-    Fstreams : TMediastreams;
-    Fsummary : string;
-    Fupdated : TDatetime;
-    Furl : string;
-    FvideoDuration : string;
-    FvideoStatus : string;
-    Fwidth : integer;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setauthor(AIndex : Integer; AValue : TMediaauthor); virtual;
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setexif(AIndex : Integer; AValue : TMediaexif); virtual;
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmediaCreatedTime(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetmediaUrl(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetsizeBytes(AIndex : Integer; AValue : string); virtual;
-    Procedure Setstreams(AIndex : Integer; AValue : TMediastreams); virtual;
-    Procedure Setsummary(AIndex : Integer; AValue : string); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure SetvideoDuration(AIndex : Integer; AValue : string); virtual;
-    Procedure SetvideoStatus(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property author : TMediaauthor Index 0 Read Fauthor Write Setauthor;
-    Property displayName : string Index 8 Read FdisplayName Write SetdisplayName;
-    Property etag : string Index 16 Read Fetag Write Setetag;
-    Property exif : TMediaexif Index 24 Read Fexif Write Setexif;
-    Property height : integer Index 32 Read Fheight Write Setheight;
-    Property id : string Index 40 Read Fid Write Setid;
-    Property kind : string Index 48 Read Fkind Write Setkind;
-    Property mediaCreatedTime : TDatetime Index 56 Read FmediaCreatedTime Write SetmediaCreatedTime;
-    Property mediaUrl : string Index 64 Read FmediaUrl Write SetmediaUrl;
-    Property _published : TDatetime Index 72 Read F_published Write Set_published;
-    Property sizeBytes : string Index 80 Read FsizeBytes Write SetsizeBytes;
-    Property streams : TMediastreams Index 88 Read Fstreams Write Setstreams;
-    Property summary : string Index 96 Read Fsummary Write Setsummary;
-    Property updated : TDatetime Index 104 Read Fupdated Write Setupdated;
-    Property url : string Index 112 Read Furl Write Seturl;
-    Property videoDuration : string Index 120 Read FvideoDuration Write SetvideoDuration;
-    Property videoStatus : string Index 128 Read FvideoStatus Write SetvideoStatus;
-    Property width : integer Index 136 Read Fwidth Write Setwidth;
-  end;
-  TMediaClass = Class of TMedia;
-  
-  { --------------------------------------------------------------------
-    TMediaauthor
-    --------------------------------------------------------------------}
-  
-  TMediaauthor = Class(TGoogleBaseObject)
-  Private
-    FdisplayName : string;
-    Fid : string;
-    Fimage : TMediaauthorimage;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TMediaauthorimage); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property displayName : string Index 0 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property image : TMediaauthorimage Index 16 Read Fimage Write Setimage;
-    Property url : string Index 24 Read Furl Write Seturl;
-  end;
-  TMediaauthorClass = Class of TMediaauthor;
-  
-  { --------------------------------------------------------------------
-    TMediaauthorimage
-    --------------------------------------------------------------------}
-  
-  TMediaauthorimage = Class(TGoogleBaseObject)
-  Private
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property url : string Index 0 Read Furl Write Seturl;
-  end;
-  TMediaauthorimageClass = Class of TMediaauthorimage;
-  
-  { --------------------------------------------------------------------
-    TMediaexif
-    --------------------------------------------------------------------}
-  
-  TMediaexif = Class(TGoogleBaseObject)
-  Private
-    Ftime : TDatetime;
-  Protected
-    //Property setters
-    Procedure Settime(AIndex : Integer; AValue : TDatetime); virtual;
-  Public
-  Published
-    Property time : TDatetime Index 0 Read Ftime Write Settime;
-  end;
-  TMediaexifClass = Class of TMediaexif;
-  
-  { --------------------------------------------------------------------
-    TMediastreams
-    --------------------------------------------------------------------}
-  
-  TMediastreams = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TMediastreamsClass = Class of TMediastreams;
-  
-  { --------------------------------------------------------------------
-    TPeopleFeed
-    --------------------------------------------------------------------}
-  
-  TPeopleFeed = Class(TGoogleBaseObject)
-  Private
-    Fetag : string;
-    Fitems : TPeopleFeeditems;
-    Fkind : string;
-    FnextPageToken : string;
-    FselfLink : string;
-    Ftitle : string;
-    FtotalItems : integer;
-  Protected
-    //Property setters
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TPeopleFeeditems); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetnextPageToken(AIndex : Integer; AValue : string); virtual;
-    Procedure SetselfLink(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property etag : string Index 0 Read Fetag Write Setetag;
-    Property items : TPeopleFeeditems Index 8 Read Fitems Write Setitems;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property nextPageToken : string Index 24 Read FnextPageToken Write SetnextPageToken;
-    Property selfLink : string Index 32 Read FselfLink Write SetselfLink;
-    Property title : string Index 40 Read Ftitle Write Settitle;
-    Property totalItems : integer Index 48 Read FtotalItems Write SettotalItems;
-  end;
-  TPeopleFeedClass = Class of TPeopleFeed;
-  
-  { --------------------------------------------------------------------
-    TPeopleFeeditems
-    --------------------------------------------------------------------}
-  
-  TPeopleFeeditems = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TPeopleFeeditemsClass = Class of TPeopleFeeditems;
-  
-  { --------------------------------------------------------------------
-    TPerson
-    --------------------------------------------------------------------}
-  
-  TPerson = Class(TGoogleBaseObject)
-  Private
-    FaboutMe : string;
-    Fbirthday : string;
-    FbraggingRights : string;
-    FcircledByCount : integer;
-    Fcover : TPersoncover;
-    FcurrentLocation : string;
-    FdisplayName : string;
-    Fdomain : string;
-    Femails : TPersonemails;
-    Fetag : string;
-    Fgender : string;
-    Fid : string;
-    Fimage : TPersonimage;
-    FisPlusUser : boolean;
-    Fkind : string;
-    Fname : TPersonname;
-    Fnickname : string;
-    FobjectType : string;
-    Foccupation : string;
-    Forganizations : TPersonorganizations;
-    FplacesLived : TPersonplacesLived;
-    FplusOneCount : integer;
-    FrelationshipStatus : string;
-    Fskills : string;
-    Ftagline : string;
-    Furl : string;
-    Furls : TPersonurls;
-    Fverified : boolean;
-  Protected
-    //Property setters
-    Procedure SetaboutMe(AIndex : Integer; AValue : string); virtual;
-    Procedure Setbirthday(AIndex : Integer; AValue : string); virtual;
-    Procedure SetbraggingRights(AIndex : Integer; AValue : string); virtual;
-    Procedure SetcircledByCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setcover(AIndex : Integer; AValue : TPersoncover); virtual;
-    Procedure SetcurrentLocation(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdomain(AIndex : Integer; AValue : string); virtual;
-    Procedure Setemails(AIndex : Integer; AValue : TPersonemails); virtual;
-    Procedure Setetag(AIndex : Integer; AValue : string); virtual;
-    Procedure Setgender(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TPersonimage); virtual;
-    Procedure SetisPlusUser(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : TPersonname); virtual;
-    Procedure Setnickname(AIndex : Integer; AValue : string); virtual;
-    Procedure SetobjectType(AIndex : Integer; AValue : string); virtual;
-    Procedure Setoccupation(AIndex : Integer; AValue : string); virtual;
-    Procedure Setorganizations(AIndex : Integer; AValue : TPersonorganizations); virtual;
-    Procedure SetplacesLived(AIndex : Integer; AValue : TPersonplacesLived); virtual;
-    Procedure SetplusOneCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetrelationshipStatus(AIndex : Integer; AValue : string); virtual;
-    Procedure Setskills(AIndex : Integer; AValue : string); virtual;
-    Procedure Settagline(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturls(AIndex : Integer; AValue : TPersonurls); virtual;
-    Procedure Setverified(AIndex : Integer; AValue : boolean); virtual;
-  Public
-  Published
-    Property aboutMe : string Index 0 Read FaboutMe Write SetaboutMe;
-    Property birthday : string Index 8 Read Fbirthday Write Setbirthday;
-    Property braggingRights : string Index 16 Read FbraggingRights Write SetbraggingRights;
-    Property circledByCount : integer Index 24 Read FcircledByCount Write SetcircledByCount;
-    Property cover : TPersoncover Index 32 Read Fcover Write Setcover;
-    Property currentLocation : string Index 40 Read FcurrentLocation Write SetcurrentLocation;
-    Property displayName : string Index 48 Read FdisplayName Write SetdisplayName;
-    Property domain : string Index 56 Read Fdomain Write Setdomain;
-    Property emails : TPersonemails Index 64 Read Femails Write Setemails;
-    Property etag : string Index 72 Read Fetag Write Setetag;
-    Property gender : string Index 80 Read Fgender Write Setgender;
-    Property id : string Index 88 Read Fid Write Setid;
-    Property image : TPersonimage Index 96 Read Fimage Write Setimage;
-    Property isPlusUser : boolean Index 104 Read FisPlusUser Write SetisPlusUser;
-    Property kind : string Index 112 Read Fkind Write Setkind;
-    Property name : TPersonname Index 120 Read Fname Write Setname;
-    Property nickname : string Index 128 Read Fnickname Write Setnickname;
-    Property objectType : string Index 136 Read FobjectType Write SetobjectType;
-    Property occupation : string Index 144 Read Foccupation Write Setoccupation;
-    Property organizations : TPersonorganizations Index 152 Read Forganizations Write Setorganizations;
-    Property placesLived : TPersonplacesLived Index 160 Read FplacesLived Write SetplacesLived;
-    Property plusOneCount : integer Index 168 Read FplusOneCount Write SetplusOneCount;
-    Property relationshipStatus : string Index 176 Read FrelationshipStatus Write SetrelationshipStatus;
-    Property skills : string Index 184 Read Fskills Write Setskills;
-    Property tagline : string Index 192 Read Ftagline Write Settagline;
-    Property url : string Index 200 Read Furl Write Seturl;
-    Property urls : TPersonurls Index 208 Read Furls Write Seturls;
-    Property verified : boolean Index 216 Read Fverified Write Setverified;
-  end;
-  TPersonClass = Class of TPerson;
-  
-  { --------------------------------------------------------------------
-    TPersoncover
-    --------------------------------------------------------------------}
-  
-  TPersoncover = Class(TGoogleBaseObject)
-  Private
-    FcoverInfo : TPersoncovercoverInfo;
-    FcoverPhoto : TPersoncovercoverPhoto;
-    Flayout : string;
-  Protected
-    //Property setters
-    Procedure SetcoverInfo(AIndex : Integer; AValue : TPersoncovercoverInfo); virtual;
-    Procedure SetcoverPhoto(AIndex : Integer; AValue : TPersoncovercoverPhoto); virtual;
-    Procedure Setlayout(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property coverInfo : TPersoncovercoverInfo Index 0 Read FcoverInfo Write SetcoverInfo;
-    Property coverPhoto : TPersoncovercoverPhoto Index 8 Read FcoverPhoto Write SetcoverPhoto;
-    Property layout : string Index 16 Read Flayout Write Setlayout;
-  end;
-  TPersoncoverClass = Class of TPersoncover;
-  
-  { --------------------------------------------------------------------
-    TPersoncovercoverInfo
-    --------------------------------------------------------------------}
-  
-  TPersoncovercoverInfo = Class(TGoogleBaseObject)
-  Private
-    FleftImageOffset : integer;
-    FtopImageOffset : integer;
-  Protected
-    //Property setters
-    Procedure SetleftImageOffset(AIndex : Integer; AValue : integer); virtual;
-    Procedure SettopImageOffset(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property leftImageOffset : integer Index 0 Read FleftImageOffset Write SetleftImageOffset;
-    Property topImageOffset : integer Index 8 Read FtopImageOffset Write SettopImageOffset;
-  end;
-  TPersoncovercoverInfoClass = Class of TPersoncovercoverInfo;
-  
-  { --------------------------------------------------------------------
-    TPersoncovercoverPhoto
-    --------------------------------------------------------------------}
-  
-  TPersoncovercoverPhoto = Class(TGoogleBaseObject)
-  Private
-    Fheight : integer;
-    Furl : string;
-    Fwidth : integer;
-  Protected
-    //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property height : integer Index 0 Read Fheight Write Setheight;
-    Property url : string Index 8 Read Furl Write Seturl;
-    Property width : integer Index 16 Read Fwidth Write Setwidth;
-  end;
-  TPersoncovercoverPhotoClass = Class of TPersoncovercoverPhoto;
-  
-  { --------------------------------------------------------------------
-    TPersonemails
-    --------------------------------------------------------------------}
-  
-  TPersonemails = Class(TGoogleBaseObject)
-  Private
-    F_type : string;
-    Fvalue : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property _type : string Index 0 Read F_type Write Set_type;
-    Property value : string Index 8 Read Fvalue Write Setvalue;
-  end;
-  TPersonemailsClass = Class of TPersonemails;
-  
-  { --------------------------------------------------------------------
-    TPersonimage
-    --------------------------------------------------------------------}
-  
-  TPersonimage = Class(TGoogleBaseObject)
-  Private
-    FisDefault : boolean;
-    Furl : string;
-  Protected
-    //Property setters
-    Procedure SetisDefault(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property isDefault : boolean Index 0 Read FisDefault Write SetisDefault;
-    Property url : string Index 8 Read Furl Write Seturl;
-  end;
-  TPersonimageClass = Class of TPersonimage;
-  
-  { --------------------------------------------------------------------
-    TPersonname
-    --------------------------------------------------------------------}
-  
-  TPersonname = Class(TGoogleBaseObject)
-  Private
-    FfamilyName : string;
-    Fformatted : string;
-    FgivenName : string;
-    FhonorificPrefix : string;
-    FhonorificSuffix : string;
-    FmiddleName : string;
-  Protected
-    //Property setters
-    Procedure SetfamilyName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setformatted(AIndex : Integer; AValue : string); virtual;
-    Procedure SetgivenName(AIndex : Integer; AValue : string); virtual;
-    Procedure SethonorificPrefix(AIndex : Integer; AValue : string); virtual;
-    Procedure SethonorificSuffix(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmiddleName(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property familyName : string Index 0 Read FfamilyName Write SetfamilyName;
-    Property formatted : string Index 8 Read Fformatted Write Setformatted;
-    Property givenName : string Index 16 Read FgivenName Write SetgivenName;
-    Property honorificPrefix : string Index 24 Read FhonorificPrefix Write SethonorificPrefix;
-    Property honorificSuffix : string Index 32 Read FhonorificSuffix Write SethonorificSuffix;
-    Property middleName : string Index 40 Read FmiddleName Write SetmiddleName;
-  end;
-  TPersonnameClass = Class of TPersonname;
-  
-  { --------------------------------------------------------------------
-    TPersonorganizations
-    --------------------------------------------------------------------}
-  
-  TPersonorganizations = Class(TGoogleBaseObject)
-  Private
-    Fdepartment : string;
-    Fdescription : string;
-    FendDate : string;
-    Flocation : string;
-    Fname : string;
-    Fprimary : boolean;
-    FstartDate : string;
-    Ftitle : string;
-    F_type : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setdepartment(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdescription(AIndex : Integer; AValue : string); virtual;
-    Procedure SetendDate(AIndex : Integer; AValue : string); virtual;
-    Procedure Setlocation(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-    Procedure Setprimary(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetstartDate(AIndex : Integer; AValue : string); virtual;
-    Procedure Settitle(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property department : string Index 0 Read Fdepartment Write Setdepartment;
-    Property description : string Index 8 Read Fdescription Write Setdescription;
-    Property endDate : string Index 16 Read FendDate Write SetendDate;
-    Property location : string Index 24 Read Flocation Write Setlocation;
-    Property name : string Index 32 Read Fname Write Setname;
-    Property primary : boolean Index 40 Read Fprimary Write Setprimary;
-    Property startDate : string Index 48 Read FstartDate Write SetstartDate;
-    Property title : string Index 56 Read Ftitle Write Settitle;
-    Property _type : string Index 64 Read F_type Write Set_type;
-  end;
-  TPersonorganizationsClass = Class of TPersonorganizations;
-  
-  { --------------------------------------------------------------------
-    TPersonplacesLived
-    --------------------------------------------------------------------}
-  
-  TPersonplacesLived = Class(TGoogleBaseObject)
-  Private
-    Fprimary : boolean;
-    Fvalue : string;
-  Protected
-    //Property setters
-    Procedure Setprimary(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property primary : boolean Index 0 Read Fprimary Write Setprimary;
-    Property value : string Index 8 Read Fvalue Write Setvalue;
-  end;
-  TPersonplacesLivedClass = Class of TPersonplacesLived;
-  
-  { --------------------------------------------------------------------
-    TPersonurls
-    --------------------------------------------------------------------}
-  
-  TPersonurls = Class(TGoogleBaseObject)
-  Private
-    F_label : string;
-    F_type : string;
-    Fvalue : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Set_label(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property _label : string Index 0 Read F_label Write Set_label;
-    Property _type : string Index 8 Read F_type Write Set_type;
-    Property value : string Index 16 Read Fvalue Write Setvalue;
-  end;
-  TPersonurlsClass = Class of TPersonurls;
-  
-  { --------------------------------------------------------------------
-    TPlace
-    --------------------------------------------------------------------}
-  
-  TPlace = Class(TGoogleBaseObject)
-  Private
-    Faddress : TPlaceaddress;
-    FdisplayName : string;
-    Fid : string;
-    Fkind : string;
-    Fposition : TPlaceposition;
-  Protected
-    //Property setters
-    Procedure Setaddress(AIndex : Integer; AValue : TPlaceaddress); virtual;
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setposition(AIndex : Integer; AValue : TPlaceposition); virtual;
-  Public
-  Published
-    Property address : TPlaceaddress Index 0 Read Faddress Write Setaddress;
-    Property displayName : string Index 8 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 16 Read Fid Write Setid;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property position : TPlaceposition Index 32 Read Fposition Write Setposition;
-  end;
-  TPlaceClass = Class of TPlace;
-  
-  { --------------------------------------------------------------------
-    TPlaceaddress
-    --------------------------------------------------------------------}
-  
-  TPlaceaddress = Class(TGoogleBaseObject)
-  Private
-    Fformatted : string;
-  Protected
-    //Property setters
-    Procedure Setformatted(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property formatted : string Index 0 Read Fformatted Write Setformatted;
-  end;
-  TPlaceaddressClass = Class of TPlaceaddress;
-  
-  { --------------------------------------------------------------------
-    TPlaceposition
-    --------------------------------------------------------------------}
-  
-  TPlaceposition = Class(TGoogleBaseObject)
-  Private
-    Flatitude : double;
-    Flongitude : double;
-  Protected
-    //Property setters
-    Procedure Setlatitude(AIndex : Integer; AValue : double); virtual;
-    Procedure Setlongitude(AIndex : Integer; AValue : double); virtual;
-  Public
-  Published
-    Property latitude : double Index 0 Read Flatitude Write Setlatitude;
-    Property longitude : double Index 8 Read Flongitude Write Setlongitude;
-  end;
-  TPlacepositionClass = Class of TPlaceposition;
-  
-  { --------------------------------------------------------------------
-    TPlusDomainsAclentryResource
-    --------------------------------------------------------------------}
-  
-  TPlusDomainsAclentryResource = Class(TGoogleBaseObject)
-  Private
-    FdisplayName : string;
-    Fid : string;
-    F_type : string;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure SetdisplayName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property displayName : string Index 0 Read FdisplayName Write SetdisplayName;
-    Property id : string Index 8 Read Fid Write Setid;
-    Property _type : string Index 16 Read F_type Write Set_type;
-  end;
-  TPlusDomainsAclentryResourceClass = Class of TPlusDomainsAclentryResource;
-  
-  { --------------------------------------------------------------------
-    TVideostream
-    --------------------------------------------------------------------}
-  
-  TVideostream = Class(TGoogleBaseObject)
-  Private
-    Fheight : integer;
-    F_type : string;
-    Furl : string;
-    Fwidth : integer;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Set_type(AIndex : Integer; AValue : string); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : string); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property height : integer Index 0 Read Fheight Write Setheight;
-    Property _type : string Index 8 Read F_type Write Set_type;
-    Property url : string Index 16 Read Furl Write Seturl;
-    Property width : integer Index 24 Read Fwidth Write Setwidth;
-  end;
-  TVideostreamClass = Class of TVideostream;
-  
-  { --------------------------------------------------------------------
-    TActivitiesResource
-    --------------------------------------------------------------------}
-  
-  
-  //Optional query Options for TActivitiesResource, method Insert
-  
-  TActivitiesInsertOptions = Record
-    preview : boolean;
-  end;
-  
-  
-  //Optional query Options for TActivitiesResource, method List
-  
-  TActivitiesListOptions = Record
-    maxResults : integer;
-    pageToken : string;
-  end;
-  
-  TActivitiesResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function Get(activityId: string) : TActivity;
-    Function Insert(userId: string; aActivity : TActivity; AQuery : string  = '') : TActivity;
-    Function Insert(userId: string; aActivity : TActivity; AQuery : TActivitiesinsertOptions) : TActivity;
-    Function List(collection: string; userId: string; AQuery : string  = '') : TActivityFeed;
-    Function List(collection: string; userId: string; AQuery : TActivitieslistOptions) : TActivityFeed;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TAudiencesResource
-    --------------------------------------------------------------------}
-  
-  
-  //Optional query Options for TAudiencesResource, method List
-  
-  TAudiencesListOptions = Record
-    maxResults : integer;
-    pageToken : string;
-  end;
-  
-  TAudiencesResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function List(userId: string; AQuery : string  = '') : TAudiencesFeed;
-    Function List(userId: string; AQuery : TAudienceslistOptions) : TAudiencesFeed;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TCirclesResource
-    --------------------------------------------------------------------}
-  
-  
-  //Optional query Options for TCirclesResource, method AddPeople
-  
-  TCirclesAddPeopleOptions = Record
-    email : string;
-    userId : string;
-  end;
-  
-  
-  //Optional query Options for TCirclesResource, method List
-  
-  TCirclesListOptions = Record
-    maxResults : integer;
-    pageToken : string;
-  end;
-  
-  
-  //Optional query Options for TCirclesResource, method RemovePeople
-  
-  TCirclesRemovePeopleOptions = Record
-    email : string;
-    userId : string;
-  end;
-  
-  TCirclesResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function AddPeople(circleId: string; AQuery : string  = '') : TCircle;
-    Function AddPeople(circleId: string; AQuery : TCirclesaddPeopleOptions) : TCircle;
-    Function Get(circleId: string) : TCircle;
-    Function Insert(userId: string; aCircle : TCircle) : TCircle;
-    Function List(userId: string; AQuery : string  = '') : TCircleFeed;
-    Function List(userId: string; AQuery : TCircleslistOptions) : TCircleFeed;
-    Function Patch(circleId: string; aCircle : TCircle) : TCircle;
-    Procedure Remove(circleId: string);
-    Procedure RemovePeople(circleId: string; AQuery : string  = '');
-    Procedure RemovePeople(circleId: string; AQuery : TCirclesremovePeopleOptions);
-    Function Update(circleId: string; aCircle : TCircle) : TCircle;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TCommentsResource
-    --------------------------------------------------------------------}
-  
-  
-  //Optional query Options for TCommentsResource, method List
-  
-  TCommentsListOptions = Record
-    maxResults : integer;
-    pageToken : string;
-    sortOrder : string;
-  end;
-  
-  TCommentsResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function Get(commentId: string) : TComment;
-    Function Insert(activityId: string; aComment : TComment) : TComment;
-    Function List(activityId: string; AQuery : string  = '') : TCommentFeed;
-    Function List(activityId: string; AQuery : TCommentslistOptions) : TCommentFeed;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TMediaResource
-    --------------------------------------------------------------------}
-  
-  TMediaResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function Insert(collection: string; userId: string; aMedia : TMedia) : TMedia;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TPeopleResource
-    --------------------------------------------------------------------}
-  
-  
-  //Optional query Options for TPeopleResource, method List
-  
-  TPeopleListOptions = Record
-    maxResults : integer;
-    orderBy : string;
-    pageToken : string;
-  end;
-  
-  
-  //Optional query Options for TPeopleResource, method ListByActivity
-  
-  TPeopleListByActivityOptions = Record
-    maxResults : integer;
-    pageToken : string;
-  end;
-  
-  
-  //Optional query Options for TPeopleResource, method ListByCircle
-  
-  TPeopleListByCircleOptions = Record
-    maxResults : integer;
-    pageToken : string;
-  end;
-  
-  TPeopleResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function Get(userId: string) : TPerson;
-    Function List(collection: string; userId: string; AQuery : string  = '') : TPeopleFeed;
-    Function List(collection: string; userId: string; AQuery : TPeoplelistOptions) : TPeopleFeed;
-    Function ListByActivity(activityId: string; collection: string; AQuery : string  = '') : TPeopleFeed;
-    Function ListByActivity(activityId: string; collection: string; AQuery : TPeoplelistByActivityOptions) : TPeopleFeed;
-    Function ListByCircle(circleId: string; AQuery : string  = '') : TPeopleFeed;
-    Function ListByCircle(circleId: string; AQuery : TPeoplelistByCircleOptions) : TPeopleFeed;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TPlusDomainsAPI
-    --------------------------------------------------------------------}
-  
-  TPlusDomainsAPI = Class(TGoogleAPI)
-  Private
-    FActivitiesInstance : TActivitiesResource;
-    FAudiencesInstance : TAudiencesResource;
-    FCirclesInstance : TCirclesResource;
-    FCommentsInstance : TCommentsResource;
-    FMediaInstance : TMediaResource;
-    FPeopleInstance : TPeopleResource;
-    Function GetActivitiesInstance : TActivitiesResource;virtual;
-    Function GetAudiencesInstance : TAudiencesResource;virtual;
-    Function GetCirclesInstance : TCirclesResource;virtual;
-    Function GetCommentsInstance : TCommentsResource;virtual;
-    Function GetMediaInstance : TMediaResource;virtual;
-    Function GetPeopleInstance : TPeopleResource;virtual;
-  Public
-    //Override class functions with API info
-    Class Function APIName : String; override;
-    Class Function APIVersion : String; override;
-    Class Function APIRevision : String; override;
-    Class Function APIID : String; override;
-    Class Function APITitle : String; override;
-    Class Function APIDescription : String; override;
-    Class Function APIOwnerDomain : String; override;
-    Class Function APIOwnerName : String; override;
-    Class Function APIIcon16 : String; override;
-    Class Function APIIcon32 : String; override;
-    Class Function APIdocumentationLink : String; override;
-    Class Function APIrootUrl : string; override;
-    Class Function APIbasePath : string;override;
-    Class Function APIbaseURL : String;override;
-    Class Function APIProtocol : string;override;
-    Class Function APIservicePath : string;override;
-    Class Function APIbatchPath : String;override;
-    Class Function APIAuthScopes : TScopeInfoArray;override;
-    Class Function APINeedsAuth : Boolean;override;
-    Class Procedure RegisterAPIResources; override;
-    //Add create function for resources
-    Function CreateActivitiesResource(AOwner : TComponent) : TActivitiesResource;virtual;overload;
-    Function CreateActivitiesResource : TActivitiesResource;virtual;overload;
-    Function CreateAudiencesResource(AOwner : TComponent) : TAudiencesResource;virtual;overload;
-    Function CreateAudiencesResource : TAudiencesResource;virtual;overload;
-    Function CreateCirclesResource(AOwner : TComponent) : TCirclesResource;virtual;overload;
-    Function CreateCirclesResource : TCirclesResource;virtual;overload;
-    Function CreateCommentsResource(AOwner : TComponent) : TCommentsResource;virtual;overload;
-    Function CreateCommentsResource : TCommentsResource;virtual;overload;
-    Function CreateMediaResource(AOwner : TComponent) : TMediaResource;virtual;overload;
-    Function CreateMediaResource : TMediaResource;virtual;overload;
-    Function CreatePeopleResource(AOwner : TComponent) : TPeopleResource;virtual;overload;
-    Function CreatePeopleResource : TPeopleResource;virtual;overload;
-    //Add default on-demand instances for resources
-    Property ActivitiesResource : TActivitiesResource Read GetActivitiesInstance;
-    Property AudiencesResource : TAudiencesResource Read GetAudiencesInstance;
-    Property CirclesResource : TCirclesResource Read GetCirclesInstance;
-    Property CommentsResource : TCommentsResource Read GetCommentsInstance;
-    Property MediaResource : TMediaResource Read GetMediaInstance;
-    Property PeopleResource : TPeopleResource Read GetPeopleInstance;
-  end;
-
-implementation
-
-
-{ --------------------------------------------------------------------
-  TAcl
-  --------------------------------------------------------------------}
-
-
-Procedure TAcl.Setdescription(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAcl.SetdomainRestricted(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FdomainRestricted=AValue) then exit;
-  FdomainRestricted:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAcl.Setitems(AIndex : Integer; AValue : TAclitems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAcl.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TAclitems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivity
-  --------------------------------------------------------------------}
-
-
-Procedure TActivity.Setaccess(AIndex : Integer; AValue : TAcl); 
-
-begin
-  If (Faccess=AValue) then exit;
-  Faccess:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setactor(AIndex : Integer; AValue : TActivityactor); 
-
-begin
-  If (Factor=AValue) then exit;
-  Factor:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setaddress(AIndex : Integer; AValue : string); 
-
-begin
-  If (Faddress=AValue) then exit;
-  Faddress:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setannotation(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fannotation=AValue) then exit;
-  Fannotation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.SetcrosspostSource(AIndex : Integer; AValue : string); 
-
-begin
-  If (FcrosspostSource=AValue) then exit;
-  FcrosspostSource:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setgeocode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fgeocode=AValue) then exit;
-  Fgeocode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setlocation(AIndex : Integer; AValue : TPlace); 
-
-begin
-  If (Flocation=AValue) then exit;
-  Flocation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Set_object(AIndex : Integer; AValue : TActivityobject); 
-
-begin
-  If (F_object=AValue) then exit;
-  F_object:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.SetplaceId(AIndex : Integer; AValue : string); 
-
-begin
-  If (FplaceId=AValue) then exit;
-  FplaceId:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.SetplaceName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FplaceName=AValue) then exit;
-  FplaceName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setprovider(AIndex : Integer; AValue : TActivityprovider); 
-
-begin
-  If (Fprovider=AValue) then exit;
-  Fprovider:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Set_published(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (F_published=AValue) then exit;
-  F_published:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setradius(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fradius=AValue) then exit;
-  Fradius:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setupdated(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Fupdated=AValue) then exit;
-  Fupdated:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivity.Setverb(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fverb=AValue) then exit;
-  Fverb:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TActivity.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_object' : Result:='object';
-  '_published' : Result:='published';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityactor
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityactor.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityactor.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityactor.Setimage(AIndex : Integer; AValue : TActivityactorimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityactor.Setname(AIndex : Integer; AValue : TActivityactorname); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityactor.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityactorimage
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityactorimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityactorname
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityactorname.SetfamilyName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FfamilyName=AValue) then exit;
-  FfamilyName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityactorname.SetgivenName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FgivenName=AValue) then exit;
-  FgivenName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobject
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobject.Setactor(AIndex : Integer; AValue : TActivityobjectactor); 
-
-begin
-  If (Factor=AValue) then exit;
-  Factor:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setattachments(AIndex : Integer; AValue : TActivityobjectattachments); 
-
-begin
-  If (Fattachments=AValue) then exit;
-  Fattachments:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setcontent(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcontent=AValue) then exit;
-  Fcontent:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.SetobjectType(AIndex : Integer; AValue : string); 
-
-begin
-  If (FobjectType=AValue) then exit;
-  FobjectType:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.SetoriginalContent(AIndex : Integer; AValue : string); 
-
-begin
-  If (ForiginalContent=AValue) then exit;
-  ForiginalContent:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setplusoners(AIndex : Integer; AValue : TActivityobjectplusoners); 
-
-begin
-  If (Fplusoners=AValue) then exit;
-  Fplusoners:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setreplies(AIndex : Integer; AValue : TActivityobjectreplies); 
-
-begin
-  If (Freplies=AValue) then exit;
-  Freplies:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Setresharers(AIndex : Integer; AValue : TActivityobjectresharers); 
-
-begin
-  If (Fresharers=AValue) then exit;
-  Fresharers:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.SetstatusForViewer(AIndex : Integer; AValue : TActivityobjectstatusForViewer); 
-
-begin
-  If (FstatusForViewer=AValue) then exit;
-  FstatusForViewer:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobject.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectactor
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectactor.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectactor.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectactor.Setimage(AIndex : Integer; AValue : TActivityobjectactorimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectactor.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectactorimage
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectactorimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachments
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachments.Setcontent(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcontent=AValue) then exit;
-  Fcontent:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.Setembed(AIndex : Integer; AValue : TActivityobjectattachmentsembed); 
-
-begin
-  If (Fembed=AValue) then exit;
-  Fembed:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.SetfullImage(AIndex : Integer; AValue : TActivityobjectattachmentsfullImage); 
-
-begin
-  If (FfullImage=AValue) then exit;
-  FfullImage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.Setimage(AIndex : Integer; AValue : TActivityobjectattachmentsimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.SetobjectType(AIndex : Integer; AValue : string); 
-
-begin
-  If (FobjectType=AValue) then exit;
-  FobjectType:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.SetpreviewThumbnails(AIndex : Integer; AValue : TActivityobjectattachmentspreviewThumbnails); 
-
-begin
-  If (FpreviewThumbnails=AValue) then exit;
-  FpreviewThumbnails:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.Setthumbnails(AIndex : Integer; AValue : TActivityobjectattachmentsthumbnails); 
-
-begin
-  If (Fthumbnails=AValue) then exit;
-  Fthumbnails:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachments.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentsembed
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentsembed.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsembed.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TActivityobjectattachmentsembed.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentsfullImage
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentsfullImage.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsfullImage.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsfullImage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsfullImage.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TActivityobjectattachmentsfullImage.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentsimage
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentsimage.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsimage.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsimage.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TActivityobjectattachmentsimage.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentspreviewThumbnails
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentspreviewThumbnails.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentsthumbnails
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentsthumbnails.Setdescription(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsthumbnails.Setimage(AIndex : Integer; AValue : TActivityobjectattachmentsthumbnailsimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsthumbnails.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectattachmentsthumbnailsimage
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectattachmentsthumbnailsimage.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsthumbnailsimage.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsthumbnailsimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectattachmentsthumbnailsimage.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TActivityobjectattachmentsthumbnailsimage.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectplusoners
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectplusoners.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectplusoners.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectreplies
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectreplies.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectreplies.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectresharers
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectresharers.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectresharers.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityobjectstatusForViewer
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityobjectstatusForViewer.SetcanComment(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FcanComment=AValue) then exit;
-  FcanComment:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectstatusForViewer.SetcanPlusone(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FcanPlusone=AValue) then exit;
-  FcanPlusone:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectstatusForViewer.SetcanUpdate(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FcanUpdate=AValue) then exit;
-  FcanUpdate:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectstatusForViewer.SetisPlusOned(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FisPlusOned=AValue) then exit;
-  FisPlusOned:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityobjectstatusForViewer.SetresharingDisabled(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FresharingDisabled=AValue) then exit;
-  FresharingDisabled:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityprovider
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityprovider.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityFeed
-  --------------------------------------------------------------------}
-
-
-Procedure TActivityFeed.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.Setitems(AIndex : Integer; AValue : TActivityFeeditems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.SetnextLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextLink=AValue) then exit;
-  FnextLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.SetnextPageToken(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextPageToken=AValue) then exit;
-  FnextPageToken:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TActivityFeed.Setupdated(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Fupdated=AValue) then exit;
-  Fupdated:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivityFeeditems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TAudience
-  --------------------------------------------------------------------}
-
-
-Procedure TAudience.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudience.Setitem(AIndex : Integer; AValue : TPlusDomainsAclentryResource); 
-
-begin
-  If (Fitem=AValue) then exit;
-  Fitem:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudience.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudience.SetmemberCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FmemberCount=AValue) then exit;
-  FmemberCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudience.Setvisibility(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fvisibility=AValue) then exit;
-  Fvisibility:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TAudiencesFeed
-  --------------------------------------------------------------------}
-
-
-Procedure TAudiencesFeed.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudiencesFeed.Setitems(AIndex : Integer; AValue : TAudiencesFeeditems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudiencesFeed.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudiencesFeed.SetnextPageToken(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextPageToken=AValue) then exit;
-  FnextPageToken:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAudiencesFeed.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TAudiencesFeeditems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TCircle
-  --------------------------------------------------------------------}
-
-
-Procedure TCircle.Setdescription(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.Setpeople(AIndex : Integer; AValue : TCirclepeople); 
-
-begin
-  If (Fpeople=AValue) then exit;
-  Fpeople:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircle.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCirclepeople
-  --------------------------------------------------------------------}
-
-
-Procedure TCirclepeople.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCircleFeed
-  --------------------------------------------------------------------}
-
-
-Procedure TCircleFeed.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.Setitems(AIndex : Integer; AValue : TCircleFeeditems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.SetnextLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextLink=AValue) then exit;
-  FnextLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.SetnextPageToken(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextPageToken=AValue) then exit;
-  FnextPageToken:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCircleFeed.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCircleFeeditems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TComment
-  --------------------------------------------------------------------}
-
-
-Procedure TComment.Setactor(AIndex : Integer; AValue : TCommentactor); 
-
-begin
-  If (Factor=AValue) then exit;
-  Factor:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.SetinReplyTo(AIndex : Integer; AValue : TCommentinReplyTo); 
-
-begin
-  If (FinReplyTo=AValue) then exit;
-  FinReplyTo:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Set_object(AIndex : Integer; AValue : TCommentobject); 
-
-begin
-  If (F_object=AValue) then exit;
-  F_object:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setplusoners(AIndex : Integer; AValue : TCommentplusoners); 
-
-begin
-  If (Fplusoners=AValue) then exit;
-  Fplusoners:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Set_published(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (F_published=AValue) then exit;
-  F_published:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setupdated(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Fupdated=AValue) then exit;
-  Fupdated:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TComment.Setverb(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fverb=AValue) then exit;
-  Fverb:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TComment.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_object' : Result:='object';
-  '_published' : Result:='published';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentactor
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentactor.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentactor.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentactor.Setimage(AIndex : Integer; AValue : TCommentactorimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentactor.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentactorimage
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentactorimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentinReplyTo
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentinReplyTo.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentinReplyTo.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentobject
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentobject.Setcontent(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcontent=AValue) then exit;
-  Fcontent:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentobject.SetobjectType(AIndex : Integer; AValue : string); 
-
-begin
-  If (FobjectType=AValue) then exit;
-  FobjectType:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentobject.SetoriginalContent(AIndex : Integer; AValue : string); 
-
-begin
-  If (ForiginalContent=AValue) then exit;
-  ForiginalContent:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentplusoners
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentplusoners.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentFeed
-  --------------------------------------------------------------------}
-
-
-Procedure TCommentFeed.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.Setitems(AIndex : Integer; AValue : TCommentFeeditems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.SetnextLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextLink=AValue) then exit;
-  FnextLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.SetnextPageToken(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextPageToken=AValue) then exit;
-  FnextPageToken:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCommentFeed.Setupdated(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Fupdated=AValue) then exit;
-  Fupdated:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCommentFeeditems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TMedia
-  --------------------------------------------------------------------}
-
-
-Procedure TMedia.Setauthor(AIndex : Integer; AValue : TMediaauthor); 
-
-begin
-  If (Fauthor=AValue) then exit;
-  Fauthor:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setexif(AIndex : Integer; AValue : TMediaexif); 
-
-begin
-  If (Fexif=AValue) then exit;
-  Fexif:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetmediaCreatedTime(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (FmediaCreatedTime=AValue) then exit;
-  FmediaCreatedTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetmediaUrl(AIndex : Integer; AValue : string); 
-
-begin
-  If (FmediaUrl=AValue) then exit;
-  FmediaUrl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Set_published(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (F_published=AValue) then exit;
-  F_published:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetsizeBytes(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsizeBytes=AValue) then exit;
-  FsizeBytes:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setstreams(AIndex : Integer; AValue : TMediastreams); 
-
-begin
-  If (Fstreams=AValue) then exit;
-  Fstreams:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setsummary(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fsummary=AValue) then exit;
-  Fsummary:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setupdated(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Fupdated=AValue) then exit;
-  Fupdated:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetvideoDuration(AIndex : Integer; AValue : string); 
-
-begin
-  If (FvideoDuration=AValue) then exit;
-  FvideoDuration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.SetvideoStatus(AIndex : Integer; AValue : string); 
-
-begin
-  If (FvideoStatus=AValue) then exit;
-  FvideoStatus:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMedia.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TMedia.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_published' : Result:='published';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TMediaauthor
-  --------------------------------------------------------------------}
-
-
-Procedure TMediaauthor.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMediaauthor.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMediaauthor.Setimage(AIndex : Integer; AValue : TMediaauthorimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TMediaauthor.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TMediaauthorimage
-  --------------------------------------------------------------------}
-
-
-Procedure TMediaauthorimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TMediaexif
-  --------------------------------------------------------------------}
-
-
-Procedure TMediaexif.Settime(AIndex : Integer; AValue : TDatetime); 
-
-begin
-  If (Ftime=AValue) then exit;
-  Ftime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TMediastreams
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TPeopleFeed
-  --------------------------------------------------------------------}
-
-
-Procedure TPeopleFeed.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.Setitems(AIndex : Integer; AValue : TPeopleFeeditems); 
-
-begin
-  If (Fitems=AValue) then exit;
-  Fitems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.SetnextPageToken(AIndex : Integer; AValue : string); 
-
-begin
-  If (FnextPageToken=AValue) then exit;
-  FnextPageToken:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.SetselfLink(AIndex : Integer; AValue : string); 
-
-begin
-  If (FselfLink=AValue) then exit;
-  FselfLink:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPeopleFeed.SettotalItems(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtotalItems=AValue) then exit;
-  FtotalItems:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPeopleFeeditems
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TPerson
-  --------------------------------------------------------------------}
-
-
-Procedure TPerson.SetaboutMe(AIndex : Integer; AValue : string); 
-
-begin
-  If (FaboutMe=AValue) then exit;
-  FaboutMe:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setbirthday(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fbirthday=AValue) then exit;
-  Fbirthday:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetbraggingRights(AIndex : Integer; AValue : string); 
-
-begin
-  If (FbraggingRights=AValue) then exit;
-  FbraggingRights:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetcircledByCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FcircledByCount=AValue) then exit;
-  FcircledByCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setcover(AIndex : Integer; AValue : TPersoncover); 
-
-begin
-  If (Fcover=AValue) then exit;
-  Fcover:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetcurrentLocation(AIndex : Integer; AValue : string); 
-
-begin
-  If (FcurrentLocation=AValue) then exit;
-  FcurrentLocation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setdomain(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdomain=AValue) then exit;
-  Fdomain:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setemails(AIndex : Integer; AValue : TPersonemails); 
-
-begin
-  If (Femails=AValue) then exit;
-  Femails:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setetag(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fetag=AValue) then exit;
-  Fetag:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setgender(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fgender=AValue) then exit;
-  Fgender:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setimage(AIndex : Integer; AValue : TPersonimage); 
-
-begin
-  If (Fimage=AValue) then exit;
-  Fimage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetisPlusUser(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FisPlusUser=AValue) then exit;
-  FisPlusUser:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setname(AIndex : Integer; AValue : TPersonname); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setnickname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fnickname=AValue) then exit;
-  Fnickname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetobjectType(AIndex : Integer; AValue : string); 
-
-begin
-  If (FobjectType=AValue) then exit;
-  FobjectType:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setoccupation(AIndex : Integer; AValue : string); 
-
-begin
-  If (Foccupation=AValue) then exit;
-  Foccupation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setorganizations(AIndex : Integer; AValue : TPersonorganizations); 
-
-begin
-  If (Forganizations=AValue) then exit;
-  Forganizations:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetplacesLived(AIndex : Integer; AValue : TPersonplacesLived); 
-
-begin
-  If (FplacesLived=AValue) then exit;
-  FplacesLived:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetplusOneCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FplusOneCount=AValue) then exit;
-  FplusOneCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.SetrelationshipStatus(AIndex : Integer; AValue : string); 
-
-begin
-  If (FrelationshipStatus=AValue) then exit;
-  FrelationshipStatus:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setskills(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fskills=AValue) then exit;
-  Fskills:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Settagline(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftagline=AValue) then exit;
-  Ftagline:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Seturls(AIndex : Integer; AValue : TPersonurls); 
-
-begin
-  If (Furls=AValue) then exit;
-  Furls:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPerson.Setverified(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Fverified=AValue) then exit;
-  Fverified:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersoncover
-  --------------------------------------------------------------------}
-
-
-Procedure TPersoncover.SetcoverInfo(AIndex : Integer; AValue : TPersoncovercoverInfo); 
-
-begin
-  If (FcoverInfo=AValue) then exit;
-  FcoverInfo:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersoncover.SetcoverPhoto(AIndex : Integer; AValue : TPersoncovercoverPhoto); 
-
-begin
-  If (FcoverPhoto=AValue) then exit;
-  FcoverPhoto:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersoncover.Setlayout(AIndex : Integer; AValue : string); 
-
-begin
-  If (Flayout=AValue) then exit;
-  Flayout:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersoncovercoverInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TPersoncovercoverInfo.SetleftImageOffset(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FleftImageOffset=AValue) then exit;
-  FleftImageOffset:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersoncovercoverInfo.SettopImageOffset(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FtopImageOffset=AValue) then exit;
-  FtopImageOffset:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersoncovercoverPhoto
-  --------------------------------------------------------------------}
-
-
-Procedure TPersoncovercoverPhoto.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersoncovercoverPhoto.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersoncovercoverPhoto.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonemails
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonemails.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonemails.Setvalue(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fvalue=AValue) then exit;
-  Fvalue:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TPersonemails.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonimage
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonimage.SetisDefault(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FisDefault=AValue) then exit;
-  FisDefault:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonimage.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonname
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonname.SetfamilyName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FfamilyName=AValue) then exit;
-  FfamilyName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonname.Setformatted(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fformatted=AValue) then exit;
-  Fformatted:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonname.SetgivenName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FgivenName=AValue) then exit;
-  FgivenName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonname.SethonorificPrefix(AIndex : Integer; AValue : string); 
-
-begin
-  If (FhonorificPrefix=AValue) then exit;
-  FhonorificPrefix:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonname.SethonorificSuffix(AIndex : Integer; AValue : string); 
-
-begin
-  If (FhonorificSuffix=AValue) then exit;
-  FhonorificSuffix:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonname.SetmiddleName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FmiddleName=AValue) then exit;
-  FmiddleName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonorganizations
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonorganizations.Setdepartment(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdepartment=AValue) then exit;
-  Fdepartment:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Setdescription(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.SetendDate(AIndex : Integer; AValue : string); 
-
-begin
-  If (FendDate=AValue) then exit;
-  FendDate:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Setlocation(AIndex : Integer; AValue : string); 
-
-begin
-  If (Flocation=AValue) then exit;
-  Flocation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Setprimary(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Fprimary=AValue) then exit;
-  Fprimary:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.SetstartDate(AIndex : Integer; AValue : string); 
-
-begin
-  If (FstartDate=AValue) then exit;
-  FstartDate:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Settitle(AIndex : Integer; AValue : string); 
-
-begin
-  If (Ftitle=AValue) then exit;
-  Ftitle:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonorganizations.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TPersonorganizations.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonplacesLived
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonplacesLived.Setprimary(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Fprimary=AValue) then exit;
-  Fprimary:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonplacesLived.Setvalue(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fvalue=AValue) then exit;
-  Fvalue:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPersonurls
-  --------------------------------------------------------------------}
-
-
-Procedure TPersonurls.Set_label(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_label=AValue) then exit;
-  F_label:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonurls.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPersonurls.Setvalue(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fvalue=AValue) then exit;
-  Fvalue:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TPersonurls.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_label' : Result:='label';
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TPlace
-  --------------------------------------------------------------------}
-
-
-Procedure TPlace.Setaddress(AIndex : Integer; AValue : TPlaceaddress); 
-
-begin
-  If (Faddress=AValue) then exit;
-  Faddress:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlace.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlace.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlace.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlace.Setposition(AIndex : Integer; AValue : TPlaceposition); 
-
-begin
-  If (Fposition=AValue) then exit;
-  Fposition:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPlaceaddress
-  --------------------------------------------------------------------}
-
-
-Procedure TPlaceaddress.Setformatted(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fformatted=AValue) then exit;
-  Fformatted:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPlaceposition
-  --------------------------------------------------------------------}
-
-
-Procedure TPlaceposition.Setlatitude(AIndex : Integer; AValue : double); 
-
-begin
-  If (Flatitude=AValue) then exit;
-  Flatitude:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlaceposition.Setlongitude(AIndex : Integer; AValue : double); 
-
-begin
-  If (Flongitude=AValue) then exit;
-  Flongitude:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPlusDomainsAclentryResource
-  --------------------------------------------------------------------}
-
-
-Procedure TPlusDomainsAclentryResource.SetdisplayName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdisplayName=AValue) then exit;
-  FdisplayName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlusDomainsAclentryResource.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPlusDomainsAclentryResource.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TPlusDomainsAclentryResource.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TVideostream
-  --------------------------------------------------------------------}
-
-
-Procedure TVideostream.Setheight(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fheight=AValue) then exit;
-  Fheight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TVideostream.Set_type(AIndex : Integer; AValue : string); 
-
-begin
-  If (F_type=AValue) then exit;
-  F_type:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TVideostream.Seturl(AIndex : Integer; AValue : string); 
-
-begin
-  If (Furl=AValue) then exit;
-  Furl:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TVideostream.Setwidth(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fwidth=AValue) then exit;
-  Fwidth:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TVideostream.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_type' : Result:='type';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TActivitiesResource
-  --------------------------------------------------------------------}
-
-
-Class Function TActivitiesResource.ResourceName : String;
-
-begin
-  Result:='activities';
-end;
-
-Class Function TActivitiesResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TActivitiesResource.Get(activityId: string) : TActivity;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'activities/{activityId}';
-  _Methodid   = 'plusDomains.activities.get';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['activityId',activityId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TActivity) as TActivity;
-end;
-
-Function TActivitiesResource.Insert(userId: string; aActivity : TActivity; AQuery : string = '') : TActivity;
-
-Const
-  _HTTPMethod = 'POST';
-  _Path       = 'people/{userId}/activities';
-  _Methodid   = 'plusDomains.activities.insert';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aActivity,TActivity) as TActivity;
-end;
-
-
-Function TActivitiesResource.Insert(userId: string; aActivity : TActivity; AQuery : TActivitiesinsertOptions) : TActivity;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'preview',AQuery.preview);
-  Result:=Insert(userId,aActivity,_Q);
-end;
-
-Function TActivitiesResource.List(collection: string; userId: string; AQuery : string = '') : TActivityFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'people/{userId}/activities/{collection}';
-  _Methodid   = 'plusDomains.activities.list';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TActivityFeed) as TActivityFeed;
-end;
-
-
-Function TActivitiesResource.List(collection: string; userId: string; AQuery : TActivitieslistOptions) : TActivityFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=List(collection,userId,_Q);
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TAudiencesResource
-  --------------------------------------------------------------------}
-
-
-Class Function TAudiencesResource.ResourceName : String;
-
-begin
-  Result:='audiences';
-end;
-
-Class Function TAudiencesResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TAudiencesResource.List(userId: string; AQuery : string = '') : TAudiencesFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'people/{userId}/audiences';
-  _Methodid   = 'plusDomains.audiences.list';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TAudiencesFeed) as TAudiencesFeed;
-end;
-
-
-Function TAudiencesResource.List(userId: string; AQuery : TAudienceslistOptions) : TAudiencesFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=List(userId,_Q);
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TCirclesResource
-  --------------------------------------------------------------------}
-
-
-Class Function TCirclesResource.ResourceName : String;
-
-begin
-  Result:='circles';
-end;
-
-Class Function TCirclesResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TCirclesResource.AddPeople(circleId: string; AQuery : string = '') : TCircle;
-
-Const
-  _HTTPMethod = 'PUT';
-  _Path       = 'circles/{circleId}/people';
-  _Methodid   = 'plusDomains.circles.addPeople';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCircle) as TCircle;
-end;
-
-
-Function TCirclesResource.AddPeople(circleId: string; AQuery : TCirclesaddPeopleOptions) : TCircle;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'email',AQuery.email);
-  AddToQuery(_Q,'userId',AQuery.userId);
-  Result:=AddPeople(circleId,_Q);
-end;
-
-Function TCirclesResource.Get(circleId: string) : TCircle;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'circles/{circleId}';
-  _Methodid   = 'plusDomains.circles.get';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCircle) as TCircle;
-end;
-
-Function TCirclesResource.Insert(userId: string; aCircle : TCircle) : TCircle;
-
-Const
-  _HTTPMethod = 'POST';
-  _Path       = 'people/{userId}/circles';
-  _Methodid   = 'plusDomains.circles.insert';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
-end;
-
-Function TCirclesResource.List(userId: string; AQuery : string = '') : TCircleFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'people/{userId}/circles';
-  _Methodid   = 'plusDomains.circles.list';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCircleFeed) as TCircleFeed;
-end;
-
-
-Function TCirclesResource.List(userId: string; AQuery : TCircleslistOptions) : TCircleFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=List(userId,_Q);
-end;
-
-Function TCirclesResource.Patch(circleId: string; aCircle : TCircle) : TCircle;
-
-Const
-  _HTTPMethod = 'PATCH';
-  _Path       = 'circles/{circleId}';
-  _Methodid   = 'plusDomains.circles.patch';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
-end;
-
-Procedure TCirclesResource.Remove(circleId: string);
-
-Const
-  _HTTPMethod = 'DELETE';
-  _Path       = 'circles/{circleId}';
-  _Methodid   = 'plusDomains.circles.remove';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
-end;
-
-Procedure TCirclesResource.RemovePeople(circleId: string; AQuery : string = '');
-
-Const
-  _HTTPMethod = 'DELETE';
-  _Path       = 'circles/{circleId}/people';
-  _Methodid   = 'plusDomains.circles.removePeople';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  ServiceCall(_HTTPMethod,_P,AQuery,Nil,Nil);
-end;
-
-
-Procedure TCirclesResource.RemovePeople(circleId: string; AQuery : TCirclesremovePeopleOptions);
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'email',AQuery.email);
-  AddToQuery(_Q,'userId',AQuery.userId);
-  RemovePeople(circleId,_Q);
-end;
-
-Function TCirclesResource.Update(circleId: string; aCircle : TCircle) : TCircle;
-
-Const
-  _HTTPMethod = 'PUT';
-  _Path       = 'circles/{circleId}';
-  _Methodid   = 'plusDomains.circles.update';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TCommentsResource
-  --------------------------------------------------------------------}
-
-
-Class Function TCommentsResource.ResourceName : String;
-
-begin
-  Result:='comments';
-end;
-
-Class Function TCommentsResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TCommentsResource.Get(commentId: string) : TComment;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'comments/{commentId}';
-  _Methodid   = 'plusDomains.comments.get';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['commentId',commentId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TComment) as TComment;
-end;
-
-Function TCommentsResource.Insert(activityId: string; aComment : TComment) : TComment;
-
-Const
-  _HTTPMethod = 'POST';
-  _Path       = 'activities/{activityId}/comments';
-  _Methodid   = 'plusDomains.comments.insert';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['activityId',activityId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',aComment,TComment) as TComment;
-end;
-
-Function TCommentsResource.List(activityId: string; AQuery : string = '') : TCommentFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'activities/{activityId}/comments';
-  _Methodid   = 'plusDomains.comments.list';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['activityId',activityId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCommentFeed) as TCommentFeed;
-end;
-
-
-Function TCommentsResource.List(activityId: string; AQuery : TCommentslistOptions) : TCommentFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  AddToQuery(_Q,'sortOrder',AQuery.sortOrder);
-  Result:=List(activityId,_Q);
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TMediaResource
-  --------------------------------------------------------------------}
-
-
-Class Function TMediaResource.ResourceName : String;
-
-begin
-  Result:='media';
-end;
-
-Class Function TMediaResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TMediaResource.Insert(collection: string; userId: string; aMedia : TMedia) : TMedia;
-
-Const
-  _HTTPMethod = 'POST';
-  _Path       = 'people/{userId}/media/{collection}';
-  _Methodid   = 'plusDomains.media.insert';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',aMedia,TMedia) as TMedia;
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TPeopleResource
-  --------------------------------------------------------------------}
-
-
-Class Function TPeopleResource.ResourceName : String;
-
-begin
-  Result:='people';
-end;
-
-Class Function TPeopleResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TplusDomainsAPI;
-end;
-
-Function TPeopleResource.Get(userId: string) : TPerson;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'people/{userId}';
-  _Methodid   = 'plusDomains.people.get';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TPerson) as TPerson;
-end;
-
-Function TPeopleResource.List(collection: string; userId: string; AQuery : string = '') : TPeopleFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'people/{userId}/people/{collection}';
-  _Methodid   = 'plusDomains.people.list';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
-end;
-
-
-Function TPeopleResource.List(collection: string; userId: string; AQuery : TPeoplelistOptions) : TPeopleFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'orderBy',AQuery.orderBy);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=List(collection,userId,_Q);
-end;
-
-Function TPeopleResource.ListByActivity(activityId: string; collection: string; AQuery : string = '') : TPeopleFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'activities/{activityId}/people/{collection}';
-  _Methodid   = 'plusDomains.people.listByActivity';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['activityId',activityId,'collection',collection]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
-end;
-
-
-Function TPeopleResource.ListByActivity(activityId: string; collection: string; AQuery : TPeoplelistByActivityOptions) : TPeopleFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=ListByActivity(activityId,collection,_Q);
-end;
-
-Function TPeopleResource.ListByCircle(circleId: string; AQuery : string = '') : TPeopleFeed;
-
-Const
-  _HTTPMethod = 'GET';
-  _Path       = 'circles/{circleId}/people';
-  _Methodid   = 'plusDomains.people.listByCircle';
-
-Var
-  _P : String;
-
-begin
-  _P:=SubstitutePath(_Path,['circleId',circleId]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
-end;
-
-
-Function TPeopleResource.ListByCircle(circleId: string; AQuery : TPeoplelistByCircleOptions) : TPeopleFeed;
-
-Var
-  _Q : String;
-
-begin
-  _Q:='';
-  AddToQuery(_Q,'maxResults',AQuery.maxResults);
-  AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=ListByCircle(circleId,_Q);
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TPlusDomainsAPI
-  --------------------------------------------------------------------}
-
-Class Function TPlusDomainsAPI.APIName : String;
-
-begin
-  Result:='plusDomains';
-end;
-
-Class Function TPlusDomainsAPI.APIVersion : String;
-
-begin
-  Result:='v1';
-end;
-
-Class Function TPlusDomainsAPI.APIRevision : String;
-
-begin
-  Result:='20150401';
-end;
-
-Class Function TPlusDomainsAPI.APIID : String;
-
-begin
-  Result:='plusDomains:v1';
-end;
-
-Class Function TPlusDomainsAPI.APITitle : String;
-
-begin
-  Result:='Google+ Domains API';
-end;
-
-Class Function TPlusDomainsAPI.APIDescription : String;
-
-begin
-  Result:='The Google+ API enables developers to build on top of the Google+ platform.';
-end;
-
-Class Function TPlusDomainsAPI.APIOwnerDomain : String;
-
-begin
-  Result:='google.com';
-end;
-
-Class Function TPlusDomainsAPI.APIOwnerName : String;
-
-begin
-  Result:='Google';
-end;
-
-Class Function TPlusDomainsAPI.APIIcon16 : String;
-
-begin
-  Result:='http://www.google.com/images/icons/product/gplus-16.png';
-end;
-
-Class Function TPlusDomainsAPI.APIIcon32 : String;
-
-begin
-  Result:='http://www.google.com/images/icons/product/gplus-32.png';
-end;
-
-Class Function TPlusDomainsAPI.APIdocumentationLink : String;
-
-begin
-  Result:='https://developers.google.com/+/domains/';
-end;
-
-Class Function TPlusDomainsAPI.APIrootUrl : string;
-
-begin
-  Result:='https://www.googleapis.com/';
-end;
-
-Class Function TPlusDomainsAPI.APIbasePath : string;
-
-begin
-  Result:='/plusDomains/v1/';
-end;
-
-Class Function TPlusDomainsAPI.APIbaseURL : String;
-
-begin
-  Result:='https://www.googleapis.com/plusDomains/v1/';
-end;
-
-Class Function TPlusDomainsAPI.APIProtocol : string;
-
-begin
-  Result:='rest';
-end;
-
-Class Function TPlusDomainsAPI.APIservicePath : string;
-
-begin
-  Result:='plusDomains/v1/';
-end;
-
-Class Function TPlusDomainsAPI.APIbatchPath : String;
-
-begin
-  Result:='batch';
-end;
-
-Class Function TPlusDomainsAPI.APIAuthScopes : TScopeInfoArray;
-
-begin
-  SetLength(Result,10);
-  Result[0].Name:='https://www.googleapis.com/auth/plus.circles.read';
-  Result[0].Description:='View your circles and the people and pages in them';
-  Result[1].Name:='https://www.googleapis.com/auth/plus.circles.write';
-  Result[1].Description:='Manage your circles and add people and pages. People and pages you add to your circles will be notified. Others may see this information publicly. People you add to circles can use Hangouts with you.';
-  Result[2].Name:='https://www.googleapis.com/auth/plus.login';
-  Result[2].Description:='Know your basic profile info and list of people in your circles.';
-  Result[3].Name:='https://www.googleapis.com/auth/plus.me';
-  Result[3].Description:='Know who you are on Google';
-  Result[4].Name:='https://www.googleapis.com/auth/plus.media.upload';
-  Result[4].Description:='Send your photos and videos to Google+';
-  Result[5].Name:='https://www.googleapis.com/auth/plus.profiles.read';
-  Result[5].Description:='View your own Google+ profile and profiles visible to you';
-  Result[6].Name:='https://www.googleapis.com/auth/plus.stream.read';
-  Result[6].Description:='View your Google+ posts, comments, and stream';
-  Result[7].Name:='https://www.googleapis.com/auth/plus.stream.write';
-  Result[7].Description:='Manage your Google+ posts, comments, and stream';
-  Result[8].Name:='https://www.googleapis.com/auth/userinfo.email';
-  Result[8].Description:='View your email address';
-  Result[9].Name:='https://www.googleapis.com/auth/userinfo.profile';
-  Result[9].Description:='View your basic profile info';
-  
-end;
-
-Class Function TPlusDomainsAPI.APINeedsAuth : Boolean;
-
-begin
-  Result:=True;
-end;
-
-Class Procedure TPlusDomainsAPI.RegisterAPIResources;
-
-begin
-  TAcl.RegisterObject;
-  TAclitems.RegisterObject;
-  TActivity.RegisterObject;
-  TActivityactor.RegisterObject;
-  TActivityactorimage.RegisterObject;
-  TActivityactorname.RegisterObject;
-  TActivityobject.RegisterObject;
-  TActivityobjectactor.RegisterObject;
-  TActivityobjectactorimage.RegisterObject;
-  TActivityobjectattachments.RegisterObject;
-  TActivityobjectattachmentsembed.RegisterObject;
-  TActivityobjectattachmentsfullImage.RegisterObject;
-  TActivityobjectattachmentsimage.RegisterObject;
-  TActivityobjectattachmentspreviewThumbnails.RegisterObject;
-  TActivityobjectattachmentsthumbnails.RegisterObject;
-  TActivityobjectattachmentsthumbnailsimage.RegisterObject;
-  TActivityobjectplusoners.RegisterObject;
-  TActivityobjectreplies.RegisterObject;
-  TActivityobjectresharers.RegisterObject;
-  TActivityobjectstatusForViewer.RegisterObject;
-  TActivityprovider.RegisterObject;
-  TActivityFeed.RegisterObject;
-  TActivityFeeditems.RegisterObject;
-  TAudience.RegisterObject;
-  TAudiencesFeed.RegisterObject;
-  TAudiencesFeeditems.RegisterObject;
-  TCircle.RegisterObject;
-  TCirclepeople.RegisterObject;
-  TCircleFeed.RegisterObject;
-  TCircleFeeditems.RegisterObject;
-  TComment.RegisterObject;
-  TCommentactor.RegisterObject;
-  TCommentactorimage.RegisterObject;
-  TCommentinReplyTo.RegisterObject;
-  TCommentobject.RegisterObject;
-  TCommentplusoners.RegisterObject;
-  TCommentFeed.RegisterObject;
-  TCommentFeeditems.RegisterObject;
-  TMedia.RegisterObject;
-  TMediaauthor.RegisterObject;
-  TMediaauthorimage.RegisterObject;
-  TMediaexif.RegisterObject;
-  TMediastreams.RegisterObject;
-  TPeopleFeed.RegisterObject;
-  TPeopleFeeditems.RegisterObject;
-  TPerson.RegisterObject;
-  TPersoncover.RegisterObject;
-  TPersoncovercoverInfo.RegisterObject;
-  TPersoncovercoverPhoto.RegisterObject;
-  TPersonemails.RegisterObject;
-  TPersonimage.RegisterObject;
-  TPersonname.RegisterObject;
-  TPersonorganizations.RegisterObject;
-  TPersonplacesLived.RegisterObject;
-  TPersonurls.RegisterObject;
-  TPlace.RegisterObject;
-  TPlaceaddress.RegisterObject;
-  TPlaceposition.RegisterObject;
-  TPlusDomainsAclentryResource.RegisterObject;
-  TVideostream.RegisterObject;
-end;
-
-
-Function TPlusDomainsAPI.GetActivitiesInstance : TActivitiesResource;
-
-begin
-  if (FActivitiesInstance=Nil) then
-    FActivitiesInstance:=CreateActivitiesResource;
-  Result:=FActivitiesInstance;
-end;
-
-Function TPlusDomainsAPI.CreateActivitiesResource : TActivitiesResource;
-
-begin
-  Result:=CreateActivitiesResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreateActivitiesResource(AOwner : TComponent) : TActivitiesResource;
-
-begin
-  Result:=TActivitiesResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-Function TPlusDomainsAPI.GetAudiencesInstance : TAudiencesResource;
-
-begin
-  if (FAudiencesInstance=Nil) then
-    FAudiencesInstance:=CreateAudiencesResource;
-  Result:=FAudiencesInstance;
-end;
-
-Function TPlusDomainsAPI.CreateAudiencesResource : TAudiencesResource;
-
-begin
-  Result:=CreateAudiencesResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreateAudiencesResource(AOwner : TComponent) : TAudiencesResource;
-
-begin
-  Result:=TAudiencesResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-Function TPlusDomainsAPI.GetCirclesInstance : TCirclesResource;
-
-begin
-  if (FCirclesInstance=Nil) then
-    FCirclesInstance:=CreateCirclesResource;
-  Result:=FCirclesInstance;
-end;
-
-Function TPlusDomainsAPI.CreateCirclesResource : TCirclesResource;
-
-begin
-  Result:=CreateCirclesResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreateCirclesResource(AOwner : TComponent) : TCirclesResource;
-
-begin
-  Result:=TCirclesResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-Function TPlusDomainsAPI.GetCommentsInstance : TCommentsResource;
-
-begin
-  if (FCommentsInstance=Nil) then
-    FCommentsInstance:=CreateCommentsResource;
-  Result:=FCommentsInstance;
-end;
-
-Function TPlusDomainsAPI.CreateCommentsResource : TCommentsResource;
-
-begin
-  Result:=CreateCommentsResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreateCommentsResource(AOwner : TComponent) : TCommentsResource;
-
-begin
-  Result:=TCommentsResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-Function TPlusDomainsAPI.GetMediaInstance : TMediaResource;
-
-begin
-  if (FMediaInstance=Nil) then
-    FMediaInstance:=CreateMediaResource;
-  Result:=FMediaInstance;
-end;
-
-Function TPlusDomainsAPI.CreateMediaResource : TMediaResource;
-
-begin
-  Result:=CreateMediaResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreateMediaResource(AOwner : TComponent) : TMediaResource;
-
-begin
-  Result:=TMediaResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-Function TPlusDomainsAPI.GetPeopleInstance : TPeopleResource;
-
-begin
-  if (FPeopleInstance=Nil) then
-    FPeopleInstance:=CreatePeopleResource;
-  Result:=FPeopleInstance;
-end;
-
-Function TPlusDomainsAPI.CreatePeopleResource : TPeopleResource;
-
-begin
-  Result:=CreatePeopleResource(Self);
-end;
-
-
-Function TPlusDomainsAPI.CreatePeopleResource(AOwner : TComponent) : TPeopleResource;
-
-begin
-  Result:=TPeopleResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-initialization
-  TPlusDomainsAPI.RegisterAPI;
-end.

+ 6386 - 0
packages/googleapi/src/googleplusdomains.pp

@@ -0,0 +1,6386 @@
+unit googleplusDomains;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAcl = Class;
+  TActivity = Class;
+  TActivityFeed = Class;
+  TAudience = Class;
+  TAudiencesFeed = Class;
+  TCircle = Class;
+  TCircleFeed = Class;
+  TComment = Class;
+  TCommentFeed = Class;
+  TMedia = Class;
+  TPeopleFeed = Class;
+  TPerson = Class;
+  TPlace = Class;
+  TPlusDomainsAclentryResource = Class;
+  TVideostream = Class;
+  TAclArray = Array of TAcl;
+  TActivityArray = Array of TActivity;
+  TActivityFeedArray = Array of TActivityFeed;
+  TAudienceArray = Array of TAudience;
+  TAudiencesFeedArray = Array of TAudiencesFeed;
+  TCircleArray = Array of TCircle;
+  TCircleFeedArray = Array of TCircleFeed;
+  TCommentArray = Array of TComment;
+  TCommentFeedArray = Array of TCommentFeed;
+  TMediaArray = Array of TMedia;
+  TPeopleFeedArray = Array of TPeopleFeed;
+  TPersonArray = Array of TPerson;
+  TPlaceArray = Array of TPlace;
+  TPlusDomainsAclentryResourceArray = Array of TPlusDomainsAclentryResource;
+  TVideostreamArray = Array of TVideostream;
+  //Anonymous types, using auto-generated names
+  TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class;
+  TActivityTypeactorTypeclientSpecificActorInfo = Class;
+  TActivityTypeactorTypeimage = Class;
+  TActivityTypeactorTypename = Class;
+  TActivityTypeactorTypeverification = Class;
+  TActivityTypeactor = Class;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfo = Class;
+  TActivityTypeobjectTypeactorTypeimage = Class;
+  TActivityTypeobjectTypeactorTypeverification = Class;
+  TActivityTypeobjectTypeactor = Class;
+  TActivityTypeobjectTypeattachmentsItemTypeembed = Class;
+  TActivityTypeobjectTypeattachmentsItemTypefullImage = Class;
+  TActivityTypeobjectTypeattachmentsItemTypeimage = Class;
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem = Class;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage = Class;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem = Class;
+  TActivityTypeobjectTypeattachmentsItem = Class;
+  TActivityTypeobjectTypeplusoners = Class;
+  TActivityTypeobjectTypereplies = Class;
+  TActivityTypeobjectTyperesharers = Class;
+  TActivityTypeobjectTypestatusForViewer = Class;
+  TActivityTypeobject = Class;
+  TActivityTypeprovider = Class;
+  TCircleTypepeople = Class;
+  TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class;
+  TCommentTypeactorTypeclientSpecificActorInfo = Class;
+  TCommentTypeactorTypeimage = Class;
+  TCommentTypeactorTypeverification = Class;
+  TCommentTypeactor = Class;
+  TCommentTypeinReplyToItem = Class;
+  TCommentTypeobject = Class;
+  TCommentTypeplusoners = Class;
+  TMediaTypeauthorTypeimage = Class;
+  TMediaTypeauthor = Class;
+  TMediaTypeexif = Class;
+  TPersonTypecoverTypecoverInfo = Class;
+  TPersonTypecoverTypecoverPhoto = Class;
+  TPersonTypecover = Class;
+  TPersonTypeemailsItem = Class;
+  TPersonTypeimage = Class;
+  TPersonTypename = Class;
+  TPersonTypeorganizationsItem = Class;
+  TPersonTypeplacesLivedItem = Class;
+  TPersonTypeurlsItem = Class;
+  TPlaceTypeaddress = Class;
+  TPlaceTypeposition = Class;
+  TAclTypeitemsArray = Array of TPlusDomainsAclentryResource;
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsArray = Array of TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsArray = Array of TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem;
+  TActivityTypeobjectTypeattachmentsArray = Array of TActivityTypeobjectTypeattachmentsItem;
+  TActivityFeedTypeitemsArray = Array of TActivity;
+  TAudiencesFeedTypeitemsArray = Array of TAudience;
+  TCircleFeedTypeitemsArray = Array of TCircle;
+  TCommentTypeinReplyToArray = Array of TCommentTypeinReplyToItem;
+  TCommentFeedTypeitemsArray = Array of TComment;
+  TMediaTypestreamsArray = Array of TVideostream;
+  TPeopleFeedTypeitemsArray = Array of TPerson;
+  TPersonTypeemailsArray = Array of TPersonTypeemailsItem;
+  TPersonTypeorganizationsArray = Array of TPersonTypeorganizationsItem;
+  TPersonTypeplacesLivedArray = Array of TPersonTypeplacesLivedItem;
+  TPersonTypeurlsArray = Array of TPersonTypeurlsItem;
+  
+  { --------------------------------------------------------------------
+    TAcl
+    --------------------------------------------------------------------}
+  
+  TAcl = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    FdomainRestricted : boolean;
+    Fitems : TAclTypeitemsArray;
+    Fkind : String;
+  Protected
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdomainRestricted(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAclTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property domainRestricted : boolean Index 8 Read FdomainRestricted Write SetdomainRestricted;
+    Property items : TAclTypeitemsArray Index 16 Read Fitems Write Setitems;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+  end;
+  TAclClass = Class of TAcl;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class(TGoogleBaseObject)
+  Private
+    FchannelId : String;
+  Protected
+    //Property setters
+    Procedure SetchannelId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property channelId : String Index 0 Read FchannelId Write SetchannelId;
+  end;
+  TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfoClass = Class of TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactorTypeclientSpecificActorInfo
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactorTypeclientSpecificActorInfo = Class(TGoogleBaseObject)
+  Private
+    FyoutubeActorInfo : TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  Protected
+    //Property setters
+    Procedure SetyoutubeActorInfo(AIndex : Integer; const AValue : TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); virtual;
+  Public
+  Published
+    Property youtubeActorInfo : TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo Index 0 Read FyoutubeActorInfo Write SetyoutubeActorInfo;
+  end;
+  TActivityTypeactorTypeclientSpecificActorInfoClass = Class of TActivityTypeactorTypeclientSpecificActorInfo;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactorTypeimage
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactorTypeimage = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TActivityTypeactorTypeimageClass = Class of TActivityTypeactorTypeimage;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactorTypename
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactorTypename = Class(TGoogleBaseObject)
+  Private
+    FfamilyName : String;
+    FgivenName : String;
+  Protected
+    //Property setters
+    Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property familyName : String Index 0 Read FfamilyName Write SetfamilyName;
+    Property givenName : String Index 8 Read FgivenName Write SetgivenName;
+  end;
+  TActivityTypeactorTypenameClass = Class of TActivityTypeactorTypename;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactorTypeverification
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactorTypeverification = Class(TGoogleBaseObject)
+  Private
+    FadHocVerified : String;
+  Protected
+    //Property setters
+    Procedure SetadHocVerified(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property adHocVerified : String Index 0 Read FadHocVerified Write SetadHocVerified;
+  end;
+  TActivityTypeactorTypeverificationClass = Class of TActivityTypeactorTypeverification;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeactor
+    --------------------------------------------------------------------}
+  
+  TActivityTypeactor = Class(TGoogleBaseObject)
+  Private
+    FclientSpecificActorInfo : TActivityTypeactorTypeclientSpecificActorInfo;
+    FdisplayName : String;
+    Fid : String;
+    Fimage : TActivityTypeactorTypeimage;
+    Fname : TActivityTypeactorTypename;
+    Furl : String;
+    Fverification : TActivityTypeactorTypeverification;
+  Protected
+    //Property setters
+    Procedure SetclientSpecificActorInfo(AIndex : Integer; const AValue : TActivityTypeactorTypeclientSpecificActorInfo); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TActivityTypeactorTypeimage); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TActivityTypeactorTypename); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverification(AIndex : Integer; const AValue : TActivityTypeactorTypeverification); virtual;
+  Public
+  Published
+    Property clientSpecificActorInfo : TActivityTypeactorTypeclientSpecificActorInfo Index 0 Read FclientSpecificActorInfo Write SetclientSpecificActorInfo;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property image : TActivityTypeactorTypeimage Index 24 Read Fimage Write Setimage;
+    Property name : TActivityTypeactorTypename Index 32 Read Fname Write Setname;
+    Property url : String Index 40 Read Furl Write Seturl;
+    Property verification : TActivityTypeactorTypeverification Index 48 Read Fverification Write Setverification;
+  end;
+  TActivityTypeactorClass = Class of TActivityTypeactor;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class(TGoogleBaseObject)
+  Private
+    FchannelId : String;
+  Protected
+    //Property setters
+    Procedure SetchannelId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property channelId : String Index 0 Read FchannelId Write SetchannelId;
+  end;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfoClass = Class of TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeactorTypeclientSpecificActorInfo
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfo = Class(TGoogleBaseObject)
+  Private
+    FyoutubeActorInfo : TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  Protected
+    //Property setters
+    Procedure SetyoutubeActorInfo(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); virtual;
+  Public
+  Published
+    Property youtubeActorInfo : TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo Index 0 Read FyoutubeActorInfo Write SetyoutubeActorInfo;
+  end;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoClass = Class of TActivityTypeobjectTypeactorTypeclientSpecificActorInfo;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeactorTypeimage
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeactorTypeimage = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectTypeactorTypeimageClass = Class of TActivityTypeobjectTypeactorTypeimage;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeactorTypeverification
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeactorTypeverification = Class(TGoogleBaseObject)
+  Private
+    FadHocVerified : String;
+  Protected
+    //Property setters
+    Procedure SetadHocVerified(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property adHocVerified : String Index 0 Read FadHocVerified Write SetadHocVerified;
+  end;
+  TActivityTypeobjectTypeactorTypeverificationClass = Class of TActivityTypeobjectTypeactorTypeverification;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeactor
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeactor = Class(TGoogleBaseObject)
+  Private
+    FclientSpecificActorInfo : TActivityTypeobjectTypeactorTypeclientSpecificActorInfo;
+    FdisplayName : String;
+    Fid : String;
+    Fimage : TActivityTypeobjectTypeactorTypeimage;
+    Furl : String;
+    Fverification : TActivityTypeobjectTypeactorTypeverification;
+  Protected
+    //Property setters
+    Procedure SetclientSpecificActorInfo(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeclientSpecificActorInfo); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeimage); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverification(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeverification); virtual;
+  Public
+  Published
+    Property clientSpecificActorInfo : TActivityTypeobjectTypeactorTypeclientSpecificActorInfo Index 0 Read FclientSpecificActorInfo Write SetclientSpecificActorInfo;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property image : TActivityTypeobjectTypeactorTypeimage Index 24 Read Fimage Write Setimage;
+    Property url : String Index 32 Read Furl Write Seturl;
+    Property verification : TActivityTypeobjectTypeactorTypeverification Index 40 Read Fverification Write Setverification;
+  end;
+  TActivityTypeobjectTypeactorClass = Class of TActivityTypeobjectTypeactor;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypeembed
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypeembed = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Furl : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property url : String Index 8 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypeembedClass = Class of TActivityTypeobjectTypeattachmentsItemTypeembed;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypefullImage
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypefullImage = Class(TGoogleBaseObject)
+  Private
+    Fheight : integer;
+    F_type : String;
+    Furl : String;
+    Fwidth : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property height : integer Index 0 Read Fheight Write Setheight;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property url : String Index 16 Read Furl Write Seturl;
+    Property width : integer Index 24 Read Fwidth Write Setwidth;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypefullImageClass = Class of TActivityTypeobjectTypeattachmentsItemTypefullImage;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypeimage
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypeimage = Class(TGoogleBaseObject)
+  Private
+    Fheight : integer;
+    F_type : String;
+    Furl : String;
+    Fwidth : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property height : integer Index 0 Read Fheight Write Setheight;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property url : String Index 16 Read Furl Write Seturl;
+    Property width : integer Index 24 Read Fwidth Write Setwidth;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypeimageClass = Class of TActivityTypeobjectTypeattachmentsItemTypeimage;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItemClass = Class of TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage = Class(TGoogleBaseObject)
+  Private
+    Fheight : integer;
+    F_type : String;
+    Furl : String;
+    Fwidth : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property height : integer Index 0 Read Fheight Write Setheight;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property url : String Index 16 Read Furl Write Seturl;
+    Property width : integer Index 24 Read Fwidth Write Setwidth;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimageClass = Class of TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    Fimage : TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property image : TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage Index 8 Read Fimage Write Setimage;
+    Property url : String Index 16 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemClass = Class of TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeattachmentsItem
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeattachmentsItem = Class(TGoogleBaseObject)
+  Private
+    Fcontent : String;
+    FdisplayName : String;
+    Fembed : TActivityTypeobjectTypeattachmentsItemTypeembed;
+    FfullImage : TActivityTypeobjectTypeattachmentsItemTypefullImage;
+    Fid : String;
+    Fimage : TActivityTypeobjectTypeattachmentsItemTypeimage;
+    FobjectType : String;
+    FpreviewThumbnails : TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsArray;
+    Fthumbnails : TActivityTypeobjectTypeattachmentsItemTypethumbnailsArray;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setembed(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypeembed); virtual;
+    Procedure SetfullImage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypefullImage); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypeimage); virtual;
+    Procedure SetobjectType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpreviewThumbnails(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsArray); virtual;
+    Procedure Setthumbnails(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypethumbnailsArray); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property content : String Index 0 Read Fcontent Write Setcontent;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property embed : TActivityTypeobjectTypeattachmentsItemTypeembed Index 16 Read Fembed Write Setembed;
+    Property fullImage : TActivityTypeobjectTypeattachmentsItemTypefullImage Index 24 Read FfullImage Write SetfullImage;
+    Property id : String Index 32 Read Fid Write Setid;
+    Property image : TActivityTypeobjectTypeattachmentsItemTypeimage Index 40 Read Fimage Write Setimage;
+    Property objectType : String Index 48 Read FobjectType Write SetobjectType;
+    Property previewThumbnails : TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsArray Index 56 Read FpreviewThumbnails Write SetpreviewThumbnails;
+    Property thumbnails : TActivityTypeobjectTypeattachmentsItemTypethumbnailsArray Index 64 Read Fthumbnails Write Setthumbnails;
+    Property url : String Index 72 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectTypeattachmentsItemClass = Class of TActivityTypeobjectTypeattachmentsItem;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypeplusoners
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypeplusoners = Class(TGoogleBaseObject)
+  Private
+    FselfLink : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property selfLink : String Index 0 Read FselfLink Write SetselfLink;
+    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
+  end;
+  TActivityTypeobjectTypeplusonersClass = Class of TActivityTypeobjectTypeplusoners;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypereplies
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypereplies = Class(TGoogleBaseObject)
+  Private
+    FselfLink : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property selfLink : String Index 0 Read FselfLink Write SetselfLink;
+    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
+  end;
+  TActivityTypeobjectTyperepliesClass = Class of TActivityTypeobjectTypereplies;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTyperesharers
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTyperesharers = Class(TGoogleBaseObject)
+  Private
+    FselfLink : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property selfLink : String Index 0 Read FselfLink Write SetselfLink;
+    Property totalItems : integer Index 8 Read FtotalItems Write SettotalItems;
+  end;
+  TActivityTypeobjectTyperesharersClass = Class of TActivityTypeobjectTyperesharers;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobjectTypestatusForViewer
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobjectTypestatusForViewer = Class(TGoogleBaseObject)
+  Private
+    FcanComment : boolean;
+    FcanPlusone : boolean;
+    FcanUpdate : boolean;
+    FisPlusOned : boolean;
+    FresharingDisabled : boolean;
+  Protected
+    //Property setters
+    Procedure SetcanComment(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetcanPlusone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetcanUpdate(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetisPlusOned(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetresharingDisabled(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property canComment : boolean Index 0 Read FcanComment Write SetcanComment;
+    Property canPlusone : boolean Index 8 Read FcanPlusone Write SetcanPlusone;
+    Property canUpdate : boolean Index 16 Read FcanUpdate Write SetcanUpdate;
+    Property isPlusOned : boolean Index 24 Read FisPlusOned Write SetisPlusOned;
+    Property resharingDisabled : boolean Index 32 Read FresharingDisabled Write SetresharingDisabled;
+  end;
+  TActivityTypeobjectTypestatusForViewerClass = Class of TActivityTypeobjectTypestatusForViewer;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeobject
+    --------------------------------------------------------------------}
+  
+  TActivityTypeobject = Class(TGoogleBaseObject)
+  Private
+    Factor : TActivityTypeobjectTypeactor;
+    Fattachments : TActivityTypeobjectTypeattachmentsArray;
+    Fcontent : String;
+    Fid : String;
+    FobjectType : String;
+    ForiginalContent : String;
+    Fplusoners : TActivityTypeobjectTypeplusoners;
+    Freplies : TActivityTypeobjectTypereplies;
+    Fresharers : TActivityTypeobjectTyperesharers;
+    FstatusForViewer : TActivityTypeobjectTypestatusForViewer;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Setactor(AIndex : Integer; const AValue : TActivityTypeobjectTypeactor); virtual;
+    Procedure Setattachments(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsArray); virtual;
+    Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoriginalContent(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setplusoners(AIndex : Integer; const AValue : TActivityTypeobjectTypeplusoners); virtual;
+    Procedure Setreplies(AIndex : Integer; const AValue : TActivityTypeobjectTypereplies); virtual;
+    Procedure Setresharers(AIndex : Integer; const AValue : TActivityTypeobjectTyperesharers); virtual;
+    Procedure SetstatusForViewer(AIndex : Integer; const AValue : TActivityTypeobjectTypestatusForViewer); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property actor : TActivityTypeobjectTypeactor Index 0 Read Factor Write Setactor;
+    Property attachments : TActivityTypeobjectTypeattachmentsArray Index 8 Read Fattachments Write Setattachments;
+    Property content : String Index 16 Read Fcontent Write Setcontent;
+    Property id : String Index 24 Read Fid Write Setid;
+    Property objectType : String Index 32 Read FobjectType Write SetobjectType;
+    Property originalContent : String Index 40 Read ForiginalContent Write SetoriginalContent;
+    Property plusoners : TActivityTypeobjectTypeplusoners Index 48 Read Fplusoners Write Setplusoners;
+    Property replies : TActivityTypeobjectTypereplies Index 56 Read Freplies Write Setreplies;
+    Property resharers : TActivityTypeobjectTyperesharers Index 64 Read Fresharers Write Setresharers;
+    Property statusForViewer : TActivityTypeobjectTypestatusForViewer Index 72 Read FstatusForViewer Write SetstatusForViewer;
+    Property url : String Index 80 Read Furl Write Seturl;
+  end;
+  TActivityTypeobjectClass = Class of TActivityTypeobject;
+  
+  { --------------------------------------------------------------------
+    TActivityTypeprovider
+    --------------------------------------------------------------------}
+  
+  TActivityTypeprovider = Class(TGoogleBaseObject)
+  Private
+    Ftitle : String;
+  Protected
+    //Property setters
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property title : String Index 0 Read Ftitle Write Settitle;
+  end;
+  TActivityTypeproviderClass = Class of TActivityTypeprovider;
+  
+  { --------------------------------------------------------------------
+    TActivity
+    --------------------------------------------------------------------}
+  
+  TActivity = Class(TGoogleBaseObject)
+  Private
+    Faccess : TAcl;
+    Factor : TActivityTypeactor;
+    Faddress : String;
+    Fannotation : String;
+    FcrosspostSource : String;
+    Fetag : String;
+    Fgeocode : String;
+    Fid : String;
+    Fkind : String;
+    Flocation : TPlace;
+    F_object : TActivityTypeobject;
+    FplaceId : String;
+    FplaceName : String;
+    Fprovider : TActivityTypeprovider;
+    F_published : TDatetime;
+    Fradius : String;
+    Ftitle : String;
+    Fupdated : TDatetime;
+    Furl : String;
+    Fverb : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setaccess(AIndex : Integer; const AValue : TAcl); virtual;
+    Procedure Setactor(AIndex : Integer; const AValue : TActivityTypeactor); virtual;
+    Procedure Setaddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setannotation(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcrosspostSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgeocode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TPlace); virtual;
+    Procedure Set_object(AIndex : Integer; const AValue : TActivityTypeobject); virtual;
+    Procedure SetplaceId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplaceName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprovider(AIndex : Integer; const AValue : TActivityTypeprovider); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setradius(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverb(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property access : TAcl Index 0 Read Faccess Write Setaccess;
+    Property actor : TActivityTypeactor Index 8 Read Factor Write Setactor;
+    Property address : String Index 16 Read Faddress Write Setaddress;
+    Property annotation : String Index 24 Read Fannotation Write Setannotation;
+    Property crosspostSource : String Index 32 Read FcrosspostSource Write SetcrosspostSource;
+    Property etag : String Index 40 Read Fetag Write Setetag;
+    Property geocode : String Index 48 Read Fgeocode Write Setgeocode;
+    Property id : String Index 56 Read Fid Write Setid;
+    Property kind : String Index 64 Read Fkind Write Setkind;
+    Property location : TPlace Index 72 Read Flocation Write Setlocation;
+    Property _object : TActivityTypeobject Index 80 Read F_object Write Set_object;
+    Property placeId : String Index 88 Read FplaceId Write SetplaceId;
+    Property placeName : String Index 96 Read FplaceName Write SetplaceName;
+    Property provider : TActivityTypeprovider Index 104 Read Fprovider Write Setprovider;
+    Property _published : TDatetime Index 112 Read F_published Write Set_published;
+    Property radius : String Index 120 Read Fradius Write Setradius;
+    Property title : String Index 128 Read Ftitle Write Settitle;
+    Property updated : TDatetime Index 136 Read Fupdated Write Setupdated;
+    Property url : String Index 144 Read Furl Write Seturl;
+    Property verb : String Index 152 Read Fverb Write Setverb;
+  end;
+  TActivityClass = Class of TActivity;
+  
+  { --------------------------------------------------------------------
+    TActivityFeed
+    --------------------------------------------------------------------}
+  
+  TActivityFeed = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fid : String;
+    Fitems : TActivityFeedTypeitemsArray;
+    Fkind : String;
+    FnextLink : String;
+    FnextPageToken : String;
+    FselfLink : String;
+    Ftitle : String;
+    Fupdated : TDatetime;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TActivityFeedTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property items : TActivityFeedTypeitemsArray Index 16 Read Fitems Write Setitems;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property nextLink : String Index 32 Read FnextLink Write SetnextLink;
+    Property nextPageToken : String Index 40 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 48 Read FselfLink Write SetselfLink;
+    Property title : String Index 56 Read Ftitle Write Settitle;
+    Property updated : TDatetime Index 64 Read Fupdated Write Setupdated;
+  end;
+  TActivityFeedClass = Class of TActivityFeed;
+  
+  { --------------------------------------------------------------------
+    TAudience
+    --------------------------------------------------------------------}
+  
+  TAudience = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fitem : TPlusDomainsAclentryResource;
+    Fkind : String;
+    FmemberCount : integer;
+    Fvisibility : String;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitem(AIndex : Integer; const AValue : TPlusDomainsAclentryResource); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmemberCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setvisibility(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property item : TPlusDomainsAclentryResource Index 8 Read Fitem Write Setitem;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property memberCount : integer Index 24 Read FmemberCount Write SetmemberCount;
+    Property visibility : String Index 32 Read Fvisibility Write Setvisibility;
+  end;
+  TAudienceClass = Class of TAudience;
+  
+  { --------------------------------------------------------------------
+    TAudiencesFeed
+    --------------------------------------------------------------------}
+  
+  TAudiencesFeed = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fitems : TAudiencesFeedTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAudiencesFeedTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property items : TAudiencesFeedTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property totalItems : integer Index 32 Read FtotalItems Write SettotalItems;
+  end;
+  TAudiencesFeedClass = Class of TAudiencesFeed;
+  
+  { --------------------------------------------------------------------
+    TCircleTypepeople
+    --------------------------------------------------------------------}
+  
+  TCircleTypepeople = Class(TGoogleBaseObject)
+  Private
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property totalItems : integer Index 0 Read FtotalItems Write SettotalItems;
+  end;
+  TCircleTypepeopleClass = Class of TCircleTypepeople;
+  
+  { --------------------------------------------------------------------
+    TCircle
+    --------------------------------------------------------------------}
+  
+  TCircle = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    FdisplayName : String;
+    Fetag : String;
+    Fid : String;
+    Fkind : String;
+    Fpeople : TCircleTypepeople;
+    FselfLink : String;
+  Protected
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpeople(AIndex : Integer; const AValue : TCircleTypepeople); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property etag : String Index 16 Read Fetag Write Setetag;
+    Property id : String Index 24 Read Fid Write Setid;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property people : TCircleTypepeople Index 40 Read Fpeople Write Setpeople;
+    Property selfLink : String Index 48 Read FselfLink Write SetselfLink;
+  end;
+  TCircleClass = Class of TCircle;
+  
+  { --------------------------------------------------------------------
+    TCircleFeed
+    --------------------------------------------------------------------}
+  
+  TCircleFeed = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fitems : TCircleFeedTypeitemsArray;
+    Fkind : String;
+    FnextLink : String;
+    FnextPageToken : String;
+    FselfLink : String;
+    Ftitle : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCircleFeedTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property items : TCircleFeedTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextLink : String Index 24 Read FnextLink Write SetnextLink;
+    Property nextPageToken : String Index 32 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 40 Read FselfLink Write SetselfLink;
+    Property title : String Index 48 Read Ftitle Write Settitle;
+    Property totalItems : integer Index 56 Read FtotalItems Write SettotalItems;
+  end;
+  TCircleFeedClass = Class of TCircleFeed;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+    --------------------------------------------------------------------}
+  
+  TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo = Class(TGoogleBaseObject)
+  Private
+    FchannelId : String;
+  Protected
+    //Property setters
+    Procedure SetchannelId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property channelId : String Index 0 Read FchannelId Write SetchannelId;
+  end;
+  TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfoClass = Class of TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeactorTypeclientSpecificActorInfo
+    --------------------------------------------------------------------}
+  
+  TCommentTypeactorTypeclientSpecificActorInfo = Class(TGoogleBaseObject)
+  Private
+    FyoutubeActorInfo : TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo;
+  Protected
+    //Property setters
+    Procedure SetyoutubeActorInfo(AIndex : Integer; const AValue : TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); virtual;
+  Public
+  Published
+    Property youtubeActorInfo : TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo Index 0 Read FyoutubeActorInfo Write SetyoutubeActorInfo;
+  end;
+  TCommentTypeactorTypeclientSpecificActorInfoClass = Class of TCommentTypeactorTypeclientSpecificActorInfo;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeactorTypeimage
+    --------------------------------------------------------------------}
+  
+  TCommentTypeactorTypeimage = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TCommentTypeactorTypeimageClass = Class of TCommentTypeactorTypeimage;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeactorTypeverification
+    --------------------------------------------------------------------}
+  
+  TCommentTypeactorTypeverification = Class(TGoogleBaseObject)
+  Private
+    FadHocVerified : String;
+  Protected
+    //Property setters
+    Procedure SetadHocVerified(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property adHocVerified : String Index 0 Read FadHocVerified Write SetadHocVerified;
+  end;
+  TCommentTypeactorTypeverificationClass = Class of TCommentTypeactorTypeverification;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeactor
+    --------------------------------------------------------------------}
+  
+  TCommentTypeactor = Class(TGoogleBaseObject)
+  Private
+    FclientSpecificActorInfo : TCommentTypeactorTypeclientSpecificActorInfo;
+    FdisplayName : String;
+    Fid : String;
+    Fimage : TCommentTypeactorTypeimage;
+    Furl : String;
+    Fverification : TCommentTypeactorTypeverification;
+  Protected
+    //Property setters
+    Procedure SetclientSpecificActorInfo(AIndex : Integer; const AValue : TCommentTypeactorTypeclientSpecificActorInfo); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TCommentTypeactorTypeimage); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setverification(AIndex : Integer; const AValue : TCommentTypeactorTypeverification); virtual;
+  Public
+  Published
+    Property clientSpecificActorInfo : TCommentTypeactorTypeclientSpecificActorInfo Index 0 Read FclientSpecificActorInfo Write SetclientSpecificActorInfo;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property image : TCommentTypeactorTypeimage Index 24 Read Fimage Write Setimage;
+    Property url : String Index 32 Read Furl Write Seturl;
+    Property verification : TCommentTypeactorTypeverification Index 40 Read Fverification Write Setverification;
+  end;
+  TCommentTypeactorClass = Class of TCommentTypeactor;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeinReplyToItem
+    --------------------------------------------------------------------}
+  
+  TCommentTypeinReplyToItem = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property url : String Index 8 Read Furl Write Seturl;
+  end;
+  TCommentTypeinReplyToItemClass = Class of TCommentTypeinReplyToItem;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeobject
+    --------------------------------------------------------------------}
+  
+  TCommentTypeobject = Class(TGoogleBaseObject)
+  Private
+    Fcontent : String;
+    FobjectType : String;
+    ForiginalContent : String;
+  Protected
+    //Property setters
+    Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoriginalContent(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property content : String Index 0 Read Fcontent Write Setcontent;
+    Property objectType : String Index 8 Read FobjectType Write SetobjectType;
+    Property originalContent : String Index 16 Read ForiginalContent Write SetoriginalContent;
+  end;
+  TCommentTypeobjectClass = Class of TCommentTypeobject;
+  
+  { --------------------------------------------------------------------
+    TCommentTypeplusoners
+    --------------------------------------------------------------------}
+  
+  TCommentTypeplusoners = Class(TGoogleBaseObject)
+  Private
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property totalItems : integer Index 0 Read FtotalItems Write SettotalItems;
+  end;
+  TCommentTypeplusonersClass = Class of TCommentTypeplusoners;
+  
+  { --------------------------------------------------------------------
+    TComment
+    --------------------------------------------------------------------}
+  
+  TComment = Class(TGoogleBaseObject)
+  Private
+    Factor : TCommentTypeactor;
+    Fetag : String;
+    Fid : String;
+    FinReplyTo : TCommentTypeinReplyToArray;
+    Fkind : String;
+    F_object : TCommentTypeobject;
+    Fplusoners : TCommentTypeplusoners;
+    F_published : TDatetime;
+    FselfLink : String;
+    Fupdated : TDatetime;
+    Fverb : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setactor(AIndex : Integer; const AValue : TCommentTypeactor); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinReplyTo(AIndex : Integer; const AValue : TCommentTypeinReplyToArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_object(AIndex : Integer; const AValue : TCommentTypeobject); virtual;
+    Procedure Setplusoners(AIndex : Integer; const AValue : TCommentTypeplusoners); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setverb(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property actor : TCommentTypeactor Index 0 Read Factor Write Setactor;
+    Property etag : String Index 8 Read Fetag Write Setetag;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property inReplyTo : TCommentTypeinReplyToArray Index 24 Read FinReplyTo Write SetinReplyTo;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property _object : TCommentTypeobject Index 40 Read F_object Write Set_object;
+    Property plusoners : TCommentTypeplusoners Index 48 Read Fplusoners Write Setplusoners;
+    Property _published : TDatetime Index 56 Read F_published Write Set_published;
+    Property selfLink : String Index 64 Read FselfLink Write SetselfLink;
+    Property updated : TDatetime Index 72 Read Fupdated Write Setupdated;
+    Property verb : String Index 80 Read Fverb Write Setverb;
+  end;
+  TCommentClass = Class of TComment;
+  
+  { --------------------------------------------------------------------
+    TCommentFeed
+    --------------------------------------------------------------------}
+  
+  TCommentFeed = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fid : String;
+    Fitems : TCommentFeedTypeitemsArray;
+    Fkind : String;
+    FnextLink : String;
+    FnextPageToken : String;
+    Ftitle : String;
+    Fupdated : TDatetime;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCommentFeedTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property items : TCommentFeedTypeitemsArray Index 16 Read Fitems Write Setitems;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property nextLink : String Index 32 Read FnextLink Write SetnextLink;
+    Property nextPageToken : String Index 40 Read FnextPageToken Write SetnextPageToken;
+    Property title : String Index 48 Read Ftitle Write Settitle;
+    Property updated : TDatetime Index 56 Read Fupdated Write Setupdated;
+  end;
+  TCommentFeedClass = Class of TCommentFeed;
+  
+  { --------------------------------------------------------------------
+    TMediaTypeauthorTypeimage
+    --------------------------------------------------------------------}
+  
+  TMediaTypeauthorTypeimage = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property url : String Index 0 Read Furl Write Seturl;
+  end;
+  TMediaTypeauthorTypeimageClass = Class of TMediaTypeauthorTypeimage;
+  
+  { --------------------------------------------------------------------
+    TMediaTypeauthor
+    --------------------------------------------------------------------}
+  
+  TMediaTypeauthor = Class(TGoogleBaseObject)
+  Private
+    FdisplayName : String;
+    Fid : String;
+    Fimage : TMediaTypeauthorTypeimage;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TMediaTypeauthorTypeimage); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property displayName : String Index 0 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property image : TMediaTypeauthorTypeimage Index 16 Read Fimage Write Setimage;
+    Property url : String Index 24 Read Furl Write Seturl;
+  end;
+  TMediaTypeauthorClass = Class of TMediaTypeauthor;
+  
+  { --------------------------------------------------------------------
+    TMediaTypeexif
+    --------------------------------------------------------------------}
+  
+  TMediaTypeexif = Class(TGoogleBaseObject)
+  Private
+    Ftime : TDatetime;
+  Protected
+    //Property setters
+    Procedure Settime(AIndex : Integer; const AValue : TDatetime); virtual;
+  Public
+  Published
+    Property time : TDatetime Index 0 Read Ftime Write Settime;
+  end;
+  TMediaTypeexifClass = Class of TMediaTypeexif;
+  
+  { --------------------------------------------------------------------
+    TMedia
+    --------------------------------------------------------------------}
+  
+  TMedia = Class(TGoogleBaseObject)
+  Private
+    Fauthor : TMediaTypeauthor;
+    FdisplayName : String;
+    Fetag : String;
+    Fexif : TMediaTypeexif;
+    Fheight : integer;
+    Fid : String;
+    Fkind : String;
+    FmediaCreatedTime : TDatetime;
+    FmediaUrl : String;
+    F_published : TDatetime;
+    FsizeBytes : String;
+    Fstreams : TMediaTypestreamsArray;
+    Fsummary : String;
+    Fupdated : TDatetime;
+    Furl : String;
+    FvideoDuration : String;
+    FvideoStatus : String;
+    Fwidth : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setauthor(AIndex : Integer; const AValue : TMediaTypeauthor); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexif(AIndex : Integer; const AValue : TMediaTypeexif); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmediaCreatedTime(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SetmediaUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SetsizeBytes(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstreams(AIndex : Integer; const AValue : TMediaTypestreamsArray); virtual;
+    Procedure Setsummary(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoDuration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetvideoStatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property author : TMediaTypeauthor Index 0 Read Fauthor Write Setauthor;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property etag : String Index 16 Read Fetag Write Setetag;
+    Property exif : TMediaTypeexif Index 24 Read Fexif Write Setexif;
+    Property height : integer Index 32 Read Fheight Write Setheight;
+    Property id : String Index 40 Read Fid Write Setid;
+    Property kind : String Index 48 Read Fkind Write Setkind;
+    Property mediaCreatedTime : TDatetime Index 56 Read FmediaCreatedTime Write SetmediaCreatedTime;
+    Property mediaUrl : String Index 64 Read FmediaUrl Write SetmediaUrl;
+    Property _published : TDatetime Index 72 Read F_published Write Set_published;
+    Property sizeBytes : String Index 80 Read FsizeBytes Write SetsizeBytes;
+    Property streams : TMediaTypestreamsArray Index 88 Read Fstreams Write Setstreams;
+    Property summary : String Index 96 Read Fsummary Write Setsummary;
+    Property updated : TDatetime Index 104 Read Fupdated Write Setupdated;
+    Property url : String Index 112 Read Furl Write Seturl;
+    Property videoDuration : String Index 120 Read FvideoDuration Write SetvideoDuration;
+    Property videoStatus : String Index 128 Read FvideoStatus Write SetvideoStatus;
+    Property width : integer Index 136 Read Fwidth Write Setwidth;
+  end;
+  TMediaClass = Class of TMedia;
+  
+  { --------------------------------------------------------------------
+    TPeopleFeed
+    --------------------------------------------------------------------}
+  
+  TPeopleFeed = Class(TGoogleBaseObject)
+  Private
+    Fetag : String;
+    Fitems : TPeopleFeedTypeitemsArray;
+    Fkind : String;
+    FnextPageToken : String;
+    FselfLink : String;
+    Ftitle : String;
+    FtotalItems : integer;
+  Protected
+    //Property setters
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPeopleFeedTypeitemsArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property etag : String Index 0 Read Fetag Write Setetag;
+    Property items : TPeopleFeedTypeitemsArray Index 8 Read Fitems Write Setitems;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
+    Property selfLink : String Index 32 Read FselfLink Write SetselfLink;
+    Property title : String Index 40 Read Ftitle Write Settitle;
+    Property totalItems : integer Index 48 Read FtotalItems Write SettotalItems;
+  end;
+  TPeopleFeedClass = Class of TPeopleFeed;
+  
+  { --------------------------------------------------------------------
+    TPersonTypecoverTypecoverInfo
+    --------------------------------------------------------------------}
+  
+  TPersonTypecoverTypecoverInfo = Class(TGoogleBaseObject)
+  Private
+    FleftImageOffset : integer;
+    FtopImageOffset : integer;
+  Protected
+    //Property setters
+    Procedure SetleftImageOffset(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettopImageOffset(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property leftImageOffset : integer Index 0 Read FleftImageOffset Write SetleftImageOffset;
+    Property topImageOffset : integer Index 8 Read FtopImageOffset Write SettopImageOffset;
+  end;
+  TPersonTypecoverTypecoverInfoClass = Class of TPersonTypecoverTypecoverInfo;
+  
+  { --------------------------------------------------------------------
+    TPersonTypecoverTypecoverPhoto
+    --------------------------------------------------------------------}
+  
+  TPersonTypecoverTypecoverPhoto = Class(TGoogleBaseObject)
+  Private
+    Fheight : integer;
+    Furl : String;
+    Fwidth : integer;
+  Protected
+    //Property setters
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property height : integer Index 0 Read Fheight Write Setheight;
+    Property url : String Index 8 Read Furl Write Seturl;
+    Property width : integer Index 16 Read Fwidth Write Setwidth;
+  end;
+  TPersonTypecoverTypecoverPhotoClass = Class of TPersonTypecoverTypecoverPhoto;
+  
+  { --------------------------------------------------------------------
+    TPersonTypecover
+    --------------------------------------------------------------------}
+  
+  TPersonTypecover = Class(TGoogleBaseObject)
+  Private
+    FcoverInfo : TPersonTypecoverTypecoverInfo;
+    FcoverPhoto : TPersonTypecoverTypecoverPhoto;
+    Flayout : String;
+  Protected
+    //Property setters
+    Procedure SetcoverInfo(AIndex : Integer; const AValue : TPersonTypecoverTypecoverInfo); virtual;
+    Procedure SetcoverPhoto(AIndex : Integer; const AValue : TPersonTypecoverTypecoverPhoto); virtual;
+    Procedure Setlayout(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property coverInfo : TPersonTypecoverTypecoverInfo Index 0 Read FcoverInfo Write SetcoverInfo;
+    Property coverPhoto : TPersonTypecoverTypecoverPhoto Index 8 Read FcoverPhoto Write SetcoverPhoto;
+    Property layout : String Index 16 Read Flayout Write Setlayout;
+  end;
+  TPersonTypecoverClass = Class of TPersonTypecover;
+  
+  { --------------------------------------------------------------------
+    TPersonTypeemailsItem
+    --------------------------------------------------------------------}
+  
+  TPersonTypeemailsItem = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fvalue : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TPersonTypeemailsItemClass = Class of TPersonTypeemailsItem;
+  
+  { --------------------------------------------------------------------
+    TPersonTypeimage
+    --------------------------------------------------------------------}
+  
+  TPersonTypeimage = Class(TGoogleBaseObject)
+  Private
+    FisDefault : boolean;
+    Furl : String;
+  Protected
+    //Property setters
+    Procedure SetisDefault(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property isDefault : boolean Index 0 Read FisDefault Write SetisDefault;
+    Property url : String Index 8 Read Furl Write Seturl;
+  end;
+  TPersonTypeimageClass = Class of TPersonTypeimage;
+  
+  { --------------------------------------------------------------------
+    TPersonTypename
+    --------------------------------------------------------------------}
+  
+  TPersonTypename = Class(TGoogleBaseObject)
+  Private
+    FfamilyName : String;
+    Fformatted : String;
+    FgivenName : String;
+    FhonorificPrefix : String;
+    FhonorificSuffix : String;
+    FmiddleName : String;
+  Protected
+    //Property setters
+    Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setformatted(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethonorificPrefix(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethonorificSuffix(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmiddleName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property familyName : String Index 0 Read FfamilyName Write SetfamilyName;
+    Property formatted : String Index 8 Read Fformatted Write Setformatted;
+    Property givenName : String Index 16 Read FgivenName Write SetgivenName;
+    Property honorificPrefix : String Index 24 Read FhonorificPrefix Write SethonorificPrefix;
+    Property honorificSuffix : String Index 32 Read FhonorificSuffix Write SethonorificSuffix;
+    Property middleName : String Index 40 Read FmiddleName Write SetmiddleName;
+  end;
+  TPersonTypenameClass = Class of TPersonTypename;
+  
+  { --------------------------------------------------------------------
+    TPersonTypeorganizationsItem
+    --------------------------------------------------------------------}
+  
+  TPersonTypeorganizationsItem = Class(TGoogleBaseObject)
+  Private
+    Fdepartment : String;
+    Fdescription : String;
+    FendDate : String;
+    Flocation : String;
+    Fname : String;
+    Fprimary : boolean;
+    FstartDate : String;
+    Ftitle : String;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setdepartment(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setprimary(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property department : String Index 0 Read Fdepartment Write Setdepartment;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property endDate : String Index 16 Read FendDate Write SetendDate;
+    Property location : String Index 24 Read Flocation Write Setlocation;
+    Property name : String Index 32 Read Fname Write Setname;
+    Property primary : boolean Index 40 Read Fprimary Write Setprimary;
+    Property startDate : String Index 48 Read FstartDate Write SetstartDate;
+    Property title : String Index 56 Read Ftitle Write Settitle;
+    Property _type : String Index 64 Read F_type Write Set_type;
+  end;
+  TPersonTypeorganizationsItemClass = Class of TPersonTypeorganizationsItem;
+  
+  { --------------------------------------------------------------------
+    TPersonTypeplacesLivedItem
+    --------------------------------------------------------------------}
+  
+  TPersonTypeplacesLivedItem = Class(TGoogleBaseObject)
+  Private
+    Fprimary : boolean;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setprimary(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property primary : boolean Index 0 Read Fprimary Write Setprimary;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TPersonTypeplacesLivedItemClass = Class of TPersonTypeplacesLivedItem;
+  
+  { --------------------------------------------------------------------
+    TPersonTypeurlsItem
+    --------------------------------------------------------------------}
+  
+  TPersonTypeurlsItem = Class(TGoogleBaseObject)
+  Private
+    F_label : String;
+    F_type : String;
+    Fvalue : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_label(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _label : String Index 0 Read F_label Write Set_label;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property value : String Index 16 Read Fvalue Write Setvalue;
+  end;
+  TPersonTypeurlsItemClass = Class of TPersonTypeurlsItem;
+  
+  { --------------------------------------------------------------------
+    TPerson
+    --------------------------------------------------------------------}
+  
+  TPerson = Class(TGoogleBaseObject)
+  Private
+    FaboutMe : String;
+    Fbirthday : String;
+    FbraggingRights : String;
+    FcircledByCount : integer;
+    Fcover : TPersonTypecover;
+    FcurrentLocation : String;
+    FdisplayName : String;
+    Fdomain : String;
+    Femails : TPersonTypeemailsArray;
+    Fetag : String;
+    Fgender : String;
+    Fid : String;
+    Fimage : TPersonTypeimage;
+    FisPlusUser : boolean;
+    Fkind : String;
+    Fname : TPersonTypename;
+    Fnickname : String;
+    FobjectType : String;
+    Foccupation : String;
+    Forganizations : TPersonTypeorganizationsArray;
+    FplacesLived : TPersonTypeplacesLivedArray;
+    FplusOneCount : integer;
+    FrelationshipStatus : String;
+    Fskills : String;
+    Ftagline : String;
+    Furl : String;
+    Furls : TPersonTypeurlsArray;
+    Fverified : boolean;
+  Protected
+    //Property setters
+    Procedure SetaboutMe(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setbirthday(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbraggingRights(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcircledByCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setcover(AIndex : Integer; const AValue : TPersonTypecover); virtual;
+    Procedure SetcurrentLocation(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdomain(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setemails(AIndex : Integer; const AValue : TPersonTypeemailsArray); virtual;
+    Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setgender(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TPersonTypeimage); virtual;
+    Procedure SetisPlusUser(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TPersonTypename); virtual;
+    Procedure Setnickname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoccupation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setorganizations(AIndex : Integer; const AValue : TPersonTypeorganizationsArray); virtual;
+    Procedure SetplacesLived(AIndex : Integer; const AValue : TPersonTypeplacesLivedArray); virtual;
+    Procedure SetplusOneCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrelationshipStatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setskills(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settagline(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturls(AIndex : Integer; const AValue : TPersonTypeurlsArray); virtual;
+    Procedure Setverified(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property aboutMe : String Index 0 Read FaboutMe Write SetaboutMe;
+    Property birthday : String Index 8 Read Fbirthday Write Setbirthday;
+    Property braggingRights : String Index 16 Read FbraggingRights Write SetbraggingRights;
+    Property circledByCount : integer Index 24 Read FcircledByCount Write SetcircledByCount;
+    Property cover : TPersonTypecover Index 32 Read Fcover Write Setcover;
+    Property currentLocation : String Index 40 Read FcurrentLocation Write SetcurrentLocation;
+    Property displayName : String Index 48 Read FdisplayName Write SetdisplayName;
+    Property domain : String Index 56 Read Fdomain Write Setdomain;
+    Property emails : TPersonTypeemailsArray Index 64 Read Femails Write Setemails;
+    Property etag : String Index 72 Read Fetag Write Setetag;
+    Property gender : String Index 80 Read Fgender Write Setgender;
+    Property id : String Index 88 Read Fid Write Setid;
+    Property image : TPersonTypeimage Index 96 Read Fimage Write Setimage;
+    Property isPlusUser : boolean Index 104 Read FisPlusUser Write SetisPlusUser;
+    Property kind : String Index 112 Read Fkind Write Setkind;
+    Property name : TPersonTypename Index 120 Read Fname Write Setname;
+    Property nickname : String Index 128 Read Fnickname Write Setnickname;
+    Property objectType : String Index 136 Read FobjectType Write SetobjectType;
+    Property occupation : String Index 144 Read Foccupation Write Setoccupation;
+    Property organizations : TPersonTypeorganizationsArray Index 152 Read Forganizations Write Setorganizations;
+    Property placesLived : TPersonTypeplacesLivedArray Index 160 Read FplacesLived Write SetplacesLived;
+    Property plusOneCount : integer Index 168 Read FplusOneCount Write SetplusOneCount;
+    Property relationshipStatus : String Index 176 Read FrelationshipStatus Write SetrelationshipStatus;
+    Property skills : String Index 184 Read Fskills Write Setskills;
+    Property tagline : String Index 192 Read Ftagline Write Settagline;
+    Property url : String Index 200 Read Furl Write Seturl;
+    Property urls : TPersonTypeurlsArray Index 208 Read Furls Write Seturls;
+    Property verified : boolean Index 216 Read Fverified Write Setverified;
+  end;
+  TPersonClass = Class of TPerson;
+  
+  { --------------------------------------------------------------------
+    TPlaceTypeaddress
+    --------------------------------------------------------------------}
+  
+  TPlaceTypeaddress = Class(TGoogleBaseObject)
+  Private
+    Fformatted : String;
+  Protected
+    //Property setters
+    Procedure Setformatted(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property formatted : String Index 0 Read Fformatted Write Setformatted;
+  end;
+  TPlaceTypeaddressClass = Class of TPlaceTypeaddress;
+  
+  { --------------------------------------------------------------------
+    TPlaceTypeposition
+    --------------------------------------------------------------------}
+  
+  TPlaceTypeposition = Class(TGoogleBaseObject)
+  Private
+    Flatitude : double;
+    Flongitude : double;
+  Protected
+    //Property setters
+    Procedure Setlatitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlongitude(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property latitude : double Index 0 Read Flatitude Write Setlatitude;
+    Property longitude : double Index 8 Read Flongitude Write Setlongitude;
+  end;
+  TPlaceTypepositionClass = Class of TPlaceTypeposition;
+  
+  { --------------------------------------------------------------------
+    TPlace
+    --------------------------------------------------------------------}
+  
+  TPlace = Class(TGoogleBaseObject)
+  Private
+    Faddress : TPlaceTypeaddress;
+    FdisplayName : String;
+    Fid : String;
+    Fkind : String;
+    Fposition : TPlaceTypeposition;
+  Protected
+    //Property setters
+    Procedure Setaddress(AIndex : Integer; const AValue : TPlaceTypeaddress); virtual;
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setposition(AIndex : Integer; const AValue : TPlaceTypeposition); virtual;
+  Public
+  Published
+    Property address : TPlaceTypeaddress Index 0 Read Faddress Write Setaddress;
+    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property position : TPlaceTypeposition Index 32 Read Fposition Write Setposition;
+  end;
+  TPlaceClass = Class of TPlace;
+  
+  { --------------------------------------------------------------------
+    TPlusDomainsAclentryResource
+    --------------------------------------------------------------------}
+  
+  TPlusDomainsAclentryResource = Class(TGoogleBaseObject)
+  Private
+    FdisplayName : String;
+    Fid : String;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property displayName : String Index 0 Read FdisplayName Write SetdisplayName;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property _type : String Index 16 Read F_type Write Set_type;
+  end;
+  TPlusDomainsAclentryResourceClass = Class of TPlusDomainsAclentryResource;
+  
+  { --------------------------------------------------------------------
+    TVideostream
+    --------------------------------------------------------------------}
+  
+  TVideostream = Class(TGoogleBaseObject)
+  Private
+    Fheight : integer;
+    F_type : String;
+    Furl : String;
+    Fwidth : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property height : integer Index 0 Read Fheight Write Setheight;
+    Property _type : String Index 8 Read F_type Write Set_type;
+    Property url : String Index 16 Read Furl Write Seturl;
+    Property width : integer Index 24 Read Fwidth Write Setwidth;
+  end;
+  TVideostreamClass = Class of TVideostream;
+  
+  { --------------------------------------------------------------------
+    TActivitiesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TActivitiesResource, method Insert
+  
+  TActivitiesInsertOptions = Record
+    preview : boolean;
+  end;
+  
+  
+  //Optional query Options for TActivitiesResource, method List
+  
+  TActivitiesListOptions = Record
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
+  TActivitiesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(activityId: string) : TActivity;
+    Function Insert(userId: string; aActivity : TActivity; AQuery : string  = '') : TActivity;
+    Function Insert(userId: string; aActivity : TActivity; AQuery : TActivitiesinsertOptions) : TActivity;
+    Function List(collection: string; userId: string; AQuery : string  = '') : TActivityFeed;
+    Function List(collection: string; userId: string; AQuery : TActivitieslistOptions) : TActivityFeed;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TAudiencesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TAudiencesResource, method List
+  
+  TAudiencesListOptions = Record
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
+  TAudiencesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(userId: string; AQuery : string  = '') : TAudiencesFeed;
+    Function List(userId: string; AQuery : TAudienceslistOptions) : TAudiencesFeed;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCirclesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCirclesResource, method AddPeople
+  
+  TCirclesAddPeopleOptions = Record
+    email : String;
+    userId : String;
+  end;
+  
+  
+  //Optional query Options for TCirclesResource, method List
+  
+  TCirclesListOptions = Record
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TCirclesResource, method RemovePeople
+  
+  TCirclesRemovePeopleOptions = Record
+    email : String;
+    userId : String;
+  end;
+  
+  TCirclesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function AddPeople(circleId: string; AQuery : string  = '') : TCircle;
+    Function AddPeople(circleId: string; AQuery : TCirclesaddPeopleOptions) : TCircle;
+    Function Get(circleId: string) : TCircle;
+    Function Insert(userId: string; aCircle : TCircle) : TCircle;
+    Function List(userId: string; AQuery : string  = '') : TCircleFeed;
+    Function List(userId: string; AQuery : TCircleslistOptions) : TCircleFeed;
+    Function Patch(circleId: string; aCircle : TCircle) : TCircle;
+    Procedure Remove(circleId: string);
+    Procedure RemovePeople(circleId: string; AQuery : string  = '');
+    Procedure RemovePeople(circleId: string; AQuery : TCirclesremovePeopleOptions);
+    Function Update(circleId: string; aCircle : TCircle) : TCircle;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TCommentsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TCommentsResource, method List
+  
+  TCommentsListOptions = Record
+    maxResults : integer;
+    pageToken : String;
+    sortOrder : String;
+  end;
+  
+  TCommentsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(commentId: string) : TComment;
+    Function Insert(activityId: string; aComment : TComment) : TComment;
+    Function List(activityId: string; AQuery : string  = '') : TCommentFeed;
+    Function List(activityId: string; AQuery : TCommentslistOptions) : TCommentFeed;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TMediaResource
+    --------------------------------------------------------------------}
+  
+  TMediaResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Insert(collection: string; userId: string; aMedia : TMedia) : TMedia;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPeopleResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TPeopleResource, method List
+  
+  TPeopleListOptions = Record
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TPeopleResource, method ListByActivity
+  
+  TPeopleListByActivityOptions = Record
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TPeopleResource, method ListByCircle
+  
+  TPeopleListByCircleOptions = Record
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
+  TPeopleResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(userId: string) : TPerson;
+    Function List(collection: string; userId: string; AQuery : string  = '') : TPeopleFeed;
+    Function List(collection: string; userId: string; AQuery : TPeoplelistOptions) : TPeopleFeed;
+    Function ListByActivity(activityId: string; collection: string; AQuery : string  = '') : TPeopleFeed;
+    Function ListByActivity(activityId: string; collection: string; AQuery : TPeoplelistByActivityOptions) : TPeopleFeed;
+    Function ListByCircle(circleId: string; AQuery : string  = '') : TPeopleFeed;
+    Function ListByCircle(circleId: string; AQuery : TPeoplelistByCircleOptions) : TPeopleFeed;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TPlusDomainsAPI
+    --------------------------------------------------------------------}
+  
+  TPlusDomainsAPI = Class(TGoogleAPI)
+  Private
+    FActivitiesInstance : TActivitiesResource;
+    FAudiencesInstance : TAudiencesResource;
+    FCirclesInstance : TCirclesResource;
+    FCommentsInstance : TCommentsResource;
+    FMediaInstance : TMediaResource;
+    FPeopleInstance : TPeopleResource;
+    Function GetActivitiesInstance : TActivitiesResource;virtual;
+    Function GetAudiencesInstance : TAudiencesResource;virtual;
+    Function GetCirclesInstance : TCirclesResource;virtual;
+    Function GetCommentsInstance : TCommentsResource;virtual;
+    Function GetMediaInstance : TMediaResource;virtual;
+    Function GetPeopleInstance : TPeopleResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateActivitiesResource(AOwner : TComponent) : TActivitiesResource;virtual;overload;
+    Function CreateActivitiesResource : TActivitiesResource;virtual;overload;
+    Function CreateAudiencesResource(AOwner : TComponent) : TAudiencesResource;virtual;overload;
+    Function CreateAudiencesResource : TAudiencesResource;virtual;overload;
+    Function CreateCirclesResource(AOwner : TComponent) : TCirclesResource;virtual;overload;
+    Function CreateCirclesResource : TCirclesResource;virtual;overload;
+    Function CreateCommentsResource(AOwner : TComponent) : TCommentsResource;virtual;overload;
+    Function CreateCommentsResource : TCommentsResource;virtual;overload;
+    Function CreateMediaResource(AOwner : TComponent) : TMediaResource;virtual;overload;
+    Function CreateMediaResource : TMediaResource;virtual;overload;
+    Function CreatePeopleResource(AOwner : TComponent) : TPeopleResource;virtual;overload;
+    Function CreatePeopleResource : TPeopleResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ActivitiesResource : TActivitiesResource Read GetActivitiesInstance;
+    Property AudiencesResource : TAudiencesResource Read GetAudiencesInstance;
+    Property CirclesResource : TCirclesResource Read GetCirclesInstance;
+    Property CommentsResource : TCommentsResource Read GetCommentsInstance;
+    Property MediaResource : TMediaResource Read GetMediaInstance;
+    Property PeopleResource : TPeopleResource Read GetPeopleInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAcl
+  --------------------------------------------------------------------}
+
+
+Procedure TAcl.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAcl.SetdomainRestricted(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdomainRestricted=AValue) then exit;
+  FdomainRestricted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAcl.Setitems(AIndex : Integer; const AValue : TAclTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAcl.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAcl.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.SetchannelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelId=AValue) then exit;
+  FchannelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactorTypeclientSpecificActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactorTypeclientSpecificActorInfo.SetyoutubeActorInfo(AIndex : Integer; const AValue : TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); 
+
+begin
+  If (FyoutubeActorInfo=AValue) then exit;
+  FyoutubeActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactorTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactorTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactorTypename
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactorTypename.SetfamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfamilyName=AValue) then exit;
+  FfamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactorTypename.SetgivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgivenName=AValue) then exit;
+  FgivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactorTypeverification
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactorTypeverification.SetadHocVerified(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FadHocVerified=AValue) then exit;
+  FadHocVerified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeactor
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeactor.SetclientSpecificActorInfo(AIndex : Integer; const AValue : TActivityTypeactorTypeclientSpecificActorInfo); 
+
+begin
+  If (FclientSpecificActorInfo=AValue) then exit;
+  FclientSpecificActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.Setimage(AIndex : Integer; const AValue : TActivityTypeactorTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.Setname(AIndex : Integer; const AValue : TActivityTypeactorTypename); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeactor.Setverification(AIndex : Integer; const AValue : TActivityTypeactorTypeverification); 
+
+begin
+  If (Fverification=AValue) then exit;
+  Fverification:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.SetchannelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelId=AValue) then exit;
+  FchannelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeactorTypeclientSpecificActorInfo.SetyoutubeActorInfo(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); 
+
+begin
+  If (FyoutubeActorInfo=AValue) then exit;
+  FyoutubeActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeactorTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeactorTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeactorTypeverification
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeactorTypeverification.SetadHocVerified(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FadHocVerified=AValue) then exit;
+  FadHocVerified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeactor
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeactor.SetclientSpecificActorInfo(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeclientSpecificActorInfo); 
+
+begin
+  If (FclientSpecificActorInfo=AValue) then exit;
+  FclientSpecificActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeactor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeactor.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeactor.Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeactor.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeactor.Setverification(AIndex : Integer; const AValue : TActivityTypeobjectTypeactorTypeverification); 
+
+begin
+  If (Fverification=AValue) then exit;
+  Fverification:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypeembed
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeembed.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeembed.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TActivityTypeobjectTypeattachmentsItemTypeembed.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypefullImage
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypefullImage.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypefullImage.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypefullImage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypefullImage.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TActivityTypeobjectTypeattachmentsItemTypefullImage.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeimage.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeimage.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypeimage.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TActivityTypeobjectTypeattachmentsItemTypeimage.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem.Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeattachmentsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Setcontent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcontent=AValue) then exit;
+  Fcontent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Setembed(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypeembed); 
+
+begin
+  If (Fembed=AValue) then exit;
+  Fembed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.SetfullImage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypefullImage); 
+
+begin
+  If (FfullImage=AValue) then exit;
+  FfullImage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Setimage(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.SetobjectType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectType=AValue) then exit;
+  FobjectType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.SetpreviewThumbnails(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsArray); 
+
+begin
+  If (FpreviewThumbnails=AValue) then exit;
+  FpreviewThumbnails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Setthumbnails(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsItemTypethumbnailsArray); 
+
+begin
+  If (Fthumbnails=AValue) then exit;
+  Fthumbnails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeattachmentsItem.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivityTypeobjectTypeattachmentsItem.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'previewthumbnails' : SetLength(FpreviewThumbnails,ALength);
+  'thumbnails' : SetLength(Fthumbnails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypeplusoners
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypeplusoners.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypeplusoners.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypereplies
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypereplies.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypereplies.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTyperesharers
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTyperesharers.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTyperesharers.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobjectTypestatusForViewer
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobjectTypestatusForViewer.SetcanComment(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcanComment=AValue) then exit;
+  FcanComment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypestatusForViewer.SetcanPlusone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcanPlusone=AValue) then exit;
+  FcanPlusone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypestatusForViewer.SetcanUpdate(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcanUpdate=AValue) then exit;
+  FcanUpdate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypestatusForViewer.SetisPlusOned(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisPlusOned=AValue) then exit;
+  FisPlusOned:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobjectTypestatusForViewer.SetresharingDisabled(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FresharingDisabled=AValue) then exit;
+  FresharingDisabled:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeobject
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeobject.Setactor(AIndex : Integer; const AValue : TActivityTypeobjectTypeactor); 
+
+begin
+  If (Factor=AValue) then exit;
+  Factor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setattachments(AIndex : Integer; const AValue : TActivityTypeobjectTypeattachmentsArray); 
+
+begin
+  If (Fattachments=AValue) then exit;
+  Fattachments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setcontent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcontent=AValue) then exit;
+  Fcontent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.SetobjectType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectType=AValue) then exit;
+  FobjectType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.SetoriginalContent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginalContent=AValue) then exit;
+  ForiginalContent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setplusoners(AIndex : Integer; const AValue : TActivityTypeobjectTypeplusoners); 
+
+begin
+  If (Fplusoners=AValue) then exit;
+  Fplusoners:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setreplies(AIndex : Integer; const AValue : TActivityTypeobjectTypereplies); 
+
+begin
+  If (Freplies=AValue) then exit;
+  Freplies:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Setresharers(AIndex : Integer; const AValue : TActivityTypeobjectTyperesharers); 
+
+begin
+  If (Fresharers=AValue) then exit;
+  Fresharers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.SetstatusForViewer(AIndex : Integer; const AValue : TActivityTypeobjectTypestatusForViewer); 
+
+begin
+  If (FstatusForViewer=AValue) then exit;
+  FstatusForViewer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityTypeobject.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivityTypeobject.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'attachments' : SetLength(Fattachments,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityTypeprovider
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityTypeprovider.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivity
+  --------------------------------------------------------------------}
+
+
+Procedure TActivity.Setaccess(AIndex : Integer; const AValue : TAcl); 
+
+begin
+  If (Faccess=AValue) then exit;
+  Faccess:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setactor(AIndex : Integer; const AValue : TActivityTypeactor); 
+
+begin
+  If (Factor=AValue) then exit;
+  Factor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setaddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faddress=AValue) then exit;
+  Faddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setannotation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fannotation=AValue) then exit;
+  Fannotation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.SetcrosspostSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcrosspostSource=AValue) then exit;
+  FcrosspostSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setgeocode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fgeocode=AValue) then exit;
+  Fgeocode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setlocation(AIndex : Integer; const AValue : TPlace); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Set_object(AIndex : Integer; const AValue : TActivityTypeobject); 
+
+begin
+  If (F_object=AValue) then exit;
+  F_object:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.SetplaceId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplaceId=AValue) then exit;
+  FplaceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.SetplaceName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplaceName=AValue) then exit;
+  FplaceName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setprovider(AIndex : Integer; const AValue : TActivityTypeprovider); 
+
+begin
+  If (Fprovider=AValue) then exit;
+  Fprovider:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Set_published(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (F_published=AValue) then exit;
+  F_published:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setradius(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fradius=AValue) then exit;
+  Fradius:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivity.Setverb(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fverb=AValue) then exit;
+  Fverb:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TActivity.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_object' : Result:='object';
+  '_published' : Result:='published';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivityFeed
+  --------------------------------------------------------------------}
+
+
+Procedure TActivityFeed.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.Setitems(AIndex : Integer; const AValue : TActivityFeedTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.SetnextLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextLink=AValue) then exit;
+  FnextLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TActivityFeed.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TActivityFeed.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAudience
+  --------------------------------------------------------------------}
+
+
+Procedure TAudience.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudience.Setitem(AIndex : Integer; const AValue : TPlusDomainsAclentryResource); 
+
+begin
+  If (Fitem=AValue) then exit;
+  Fitem:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudience.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudience.SetmemberCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmemberCount=AValue) then exit;
+  FmemberCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudience.Setvisibility(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvisibility=AValue) then exit;
+  Fvisibility:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAudiencesFeed
+  --------------------------------------------------------------------}
+
+
+Procedure TAudiencesFeed.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudiencesFeed.Setitems(AIndex : Integer; const AValue : TAudiencesFeedTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudiencesFeed.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudiencesFeed.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAudiencesFeed.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAudiencesFeed.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCircleTypepeople
+  --------------------------------------------------------------------}
+
+
+Procedure TCircleTypepeople.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCircle
+  --------------------------------------------------------------------}
+
+
+Procedure TCircle.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.Setpeople(AIndex : Integer; const AValue : TCircleTypepeople); 
+
+begin
+  If (Fpeople=AValue) then exit;
+  Fpeople:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircle.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCircleFeed
+  --------------------------------------------------------------------}
+
+
+Procedure TCircleFeed.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.Setitems(AIndex : Integer; const AValue : TCircleFeedTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.SetnextLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextLink=AValue) then exit;
+  FnextLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCircleFeed.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCircleFeed.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.SetchannelId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchannelId=AValue) then exit;
+  FchannelId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeactorTypeclientSpecificActorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeactorTypeclientSpecificActorInfo.SetyoutubeActorInfo(AIndex : Integer; const AValue : TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo); 
+
+begin
+  If (FyoutubeActorInfo=AValue) then exit;
+  FyoutubeActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeactorTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeactorTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeactorTypeverification
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeactorTypeverification.SetadHocVerified(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FadHocVerified=AValue) then exit;
+  FadHocVerified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeactor
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeactor.SetclientSpecificActorInfo(AIndex : Integer; const AValue : TCommentTypeactorTypeclientSpecificActorInfo); 
+
+begin
+  If (FclientSpecificActorInfo=AValue) then exit;
+  FclientSpecificActorInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeactor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeactor.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeactor.Setimage(AIndex : Integer; const AValue : TCommentTypeactorTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeactor.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeactor.Setverification(AIndex : Integer; const AValue : TCommentTypeactorTypeverification); 
+
+begin
+  If (Fverification=AValue) then exit;
+  Fverification:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeinReplyToItem
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeinReplyToItem.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeinReplyToItem.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeobject
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeobject.Setcontent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcontent=AValue) then exit;
+  Fcontent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeobject.SetobjectType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectType=AValue) then exit;
+  FobjectType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentTypeobject.SetoriginalContent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginalContent=AValue) then exit;
+  ForiginalContent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentTypeplusoners
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentTypeplusoners.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TComment
+  --------------------------------------------------------------------}
+
+
+Procedure TComment.Setactor(AIndex : Integer; const AValue : TCommentTypeactor); 
+
+begin
+  If (Factor=AValue) then exit;
+  Factor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.SetinReplyTo(AIndex : Integer; const AValue : TCommentTypeinReplyToArray); 
+
+begin
+  If (FinReplyTo=AValue) then exit;
+  FinReplyTo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Set_object(AIndex : Integer; const AValue : TCommentTypeobject); 
+
+begin
+  If (F_object=AValue) then exit;
+  F_object:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setplusoners(AIndex : Integer; const AValue : TCommentTypeplusoners); 
+
+begin
+  If (Fplusoners=AValue) then exit;
+  Fplusoners:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Set_published(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (F_published=AValue) then exit;
+  F_published:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TComment.Setverb(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fverb=AValue) then exit;
+  Fverb:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TComment.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_object' : Result:='object';
+  '_published' : Result:='published';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TComment.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'inreplyto' : SetLength(FinReplyTo,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCommentFeed
+  --------------------------------------------------------------------}
+
+
+Procedure TCommentFeed.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.Setitems(AIndex : Integer; const AValue : TCommentFeedTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.SetnextLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextLink=AValue) then exit;
+  FnextLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCommentFeed.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCommentFeed.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMediaTypeauthorTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TMediaTypeauthorTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMediaTypeauthor
+  --------------------------------------------------------------------}
+
+
+Procedure TMediaTypeauthor.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMediaTypeauthor.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMediaTypeauthor.Setimage(AIndex : Integer; const AValue : TMediaTypeauthorTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMediaTypeauthor.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMediaTypeexif
+  --------------------------------------------------------------------}
+
+
+Procedure TMediaTypeexif.Settime(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Ftime=AValue) then exit;
+  Ftime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMedia
+  --------------------------------------------------------------------}
+
+
+Procedure TMedia.Setauthor(AIndex : Integer; const AValue : TMediaTypeauthor); 
+
+begin
+  If (Fauthor=AValue) then exit;
+  Fauthor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setexif(AIndex : Integer; const AValue : TMediaTypeexif); 
+
+begin
+  If (Fexif=AValue) then exit;
+  Fexif:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetmediaCreatedTime(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (FmediaCreatedTime=AValue) then exit;
+  FmediaCreatedTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetmediaUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmediaUrl=AValue) then exit;
+  FmediaUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Set_published(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (F_published=AValue) then exit;
+  F_published:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetsizeBytes(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsizeBytes=AValue) then exit;
+  FsizeBytes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setstreams(AIndex : Integer; const AValue : TMediaTypestreamsArray); 
+
+begin
+  If (Fstreams=AValue) then exit;
+  Fstreams:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setsummary(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsummary=AValue) then exit;
+  Fsummary:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetvideoDuration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoDuration=AValue) then exit;
+  FvideoDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.SetvideoStatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvideoStatus=AValue) then exit;
+  FvideoStatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMedia.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TMedia.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_published' : Result:='published';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TMedia.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'streams' : SetLength(Fstreams,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPeopleFeed
+  --------------------------------------------------------------------}
+
+
+Procedure TPeopleFeed.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.Setitems(AIndex : Integer; const AValue : TPeopleFeedTypeitemsArray); 
+
+begin
+  If (Fitems=AValue) then exit;
+  Fitems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPeopleFeed.SettotalItems(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalItems=AValue) then exit;
+  FtotalItems:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPeopleFeed.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'items' : SetLength(Fitems,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypecoverTypecoverInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypecoverTypecoverInfo.SetleftImageOffset(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FleftImageOffset=AValue) then exit;
+  FleftImageOffset:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypecoverTypecoverInfo.SettopImageOffset(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtopImageOffset=AValue) then exit;
+  FtopImageOffset:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypecoverTypecoverPhoto
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypecoverTypecoverPhoto.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypecoverTypecoverPhoto.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypecoverTypecoverPhoto.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypecover
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypecover.SetcoverInfo(AIndex : Integer; const AValue : TPersonTypecoverTypecoverInfo); 
+
+begin
+  If (FcoverInfo=AValue) then exit;
+  FcoverInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypecover.SetcoverPhoto(AIndex : Integer; const AValue : TPersonTypecoverTypecoverPhoto); 
+
+begin
+  If (FcoverPhoto=AValue) then exit;
+  FcoverPhoto:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypecover.Setlayout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flayout=AValue) then exit;
+  Flayout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypeemailsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypeemailsItem.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeemailsItem.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPersonTypeemailsItem.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypeimage
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypeimage.SetisDefault(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisDefault=AValue) then exit;
+  FisDefault:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeimage.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypename
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypename.SetfamilyName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfamilyName=AValue) then exit;
+  FfamilyName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypename.Setformatted(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fformatted=AValue) then exit;
+  Fformatted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypename.SetgivenName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgivenName=AValue) then exit;
+  FgivenName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypename.SethonorificPrefix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhonorificPrefix=AValue) then exit;
+  FhonorificPrefix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypename.SethonorificSuffix(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhonorificSuffix=AValue) then exit;
+  FhonorificSuffix:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypename.SetmiddleName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmiddleName=AValue) then exit;
+  FmiddleName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypeorganizationsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypeorganizationsItem.Setdepartment(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdepartment=AValue) then exit;
+  Fdepartment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.SetendDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendDate=AValue) then exit;
+  FendDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Setlocation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocation=AValue) then exit;
+  Flocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Setprimary(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fprimary=AValue) then exit;
+  Fprimary:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.SetstartDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartDate=AValue) then exit;
+  FstartDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeorganizationsItem.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPersonTypeorganizationsItem.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypeplacesLivedItem
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypeplacesLivedItem.Setprimary(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fprimary=AValue) then exit;
+  Fprimary:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeplacesLivedItem.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPersonTypeurlsItem
+  --------------------------------------------------------------------}
+
+
+Procedure TPersonTypeurlsItem.Set_label(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_label=AValue) then exit;
+  F_label:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeurlsItem.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPersonTypeurlsItem.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPersonTypeurlsItem.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_label' : Result:='label';
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TPerson
+  --------------------------------------------------------------------}
+
+
+Procedure TPerson.SetaboutMe(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaboutMe=AValue) then exit;
+  FaboutMe:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setbirthday(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fbirthday=AValue) then exit;
+  Fbirthday:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetbraggingRights(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbraggingRights=AValue) then exit;
+  FbraggingRights:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetcircledByCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FcircledByCount=AValue) then exit;
+  FcircledByCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setcover(AIndex : Integer; const AValue : TPersonTypecover); 
+
+begin
+  If (Fcover=AValue) then exit;
+  Fcover:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetcurrentLocation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcurrentLocation=AValue) then exit;
+  FcurrentLocation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setdomain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdomain=AValue) then exit;
+  Fdomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setemails(AIndex : Integer; const AValue : TPersonTypeemailsArray); 
+
+begin
+  If (Femails=AValue) then exit;
+  Femails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setetag(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fetag=AValue) then exit;
+  Fetag:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setgender(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fgender=AValue) then exit;
+  Fgender:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setimage(AIndex : Integer; const AValue : TPersonTypeimage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetisPlusUser(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisPlusUser=AValue) then exit;
+  FisPlusUser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setname(AIndex : Integer; const AValue : TPersonTypename); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setnickname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fnickname=AValue) then exit;
+  Fnickname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetobjectType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectType=AValue) then exit;
+  FobjectType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setoccupation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Foccupation=AValue) then exit;
+  Foccupation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setorganizations(AIndex : Integer; const AValue : TPersonTypeorganizationsArray); 
+
+begin
+  If (Forganizations=AValue) then exit;
+  Forganizations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetplacesLived(AIndex : Integer; const AValue : TPersonTypeplacesLivedArray); 
+
+begin
+  If (FplacesLived=AValue) then exit;
+  FplacesLived:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetplusOneCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FplusOneCount=AValue) then exit;
+  FplusOneCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.SetrelationshipStatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrelationshipStatus=AValue) then exit;
+  FrelationshipStatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setskills(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fskills=AValue) then exit;
+  Fskills:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Settagline(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftagline=AValue) then exit;
+  Ftagline:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Seturls(AIndex : Integer; const AValue : TPersonTypeurlsArray); 
+
+begin
+  If (Furls=AValue) then exit;
+  Furls:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPerson.Setverified(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fverified=AValue) then exit;
+  Fverified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPerson.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'emails' : SetLength(Femails,ALength);
+  'organizations' : SetLength(Forganizations,ALength);
+  'placeslived' : SetLength(FplacesLived,ALength);
+  'urls' : SetLength(Furls,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPlaceTypeaddress
+  --------------------------------------------------------------------}
+
+
+Procedure TPlaceTypeaddress.Setformatted(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fformatted=AValue) then exit;
+  Fformatted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPlaceTypeposition
+  --------------------------------------------------------------------}
+
+
+Procedure TPlaceTypeposition.Setlatitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flatitude=AValue) then exit;
+  Flatitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlaceTypeposition.Setlongitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flongitude=AValue) then exit;
+  Flongitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPlace
+  --------------------------------------------------------------------}
+
+
+Procedure TPlace.Setaddress(AIndex : Integer; const AValue : TPlaceTypeaddress); 
+
+begin
+  If (Faddress=AValue) then exit;
+  Faddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlace.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlace.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlace.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlace.Setposition(AIndex : Integer; const AValue : TPlaceTypeposition); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPlusDomainsAclentryResource
+  --------------------------------------------------------------------}
+
+
+Procedure TPlusDomainsAclentryResource.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlusDomainsAclentryResource.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlusDomainsAclentryResource.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPlusDomainsAclentryResource.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TVideostream
+  --------------------------------------------------------------------}
+
+
+Procedure TVideostream.Setheight(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fheight=AValue) then exit;
+  Fheight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVideostream.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVideostream.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVideostream.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TVideostream.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TActivitiesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TActivitiesResource.ResourceName : String;
+
+begin
+  Result:='activities';
+end;
+
+Class Function TActivitiesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TActivitiesResource.Get(activityId: string) : TActivity;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'activities/{activityId}';
+  _Methodid   = 'plusDomains.activities.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['activityId',activityId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TActivity) as TActivity;
+end;
+
+Function TActivitiesResource.Insert(userId: string; aActivity : TActivity; AQuery : string = '') : TActivity;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'people/{userId}/activities';
+  _Methodid   = 'plusDomains.activities.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aActivity,TActivity) as TActivity;
+end;
+
+
+Function TActivitiesResource.Insert(userId: string; aActivity : TActivity; AQuery : TActivitiesinsertOptions) : TActivity;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'preview',AQuery.preview);
+  Result:=Insert(userId,aActivity,_Q);
+end;
+
+Function TActivitiesResource.List(collection: string; userId: string; AQuery : string = '') : TActivityFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'people/{userId}/activities/{collection}';
+  _Methodid   = 'plusDomains.activities.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TActivityFeed) as TActivityFeed;
+end;
+
+
+Function TActivitiesResource.List(collection: string; userId: string; AQuery : TActivitieslistOptions) : TActivityFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(collection,userId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TAudiencesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TAudiencesResource.ResourceName : String;
+
+begin
+  Result:='audiences';
+end;
+
+Class Function TAudiencesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TAudiencesResource.List(userId: string; AQuery : string = '') : TAudiencesFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'people/{userId}/audiences';
+  _Methodid   = 'plusDomains.audiences.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TAudiencesFeed) as TAudiencesFeed;
+end;
+
+
+Function TAudiencesResource.List(userId: string; AQuery : TAudienceslistOptions) : TAudiencesFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(userId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCirclesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCirclesResource.ResourceName : String;
+
+begin
+  Result:='circles';
+end;
+
+Class Function TCirclesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TCirclesResource.AddPeople(circleId: string; AQuery : string = '') : TCircle;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'circles/{circleId}/people';
+  _Methodid   = 'plusDomains.circles.addPeople';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCircle) as TCircle;
+end;
+
+
+Function TCirclesResource.AddPeople(circleId: string; AQuery : TCirclesaddPeopleOptions) : TCircle;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'email',AQuery.email);
+  AddToQuery(_Q,'userId',AQuery.userId);
+  Result:=AddPeople(circleId,_Q);
+end;
+
+Function TCirclesResource.Get(circleId: string) : TCircle;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'circles/{circleId}';
+  _Methodid   = 'plusDomains.circles.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCircle) as TCircle;
+end;
+
+Function TCirclesResource.Insert(userId: string; aCircle : TCircle) : TCircle;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'people/{userId}/circles';
+  _Methodid   = 'plusDomains.circles.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
+end;
+
+Function TCirclesResource.List(userId: string; AQuery : string = '') : TCircleFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'people/{userId}/circles';
+  _Methodid   = 'plusDomains.circles.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCircleFeed) as TCircleFeed;
+end;
+
+
+Function TCirclesResource.List(userId: string; AQuery : TCircleslistOptions) : TCircleFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(userId,_Q);
+end;
+
+Function TCirclesResource.Patch(circleId: string; aCircle : TCircle) : TCircle;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'circles/{circleId}';
+  _Methodid   = 'plusDomains.circles.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
+end;
+
+Procedure TCirclesResource.Remove(circleId: string);
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'circles/{circleId}';
+  _Methodid   = 'plusDomains.circles.remove';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
+end;
+
+Procedure TCirclesResource.RemovePeople(circleId: string; AQuery : string = '');
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'circles/{circleId}/people';
+  _Methodid   = 'plusDomains.circles.removePeople';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  ServiceCall(_HTTPMethod,_P,AQuery,Nil,Nil);
+end;
+
+
+Procedure TCirclesResource.RemovePeople(circleId: string; AQuery : TCirclesremovePeopleOptions);
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'email',AQuery.email);
+  AddToQuery(_Q,'userId',AQuery.userId);
+  RemovePeople(circleId,_Q);
+end;
+
+Function TCirclesResource.Update(circleId: string; aCircle : TCircle) : TCircle;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'circles/{circleId}';
+  _Methodid   = 'plusDomains.circles.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCircle,TCircle) as TCircle;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TCommentsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TCommentsResource.ResourceName : String;
+
+begin
+  Result:='comments';
+end;
+
+Class Function TCommentsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TCommentsResource.Get(commentId: string) : TComment;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'comments/{commentId}';
+  _Methodid   = 'plusDomains.comments.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['commentId',commentId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TComment) as TComment;
+end;
+
+Function TCommentsResource.Insert(activityId: string; aComment : TComment) : TComment;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'activities/{activityId}/comments';
+  _Methodid   = 'plusDomains.comments.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['activityId',activityId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aComment,TComment) as TComment;
+end;
+
+Function TCommentsResource.List(activityId: string; AQuery : string = '') : TCommentFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'activities/{activityId}/comments';
+  _Methodid   = 'plusDomains.comments.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['activityId',activityId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TCommentFeed) as TCommentFeed;
+end;
+
+
+Function TCommentsResource.List(activityId: string; AQuery : TCommentslistOptions) : TCommentFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'sortOrder',AQuery.sortOrder);
+  Result:=List(activityId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TMediaResource
+  --------------------------------------------------------------------}
+
+
+Class Function TMediaResource.ResourceName : String;
+
+begin
+  Result:='media';
+end;
+
+Class Function TMediaResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TMediaResource.Insert(collection: string; userId: string; aMedia : TMedia) : TMedia;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'people/{userId}/media/{collection}';
+  _Methodid   = 'plusDomains.media.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aMedia,TMedia) as TMedia;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPeopleResource
+  --------------------------------------------------------------------}
+
+
+Class Function TPeopleResource.ResourceName : String;
+
+begin
+  Result:='people';
+end;
+
+Class Function TPeopleResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TplusDomainsAPI;
+end;
+
+Function TPeopleResource.Get(userId: string) : TPerson;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'people/{userId}';
+  _Methodid   = 'plusDomains.people.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TPerson) as TPerson;
+end;
+
+Function TPeopleResource.List(collection: string; userId: string; AQuery : string = '') : TPeopleFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'people/{userId}/people/{collection}';
+  _Methodid   = 'plusDomains.people.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['collection',collection,'userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
+end;
+
+
+Function TPeopleResource.List(collection: string; userId: string; AQuery : TPeoplelistOptions) : TPeopleFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'orderBy',AQuery.orderBy);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(collection,userId,_Q);
+end;
+
+Function TPeopleResource.ListByActivity(activityId: string; collection: string; AQuery : string = '') : TPeopleFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'activities/{activityId}/people/{collection}';
+  _Methodid   = 'plusDomains.people.listByActivity';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['activityId',activityId,'collection',collection]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
+end;
+
+
+Function TPeopleResource.ListByActivity(activityId: string; collection: string; AQuery : TPeoplelistByActivityOptions) : TPeopleFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=ListByActivity(activityId,collection,_Q);
+end;
+
+Function TPeopleResource.ListByCircle(circleId: string; AQuery : string = '') : TPeopleFeed;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'circles/{circleId}/people';
+  _Methodid   = 'plusDomains.people.listByCircle';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['circleId',circleId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TPeopleFeed) as TPeopleFeed;
+end;
+
+
+Function TPeopleResource.ListByCircle(circleId: string; AQuery : TPeoplelistByCircleOptions) : TPeopleFeed;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=ListByCircle(circleId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPlusDomainsAPI
+  --------------------------------------------------------------------}
+
+Class Function TPlusDomainsAPI.APIName : String;
+
+begin
+  Result:='plusDomains';
+end;
+
+Class Function TPlusDomainsAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TPlusDomainsAPI.APIRevision : String;
+
+begin
+  Result:='20160521';
+end;
+
+Class Function TPlusDomainsAPI.APIID : String;
+
+begin
+  Result:='plusDomains:v1';
+end;
+
+Class Function TPlusDomainsAPI.APITitle : String;
+
+begin
+  Result:='Google+ Domains API';
+end;
+
+Class Function TPlusDomainsAPI.APIDescription : String;
+
+begin
+  Result:='Builds on top of the Google+ platform for Google Apps Domains.';
+end;
+
+Class Function TPlusDomainsAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TPlusDomainsAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TPlusDomainsAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/gplus-16.png';
+end;
+
+Class Function TPlusDomainsAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/gplus-32.png';
+end;
+
+Class Function TPlusDomainsAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/+/domains/';
+end;
+
+Class Function TPlusDomainsAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TPlusDomainsAPI.APIbasePath : string;
+
+begin
+  Result:='/plusDomains/v1/';
+end;
+
+Class Function TPlusDomainsAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/plusDomains/v1/';
+end;
+
+Class Function TPlusDomainsAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TPlusDomainsAPI.APIservicePath : string;
+
+begin
+  Result:='plusDomains/v1/';
+end;
+
+Class Function TPlusDomainsAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TPlusDomainsAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,10);
+  Result[0].Name:='https://www.googleapis.com/auth/plus.circles.read';
+  Result[0].Description:='View your circles and the people and pages in them';
+  Result[1].Name:='https://www.googleapis.com/auth/plus.circles.write';
+  Result[1].Description:='Manage your circles and add people and pages. People and pages you add to your circles will be notified. Others may see this information publicly. People you add to circles can use Hangouts with you.';
+  Result[2].Name:='https://www.googleapis.com/auth/plus.login';
+  Result[2].Description:='Know the list of people in your circles, your age range, and language';
+  Result[3].Name:='https://www.googleapis.com/auth/plus.me';
+  Result[3].Description:='Know who you are on Google';
+  Result[4].Name:='https://www.googleapis.com/auth/plus.media.upload';
+  Result[4].Description:='Send your photos and videos to Google+';
+  Result[5].Name:='https://www.googleapis.com/auth/plus.profiles.read';
+  Result[5].Description:='View your own Google+ profile and profiles visible to you';
+  Result[6].Name:='https://www.googleapis.com/auth/plus.stream.read';
+  Result[6].Description:='View your Google+ posts, comments, and stream';
+  Result[7].Name:='https://www.googleapis.com/auth/plus.stream.write';
+  Result[7].Description:='Manage your Google+ posts, comments, and stream';
+  Result[8].Name:='https://www.googleapis.com/auth/userinfo.email';
+  Result[8].Description:='View your email address';
+  Result[9].Name:='https://www.googleapis.com/auth/userinfo.profile';
+  Result[9].Description:='View your basic profile info';
+  
+end;
+
+Class Function TPlusDomainsAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TPlusDomainsAPI.RegisterAPIResources;
+
+begin
+  TAcl.RegisterObject;
+  TActivityTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.RegisterObject;
+  TActivityTypeactorTypeclientSpecificActorInfo.RegisterObject;
+  TActivityTypeactorTypeimage.RegisterObject;
+  TActivityTypeactorTypename.RegisterObject;
+  TActivityTypeactorTypeverification.RegisterObject;
+  TActivityTypeactor.RegisterObject;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.RegisterObject;
+  TActivityTypeobjectTypeactorTypeclientSpecificActorInfo.RegisterObject;
+  TActivityTypeobjectTypeactorTypeimage.RegisterObject;
+  TActivityTypeobjectTypeactorTypeverification.RegisterObject;
+  TActivityTypeobjectTypeactor.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypeembed.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypefullImage.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypeimage.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypepreviewThumbnailsItem.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItemTypeimage.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItemTypethumbnailsItem.RegisterObject;
+  TActivityTypeobjectTypeattachmentsItem.RegisterObject;
+  TActivityTypeobjectTypeplusoners.RegisterObject;
+  TActivityTypeobjectTypereplies.RegisterObject;
+  TActivityTypeobjectTyperesharers.RegisterObject;
+  TActivityTypeobjectTypestatusForViewer.RegisterObject;
+  TActivityTypeobject.RegisterObject;
+  TActivityTypeprovider.RegisterObject;
+  TActivity.RegisterObject;
+  TActivityFeed.RegisterObject;
+  TAudience.RegisterObject;
+  TAudiencesFeed.RegisterObject;
+  TCircleTypepeople.RegisterObject;
+  TCircle.RegisterObject;
+  TCircleFeed.RegisterObject;
+  TCommentTypeactorTypeclientSpecificActorInfoTypeyoutubeActorInfo.RegisterObject;
+  TCommentTypeactorTypeclientSpecificActorInfo.RegisterObject;
+  TCommentTypeactorTypeimage.RegisterObject;
+  TCommentTypeactorTypeverification.RegisterObject;
+  TCommentTypeactor.RegisterObject;
+  TCommentTypeinReplyToItem.RegisterObject;
+  TCommentTypeobject.RegisterObject;
+  TCommentTypeplusoners.RegisterObject;
+  TComment.RegisterObject;
+  TCommentFeed.RegisterObject;
+  TMediaTypeauthorTypeimage.RegisterObject;
+  TMediaTypeauthor.RegisterObject;
+  TMediaTypeexif.RegisterObject;
+  TMedia.RegisterObject;
+  TPeopleFeed.RegisterObject;
+  TPersonTypecoverTypecoverInfo.RegisterObject;
+  TPersonTypecoverTypecoverPhoto.RegisterObject;
+  TPersonTypecover.RegisterObject;
+  TPersonTypeemailsItem.RegisterObject;
+  TPersonTypeimage.RegisterObject;
+  TPersonTypename.RegisterObject;
+  TPersonTypeorganizationsItem.RegisterObject;
+  TPersonTypeplacesLivedItem.RegisterObject;
+  TPersonTypeurlsItem.RegisterObject;
+  TPerson.RegisterObject;
+  TPlaceTypeaddress.RegisterObject;
+  TPlaceTypeposition.RegisterObject;
+  TPlace.RegisterObject;
+  TPlusDomainsAclentryResource.RegisterObject;
+  TVideostream.RegisterObject;
+end;
+
+
+Function TPlusDomainsAPI.GetActivitiesInstance : TActivitiesResource;
+
+begin
+  if (FActivitiesInstance=Nil) then
+    FActivitiesInstance:=CreateActivitiesResource;
+  Result:=FActivitiesInstance;
+end;
+
+Function TPlusDomainsAPI.CreateActivitiesResource : TActivitiesResource;
+
+begin
+  Result:=CreateActivitiesResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreateActivitiesResource(AOwner : TComponent) : TActivitiesResource;
+
+begin
+  Result:=TActivitiesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlusDomainsAPI.GetAudiencesInstance : TAudiencesResource;
+
+begin
+  if (FAudiencesInstance=Nil) then
+    FAudiencesInstance:=CreateAudiencesResource;
+  Result:=FAudiencesInstance;
+end;
+
+Function TPlusDomainsAPI.CreateAudiencesResource : TAudiencesResource;
+
+begin
+  Result:=CreateAudiencesResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreateAudiencesResource(AOwner : TComponent) : TAudiencesResource;
+
+begin
+  Result:=TAudiencesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlusDomainsAPI.GetCirclesInstance : TCirclesResource;
+
+begin
+  if (FCirclesInstance=Nil) then
+    FCirclesInstance:=CreateCirclesResource;
+  Result:=FCirclesInstance;
+end;
+
+Function TPlusDomainsAPI.CreateCirclesResource : TCirclesResource;
+
+begin
+  Result:=CreateCirclesResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreateCirclesResource(AOwner : TComponent) : TCirclesResource;
+
+begin
+  Result:=TCirclesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlusDomainsAPI.GetCommentsInstance : TCommentsResource;
+
+begin
+  if (FCommentsInstance=Nil) then
+    FCommentsInstance:=CreateCommentsResource;
+  Result:=FCommentsInstance;
+end;
+
+Function TPlusDomainsAPI.CreateCommentsResource : TCommentsResource;
+
+begin
+  Result:=CreateCommentsResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreateCommentsResource(AOwner : TComponent) : TCommentsResource;
+
+begin
+  Result:=TCommentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlusDomainsAPI.GetMediaInstance : TMediaResource;
+
+begin
+  if (FMediaInstance=Nil) then
+    FMediaInstance:=CreateMediaResource;
+  Result:=FMediaInstance;
+end;
+
+Function TPlusDomainsAPI.CreateMediaResource : TMediaResource;
+
+begin
+  Result:=CreateMediaResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreateMediaResource(AOwner : TComponent) : TMediaResource;
+
+begin
+  Result:=TMediaResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TPlusDomainsAPI.GetPeopleInstance : TPeopleResource;
+
+begin
+  if (FPeopleInstance=Nil) then
+    FPeopleInstance:=CreatePeopleResource;
+  Result:=FPeopleInstance;
+end;
+
+Function TPlusDomainsAPI.CreatePeopleResource : TPeopleResource;
+
+begin
+  Result:=CreatePeopleResource(Self);
+end;
+
+
+Function TPlusDomainsAPI.CreatePeopleResource(AOwner : TComponent) : TPeopleResource;
+
+begin
+  Result:=TPeopleResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TPlusDomainsAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 358 - 411
packages/googleapi/src/googleprediction.pp


+ 2506 - 0
packages/googleapi/src/googleproximitybeacon.pp

@@ -0,0 +1,2506 @@
+unit googleproximitybeacon;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TBeacon = Class;
+  TAdvertisedId = Class;
+  TLatLng = Class;
+  TIndoorLevel = Class;
+  TEphemeralIdRegistration = Class;
+  TEmpty = Class;
+  TListBeaconsResponse = Class;
+  TBeaconAttachment = Class;
+  TListBeaconAttachmentsResponse = Class;
+  TDeleteAttachmentsResponse = Class;
+  TListNamespacesResponse = Class;
+  TNamespace = Class;
+  TEphemeralIdRegistrationParams = Class;
+  TListDiagnosticsResponse = Class;
+  TDiagnostics = Class;
+  TDate = Class;
+  TGetInfoForObservedBeaconsRequest = Class;
+  TObservation = Class;
+  TGetInfoForObservedBeaconsResponse = Class;
+  TBeaconInfo = Class;
+  TAttachmentInfo = Class;
+  TBeaconArray = Array of TBeacon;
+  TAdvertisedIdArray = Array of TAdvertisedId;
+  TLatLngArray = Array of TLatLng;
+  TIndoorLevelArray = Array of TIndoorLevel;
+  TEphemeralIdRegistrationArray = Array of TEphemeralIdRegistration;
+  TEmptyArray = Array of TEmpty;
+  TListBeaconsResponseArray = Array of TListBeaconsResponse;
+  TBeaconAttachmentArray = Array of TBeaconAttachment;
+  TListBeaconAttachmentsResponseArray = Array of TListBeaconAttachmentsResponse;
+  TDeleteAttachmentsResponseArray = Array of TDeleteAttachmentsResponse;
+  TListNamespacesResponseArray = Array of TListNamespacesResponse;
+  TNamespaceArray = Array of TNamespace;
+  TEphemeralIdRegistrationParamsArray = Array of TEphemeralIdRegistrationParams;
+  TListDiagnosticsResponseArray = Array of TListDiagnosticsResponse;
+  TDiagnosticsArray = Array of TDiagnostics;
+  TDateArray = Array of TDate;
+  TGetInfoForObservedBeaconsRequestArray = Array of TGetInfoForObservedBeaconsRequest;
+  TObservationArray = Array of TObservation;
+  TGetInfoForObservedBeaconsResponseArray = Array of TGetInfoForObservedBeaconsResponse;
+  TBeaconInfoArray = Array of TBeaconInfo;
+  TAttachmentInfoArray = Array of TAttachmentInfo;
+  //Anonymous types, using auto-generated names
+  TBeaconTypeproperties = Class;
+  TListBeaconsResponseTypebeaconsArray = Array of TBeacon;
+  TListBeaconAttachmentsResponseTypeattachmentsArray = Array of TBeaconAttachment;
+  TListNamespacesResponseTypenamespacesArray = Array of TNamespace;
+  TListDiagnosticsResponseTypediagnosticsArray = Array of TDiagnostics;
+  TGetInfoForObservedBeaconsRequestTypeobservationsArray = Array of TObservation;
+  TGetInfoForObservedBeaconsResponseTypebeaconsArray = Array of TBeaconInfo;
+  TBeaconInfoTypeattachmentsArray = Array of TAttachmentInfo;
+  
+  { --------------------------------------------------------------------
+    TBeaconTypeproperties
+    --------------------------------------------------------------------}
+  
+  TBeaconTypeproperties = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TBeaconTypepropertiesClass = Class of TBeaconTypeproperties;
+  
+  { --------------------------------------------------------------------
+    TBeacon
+    --------------------------------------------------------------------}
+  
+  TBeacon = Class(TGoogleBaseObject)
+  Private
+    FbeaconName : String;
+    FadvertisedId : TAdvertisedId;
+    Fstatus : String;
+    FplaceId : String;
+    FlatLng : TLatLng;
+    FindoorLevel : TIndoorLevel;
+    FexpectedStability : String;
+    Fdescription : String;
+    Fproperties : TBeaconTypeproperties;
+    FephemeralIdRegistration : TEphemeralIdRegistration;
+    FprovisioningKey : String;
+  Protected
+    //Property setters
+    Procedure SetbeaconName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplaceId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlatLng(AIndex : Integer; const AValue : TLatLng); virtual;
+    Procedure SetindoorLevel(AIndex : Integer; const AValue : TIndoorLevel); virtual;
+    Procedure SetexpectedStability(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TBeaconTypeproperties); virtual;
+    Procedure SetephemeralIdRegistration(AIndex : Integer; const AValue : TEphemeralIdRegistration); virtual;
+    Procedure SetprovisioningKey(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property beaconName : String Index 0 Read FbeaconName Write SetbeaconName;
+    Property advertisedId : TAdvertisedId Index 8 Read FadvertisedId Write SetadvertisedId;
+    Property status : String Index 16 Read Fstatus Write Setstatus;
+    Property placeId : String Index 24 Read FplaceId Write SetplaceId;
+    Property latLng : TLatLng Index 32 Read FlatLng Write SetlatLng;
+    Property indoorLevel : TIndoorLevel Index 40 Read FindoorLevel Write SetindoorLevel;
+    Property expectedStability : String Index 48 Read FexpectedStability Write SetexpectedStability;
+    Property description : String Index 56 Read Fdescription Write Setdescription;
+    Property properties : TBeaconTypeproperties Index 64 Read Fproperties Write Setproperties;
+    Property ephemeralIdRegistration : TEphemeralIdRegistration Index 72 Read FephemeralIdRegistration Write SetephemeralIdRegistration;
+    Property provisioningKey : String Index 80 Read FprovisioningKey Write SetprovisioningKey;
+  end;
+  TBeaconClass = Class of TBeacon;
+  
+  { --------------------------------------------------------------------
+    TAdvertisedId
+    --------------------------------------------------------------------}
+  
+  TAdvertisedId = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fid : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property id : String Index 8 Read Fid Write Setid;
+  end;
+  TAdvertisedIdClass = Class of TAdvertisedId;
+  
+  { --------------------------------------------------------------------
+    TLatLng
+    --------------------------------------------------------------------}
+  
+  TLatLng = Class(TGoogleBaseObject)
+  Private
+    Flatitude : double;
+    Flongitude : double;
+  Protected
+    //Property setters
+    Procedure Setlatitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlongitude(AIndex : Integer; const AValue : double); virtual;
+  Public
+  Published
+    Property latitude : double Index 0 Read Flatitude Write Setlatitude;
+    Property longitude : double Index 8 Read Flongitude Write Setlongitude;
+  end;
+  TLatLngClass = Class of TLatLng;
+  
+  { --------------------------------------------------------------------
+    TIndoorLevel
+    --------------------------------------------------------------------}
+  
+  TIndoorLevel = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+  end;
+  TIndoorLevelClass = Class of TIndoorLevel;
+  
+  { --------------------------------------------------------------------
+    TEphemeralIdRegistration
+    --------------------------------------------------------------------}
+  
+  TEphemeralIdRegistration = Class(TGoogleBaseObject)
+  Private
+    FbeaconEcdhPublicKey : String;
+    FserviceEcdhPublicKey : String;
+    FbeaconIdentityKey : String;
+    FrotationPeriodExponent : integer;
+    FinitialClockValue : String;
+    FinitialEid : String;
+  Protected
+    //Property setters
+    Procedure SetbeaconEcdhPublicKey(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetserviceEcdhPublicKey(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbeaconIdentityKey(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrotationPeriodExponent(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinitialClockValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinitialEid(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property beaconEcdhPublicKey : String Index 0 Read FbeaconEcdhPublicKey Write SetbeaconEcdhPublicKey;
+    Property serviceEcdhPublicKey : String Index 8 Read FserviceEcdhPublicKey Write SetserviceEcdhPublicKey;
+    Property beaconIdentityKey : String Index 16 Read FbeaconIdentityKey Write SetbeaconIdentityKey;
+    Property rotationPeriodExponent : integer Index 24 Read FrotationPeriodExponent Write SetrotationPeriodExponent;
+    Property initialClockValue : String Index 32 Read FinitialClockValue Write SetinitialClockValue;
+    Property initialEid : String Index 40 Read FinitialEid Write SetinitialEid;
+  end;
+  TEphemeralIdRegistrationClass = Class of TEphemeralIdRegistration;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TListBeaconsResponse
+    --------------------------------------------------------------------}
+  
+  TListBeaconsResponse = Class(TGoogleBaseObject)
+  Private
+    Fbeacons : TListBeaconsResponseTypebeaconsArray;
+    FnextPageToken : String;
+    FtotalCount : String;
+  Protected
+    //Property setters
+    Procedure Setbeacons(AIndex : Integer; const AValue : TListBeaconsResponseTypebeaconsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalCount(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property beacons : TListBeaconsResponseTypebeaconsArray Index 0 Read Fbeacons Write Setbeacons;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+    Property totalCount : String Index 16 Read FtotalCount Write SettotalCount;
+  end;
+  TListBeaconsResponseClass = Class of TListBeaconsResponse;
+  
+  { --------------------------------------------------------------------
+    TBeaconAttachment
+    --------------------------------------------------------------------}
+  
+  TBeaconAttachment = Class(TGoogleBaseObject)
+  Private
+    FattachmentName : String;
+    FnamespacedType : String;
+    Fdata : String;
+  Protected
+    //Property setters
+    Procedure SetattachmentName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnamespacedType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property attachmentName : String Index 0 Read FattachmentName Write SetattachmentName;
+    Property namespacedType : String Index 8 Read FnamespacedType Write SetnamespacedType;
+    Property data : String Index 16 Read Fdata Write Setdata;
+  end;
+  TBeaconAttachmentClass = Class of TBeaconAttachment;
+  
+  { --------------------------------------------------------------------
+    TListBeaconAttachmentsResponse
+    --------------------------------------------------------------------}
+  
+  TListBeaconAttachmentsResponse = Class(TGoogleBaseObject)
+  Private
+    Fattachments : TListBeaconAttachmentsResponseTypeattachmentsArray;
+  Protected
+    //Property setters
+    Procedure Setattachments(AIndex : Integer; const AValue : TListBeaconAttachmentsResponseTypeattachmentsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property attachments : TListBeaconAttachmentsResponseTypeattachmentsArray Index 0 Read Fattachments Write Setattachments;
+  end;
+  TListBeaconAttachmentsResponseClass = Class of TListBeaconAttachmentsResponse;
+  
+  { --------------------------------------------------------------------
+    TDeleteAttachmentsResponse
+    --------------------------------------------------------------------}
+  
+  TDeleteAttachmentsResponse = Class(TGoogleBaseObject)
+  Private
+    FnumDeleted : integer;
+  Protected
+    //Property setters
+    Procedure SetnumDeleted(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property numDeleted : integer Index 0 Read FnumDeleted Write SetnumDeleted;
+  end;
+  TDeleteAttachmentsResponseClass = Class of TDeleteAttachmentsResponse;
+  
+  { --------------------------------------------------------------------
+    TListNamespacesResponse
+    --------------------------------------------------------------------}
+  
+  TListNamespacesResponse = Class(TGoogleBaseObject)
+  Private
+    Fnamespaces : TListNamespacesResponseTypenamespacesArray;
+  Protected
+    //Property setters
+    Procedure Setnamespaces(AIndex : Integer; const AValue : TListNamespacesResponseTypenamespacesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property namespaces : TListNamespacesResponseTypenamespacesArray Index 0 Read Fnamespaces Write Setnamespaces;
+  end;
+  TListNamespacesResponseClass = Class of TListNamespacesResponse;
+  
+  { --------------------------------------------------------------------
+    TNamespace
+    --------------------------------------------------------------------}
+  
+  TNamespace = Class(TGoogleBaseObject)
+  Private
+    FnamespaceName : String;
+    FservingVisibility : String;
+  Protected
+    //Property setters
+    Procedure SetnamespaceName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetservingVisibility(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property namespaceName : String Index 0 Read FnamespaceName Write SetnamespaceName;
+    Property servingVisibility : String Index 8 Read FservingVisibility Write SetservingVisibility;
+  end;
+  TNamespaceClass = Class of TNamespace;
+  
+  { --------------------------------------------------------------------
+    TEphemeralIdRegistrationParams
+    --------------------------------------------------------------------}
+  
+  TEphemeralIdRegistrationParams = Class(TGoogleBaseObject)
+  Private
+    FserviceEcdhPublicKey : String;
+    FminRotationPeriodExponent : integer;
+    FmaxRotationPeriodExponent : integer;
+  Protected
+    //Property setters
+    Procedure SetserviceEcdhPublicKey(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetminRotationPeriodExponent(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxRotationPeriodExponent(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property serviceEcdhPublicKey : String Index 0 Read FserviceEcdhPublicKey Write SetserviceEcdhPublicKey;
+    Property minRotationPeriodExponent : integer Index 8 Read FminRotationPeriodExponent Write SetminRotationPeriodExponent;
+    Property maxRotationPeriodExponent : integer Index 16 Read FmaxRotationPeriodExponent Write SetmaxRotationPeriodExponent;
+  end;
+  TEphemeralIdRegistrationParamsClass = Class of TEphemeralIdRegistrationParams;
+  
+  { --------------------------------------------------------------------
+    TListDiagnosticsResponse
+    --------------------------------------------------------------------}
+  
+  TListDiagnosticsResponse = Class(TGoogleBaseObject)
+  Private
+    Fdiagnostics : TListDiagnosticsResponseTypediagnosticsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setdiagnostics(AIndex : Integer; const AValue : TListDiagnosticsResponseTypediagnosticsArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property diagnostics : TListDiagnosticsResponseTypediagnosticsArray Index 0 Read Fdiagnostics Write Setdiagnostics;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListDiagnosticsResponseClass = Class of TListDiagnosticsResponse;
+  
+  { --------------------------------------------------------------------
+    TDiagnostics
+    --------------------------------------------------------------------}
+  
+  TDiagnostics = Class(TGoogleBaseObject)
+  Private
+    FbeaconName : String;
+    FestimatedLowBatteryDate : TDate;
+    Falerts : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetbeaconName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetestimatedLowBatteryDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure Setalerts(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property beaconName : String Index 0 Read FbeaconName Write SetbeaconName;
+    Property estimatedLowBatteryDate : TDate Index 8 Read FestimatedLowBatteryDate Write SetestimatedLowBatteryDate;
+    Property alerts : TStringArray Index 16 Read Falerts Write Setalerts;
+  end;
+  TDiagnosticsClass = Class of TDiagnostics;
+  
+  { --------------------------------------------------------------------
+    TDate
+    --------------------------------------------------------------------}
+  
+  TDate = Class(TGoogleBaseObject)
+  Private
+    Fyear : integer;
+    Fmonth : integer;
+    Fday : integer;
+  Protected
+    //Property setters
+    Procedure Setyear(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmonth(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setday(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property year : integer Index 0 Read Fyear Write Setyear;
+    Property month : integer Index 8 Read Fmonth Write Setmonth;
+    Property day : integer Index 16 Read Fday Write Setday;
+  end;
+  TDateClass = Class of TDate;
+  
+  { --------------------------------------------------------------------
+    TGetInfoForObservedBeaconsRequest
+    --------------------------------------------------------------------}
+  
+  TGetInfoForObservedBeaconsRequest = Class(TGoogleBaseObject)
+  Private
+    Fobservations : TGetInfoForObservedBeaconsRequestTypeobservationsArray;
+    FnamespacedTypes : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setobservations(AIndex : Integer; const AValue : TGetInfoForObservedBeaconsRequestTypeobservationsArray); virtual;
+    Procedure SetnamespacedTypes(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property observations : TGetInfoForObservedBeaconsRequestTypeobservationsArray Index 0 Read Fobservations Write Setobservations;
+    Property namespacedTypes : TStringArray Index 8 Read FnamespacedTypes Write SetnamespacedTypes;
+  end;
+  TGetInfoForObservedBeaconsRequestClass = Class of TGetInfoForObservedBeaconsRequest;
+  
+  { --------------------------------------------------------------------
+    TObservation
+    --------------------------------------------------------------------}
+  
+  TObservation = Class(TGoogleBaseObject)
+  Private
+    FadvertisedId : TAdvertisedId;
+    Ftelemetry : String;
+    FtimestampMs : String;
+  Protected
+    //Property setters
+    Procedure SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); virtual;
+    Procedure Settelemetry(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettimestampMs(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property advertisedId : TAdvertisedId Index 0 Read FadvertisedId Write SetadvertisedId;
+    Property telemetry : String Index 8 Read Ftelemetry Write Settelemetry;
+    Property timestampMs : String Index 16 Read FtimestampMs Write SettimestampMs;
+  end;
+  TObservationClass = Class of TObservation;
+  
+  { --------------------------------------------------------------------
+    TGetInfoForObservedBeaconsResponse
+    --------------------------------------------------------------------}
+  
+  TGetInfoForObservedBeaconsResponse = Class(TGoogleBaseObject)
+  Private
+    Fbeacons : TGetInfoForObservedBeaconsResponseTypebeaconsArray;
+  Protected
+    //Property setters
+    Procedure Setbeacons(AIndex : Integer; const AValue : TGetInfoForObservedBeaconsResponseTypebeaconsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property beacons : TGetInfoForObservedBeaconsResponseTypebeaconsArray Index 0 Read Fbeacons Write Setbeacons;
+  end;
+  TGetInfoForObservedBeaconsResponseClass = Class of TGetInfoForObservedBeaconsResponse;
+  
+  { --------------------------------------------------------------------
+    TBeaconInfo
+    --------------------------------------------------------------------}
+  
+  TBeaconInfo = Class(TGoogleBaseObject)
+  Private
+    FadvertisedId : TAdvertisedId;
+    FbeaconName : String;
+    Fattachments : TBeaconInfoTypeattachmentsArray;
+  Protected
+    //Property setters
+    Procedure SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); virtual;
+    Procedure SetbeaconName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setattachments(AIndex : Integer; const AValue : TBeaconInfoTypeattachmentsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property advertisedId : TAdvertisedId Index 0 Read FadvertisedId Write SetadvertisedId;
+    Property beaconName : String Index 8 Read FbeaconName Write SetbeaconName;
+    Property attachments : TBeaconInfoTypeattachmentsArray Index 16 Read Fattachments Write Setattachments;
+  end;
+  TBeaconInfoClass = Class of TBeaconInfo;
+  
+  { --------------------------------------------------------------------
+    TAttachmentInfo
+    --------------------------------------------------------------------}
+  
+  TAttachmentInfo = Class(TGoogleBaseObject)
+  Private
+    FnamespacedType : String;
+    Fdata : String;
+  Protected
+    //Property setters
+    Procedure SetnamespacedType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property namespacedType : String Index 0 Read FnamespacedType Write SetnamespacedType;
+    Property data : String Index 8 Read Fdata Write Setdata;
+  end;
+  TAttachmentInfoClass = Class of TAttachmentInfo;
+  
+  { --------------------------------------------------------------------
+    TBeaconsAttachmentsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TBeaconsAttachmentsResource, method Create
+  
+  TBeaconsAttachmentsCreateOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsAttachmentsResource, method List
+  
+  TBeaconsAttachmentsListOptions = Record
+    namespacedType : String;
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsAttachmentsResource, method Delete
+  
+  TBeaconsAttachmentsDeleteOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsAttachmentsResource, method BatchDelete
+  
+  TBeaconsAttachmentsBatchDeleteOptions = Record
+    namespacedType : String;
+    projectId : String;
+  end;
+  
+  TBeaconsAttachmentsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(beaconName: string; aBeaconAttachment : TBeaconAttachment; AQuery : string  = '') : TBeaconAttachment;overload;
+    Function Create(beaconName: string; aBeaconAttachment : TBeaconAttachment; AQuery : TBeaconsAttachmentscreateOptions) : TBeaconAttachment;overload;
+    Function List(beaconName: string; AQuery : string  = '') : TListBeaconAttachmentsResponse;
+    Function List(beaconName: string; AQuery : TBeaconsAttachmentslistOptions) : TListBeaconAttachmentsResponse;
+    Function Delete(attachmentName: string; AQuery : string  = '') : TEmpty;
+    Function Delete(attachmentName: string; AQuery : TBeaconsAttachmentsdeleteOptions) : TEmpty;
+    Function BatchDelete(beaconName: string; AQuery : string  = '') : TDeleteAttachmentsResponse;
+    Function BatchDelete(beaconName: string; AQuery : TBeaconsAttachmentsbatchDeleteOptions) : TDeleteAttachmentsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TBeaconsDiagnosticsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TBeaconsDiagnosticsResource, method List
+  
+  TBeaconsDiagnosticsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+    alertFilter : String;
+    projectId : String;
+  end;
+  
+  TBeaconsDiagnosticsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(beaconName: string; AQuery : string  = '') : TListDiagnosticsResponse;
+    Function List(beaconName: string; AQuery : TBeaconsDiagnosticslistOptions) : TListDiagnosticsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TBeaconsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TBeaconsResource, method Register
+  
+  TBeaconsRegisterOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method Decommission
+  
+  TBeaconsDecommissionOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method Get
+  
+  TBeaconsGetOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method List
+  
+  TBeaconsListOptions = Record
+    q : String;
+    pageToken : String;
+    pageSize : integer;
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method Update
+  
+  TBeaconsUpdateOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method Activate
+  
+  TBeaconsActivateOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TBeaconsResource, method Deactivate
+  
+  TBeaconsDeactivateOptions = Record
+    projectId : String;
+  end;
+  
+  TBeaconsResource = Class(TGoogleResource)
+  Private
+    FAttachmentsInstance : TBeaconsAttachmentsResource;
+    FDiagnosticsInstance : TBeaconsDiagnosticsResource;
+    Function GetAttachmentsInstance : TBeaconsAttachmentsResource;virtual;
+    Function GetDiagnosticsInstance : TBeaconsDiagnosticsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Register(aBeacon : TBeacon; AQuery : string  = '') : TBeacon;
+    Function Register(aBeacon : TBeacon; AQuery : TBeaconsregisterOptions) : TBeacon;
+    Function Decommission(beaconName: string; AQuery : string  = '') : TEmpty;
+    Function Decommission(beaconName: string; AQuery : TBeaconsdecommissionOptions) : TEmpty;
+    Function Get(beaconName: string; AQuery : string  = '') : TBeacon;
+    Function Get(beaconName: string; AQuery : TBeaconsgetOptions) : TBeacon;
+    Function List(AQuery : string  = '') : TListBeaconsResponse;
+    Function List(AQuery : TBeaconslistOptions) : TListBeaconsResponse;
+    Function Update(beaconName: string; aBeacon : TBeacon; AQuery : string  = '') : TBeacon;
+    Function Update(beaconName: string; aBeacon : TBeacon; AQuery : TBeaconsupdateOptions) : TBeacon;
+    Function Activate(beaconName: string; AQuery : string  = '') : TEmpty;
+    Function Activate(beaconName: string; AQuery : TBeaconsactivateOptions) : TEmpty;
+    Function Deactivate(beaconName: string; AQuery : string  = '') : TEmpty;
+    Function Deactivate(beaconName: string; AQuery : TBeaconsdeactivateOptions) : TEmpty;
+    Function CreateAttachmentsResource(AOwner : TComponent) : TBeaconsAttachmentsResource;virtual;overload;
+    Function CreateAttachmentsResource : TBeaconsAttachmentsResource;virtual;overload;
+    Function CreateDiagnosticsResource(AOwner : TComponent) : TBeaconsDiagnosticsResource;virtual;overload;
+    Function CreateDiagnosticsResource : TBeaconsDiagnosticsResource;virtual;overload;
+    Property AttachmentsResource : TBeaconsAttachmentsResource Read GetAttachmentsInstance;
+    Property DiagnosticsResource : TBeaconsDiagnosticsResource Read GetDiagnosticsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TNamespacesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TNamespacesResource, method List
+  
+  TNamespacesListOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TNamespacesResource, method Update
+  
+  TNamespacesUpdateOptions = Record
+    projectId : String;
+  end;
+  
+  TNamespacesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(AQuery : string  = '') : TListNamespacesResponse;
+    Function List(AQuery : TNamespaceslistOptions) : TListNamespacesResponse;
+    Function Update(namespaceName: string; aNamespace : TNamespace; AQuery : string  = '') : TNamespace;
+    Function Update(namespaceName: string; aNamespace : TNamespace; AQuery : TNamespacesupdateOptions) : TNamespace;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TV1beta1Resource
+    --------------------------------------------------------------------}
+  
+  TV1beta1Resource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function GetEidparams : TEphemeralIdRegistrationParams;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TBeaconinfoResource
+    --------------------------------------------------------------------}
+  
+  TBeaconinfoResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Getforobserved(aGetInfoForObservedBeaconsRequest : TGetInfoForObservedBeaconsRequest) : TGetInfoForObservedBeaconsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProximitybeaconAPI
+    --------------------------------------------------------------------}
+  
+  TProximitybeaconAPI = Class(TGoogleAPI)
+  Private
+    FBeaconsAttachmentsInstance : TBeaconsAttachmentsResource;
+    FBeaconsDiagnosticsInstance : TBeaconsDiagnosticsResource;
+    FBeaconsInstance : TBeaconsResource;
+    FNamespacesInstance : TNamespacesResource;
+    FV1beta1Instance : TV1beta1Resource;
+    FBeaconinfoInstance : TBeaconinfoResource;
+    Function GetBeaconsAttachmentsInstance : TBeaconsAttachmentsResource;virtual;
+    Function GetBeaconsDiagnosticsInstance : TBeaconsDiagnosticsResource;virtual;
+    Function GetBeaconsInstance : TBeaconsResource;virtual;
+    Function GetNamespacesInstance : TNamespacesResource;virtual;
+    Function GetV1beta1Instance : TV1beta1Resource;virtual;
+    Function GetBeaconinfoInstance : TBeaconinfoResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateBeaconsAttachmentsResource(AOwner : TComponent) : TBeaconsAttachmentsResource;virtual;overload;
+    Function CreateBeaconsAttachmentsResource : TBeaconsAttachmentsResource;virtual;overload;
+    Function CreateBeaconsDiagnosticsResource(AOwner : TComponent) : TBeaconsDiagnosticsResource;virtual;overload;
+    Function CreateBeaconsDiagnosticsResource : TBeaconsDiagnosticsResource;virtual;overload;
+    Function CreateBeaconsResource(AOwner : TComponent) : TBeaconsResource;virtual;overload;
+    Function CreateBeaconsResource : TBeaconsResource;virtual;overload;
+    Function CreateNamespacesResource(AOwner : TComponent) : TNamespacesResource;virtual;overload;
+    Function CreateNamespacesResource : TNamespacesResource;virtual;overload;
+    Function CreateV1beta1Resource(AOwner : TComponent) : TV1beta1Resource;virtual;overload;
+    Function CreateV1beta1Resource : TV1beta1Resource;virtual;overload;
+    Function CreateBeaconinfoResource(AOwner : TComponent) : TBeaconinfoResource;virtual;overload;
+    Function CreateBeaconinfoResource : TBeaconinfoResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property BeaconsAttachmentsResource : TBeaconsAttachmentsResource Read GetBeaconsAttachmentsInstance;
+    Property BeaconsDiagnosticsResource : TBeaconsDiagnosticsResource Read GetBeaconsDiagnosticsInstance;
+    Property BeaconsResource : TBeaconsResource Read GetBeaconsInstance;
+    Property NamespacesResource : TNamespacesResource Read GetNamespacesInstance;
+    Property V1beta1Resource : TV1beta1Resource Read GetV1beta1Instance;
+    Property BeaconinfoResource : TBeaconinfoResource Read GetBeaconinfoInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TBeaconTypeproperties
+  --------------------------------------------------------------------}
+
+
+Class Function TBeaconTypeproperties.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBeacon
+  --------------------------------------------------------------------}
+
+
+Procedure TBeacon.SetbeaconName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbeaconName=AValue) then exit;
+  FbeaconName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); 
+
+begin
+  If (FadvertisedId=AValue) then exit;
+  FadvertisedId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetplaceId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplaceId=AValue) then exit;
+  FplaceId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetlatLng(AIndex : Integer; const AValue : TLatLng); 
+
+begin
+  If (FlatLng=AValue) then exit;
+  FlatLng:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetindoorLevel(AIndex : Integer; const AValue : TIndoorLevel); 
+
+begin
+  If (FindoorLevel=AValue) then exit;
+  FindoorLevel:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetexpectedStability(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FexpectedStability=AValue) then exit;
+  FexpectedStability:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.Setproperties(AIndex : Integer; const AValue : TBeaconTypeproperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetephemeralIdRegistration(AIndex : Integer; const AValue : TEphemeralIdRegistration); 
+
+begin
+  If (FephemeralIdRegistration=AValue) then exit;
+  FephemeralIdRegistration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeacon.SetprovisioningKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprovisioningKey=AValue) then exit;
+  FprovisioningKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAdvertisedId
+  --------------------------------------------------------------------}
+
+
+Procedure TAdvertisedId.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAdvertisedId.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TAdvertisedId.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TLatLng
+  --------------------------------------------------------------------}
+
+
+Procedure TLatLng.Setlatitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flatitude=AValue) then exit;
+  Flatitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLatLng.Setlongitude(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Flongitude=AValue) then exit;
+  Flongitude:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TIndoorLevel
+  --------------------------------------------------------------------}
+
+
+Procedure TIndoorLevel.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEphemeralIdRegistration
+  --------------------------------------------------------------------}
+
+
+Procedure TEphemeralIdRegistration.SetbeaconEcdhPublicKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbeaconEcdhPublicKey=AValue) then exit;
+  FbeaconEcdhPublicKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistration.SetserviceEcdhPublicKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FserviceEcdhPublicKey=AValue) then exit;
+  FserviceEcdhPublicKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistration.SetbeaconIdentityKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbeaconIdentityKey=AValue) then exit;
+  FbeaconIdentityKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistration.SetrotationPeriodExponent(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrotationPeriodExponent=AValue) then exit;
+  FrotationPeriodExponent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistration.SetinitialClockValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinitialClockValue=AValue) then exit;
+  FinitialClockValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistration.SetinitialEid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinitialEid=AValue) then exit;
+  FinitialEid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListBeaconsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListBeaconsResponse.Setbeacons(AIndex : Integer; const AValue : TListBeaconsResponseTypebeaconsArray); 
+
+begin
+  If (Fbeacons=AValue) then exit;
+  Fbeacons:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListBeaconsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListBeaconsResponse.SettotalCount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtotalCount=AValue) then exit;
+  FtotalCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListBeaconsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'beacons' : SetLength(Fbeacons,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconAttachment
+  --------------------------------------------------------------------}
+
+
+Procedure TBeaconAttachment.SetattachmentName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FattachmentName=AValue) then exit;
+  FattachmentName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeaconAttachment.SetnamespacedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamespacedType=AValue) then exit;
+  FnamespacedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeaconAttachment.Setdata(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListBeaconAttachmentsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListBeaconAttachmentsResponse.Setattachments(AIndex : Integer; const AValue : TListBeaconAttachmentsResponseTypeattachmentsArray); 
+
+begin
+  If (Fattachments=AValue) then exit;
+  Fattachments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListBeaconAttachmentsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'attachments' : SetLength(Fattachments,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteAttachmentsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteAttachmentsResponse.SetnumDeleted(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumDeleted=AValue) then exit;
+  FnumDeleted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListNamespacesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListNamespacesResponse.Setnamespaces(AIndex : Integer; const AValue : TListNamespacesResponseTypenamespacesArray); 
+
+begin
+  If (Fnamespaces=AValue) then exit;
+  Fnamespaces:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListNamespacesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'namespaces' : SetLength(Fnamespaces,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TNamespace
+  --------------------------------------------------------------------}
+
+
+Procedure TNamespace.SetnamespaceName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamespaceName=AValue) then exit;
+  FnamespaceName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNamespace.SetservingVisibility(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FservingVisibility=AValue) then exit;
+  FservingVisibility:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEphemeralIdRegistrationParams
+  --------------------------------------------------------------------}
+
+
+Procedure TEphemeralIdRegistrationParams.SetserviceEcdhPublicKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FserviceEcdhPublicKey=AValue) then exit;
+  FserviceEcdhPublicKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistrationParams.SetminRotationPeriodExponent(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FminRotationPeriodExponent=AValue) then exit;
+  FminRotationPeriodExponent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEphemeralIdRegistrationParams.SetmaxRotationPeriodExponent(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxRotationPeriodExponent=AValue) then exit;
+  FmaxRotationPeriodExponent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListDiagnosticsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListDiagnosticsResponse.Setdiagnostics(AIndex : Integer; const AValue : TListDiagnosticsResponseTypediagnosticsArray); 
+
+begin
+  If (Fdiagnostics=AValue) then exit;
+  Fdiagnostics:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListDiagnosticsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListDiagnosticsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'diagnostics' : SetLength(Fdiagnostics,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDiagnostics
+  --------------------------------------------------------------------}
+
+
+Procedure TDiagnostics.SetbeaconName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbeaconName=AValue) then exit;
+  FbeaconName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiagnostics.SetestimatedLowBatteryDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FestimatedLowBatteryDate=AValue) then exit;
+  FestimatedLowBatteryDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDiagnostics.Setalerts(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Falerts=AValue) then exit;
+  Falerts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDiagnostics.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'alerts' : SetLength(Falerts,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDate
+  --------------------------------------------------------------------}
+
+
+Procedure TDate.Setyear(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fyear=AValue) then exit;
+  Fyear:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setmonth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fmonth=AValue) then exit;
+  Fmonth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDate.Setday(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fday=AValue) then exit;
+  Fday:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetInfoForObservedBeaconsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TGetInfoForObservedBeaconsRequest.Setobservations(AIndex : Integer; const AValue : TGetInfoForObservedBeaconsRequestTypeobservationsArray); 
+
+begin
+  If (Fobservations=AValue) then exit;
+  Fobservations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGetInfoForObservedBeaconsRequest.SetnamespacedTypes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FnamespacedTypes=AValue) then exit;
+  FnamespacedTypes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGetInfoForObservedBeaconsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'observations' : SetLength(Fobservations,ALength);
+  'namespacedtypes' : SetLength(FnamespacedTypes,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TObservation
+  --------------------------------------------------------------------}
+
+
+Procedure TObservation.SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); 
+
+begin
+  If (FadvertisedId=AValue) then exit;
+  FadvertisedId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObservation.Settelemetry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftelemetry=AValue) then exit;
+  Ftelemetry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObservation.SettimestampMs(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtimestampMs=AValue) then exit;
+  FtimestampMs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGetInfoForObservedBeaconsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TGetInfoForObservedBeaconsResponse.Setbeacons(AIndex : Integer; const AValue : TGetInfoForObservedBeaconsResponseTypebeaconsArray); 
+
+begin
+  If (Fbeacons=AValue) then exit;
+  Fbeacons:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGetInfoForObservedBeaconsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'beacons' : SetLength(Fbeacons,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TBeaconInfo.SetadvertisedId(AIndex : Integer; const AValue : TAdvertisedId); 
+
+begin
+  If (FadvertisedId=AValue) then exit;
+  FadvertisedId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeaconInfo.SetbeaconName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbeaconName=AValue) then exit;
+  FbeaconName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBeaconInfo.Setattachments(AIndex : Integer; const AValue : TBeaconInfoTypeattachmentsArray); 
+
+begin
+  If (Fattachments=AValue) then exit;
+  Fattachments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBeaconInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'attachments' : SetLength(Fattachments,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAttachmentInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TAttachmentInfo.SetnamespacedType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamespacedType=AValue) then exit;
+  FnamespacedType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAttachmentInfo.Setdata(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconsAttachmentsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBeaconsAttachmentsResource.ResourceName : String;
+
+begin
+  Result:='attachments';
+end;
+
+Class Function TBeaconsAttachmentsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TBeaconsAttachmentsResource.Create(beaconName: string; aBeaconAttachment : TBeaconAttachment; AQuery : string = '') : TBeaconAttachment;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+beaconName}/attachments';
+  _Methodid   = 'proximitybeacon.beacons.attachments.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aBeaconAttachment,TBeaconAttachment) as TBeaconAttachment;
+end;
+
+
+Function TBeaconsAttachmentsResource.Create(beaconName: string; aBeaconAttachment : TBeaconAttachment; AQuery : TBeaconsAttachmentscreateOptions) : TBeaconAttachment;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Create(beaconName,aBeaconAttachment,_Q);
+end;
+
+Function TBeaconsAttachmentsResource.List(beaconName: string; AQuery : string = '') : TListBeaconAttachmentsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+beaconName}/attachments';
+  _Methodid   = 'proximitybeacon.beacons.attachments.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListBeaconAttachmentsResponse) as TListBeaconAttachmentsResponse;
+end;
+
+
+Function TBeaconsAttachmentsResource.List(beaconName: string; AQuery : TBeaconsAttachmentslistOptions) : TListBeaconAttachmentsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'namespacedType',AQuery.namespacedType);
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=List(beaconName,_Q);
+end;
+
+Function TBeaconsAttachmentsResource.Delete(attachmentName: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta1/{+attachmentName}';
+  _Methodid   = 'proximitybeacon.beacons.attachments.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['attachmentName',attachmentName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TBeaconsAttachmentsResource.Delete(attachmentName: string; AQuery : TBeaconsAttachmentsdeleteOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Delete(attachmentName,_Q);
+end;
+
+Function TBeaconsAttachmentsResource.BatchDelete(beaconName: string; AQuery : string = '') : TDeleteAttachmentsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+beaconName}/attachments:batchDelete';
+  _Methodid   = 'proximitybeacon.beacons.attachments.batchDelete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TDeleteAttachmentsResponse) as TDeleteAttachmentsResponse;
+end;
+
+
+Function TBeaconsAttachmentsResource.BatchDelete(beaconName: string; AQuery : TBeaconsAttachmentsbatchDeleteOptions) : TDeleteAttachmentsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'namespacedType',AQuery.namespacedType);
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=BatchDelete(beaconName,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconsDiagnosticsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBeaconsDiagnosticsResource.ResourceName : String;
+
+begin
+  Result:='diagnostics';
+end;
+
+Class Function TBeaconsDiagnosticsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TBeaconsDiagnosticsResource.List(beaconName: string; AQuery : string = '') : TListDiagnosticsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+beaconName}/diagnostics';
+  _Methodid   = 'proximitybeacon.beacons.diagnostics.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListDiagnosticsResponse) as TListDiagnosticsResponse;
+end;
+
+
+Function TBeaconsDiagnosticsResource.List(beaconName: string; AQuery : TBeaconsDiagnosticslistOptions) : TListDiagnosticsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'alertFilter',AQuery.alertFilter);
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=List(beaconName,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBeaconsResource.ResourceName : String;
+
+begin
+  Result:='beacons';
+end;
+
+Class Function TBeaconsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TBeaconsResource.Register(aBeacon : TBeacon; AQuery : string = '') : TBeacon;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/beacons:register';
+  _Methodid   = 'proximitybeacon.beacons.register';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,aBeacon,TBeacon) as TBeacon;
+end;
+
+
+Function TBeaconsResource.Register(aBeacon : TBeacon; AQuery : TBeaconsregisterOptions) : TBeacon;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Register(aBeacon,_Q);
+end;
+
+Function TBeaconsResource.Decommission(beaconName: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+beaconName}:decommission';
+  _Methodid   = 'proximitybeacon.beacons.decommission';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TBeaconsResource.Decommission(beaconName: string; AQuery : TBeaconsdecommissionOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Decommission(beaconName,_Q);
+end;
+
+Function TBeaconsResource.Get(beaconName: string; AQuery : string = '') : TBeacon;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+beaconName}';
+  _Methodid   = 'proximitybeacon.beacons.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TBeacon) as TBeacon;
+end;
+
+
+Function TBeaconsResource.Get(beaconName: string; AQuery : TBeaconsgetOptions) : TBeacon;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Get(beaconName,_Q);
+end;
+
+Function TBeaconsResource.List(AQuery : string = '') : TListBeaconsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/beacons';
+  _Methodid   = 'proximitybeacon.beacons.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListBeaconsResponse) as TListBeaconsResponse;
+end;
+
+
+Function TBeaconsResource.List(AQuery : TBeaconslistOptions) : TListBeaconsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'q',AQuery.q);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=List(_Q);
+end;
+
+Function TBeaconsResource.Update(beaconName: string; aBeacon : TBeacon; AQuery : string = '') : TBeacon;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1beta1/{+beaconName}';
+  _Methodid   = 'proximitybeacon.beacons.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aBeacon,TBeacon) as TBeacon;
+end;
+
+
+Function TBeaconsResource.Update(beaconName: string; aBeacon : TBeacon; AQuery : TBeaconsupdateOptions) : TBeacon;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Update(beaconName,aBeacon,_Q);
+end;
+
+Function TBeaconsResource.Activate(beaconName: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+beaconName}:activate';
+  _Methodid   = 'proximitybeacon.beacons.activate';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TBeaconsResource.Activate(beaconName: string; AQuery : TBeaconsactivateOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Activate(beaconName,_Q);
+end;
+
+Function TBeaconsResource.Deactivate(beaconName: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+beaconName}:deactivate';
+  _Methodid   = 'proximitybeacon.beacons.deactivate';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['beaconName',beaconName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TBeaconsResource.Deactivate(beaconName: string; AQuery : TBeaconsdeactivateOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Deactivate(beaconName,_Q);
+end;
+
+
+
+Function TBeaconsResource.GetAttachmentsInstance : TBeaconsAttachmentsResource;
+
+begin
+  if (FAttachmentsInstance=Nil) then
+    FAttachmentsInstance:=CreateAttachmentsResource;
+  Result:=FAttachmentsInstance;
+end;
+
+Function TBeaconsResource.CreateAttachmentsResource : TBeaconsAttachmentsResource;
+
+begin
+  Result:=CreateAttachmentsResource(Self);
+end;
+
+
+Function TBeaconsResource.CreateAttachmentsResource(AOwner : TComponent) : TBeaconsAttachmentsResource;
+
+begin
+  Result:=TBeaconsAttachmentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TBeaconsResource.GetDiagnosticsInstance : TBeaconsDiagnosticsResource;
+
+begin
+  if (FDiagnosticsInstance=Nil) then
+    FDiagnosticsInstance:=CreateDiagnosticsResource;
+  Result:=FDiagnosticsInstance;
+end;
+
+Function TBeaconsResource.CreateDiagnosticsResource : TBeaconsDiagnosticsResource;
+
+begin
+  Result:=CreateDiagnosticsResource(Self);
+end;
+
+
+Function TBeaconsResource.CreateDiagnosticsResource(AOwner : TComponent) : TBeaconsDiagnosticsResource;
+
+begin
+  Result:=TBeaconsDiagnosticsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TNamespacesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TNamespacesResource.ResourceName : String;
+
+begin
+  Result:='namespaces';
+end;
+
+Class Function TNamespacesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TNamespacesResource.List(AQuery : string = '') : TListNamespacesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/namespaces';
+  _Methodid   = 'proximitybeacon.namespaces.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListNamespacesResponse) as TListNamespacesResponse;
+end;
+
+
+Function TNamespacesResource.List(AQuery : TNamespaceslistOptions) : TListNamespacesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=List(_Q);
+end;
+
+Function TNamespacesResource.Update(namespaceName: string; aNamespace : TNamespace; AQuery : string = '') : TNamespace;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1beta1/{+namespaceName}';
+  _Methodid   = 'proximitybeacon.namespaces.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['namespaceName',namespaceName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aNamespace,TNamespace) as TNamespace;
+end;
+
+
+Function TNamespacesResource.Update(namespaceName: string; aNamespace : TNamespace; AQuery : TNamespacesupdateOptions) : TNamespace;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Update(namespaceName,aNamespace,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TV1beta1Resource
+  --------------------------------------------------------------------}
+
+
+Class Function TV1beta1Resource.ResourceName : String;
+
+begin
+  Result:='v1beta1';
+end;
+
+Class Function TV1beta1Resource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TV1beta1Resource.GetEidparams : TEphemeralIdRegistrationParams;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/eidparams';
+  _Methodid   = 'proximitybeacon.getEidparams';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',Nil,TEphemeralIdRegistrationParams) as TEphemeralIdRegistrationParams;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBeaconinfoResource
+  --------------------------------------------------------------------}
+
+
+Class Function TBeaconinfoResource.ResourceName : String;
+
+begin
+  Result:='beaconinfo';
+end;
+
+Class Function TBeaconinfoResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TproximitybeaconAPI;
+end;
+
+Function TBeaconinfoResource.Getforobserved(aGetInfoForObservedBeaconsRequest : TGetInfoForObservedBeaconsRequest) : TGetInfoForObservedBeaconsResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/beaconinfo:getforobserved';
+  _Methodid   = 'proximitybeacon.beaconinfo.getforobserved';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aGetInfoForObservedBeaconsRequest,TGetInfoForObservedBeaconsResponse) as TGetInfoForObservedBeaconsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProximitybeaconAPI
+  --------------------------------------------------------------------}
+
+Class Function TProximitybeaconAPI.APIName : String;
+
+begin
+  Result:='proximitybeacon';
+end;
+
+Class Function TProximitybeaconAPI.APIVersion : String;
+
+begin
+  Result:='v1beta1';
+end;
+
+Class Function TProximitybeaconAPI.APIRevision : String;
+
+begin
+  Result:='20160429';
+end;
+
+Class Function TProximitybeaconAPI.APIID : String;
+
+begin
+  Result:='proximitybeacon:v1beta1';
+end;
+
+Class Function TProximitybeaconAPI.APITitle : String;
+
+begin
+  Result:='Google Proximity Beacon API';
+end;
+
+Class Function TProximitybeaconAPI.APIDescription : String;
+
+begin
+  Result:='Registers, manages, indexes, and searches beacons.';
+end;
+
+Class Function TProximitybeaconAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TProximitybeaconAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TProximitybeaconAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TProximitybeaconAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TProximitybeaconAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/beacons/proximity/';
+end;
+
+Class Function TProximitybeaconAPI.APIrootUrl : string;
+
+begin
+  Result:='https://proximitybeacon.googleapis.com/';
+end;
+
+Class Function TProximitybeaconAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TProximitybeaconAPI.APIbaseURL : String;
+
+begin
+  Result:='https://proximitybeacon.googleapis.com/';
+end;
+
+Class Function TProximitybeaconAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TProximitybeaconAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TProximitybeaconAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TProximitybeaconAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,1);
+  Result[0].Name:='https://www.googleapis.com/auth/userlocation.beacon.registry';
+  Result[0].Description:='View and modify your beacons';
+  
+end;
+
+Class Function TProximitybeaconAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TProximitybeaconAPI.RegisterAPIResources;
+
+begin
+  TBeaconTypeproperties.RegisterObject;
+  TBeacon.RegisterObject;
+  TAdvertisedId.RegisterObject;
+  TLatLng.RegisterObject;
+  TIndoorLevel.RegisterObject;
+  TEphemeralIdRegistration.RegisterObject;
+  TEmpty.RegisterObject;
+  TListBeaconsResponse.RegisterObject;
+  TBeaconAttachment.RegisterObject;
+  TListBeaconAttachmentsResponse.RegisterObject;
+  TDeleteAttachmentsResponse.RegisterObject;
+  TListNamespacesResponse.RegisterObject;
+  TNamespace.RegisterObject;
+  TEphemeralIdRegistrationParams.RegisterObject;
+  TListDiagnosticsResponse.RegisterObject;
+  TDiagnostics.RegisterObject;
+  TDate.RegisterObject;
+  TGetInfoForObservedBeaconsRequest.RegisterObject;
+  TObservation.RegisterObject;
+  TGetInfoForObservedBeaconsResponse.RegisterObject;
+  TBeaconInfo.RegisterObject;
+  TAttachmentInfo.RegisterObject;
+end;
+
+
+Function TProximitybeaconAPI.GetBeaconsAttachmentsInstance : TBeaconsAttachmentsResource;
+
+begin
+  if (FBeaconsAttachmentsInstance=Nil) then
+    FBeaconsAttachmentsInstance:=CreateBeaconsAttachmentsResource;
+  Result:=FBeaconsAttachmentsInstance;
+end;
+
+Function TProximitybeaconAPI.CreateBeaconsAttachmentsResource : TBeaconsAttachmentsResource;
+
+begin
+  Result:=CreateBeaconsAttachmentsResource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateBeaconsAttachmentsResource(AOwner : TComponent) : TBeaconsAttachmentsResource;
+
+begin
+  Result:=TBeaconsAttachmentsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProximitybeaconAPI.GetBeaconsDiagnosticsInstance : TBeaconsDiagnosticsResource;
+
+begin
+  if (FBeaconsDiagnosticsInstance=Nil) then
+    FBeaconsDiagnosticsInstance:=CreateBeaconsDiagnosticsResource;
+  Result:=FBeaconsDiagnosticsInstance;
+end;
+
+Function TProximitybeaconAPI.CreateBeaconsDiagnosticsResource : TBeaconsDiagnosticsResource;
+
+begin
+  Result:=CreateBeaconsDiagnosticsResource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateBeaconsDiagnosticsResource(AOwner : TComponent) : TBeaconsDiagnosticsResource;
+
+begin
+  Result:=TBeaconsDiagnosticsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProximitybeaconAPI.GetBeaconsInstance : TBeaconsResource;
+
+begin
+  if (FBeaconsInstance=Nil) then
+    FBeaconsInstance:=CreateBeaconsResource;
+  Result:=FBeaconsInstance;
+end;
+
+Function TProximitybeaconAPI.CreateBeaconsResource : TBeaconsResource;
+
+begin
+  Result:=CreateBeaconsResource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateBeaconsResource(AOwner : TComponent) : TBeaconsResource;
+
+begin
+  Result:=TBeaconsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProximitybeaconAPI.GetNamespacesInstance : TNamespacesResource;
+
+begin
+  if (FNamespacesInstance=Nil) then
+    FNamespacesInstance:=CreateNamespacesResource;
+  Result:=FNamespacesInstance;
+end;
+
+Function TProximitybeaconAPI.CreateNamespacesResource : TNamespacesResource;
+
+begin
+  Result:=CreateNamespacesResource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateNamespacesResource(AOwner : TComponent) : TNamespacesResource;
+
+begin
+  Result:=TNamespacesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProximitybeaconAPI.GetV1beta1Instance : TV1beta1Resource;
+
+begin
+  if (FV1beta1Instance=Nil) then
+    FV1beta1Instance:=CreateV1beta1Resource;
+  Result:=FV1beta1Instance;
+end;
+
+Function TProximitybeaconAPI.CreateV1beta1Resource : TV1beta1Resource;
+
+begin
+  Result:=CreateV1beta1Resource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateV1beta1Resource(AOwner : TComponent) : TV1beta1Resource;
+
+begin
+  Result:=TV1beta1Resource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProximitybeaconAPI.GetBeaconinfoInstance : TBeaconinfoResource;
+
+begin
+  if (FBeaconinfoInstance=Nil) then
+    FBeaconinfoInstance:=CreateBeaconinfoResource;
+  Result:=FBeaconinfoInstance;
+end;
+
+Function TProximitybeaconAPI.CreateBeaconinfoResource : TBeaconinfoResource;
+
+begin
+  Result:=CreateBeaconinfoResource(Self);
+end;
+
+
+Function TProximitybeaconAPI.CreateBeaconinfoResource(AOwner : TComponent) : TBeaconinfoResource;
+
+begin
+  Result:=TBeaconinfoResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TProximitybeaconAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 453 - 306
packages/googleapi/src/googlepubsub.pp


+ 0 - 3028
packages/googleapi/src/googleqpxExpress.pp

@@ -1,3028 +0,0 @@
-unit googleqpxExpress;
-{
-  This is the file COPYING.FPC, it applies to the Free Pascal Run-Time Library 
-  (RTL) and packages (packages) distributed by members of the Free Pascal 
-  Development Team.
-  
-  The source code of the Free Pascal Runtime Libraries and packages are 
-  distributed under the Library GNU General Public License 
-  (see the file COPYING) with the following modification:
-  
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,
-  and to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a module
-  which is not derived from or based on this library. If you modify this
-  library, you may extend this exception to your version of the library, but you are
-  not obligated to do so. If you do not wish to do so, delete this exception
-  statement from your version.
-  
-  If you didn't receive a copy of the file COPYING, contact:
-        Free Software Foundation
-        675 Mass Ave
-        Cambridge, MA  02139
-        USA
-  
-}
-{$MODE objfpc}
-{$H+}
-
-interface
-
-uses sysutils, classes, googleservice, restbase, googlebase;
-
-type
-  //
-  TAircraftData = class;
-  TAircraftDataArray = Array of TAircraftData;
-  TAirportData = class;
-  TAirportDataArray = Array of TAirportData;
-  TBagDescriptor = class;
-  TBagDescriptorArray = Array of TBagDescriptor;
-  TBagDescriptordescription = class;
-  TBagDescriptordescriptionArray = Array of TBagDescriptordescription;
-  TCarrierData = class;
-  TCarrierDataArray = Array of TCarrierData;
-  TCityData = class;
-  TCityDataArray = Array of TCityData;
-  TData = class;
-  TDataArray = Array of TData;
-  TDataaircraft = class;
-  TDataaircraftArray = Array of TDataaircraft;
-  TDataairport = class;
-  TDataairportArray = Array of TDataairport;
-  TDatacarrier = class;
-  TDatacarrierArray = Array of TDatacarrier;
-  TDatacity = class;
-  TDatacityArray = Array of TDatacity;
-  TDatatax = class;
-  TDatataxArray = Array of TDatatax;
-  TFareInfo = class;
-  TFareInfoArray = Array of TFareInfo;
-  TFlightInfo = class;
-  TFlightInfoArray = Array of TFlightInfo;
-  TFreeBaggageAllowance = class;
-  TFreeBaggageAllowanceArray = Array of TFreeBaggageAllowance;
-  TFreeBaggageAllowancebagDescriptor = class;
-  TFreeBaggageAllowancebagDescriptorArray = Array of TFreeBaggageAllowancebagDescriptor;
-  TLegInfo = class;
-  TLegInfoArray = Array of TLegInfo;
-  TPassengerCounts = class;
-  TPassengerCountsArray = Array of TPassengerCounts;
-  TPricingInfo = class;
-  TPricingInfoArray = Array of TPricingInfo;
-  TPricingInfofare = class;
-  TPricingInfofareArray = Array of TPricingInfofare;
-  TPricingInfosegmentPricing = class;
-  TPricingInfosegmentPricingArray = Array of TPricingInfosegmentPricing;
-  TPricingInfotax = class;
-  TPricingInfotaxArray = Array of TPricingInfotax;
-  TSegmentInfo = class;
-  TSegmentInfoArray = Array of TSegmentInfo;
-  TSegmentInfoleg = class;
-  TSegmentInfolegArray = Array of TSegmentInfoleg;
-  TSegmentPricing = class;
-  TSegmentPricingArray = Array of TSegmentPricing;
-  TSegmentPricingfreeBaggageOption = class;
-  TSegmentPricingfreeBaggageOptionArray = Array of TSegmentPricingfreeBaggageOption;
-  TSliceInfo = class;
-  TSliceInfoArray = Array of TSliceInfo;
-  TSliceInfosegment = class;
-  TSliceInfosegmentArray = Array of TSliceInfosegment;
-  TSliceInput = class;
-  TSliceInputArray = Array of TSliceInput;
-  TSliceInputpermittedCarrier = class;
-  TSliceInputpermittedCarrierArray = Array of TSliceInputpermittedCarrier;
-  TSliceInputprohibitedCarrier = class;
-  TSliceInputprohibitedCarrierArray = Array of TSliceInputprohibitedCarrier;
-  TTaxData = class;
-  TTaxDataArray = Array of TTaxData;
-  TTaxInfo = class;
-  TTaxInfoArray = Array of TTaxInfo;
-  TTimeOfDayRange = class;
-  TTimeOfDayRangeArray = Array of TTimeOfDayRange;
-  TTripOption = class;
-  TTripOptionArray = Array of TTripOption;
-  TTripOptionpricing = class;
-  TTripOptionpricingArray = Array of TTripOptionpricing;
-  TTripOptionslice = class;
-  TTripOptionsliceArray = Array of TTripOptionslice;
-  TTripOptionsRequest = class;
-  TTripOptionsRequestArray = Array of TTripOptionsRequest;
-  TTripOptionsRequestslice = class;
-  TTripOptionsRequestsliceArray = Array of TTripOptionsRequestslice;
-  TTripOptionsResponse = class;
-  TTripOptionsResponseArray = Array of TTripOptionsResponse;
-  TTripOptionsResponsetripOption = class;
-  TTripOptionsResponsetripOptionArray = Array of TTripOptionsResponsetripOption;
-  TTripsSearchRequest = class;
-  TTripsSearchRequestArray = Array of TTripsSearchRequest;
-  TTripsSearchResponse = class;
-  TTripsSearchResponseArray = Array of TTripsSearchResponse;
-  
-  { --------------------------------------------------------------------
-    TAircraftData
-    --------------------------------------------------------------------}
-  
-  TAircraftData = Class(TGoogleBaseObject)
-  Private
-    Fcode : string;
-    Fkind : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setcode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property code : string Index 0 Read Fcode Write Setcode;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property name : string Index 16 Read Fname Write Setname;
-  end;
-  TAircraftDataClass = Class of TAircraftData;
-  
-  { --------------------------------------------------------------------
-    TAirportData
-    --------------------------------------------------------------------}
-  
-  TAirportData = Class(TGoogleBaseObject)
-  Private
-    Fcity : string;
-    Fcode : string;
-    Fkind : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setcity(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property city : string Index 0 Read Fcity Write Setcity;
-    Property code : string Index 8 Read Fcode Write Setcode;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property name : string Index 24 Read Fname Write Setname;
-  end;
-  TAirportDataClass = Class of TAirportData;
-  
-  { --------------------------------------------------------------------
-    TBagDescriptor
-    --------------------------------------------------------------------}
-  
-  TBagDescriptor = Class(TGoogleBaseObject)
-  Private
-    FcommercialName : string;
-    Fcount : integer;
-    Fdescription : TBagDescriptordescription;
-    Fkind : string;
-    Fsubcode : string;
-  Protected
-    //Property setters
-    Procedure SetcommercialName(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setdescription(AIndex : Integer; AValue : TBagDescriptordescription); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setsubcode(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property commercialName : string Index 0 Read FcommercialName Write SetcommercialName;
-    Property count : integer Index 8 Read Fcount Write Setcount;
-    Property description : TBagDescriptordescription Index 16 Read Fdescription Write Setdescription;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property subcode : string Index 32 Read Fsubcode Write Setsubcode;
-  end;
-  TBagDescriptorClass = Class of TBagDescriptor;
-  
-  { --------------------------------------------------------------------
-    TBagDescriptordescription
-    --------------------------------------------------------------------}
-  
-  TBagDescriptordescription = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TBagDescriptordescriptionClass = Class of TBagDescriptordescription;
-  
-  { --------------------------------------------------------------------
-    TCarrierData
-    --------------------------------------------------------------------}
-  
-  TCarrierData = Class(TGoogleBaseObject)
-  Private
-    Fcode : string;
-    Fkind : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setcode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property code : string Index 0 Read Fcode Write Setcode;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property name : string Index 16 Read Fname Write Setname;
-  end;
-  TCarrierDataClass = Class of TCarrierData;
-  
-  { --------------------------------------------------------------------
-    TCityData
-    --------------------------------------------------------------------}
-  
-  TCityData = Class(TGoogleBaseObject)
-  Private
-    Fcode : string;
-    Fcountry : string;
-    Fkind : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setcode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcountry(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property code : string Index 0 Read Fcode Write Setcode;
-    Property country : string Index 8 Read Fcountry Write Setcountry;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property name : string Index 24 Read Fname Write Setname;
-  end;
-  TCityDataClass = Class of TCityData;
-  
-  { --------------------------------------------------------------------
-    TData
-    --------------------------------------------------------------------}
-  
-  TData = Class(TGoogleBaseObject)
-  Private
-    Faircraft : TDataaircraft;
-    Fairport : TDataairport;
-    Fcarrier : TDatacarrier;
-    Fcity : TDatacity;
-    Fkind : string;
-    Ftax : TDatatax;
-  Protected
-    //Property setters
-    Procedure Setaircraft(AIndex : Integer; AValue : TDataaircraft); virtual;
-    Procedure Setairport(AIndex : Integer; AValue : TDataairport); virtual;
-    Procedure Setcarrier(AIndex : Integer; AValue : TDatacarrier); virtual;
-    Procedure Setcity(AIndex : Integer; AValue : TDatacity); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Settax(AIndex : Integer; AValue : TDatatax); virtual;
-  Public
-  Published
-    Property aircraft : TDataaircraft Index 0 Read Faircraft Write Setaircraft;
-    Property airport : TDataairport Index 8 Read Fairport Write Setairport;
-    Property carrier : TDatacarrier Index 16 Read Fcarrier Write Setcarrier;
-    Property city : TDatacity Index 24 Read Fcity Write Setcity;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property tax : TDatatax Index 40 Read Ftax Write Settax;
-  end;
-  TDataClass = Class of TData;
-  
-  { --------------------------------------------------------------------
-    TDataaircraft
-    --------------------------------------------------------------------}
-  
-  TDataaircraft = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TDataaircraftClass = Class of TDataaircraft;
-  
-  { --------------------------------------------------------------------
-    TDataairport
-    --------------------------------------------------------------------}
-  
-  TDataairport = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TDataairportClass = Class of TDataairport;
-  
-  { --------------------------------------------------------------------
-    TDatacarrier
-    --------------------------------------------------------------------}
-  
-  TDatacarrier = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TDatacarrierClass = Class of TDatacarrier;
-  
-  { --------------------------------------------------------------------
-    TDatacity
-    --------------------------------------------------------------------}
-  
-  TDatacity = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TDatacityClass = Class of TDatacity;
-  
-  { --------------------------------------------------------------------
-    TDatatax
-    --------------------------------------------------------------------}
-  
-  TDatatax = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TDatataxClass = Class of TDatatax;
-  
-  { --------------------------------------------------------------------
-    TFareInfo
-    --------------------------------------------------------------------}
-  
-  TFareInfo = Class(TGoogleBaseObject)
-  Private
-    FbasisCode : string;
-    Fcarrier : string;
-    Fdestination : string;
-    Fid : string;
-    Fkind : string;
-    Forigin : string;
-    F_private : boolean;
-  Protected
-    Class Function ExportPropertyName(Const AName : String) : string; override;
-    //Property setters
-    Procedure SetbasisCode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcarrier(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdestination(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setorigin(AIndex : Integer; AValue : string); virtual;
-    Procedure Set_private(AIndex : Integer; AValue : boolean); virtual;
-  Public
-  Published
-    Property basisCode : string Index 0 Read FbasisCode Write SetbasisCode;
-    Property carrier : string Index 8 Read Fcarrier Write Setcarrier;
-    Property destination : string Index 16 Read Fdestination Write Setdestination;
-    Property id : string Index 24 Read Fid Write Setid;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property origin : string Index 40 Read Forigin Write Setorigin;
-    Property _private : boolean Index 48 Read F_private Write Set_private;
-  end;
-  TFareInfoClass = Class of TFareInfo;
-  
-  { --------------------------------------------------------------------
-    TFlightInfo
-    --------------------------------------------------------------------}
-  
-  TFlightInfo = Class(TGoogleBaseObject)
-  Private
-    Fcarrier : string;
-    Fnumber : string;
-  Protected
-    //Property setters
-    Procedure Setcarrier(AIndex : Integer; AValue : string); virtual;
-    Procedure Setnumber(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property carrier : string Index 0 Read Fcarrier Write Setcarrier;
-    Property number : string Index 8 Read Fnumber Write Setnumber;
-  end;
-  TFlightInfoClass = Class of TFlightInfo;
-  
-  { --------------------------------------------------------------------
-    TFreeBaggageAllowance
-    --------------------------------------------------------------------}
-  
-  TFreeBaggageAllowance = Class(TGoogleBaseObject)
-  Private
-    FbagDescriptor : TFreeBaggageAllowancebagDescriptor;
-    Fkilos : integer;
-    FkilosPerPiece : integer;
-    Fkind : string;
-    Fpieces : integer;
-    Fpounds : integer;
-  Protected
-    //Property setters
-    Procedure SetbagDescriptor(AIndex : Integer; AValue : TFreeBaggageAllowancebagDescriptor); virtual;
-    Procedure Setkilos(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetkilosPerPiece(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpieces(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setpounds(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property bagDescriptor : TFreeBaggageAllowancebagDescriptor Index 0 Read FbagDescriptor Write SetbagDescriptor;
-    Property kilos : integer Index 8 Read Fkilos Write Setkilos;
-    Property kilosPerPiece : integer Index 16 Read FkilosPerPiece Write SetkilosPerPiece;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property pieces : integer Index 32 Read Fpieces Write Setpieces;
-    Property pounds : integer Index 40 Read Fpounds Write Setpounds;
-  end;
-  TFreeBaggageAllowanceClass = Class of TFreeBaggageAllowance;
-  
-  { --------------------------------------------------------------------
-    TFreeBaggageAllowancebagDescriptor
-    --------------------------------------------------------------------}
-  
-  TFreeBaggageAllowancebagDescriptor = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TFreeBaggageAllowancebagDescriptorClass = Class of TFreeBaggageAllowancebagDescriptor;
-  
-  { --------------------------------------------------------------------
-    TLegInfo
-    --------------------------------------------------------------------}
-  
-  TLegInfo = Class(TGoogleBaseObject)
-  Private
-    Faircraft : string;
-    FarrivalTime : string;
-    FchangePlane : boolean;
-    FconnectionDuration : integer;
-    FdepartureTime : string;
-    Fdestination : string;
-    FdestinationTerminal : string;
-    Fduration : integer;
-    Fid : string;
-    Fkind : string;
-    Fmeal : string;
-    Fmileage : integer;
-    FonTimePerformance : integer;
-    FoperatingDisclosure : string;
-    Forigin : string;
-    ForiginTerminal : string;
-    Fsecure : boolean;
-  Protected
-    //Property setters
-    Procedure Setaircraft(AIndex : Integer; AValue : string); virtual;
-    Procedure SetarrivalTime(AIndex : Integer; AValue : string); virtual;
-    Procedure SetchangePlane(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetconnectionDuration(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetdepartureTime(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdestination(AIndex : Integer; AValue : string); virtual;
-    Procedure SetdestinationTerminal(AIndex : Integer; AValue : string); virtual;
-    Procedure Setduration(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setmeal(AIndex : Integer; AValue : string); virtual;
-    Procedure Setmileage(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetonTimePerformance(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetoperatingDisclosure(AIndex : Integer; AValue : string); virtual;
-    Procedure Setorigin(AIndex : Integer; AValue : string); virtual;
-    Procedure SetoriginTerminal(AIndex : Integer; AValue : string); virtual;
-    Procedure Setsecure(AIndex : Integer; AValue : boolean); virtual;
-  Public
-  Published
-    Property aircraft : string Index 0 Read Faircraft Write Setaircraft;
-    Property arrivalTime : string Index 8 Read FarrivalTime Write SetarrivalTime;
-    Property changePlane : boolean Index 16 Read FchangePlane Write SetchangePlane;
-    Property connectionDuration : integer Index 24 Read FconnectionDuration Write SetconnectionDuration;
-    Property departureTime : string Index 32 Read FdepartureTime Write SetdepartureTime;
-    Property destination : string Index 40 Read Fdestination Write Setdestination;
-    Property destinationTerminal : string Index 48 Read FdestinationTerminal Write SetdestinationTerminal;
-    Property duration : integer Index 56 Read Fduration Write Setduration;
-    Property id : string Index 64 Read Fid Write Setid;
-    Property kind : string Index 72 Read Fkind Write Setkind;
-    Property meal : string Index 80 Read Fmeal Write Setmeal;
-    Property mileage : integer Index 88 Read Fmileage Write Setmileage;
-    Property onTimePerformance : integer Index 96 Read FonTimePerformance Write SetonTimePerformance;
-    Property operatingDisclosure : string Index 104 Read FoperatingDisclosure Write SetoperatingDisclosure;
-    Property origin : string Index 112 Read Forigin Write Setorigin;
-    Property originTerminal : string Index 120 Read ForiginTerminal Write SetoriginTerminal;
-    Property secure : boolean Index 128 Read Fsecure Write Setsecure;
-  end;
-  TLegInfoClass = Class of TLegInfo;
-  
-  { --------------------------------------------------------------------
-    TPassengerCounts
-    --------------------------------------------------------------------}
-  
-  TPassengerCounts = Class(TGoogleBaseObject)
-  Private
-    FadultCount : integer;
-    FchildCount : integer;
-    FinfantInLapCount : integer;
-    FinfantInSeatCount : integer;
-    Fkind : string;
-    FseniorCount : integer;
-  Protected
-    //Property setters
-    Procedure SetadultCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetchildCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetinfantInLapCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetinfantInSeatCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetseniorCount(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property adultCount : integer Index 0 Read FadultCount Write SetadultCount;
-    Property childCount : integer Index 8 Read FchildCount Write SetchildCount;
-    Property infantInLapCount : integer Index 16 Read FinfantInLapCount Write SetinfantInLapCount;
-    Property infantInSeatCount : integer Index 24 Read FinfantInSeatCount Write SetinfantInSeatCount;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property seniorCount : integer Index 40 Read FseniorCount Write SetseniorCount;
-  end;
-  TPassengerCountsClass = Class of TPassengerCounts;
-  
-  { --------------------------------------------------------------------
-    TPricingInfo
-    --------------------------------------------------------------------}
-  
-  TPricingInfo = Class(TGoogleBaseObject)
-  Private
-    FbaseFareTotal : string;
-    Ffare : TPricingInfofare;
-    FfareCalculation : string;
-    Fkind : string;
-    FlatestTicketingTime : string;
-    Fpassengers : TPassengerCounts;
-    Fptc : string;
-    Frefundable : boolean;
-    FsaleFareTotal : string;
-    FsaleTaxTotal : string;
-    FsaleTotal : string;
-    FsegmentPricing : TPricingInfosegmentPricing;
-    Ftax : TPricingInfotax;
-  Protected
-    //Property setters
-    Procedure SetbaseFareTotal(AIndex : Integer; AValue : string); virtual;
-    Procedure Setfare(AIndex : Integer; AValue : TPricingInfofare); virtual;
-    Procedure SetfareCalculation(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetlatestTicketingTime(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpassengers(AIndex : Integer; AValue : TPassengerCounts); virtual;
-    Procedure Setptc(AIndex : Integer; AValue : string); virtual;
-    Procedure Setrefundable(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsaleFareTotal(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsaleTaxTotal(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsaleTotal(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsegmentPricing(AIndex : Integer; AValue : TPricingInfosegmentPricing); virtual;
-    Procedure Settax(AIndex : Integer; AValue : TPricingInfotax); virtual;
-  Public
-  Published
-    Property baseFareTotal : string Index 0 Read FbaseFareTotal Write SetbaseFareTotal;
-    Property fare : TPricingInfofare Index 8 Read Ffare Write Setfare;
-    Property fareCalculation : string Index 16 Read FfareCalculation Write SetfareCalculation;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property latestTicketingTime : string Index 32 Read FlatestTicketingTime Write SetlatestTicketingTime;
-    Property passengers : TPassengerCounts Index 40 Read Fpassengers Write Setpassengers;
-    Property ptc : string Index 48 Read Fptc Write Setptc;
-    Property refundable : boolean Index 56 Read Frefundable Write Setrefundable;
-    Property saleFareTotal : string Index 64 Read FsaleFareTotal Write SetsaleFareTotal;
-    Property saleTaxTotal : string Index 72 Read FsaleTaxTotal Write SetsaleTaxTotal;
-    Property saleTotal : string Index 80 Read FsaleTotal Write SetsaleTotal;
-    Property segmentPricing : TPricingInfosegmentPricing Index 88 Read FsegmentPricing Write SetsegmentPricing;
-    Property tax : TPricingInfotax Index 96 Read Ftax Write Settax;
-  end;
-  TPricingInfoClass = Class of TPricingInfo;
-  
-  { --------------------------------------------------------------------
-    TPricingInfofare
-    --------------------------------------------------------------------}
-  
-  TPricingInfofare = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TPricingInfofareClass = Class of TPricingInfofare;
-  
-  { --------------------------------------------------------------------
-    TPricingInfosegmentPricing
-    --------------------------------------------------------------------}
-  
-  TPricingInfosegmentPricing = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TPricingInfosegmentPricingClass = Class of TPricingInfosegmentPricing;
-  
-  { --------------------------------------------------------------------
-    TPricingInfotax
-    --------------------------------------------------------------------}
-  
-  TPricingInfotax = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TPricingInfotaxClass = Class of TPricingInfotax;
-  
-  { --------------------------------------------------------------------
-    TSegmentInfo
-    --------------------------------------------------------------------}
-  
-  TSegmentInfo = Class(TGoogleBaseObject)
-  Private
-    FbookingCode : string;
-    FbookingCodeCount : integer;
-    Fcabin : string;
-    FconnectionDuration : integer;
-    Fduration : integer;
-    Fflight : TFlightInfo;
-    Fid : string;
-    Fkind : string;
-    Fleg : TSegmentInfoleg;
-    FmarriedSegmentGroup : string;
-    FsubjectToGovernmentApproval : boolean;
-  Protected
-    //Property setters
-    Procedure SetbookingCode(AIndex : Integer; AValue : string); virtual;
-    Procedure SetbookingCodeCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setcabin(AIndex : Integer; AValue : string); virtual;
-    Procedure SetconnectionDuration(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setduration(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setflight(AIndex : Integer; AValue : TFlightInfo); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setleg(AIndex : Integer; AValue : TSegmentInfoleg); virtual;
-    Procedure SetmarriedSegmentGroup(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsubjectToGovernmentApproval(AIndex : Integer; AValue : boolean); virtual;
-  Public
-  Published
-    Property bookingCode : string Index 0 Read FbookingCode Write SetbookingCode;
-    Property bookingCodeCount : integer Index 8 Read FbookingCodeCount Write SetbookingCodeCount;
-    Property cabin : string Index 16 Read Fcabin Write Setcabin;
-    Property connectionDuration : integer Index 24 Read FconnectionDuration Write SetconnectionDuration;
-    Property duration : integer Index 32 Read Fduration Write Setduration;
-    Property flight : TFlightInfo Index 40 Read Fflight Write Setflight;
-    Property id : string Index 48 Read Fid Write Setid;
-    Property kind : string Index 56 Read Fkind Write Setkind;
-    Property leg : TSegmentInfoleg Index 64 Read Fleg Write Setleg;
-    Property marriedSegmentGroup : string Index 72 Read FmarriedSegmentGroup Write SetmarriedSegmentGroup;
-    Property subjectToGovernmentApproval : boolean Index 80 Read FsubjectToGovernmentApproval Write SetsubjectToGovernmentApproval;
-  end;
-  TSegmentInfoClass = Class of TSegmentInfo;
-  
-  { --------------------------------------------------------------------
-    TSegmentInfoleg
-    --------------------------------------------------------------------}
-  
-  TSegmentInfoleg = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TSegmentInfolegClass = Class of TSegmentInfoleg;
-  
-  { --------------------------------------------------------------------
-    TSegmentPricing
-    --------------------------------------------------------------------}
-  
-  TSegmentPricing = Class(TGoogleBaseObject)
-  Private
-    FfareId : string;
-    FfreeBaggageOption : TSegmentPricingfreeBaggageOption;
-    Fkind : string;
-    FsegmentId : string;
-  Protected
-    //Property setters
-    Procedure SetfareId(AIndex : Integer; AValue : string); virtual;
-    Procedure SetfreeBaggageOption(AIndex : Integer; AValue : TSegmentPricingfreeBaggageOption); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsegmentId(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property fareId : string Index 0 Read FfareId Write SetfareId;
-    Property freeBaggageOption : TSegmentPricingfreeBaggageOption Index 8 Read FfreeBaggageOption Write SetfreeBaggageOption;
-    Property kind : string Index 16 Read Fkind Write Setkind;
-    Property segmentId : string Index 24 Read FsegmentId Write SetsegmentId;
-  end;
-  TSegmentPricingClass = Class of TSegmentPricing;
-  
-  { --------------------------------------------------------------------
-    TSegmentPricingfreeBaggageOption
-    --------------------------------------------------------------------}
-  
-  TSegmentPricingfreeBaggageOption = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TSegmentPricingfreeBaggageOptionClass = Class of TSegmentPricingfreeBaggageOption;
-  
-  { --------------------------------------------------------------------
-    TSliceInfo
-    --------------------------------------------------------------------}
-  
-  TSliceInfo = Class(TGoogleBaseObject)
-  Private
-    Fduration : integer;
-    Fkind : string;
-    Fsegment : TSliceInfosegment;
-  Protected
-    //Property setters
-    Procedure Setduration(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setsegment(AIndex : Integer; AValue : TSliceInfosegment); virtual;
-  Public
-  Published
-    Property duration : integer Index 0 Read Fduration Write Setduration;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property segment : TSliceInfosegment Index 16 Read Fsegment Write Setsegment;
-  end;
-  TSliceInfoClass = Class of TSliceInfo;
-  
-  { --------------------------------------------------------------------
-    TSliceInfosegment
-    --------------------------------------------------------------------}
-  
-  TSliceInfosegment = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TSliceInfosegmentClass = Class of TSliceInfosegment;
-  
-  { --------------------------------------------------------------------
-    TSliceInput
-    --------------------------------------------------------------------}
-  
-  TSliceInput = Class(TGoogleBaseObject)
-  Private
-    Falliance : string;
-    Fdate : string;
-    Fdestination : string;
-    Fkind : string;
-    FmaxConnectionDuration : integer;
-    FmaxStops : integer;
-    Forigin : string;
-    FpermittedCarrier : TSliceInputpermittedCarrier;
-    FpermittedDepartureTime : TTimeOfDayRange;
-    FpreferredCabin : string;
-    FprohibitedCarrier : TSliceInputprohibitedCarrier;
-  Protected
-    //Property setters
-    Procedure Setalliance(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdate(AIndex : Integer; AValue : string); virtual;
-    Procedure Setdestination(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetmaxConnectionDuration(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmaxStops(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setorigin(AIndex : Integer; AValue : string); virtual;
-    Procedure SetpermittedCarrier(AIndex : Integer; AValue : TSliceInputpermittedCarrier); virtual;
-    Procedure SetpermittedDepartureTime(AIndex : Integer; AValue : TTimeOfDayRange); virtual;
-    Procedure SetpreferredCabin(AIndex : Integer; AValue : string); virtual;
-    Procedure SetprohibitedCarrier(AIndex : Integer; AValue : TSliceInputprohibitedCarrier); virtual;
-  Public
-  Published
-    Property alliance : string Index 0 Read Falliance Write Setalliance;
-    Property date : string Index 8 Read Fdate Write Setdate;
-    Property destination : string Index 16 Read Fdestination Write Setdestination;
-    Property kind : string Index 24 Read Fkind Write Setkind;
-    Property maxConnectionDuration : integer Index 32 Read FmaxConnectionDuration Write SetmaxConnectionDuration;
-    Property maxStops : integer Index 40 Read FmaxStops Write SetmaxStops;
-    Property origin : string Index 48 Read Forigin Write Setorigin;
-    Property permittedCarrier : TSliceInputpermittedCarrier Index 56 Read FpermittedCarrier Write SetpermittedCarrier;
-    Property permittedDepartureTime : TTimeOfDayRange Index 64 Read FpermittedDepartureTime Write SetpermittedDepartureTime;
-    Property preferredCabin : string Index 72 Read FpreferredCabin Write SetpreferredCabin;
-    Property prohibitedCarrier : TSliceInputprohibitedCarrier Index 80 Read FprohibitedCarrier Write SetprohibitedCarrier;
-  end;
-  TSliceInputClass = Class of TSliceInput;
-  
-  { --------------------------------------------------------------------
-    TSliceInputpermittedCarrier
-    --------------------------------------------------------------------}
-  
-  TSliceInputpermittedCarrier = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TSliceInputpermittedCarrierClass = Class of TSliceInputpermittedCarrier;
-  
-  { --------------------------------------------------------------------
-    TSliceInputprohibitedCarrier
-    --------------------------------------------------------------------}
-  
-  TSliceInputprohibitedCarrier = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TSliceInputprohibitedCarrierClass = Class of TSliceInputprohibitedCarrier;
-  
-  { --------------------------------------------------------------------
-    TTaxData
-    --------------------------------------------------------------------}
-  
-  TTaxData = Class(TGoogleBaseObject)
-  Private
-    Fid : string;
-    Fkind : string;
-    Fname : string;
-  Protected
-    //Property setters
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setname(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property id : string Index 0 Read Fid Write Setid;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property name : string Index 16 Read Fname Write Setname;
-  end;
-  TTaxDataClass = Class of TTaxData;
-  
-  { --------------------------------------------------------------------
-    TTaxInfo
-    --------------------------------------------------------------------}
-  
-  TTaxInfo = Class(TGoogleBaseObject)
-  Private
-    FchargeType : string;
-    Fcode : string;
-    Fcountry : string;
-    Fid : string;
-    Fkind : string;
-    FsalePrice : string;
-  Protected
-    //Property setters
-    Procedure SetchargeType(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcode(AIndex : Integer; AValue : string); virtual;
-    Procedure Setcountry(AIndex : Integer; AValue : string); virtual;
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetsalePrice(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property chargeType : string Index 0 Read FchargeType Write SetchargeType;
-    Property code : string Index 8 Read Fcode Write Setcode;
-    Property country : string Index 16 Read Fcountry Write Setcountry;
-    Property id : string Index 24 Read Fid Write Setid;
-    Property kind : string Index 32 Read Fkind Write Setkind;
-    Property salePrice : string Index 40 Read FsalePrice Write SetsalePrice;
-  end;
-  TTaxInfoClass = Class of TTaxInfo;
-  
-  { --------------------------------------------------------------------
-    TTimeOfDayRange
-    --------------------------------------------------------------------}
-  
-  TTimeOfDayRange = Class(TGoogleBaseObject)
-  Private
-    FearliestTime : string;
-    Fkind : string;
-    FlatestTime : string;
-  Protected
-    //Property setters
-    Procedure SetearliestTime(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetlatestTime(AIndex : Integer; AValue : string); virtual;
-  Public
-  Published
-    Property earliestTime : string Index 0 Read FearliestTime Write SetearliestTime;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property latestTime : string Index 16 Read FlatestTime Write SetlatestTime;
-  end;
-  TTimeOfDayRangeClass = Class of TTimeOfDayRange;
-  
-  { --------------------------------------------------------------------
-    TTripOption
-    --------------------------------------------------------------------}
-  
-  TTripOption = Class(TGoogleBaseObject)
-  Private
-    Fid : string;
-    Fkind : string;
-    Fpricing : TTripOptionpricing;
-    FsaleTotal : string;
-    Fslice : TTripOptionslice;
-  Protected
-    //Property setters
-    Procedure Setid(AIndex : Integer; AValue : string); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpricing(AIndex : Integer; AValue : TTripOptionpricing); virtual;
-    Procedure SetsaleTotal(AIndex : Integer; AValue : string); virtual;
-    Procedure Setslice(AIndex : Integer; AValue : TTripOptionslice); virtual;
-  Public
-  Published
-    Property id : string Index 0 Read Fid Write Setid;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property pricing : TTripOptionpricing Index 16 Read Fpricing Write Setpricing;
-    Property saleTotal : string Index 24 Read FsaleTotal Write SetsaleTotal;
-    Property slice : TTripOptionslice Index 32 Read Fslice Write Setslice;
-  end;
-  TTripOptionClass = Class of TTripOption;
-  
-  { --------------------------------------------------------------------
-    TTripOptionpricing
-    --------------------------------------------------------------------}
-  
-  TTripOptionpricing = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TTripOptionpricingClass = Class of TTripOptionpricing;
-  
-  { --------------------------------------------------------------------
-    TTripOptionslice
-    --------------------------------------------------------------------}
-  
-  TTripOptionslice = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TTripOptionsliceClass = Class of TTripOptionslice;
-  
-  { --------------------------------------------------------------------
-    TTripOptionsRequest
-    --------------------------------------------------------------------}
-  
-  TTripOptionsRequest = Class(TGoogleBaseObject)
-  Private
-    FmaxPrice : string;
-    Fpassengers : TPassengerCounts;
-    Frefundable : boolean;
-    FsaleCountry : string;
-    Fslice : TTripOptionsRequestslice;
-    Fsolutions : integer;
-  Protected
-    //Property setters
-    Procedure SetmaxPrice(AIndex : Integer; AValue : string); virtual;
-    Procedure Setpassengers(AIndex : Integer; AValue : TPassengerCounts); virtual;
-    Procedure Setrefundable(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsaleCountry(AIndex : Integer; AValue : string); virtual;
-    Procedure Setslice(AIndex : Integer; AValue : TTripOptionsRequestslice); virtual;
-    Procedure Setsolutions(AIndex : Integer; AValue : integer); virtual;
-  Public
-  Published
-    Property maxPrice : string Index 0 Read FmaxPrice Write SetmaxPrice;
-    Property passengers : TPassengerCounts Index 8 Read Fpassengers Write Setpassengers;
-    Property refundable : boolean Index 16 Read Frefundable Write Setrefundable;
-    Property saleCountry : string Index 24 Read FsaleCountry Write SetsaleCountry;
-    Property slice : TTripOptionsRequestslice Index 32 Read Fslice Write Setslice;
-    Property solutions : integer Index 40 Read Fsolutions Write Setsolutions;
-  end;
-  TTripOptionsRequestClass = Class of TTripOptionsRequest;
-  
-  { --------------------------------------------------------------------
-    TTripOptionsRequestslice
-    --------------------------------------------------------------------}
-  
-  TTripOptionsRequestslice = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TTripOptionsRequestsliceClass = Class of TTripOptionsRequestslice;
-  
-  { --------------------------------------------------------------------
-    TTripOptionsResponse
-    --------------------------------------------------------------------}
-  
-  TTripOptionsResponse = Class(TGoogleBaseObject)
-  Private
-    Fdata : TData;
-    Fkind : string;
-    FrequestId : string;
-    FtripOption : TTripOptionsResponsetripOption;
-  Protected
-    //Property setters
-    Procedure Setdata(AIndex : Integer; AValue : TData); virtual;
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure SetrequestId(AIndex : Integer; AValue : string); virtual;
-    Procedure SettripOption(AIndex : Integer; AValue : TTripOptionsResponsetripOption); virtual;
-  Public
-  Published
-    Property data : TData Index 0 Read Fdata Write Setdata;
-    Property kind : string Index 8 Read Fkind Write Setkind;
-    Property requestId : string Index 16 Read FrequestId Write SetrequestId;
-    Property tripOption : TTripOptionsResponsetripOption Index 24 Read FtripOption Write SettripOption;
-  end;
-  TTripOptionsResponseClass = Class of TTripOptionsResponse;
-  
-  { --------------------------------------------------------------------
-    TTripOptionsResponsetripOption
-    --------------------------------------------------------------------}
-  
-  TTripOptionsResponsetripOption = Class(TGoogleBaseObject)
-  Private
-  Protected
-    //Property setters
-  Public
-  Published
-  end;
-  TTripOptionsResponsetripOptionClass = Class of TTripOptionsResponsetripOption;
-  
-  { --------------------------------------------------------------------
-    TTripsSearchRequest
-    --------------------------------------------------------------------}
-  
-  TTripsSearchRequest = Class(TGoogleBaseObject)
-  Private
-    Frequest : TTripOptionsRequest;
-  Protected
-    //Property setters
-    Procedure Setrequest(AIndex : Integer; AValue : TTripOptionsRequest); virtual;
-  Public
-  Published
-    Property request : TTripOptionsRequest Index 0 Read Frequest Write Setrequest;
-  end;
-  TTripsSearchRequestClass = Class of TTripsSearchRequest;
-  
-  { --------------------------------------------------------------------
-    TTripsSearchResponse
-    --------------------------------------------------------------------}
-  
-  TTripsSearchResponse = Class(TGoogleBaseObject)
-  Private
-    Fkind : string;
-    Ftrips : TTripOptionsResponse;
-  Protected
-    //Property setters
-    Procedure Setkind(AIndex : Integer; AValue : string); virtual;
-    Procedure Settrips(AIndex : Integer; AValue : TTripOptionsResponse); virtual;
-  Public
-  Published
-    Property kind : string Index 0 Read Fkind Write Setkind;
-    Property trips : TTripOptionsResponse Index 8 Read Ftrips Write Settrips;
-  end;
-  TTripsSearchResponseClass = Class of TTripsSearchResponse;
-  
-  { --------------------------------------------------------------------
-    TTripsResource
-    --------------------------------------------------------------------}
-  
-  TTripsResource = Class(TGoogleResource)
-  Public
-    Class Function ResourceName : String; override;
-    Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function Search(aTripsSearchRequest : TTripsSearchRequest) : TTripsSearchResponse;
-  end;
-  
-  
-  { --------------------------------------------------------------------
-    TQpxExpressAPI
-    --------------------------------------------------------------------}
-  
-  TQpxExpressAPI = Class(TGoogleAPI)
-  Private
-    FTripsInstance : TTripsResource;
-    Function GetTripsInstance : TTripsResource;virtual;
-  Public
-    //Override class functions with API info
-    Class Function APIName : String; override;
-    Class Function APIVersion : String; override;
-    Class Function APIRevision : String; override;
-    Class Function APIID : String; override;
-    Class Function APITitle : String; override;
-    Class Function APIDescription : String; override;
-    Class Function APIOwnerDomain : String; override;
-    Class Function APIOwnerName : String; override;
-    Class Function APIIcon16 : String; override;
-    Class Function APIIcon32 : String; override;
-    Class Function APIdocumentationLink : String; override;
-    Class Function APIrootUrl : string; override;
-    Class Function APIbasePath : string;override;
-    Class Function APIbaseURL : String;override;
-    Class Function APIProtocol : string;override;
-    Class Function APIservicePath : string;override;
-    Class Function APIbatchPath : String;override;
-    Class Function APIAuthScopes : TScopeInfoArray;override;
-    Class Function APINeedsAuth : Boolean;override;
-    Class Procedure RegisterAPIResources; override;
-    //Add create function for resources
-    Function CreateTripsResource(AOwner : TComponent) : TTripsResource;virtual;overload;
-    Function CreateTripsResource : TTripsResource;virtual;overload;
-    //Add default on-demand instances for resources
-    Property TripsResource : TTripsResource Read GetTripsInstance;
-  end;
-
-implementation
-
-
-{ --------------------------------------------------------------------
-  TAircraftData
-  --------------------------------------------------------------------}
-
-
-Procedure TAircraftData.Setcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcode=AValue) then exit;
-  Fcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAircraftData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAircraftData.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TAirportData
-  --------------------------------------------------------------------}
-
-
-Procedure TAirportData.Setcity(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcity=AValue) then exit;
-  Fcity:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAirportData.Setcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcode=AValue) then exit;
-  Fcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAirportData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TAirportData.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TBagDescriptor
-  --------------------------------------------------------------------}
-
-
-Procedure TBagDescriptor.SetcommercialName(AIndex : Integer; AValue : string); 
-
-begin
-  If (FcommercialName=AValue) then exit;
-  FcommercialName:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TBagDescriptor.Setcount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fcount=AValue) then exit;
-  Fcount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TBagDescriptor.Setdescription(AIndex : Integer; AValue : TBagDescriptordescription); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TBagDescriptor.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TBagDescriptor.Setsubcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fsubcode=AValue) then exit;
-  Fsubcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TBagDescriptordescription
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TCarrierData
-  --------------------------------------------------------------------}
-
-
-Procedure TCarrierData.Setcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcode=AValue) then exit;
-  Fcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCarrierData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCarrierData.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TCityData
-  --------------------------------------------------------------------}
-
-
-Procedure TCityData.Setcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcode=AValue) then exit;
-  Fcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCityData.Setcountry(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcountry=AValue) then exit;
-  Fcountry:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCityData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TCityData.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TData
-  --------------------------------------------------------------------}
-
-
-Procedure TData.Setaircraft(AIndex : Integer; AValue : TDataaircraft); 
-
-begin
-  If (Faircraft=AValue) then exit;
-  Faircraft:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TData.Setairport(AIndex : Integer; AValue : TDataairport); 
-
-begin
-  If (Fairport=AValue) then exit;
-  Fairport:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TData.Setcarrier(AIndex : Integer; AValue : TDatacarrier); 
-
-begin
-  If (Fcarrier=AValue) then exit;
-  Fcarrier:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TData.Setcity(AIndex : Integer; AValue : TDatacity); 
-
-begin
-  If (Fcity=AValue) then exit;
-  Fcity:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TData.Settax(AIndex : Integer; AValue : TDatatax); 
-
-begin
-  If (Ftax=AValue) then exit;
-  Ftax:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TDataaircraft
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TDataairport
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TDatacarrier
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TDatacity
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TDatatax
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TFareInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TFareInfo.SetbasisCode(AIndex : Integer; AValue : string); 
-
-begin
-  If (FbasisCode=AValue) then exit;
-  FbasisCode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Setcarrier(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcarrier=AValue) then exit;
-  Fcarrier:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Setdestination(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdestination=AValue) then exit;
-  Fdestination:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Setorigin(AIndex : Integer; AValue : string); 
-
-begin
-  If (Forigin=AValue) then exit;
-  Forigin:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFareInfo.Set_private(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (F_private=AValue) then exit;
-  F_private:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Class Function TFareInfo.ExportPropertyName(Const AName : String) :String;
-
-begin
-  Case AName of
-  '_private' : Result:='private';
-  else
-    Result:=Inherited ExportPropertyName(AName);
-  end;
-end;
-
-
-
-
-{ --------------------------------------------------------------------
-  TFlightInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TFlightInfo.Setcarrier(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcarrier=AValue) then exit;
-  Fcarrier:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFlightInfo.Setnumber(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fnumber=AValue) then exit;
-  Fnumber:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TFreeBaggageAllowance
-  --------------------------------------------------------------------}
-
-
-Procedure TFreeBaggageAllowance.SetbagDescriptor(AIndex : Integer; AValue : TFreeBaggageAllowancebagDescriptor); 
-
-begin
-  If (FbagDescriptor=AValue) then exit;
-  FbagDescriptor:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFreeBaggageAllowance.Setkilos(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fkilos=AValue) then exit;
-  Fkilos:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFreeBaggageAllowance.SetkilosPerPiece(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FkilosPerPiece=AValue) then exit;
-  FkilosPerPiece:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFreeBaggageAllowance.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFreeBaggageAllowance.Setpieces(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fpieces=AValue) then exit;
-  Fpieces:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TFreeBaggageAllowance.Setpounds(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fpounds=AValue) then exit;
-  Fpounds:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TFreeBaggageAllowancebagDescriptor
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TLegInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TLegInfo.Setaircraft(AIndex : Integer; AValue : string); 
-
-begin
-  If (Faircraft=AValue) then exit;
-  Faircraft:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetarrivalTime(AIndex : Integer; AValue : string); 
-
-begin
-  If (FarrivalTime=AValue) then exit;
-  FarrivalTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetchangePlane(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FchangePlane=AValue) then exit;
-  FchangePlane:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetconnectionDuration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FconnectionDuration=AValue) then exit;
-  FconnectionDuration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetdepartureTime(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdepartureTime=AValue) then exit;
-  FdepartureTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setdestination(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdestination=AValue) then exit;
-  Fdestination:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetdestinationTerminal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FdestinationTerminal=AValue) then exit;
-  FdestinationTerminal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setduration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fduration=AValue) then exit;
-  Fduration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setmeal(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fmeal=AValue) then exit;
-  Fmeal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setmileage(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fmileage=AValue) then exit;
-  Fmileage:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetonTimePerformance(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FonTimePerformance=AValue) then exit;
-  FonTimePerformance:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetoperatingDisclosure(AIndex : Integer; AValue : string); 
-
-begin
-  If (FoperatingDisclosure=AValue) then exit;
-  FoperatingDisclosure:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setorigin(AIndex : Integer; AValue : string); 
-
-begin
-  If (Forigin=AValue) then exit;
-  Forigin:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.SetoriginTerminal(AIndex : Integer; AValue : string); 
-
-begin
-  If (ForiginTerminal=AValue) then exit;
-  ForiginTerminal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TLegInfo.Setsecure(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Fsecure=AValue) then exit;
-  Fsecure:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPassengerCounts
-  --------------------------------------------------------------------}
-
-
-Procedure TPassengerCounts.SetadultCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FadultCount=AValue) then exit;
-  FadultCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPassengerCounts.SetchildCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FchildCount=AValue) then exit;
-  FchildCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPassengerCounts.SetinfantInLapCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FinfantInLapCount=AValue) then exit;
-  FinfantInLapCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPassengerCounts.SetinfantInSeatCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FinfantInSeatCount=AValue) then exit;
-  FinfantInSeatCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPassengerCounts.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPassengerCounts.SetseniorCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FseniorCount=AValue) then exit;
-  FseniorCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPricingInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TPricingInfo.SetbaseFareTotal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FbaseFareTotal=AValue) then exit;
-  FbaseFareTotal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Setfare(AIndex : Integer; AValue : TPricingInfofare); 
-
-begin
-  If (Ffare=AValue) then exit;
-  Ffare:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetfareCalculation(AIndex : Integer; AValue : string); 
-
-begin
-  If (FfareCalculation=AValue) then exit;
-  FfareCalculation:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetlatestTicketingTime(AIndex : Integer; AValue : string); 
-
-begin
-  If (FlatestTicketingTime=AValue) then exit;
-  FlatestTicketingTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Setpassengers(AIndex : Integer; AValue : TPassengerCounts); 
-
-begin
-  If (Fpassengers=AValue) then exit;
-  Fpassengers:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Setptc(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fptc=AValue) then exit;
-  Fptc:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Setrefundable(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Frefundable=AValue) then exit;
-  Frefundable:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetsaleFareTotal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsaleFareTotal=AValue) then exit;
-  FsaleFareTotal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetsaleTaxTotal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsaleTaxTotal=AValue) then exit;
-  FsaleTaxTotal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetsaleTotal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsaleTotal=AValue) then exit;
-  FsaleTotal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.SetsegmentPricing(AIndex : Integer; AValue : TPricingInfosegmentPricing); 
-
-begin
-  If (FsegmentPricing=AValue) then exit;
-  FsegmentPricing:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TPricingInfo.Settax(AIndex : Integer; AValue : TPricingInfotax); 
-
-begin
-  If (Ftax=AValue) then exit;
-  Ftax:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TPricingInfofare
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TPricingInfosegmentPricing
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TPricingInfotax
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TSegmentInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TSegmentInfo.SetbookingCode(AIndex : Integer; AValue : string); 
-
-begin
-  If (FbookingCode=AValue) then exit;
-  FbookingCode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.SetbookingCodeCount(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FbookingCodeCount=AValue) then exit;
-  FbookingCodeCount:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setcabin(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcabin=AValue) then exit;
-  Fcabin:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.SetconnectionDuration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FconnectionDuration=AValue) then exit;
-  FconnectionDuration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setduration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fduration=AValue) then exit;
-  Fduration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setflight(AIndex : Integer; AValue : TFlightInfo); 
-
-begin
-  If (Fflight=AValue) then exit;
-  Fflight:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.Setleg(AIndex : Integer; AValue : TSegmentInfoleg); 
-
-begin
-  If (Fleg=AValue) then exit;
-  Fleg:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.SetmarriedSegmentGroup(AIndex : Integer; AValue : string); 
-
-begin
-  If (FmarriedSegmentGroup=AValue) then exit;
-  FmarriedSegmentGroup:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentInfo.SetsubjectToGovernmentApproval(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (FsubjectToGovernmentApproval=AValue) then exit;
-  FsubjectToGovernmentApproval:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TSegmentInfoleg
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TSegmentPricing
-  --------------------------------------------------------------------}
-
-
-Procedure TSegmentPricing.SetfareId(AIndex : Integer; AValue : string); 
-
-begin
-  If (FfareId=AValue) then exit;
-  FfareId:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentPricing.SetfreeBaggageOption(AIndex : Integer; AValue : TSegmentPricingfreeBaggageOption); 
-
-begin
-  If (FfreeBaggageOption=AValue) then exit;
-  FfreeBaggageOption:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentPricing.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSegmentPricing.SetsegmentId(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsegmentId=AValue) then exit;
-  FsegmentId:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TSegmentPricingfreeBaggageOption
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TSliceInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TSliceInfo.Setduration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fduration=AValue) then exit;
-  Fduration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInfo.Setsegment(AIndex : Integer; AValue : TSliceInfosegment); 
-
-begin
-  If (Fsegment=AValue) then exit;
-  Fsegment:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TSliceInfosegment
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TSliceInput
-  --------------------------------------------------------------------}
-
-
-Procedure TSliceInput.Setalliance(AIndex : Integer; AValue : string); 
-
-begin
-  If (Falliance=AValue) then exit;
-  Falliance:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.Setdate(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdate=AValue) then exit;
-  Fdate:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.Setdestination(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fdestination=AValue) then exit;
-  Fdestination:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetmaxConnectionDuration(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FmaxConnectionDuration=AValue) then exit;
-  FmaxConnectionDuration:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetmaxStops(AIndex : Integer; AValue : integer); 
-
-begin
-  If (FmaxStops=AValue) then exit;
-  FmaxStops:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.Setorigin(AIndex : Integer; AValue : string); 
-
-begin
-  If (Forigin=AValue) then exit;
-  Forigin:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetpermittedCarrier(AIndex : Integer; AValue : TSliceInputpermittedCarrier); 
-
-begin
-  If (FpermittedCarrier=AValue) then exit;
-  FpermittedCarrier:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetpermittedDepartureTime(AIndex : Integer; AValue : TTimeOfDayRange); 
-
-begin
-  If (FpermittedDepartureTime=AValue) then exit;
-  FpermittedDepartureTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetpreferredCabin(AIndex : Integer; AValue : string); 
-
-begin
-  If (FpreferredCabin=AValue) then exit;
-  FpreferredCabin:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TSliceInput.SetprohibitedCarrier(AIndex : Integer; AValue : TSliceInputprohibitedCarrier); 
-
-begin
-  If (FprohibitedCarrier=AValue) then exit;
-  FprohibitedCarrier:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TSliceInputpermittedCarrier
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TSliceInputprohibitedCarrier
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TTaxData
-  --------------------------------------------------------------------}
-
-
-Procedure TTaxData.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxData.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxData.Setname(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTaxInfo
-  --------------------------------------------------------------------}
-
-
-Procedure TTaxInfo.SetchargeType(AIndex : Integer; AValue : string); 
-
-begin
-  If (FchargeType=AValue) then exit;
-  FchargeType:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxInfo.Setcode(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcode=AValue) then exit;
-  Fcode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxInfo.Setcountry(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fcountry=AValue) then exit;
-  Fcountry:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxInfo.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxInfo.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTaxInfo.SetsalePrice(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsalePrice=AValue) then exit;
-  FsalePrice:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTimeOfDayRange
-  --------------------------------------------------------------------}
-
-
-Procedure TTimeOfDayRange.SetearliestTime(AIndex : Integer; AValue : string); 
-
-begin
-  If (FearliestTime=AValue) then exit;
-  FearliestTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTimeOfDayRange.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTimeOfDayRange.SetlatestTime(AIndex : Integer; AValue : string); 
-
-begin
-  If (FlatestTime=AValue) then exit;
-  FlatestTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOption
-  --------------------------------------------------------------------}
-
-
-Procedure TTripOption.Setid(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fid=AValue) then exit;
-  Fid:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOption.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOption.Setpricing(AIndex : Integer; AValue : TTripOptionpricing); 
-
-begin
-  If (Fpricing=AValue) then exit;
-  Fpricing:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOption.SetsaleTotal(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsaleTotal=AValue) then exit;
-  FsaleTotal:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOption.Setslice(AIndex : Integer; AValue : TTripOptionslice); 
-
-begin
-  If (Fslice=AValue) then exit;
-  Fslice:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionpricing
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionslice
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionsRequest
-  --------------------------------------------------------------------}
-
-
-Procedure TTripOptionsRequest.SetmaxPrice(AIndex : Integer; AValue : string); 
-
-begin
-  If (FmaxPrice=AValue) then exit;
-  FmaxPrice:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsRequest.Setpassengers(AIndex : Integer; AValue : TPassengerCounts); 
-
-begin
-  If (Fpassengers=AValue) then exit;
-  Fpassengers:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsRequest.Setrefundable(AIndex : Integer; AValue : boolean); 
-
-begin
-  If (Frefundable=AValue) then exit;
-  Frefundable:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsRequest.SetsaleCountry(AIndex : Integer; AValue : string); 
-
-begin
-  If (FsaleCountry=AValue) then exit;
-  FsaleCountry:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsRequest.Setslice(AIndex : Integer; AValue : TTripOptionsRequestslice); 
-
-begin
-  If (Fslice=AValue) then exit;
-  Fslice:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsRequest.Setsolutions(AIndex : Integer; AValue : integer); 
-
-begin
-  If (Fsolutions=AValue) then exit;
-  Fsolutions:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionsRequestslice
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionsResponse
-  --------------------------------------------------------------------}
-
-
-Procedure TTripOptionsResponse.Setdata(AIndex : Integer; AValue : TData); 
-
-begin
-  If (Fdata=AValue) then exit;
-  Fdata:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsResponse.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsResponse.SetrequestId(AIndex : Integer; AValue : string); 
-
-begin
-  If (FrequestId=AValue) then exit;
-  FrequestId:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripOptionsResponse.SettripOption(AIndex : Integer; AValue : TTripOptionsResponsetripOption); 
-
-begin
-  If (FtripOption=AValue) then exit;
-  FtripOption:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripOptionsResponsetripOption
-  --------------------------------------------------------------------}
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripsSearchRequest
-  --------------------------------------------------------------------}
-
-
-Procedure TTripsSearchRequest.Setrequest(AIndex : Integer; AValue : TTripOptionsRequest); 
-
-begin
-  If (Frequest=AValue) then exit;
-  Frequest:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripsSearchResponse
-  --------------------------------------------------------------------}
-
-
-Procedure TTripsSearchResponse.Setkind(AIndex : Integer; AValue : string); 
-
-begin
-  If (Fkind=AValue) then exit;
-  Fkind:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TTripsSearchResponse.Settrips(AIndex : Integer; AValue : TTripOptionsResponse); 
-
-begin
-  If (Ftrips=AValue) then exit;
-  Ftrips:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
-{ --------------------------------------------------------------------
-  TTripsResource
-  --------------------------------------------------------------------}
-
-
-Class Function TTripsResource.ResourceName : String;
-
-begin
-  Result:='trips';
-end;
-
-Class Function TTripsResource.DefaultAPI : TGoogleAPIClass;
-
-begin
-  Result:=TqpxExpressAPI;
-end;
-
-Function TTripsResource.Search(aTripsSearchRequest : TTripsSearchRequest) : TTripsSearchResponse;
-
-Const
-  _HTTPMethod = 'POST';
-  _Path       = 'search';
-  _Methodid   = 'qpxExpress.trips.search';
-
-begin
-  Result:=ServiceCall(_HTTPMethod,_Path,'',aTripsSearchRequest,TTripsSearchResponse) as TTripsSearchResponse;
-end;
-
-
-
-{ --------------------------------------------------------------------
-  TQpxExpressAPI
-  --------------------------------------------------------------------}
-
-Class Function TQpxExpressAPI.APIName : String;
-
-begin
-  Result:='qpxExpress';
-end;
-
-Class Function TQpxExpressAPI.APIVersion : String;
-
-begin
-  Result:='v1';
-end;
-
-Class Function TQpxExpressAPI.APIRevision : String;
-
-begin
-  Result:='20140321';
-end;
-
-Class Function TQpxExpressAPI.APIID : String;
-
-begin
-  Result:='qpxExpress:v1';
-end;
-
-Class Function TQpxExpressAPI.APITitle : String;
-
-begin
-  Result:='QPX Express API';
-end;
-
-Class Function TQpxExpressAPI.APIDescription : String;
-
-begin
-  Result:='Lets you find the least expensive flights between an origin and a destination.';
-end;
-
-Class Function TQpxExpressAPI.APIOwnerDomain : String;
-
-begin
-  Result:='google.com';
-end;
-
-Class Function TQpxExpressAPI.APIOwnerName : String;
-
-begin
-  Result:='Google';
-end;
-
-Class Function TQpxExpressAPI.APIIcon16 : String;
-
-begin
-  Result:='http://www.google.com/images/icons/product/search-16.gif';
-end;
-
-Class Function TQpxExpressAPI.APIIcon32 : String;
-
-begin
-  Result:='http://www.google.com/images/icons/product/search-32.gif';
-end;
-
-Class Function TQpxExpressAPI.APIdocumentationLink : String;
-
-begin
-  Result:='http://developers.google.com/qpx-express';
-end;
-
-Class Function TQpxExpressAPI.APIrootUrl : string;
-
-begin
-  Result:='https://www.googleapis.com/';
-end;
-
-Class Function TQpxExpressAPI.APIbasePath : string;
-
-begin
-  Result:='/qpxExpress/v1/trips/';
-end;
-
-Class Function TQpxExpressAPI.APIbaseURL : String;
-
-begin
-  Result:='https://www.googleapis.com/qpxExpress/v1/trips/';
-end;
-
-Class Function TQpxExpressAPI.APIProtocol : string;
-
-begin
-  Result:='rest';
-end;
-
-Class Function TQpxExpressAPI.APIservicePath : string;
-
-begin
-  Result:='qpxExpress/v1/trips/';
-end;
-
-Class Function TQpxExpressAPI.APIbatchPath : String;
-
-begin
-  Result:='batch';
-end;
-
-Class Function TQpxExpressAPI.APIAuthScopes : TScopeInfoArray;
-
-begin
-  SetLength(Result,0);
-  
-end;
-
-Class Function TQpxExpressAPI.APINeedsAuth : Boolean;
-
-begin
-  Result:=False;
-end;
-
-Class Procedure TQpxExpressAPI.RegisterAPIResources;
-
-begin
-  TAircraftData.RegisterObject;
-  TAirportData.RegisterObject;
-  TBagDescriptor.RegisterObject;
-  TBagDescriptordescription.RegisterObject;
-  TCarrierData.RegisterObject;
-  TCityData.RegisterObject;
-  TData.RegisterObject;
-  TDataaircraft.RegisterObject;
-  TDataairport.RegisterObject;
-  TDatacarrier.RegisterObject;
-  TDatacity.RegisterObject;
-  TDatatax.RegisterObject;
-  TFareInfo.RegisterObject;
-  TFlightInfo.RegisterObject;
-  TFreeBaggageAllowance.RegisterObject;
-  TFreeBaggageAllowancebagDescriptor.RegisterObject;
-  TLegInfo.RegisterObject;
-  TPassengerCounts.RegisterObject;
-  TPricingInfo.RegisterObject;
-  TPricingInfofare.RegisterObject;
-  TPricingInfosegmentPricing.RegisterObject;
-  TPricingInfotax.RegisterObject;
-  TSegmentInfo.RegisterObject;
-  TSegmentInfoleg.RegisterObject;
-  TSegmentPricing.RegisterObject;
-  TSegmentPricingfreeBaggageOption.RegisterObject;
-  TSliceInfo.RegisterObject;
-  TSliceInfosegment.RegisterObject;
-  TSliceInput.RegisterObject;
-  TSliceInputpermittedCarrier.RegisterObject;
-  TSliceInputprohibitedCarrier.RegisterObject;
-  TTaxData.RegisterObject;
-  TTaxInfo.RegisterObject;
-  TTimeOfDayRange.RegisterObject;
-  TTripOption.RegisterObject;
-  TTripOptionpricing.RegisterObject;
-  TTripOptionslice.RegisterObject;
-  TTripOptionsRequest.RegisterObject;
-  TTripOptionsRequestslice.RegisterObject;
-  TTripOptionsResponse.RegisterObject;
-  TTripOptionsResponsetripOption.RegisterObject;
-  TTripsSearchRequest.RegisterObject;
-  TTripsSearchResponse.RegisterObject;
-end;
-
-
-Function TQpxExpressAPI.GetTripsInstance : TTripsResource;
-
-begin
-  if (FTripsInstance=Nil) then
-    FTripsInstance:=CreateTripsResource;
-  Result:=FTripsInstance;
-end;
-
-Function TQpxExpressAPI.CreateTripsResource : TTripsResource;
-
-begin
-  Result:=CreateTripsResource(Self);
-end;
-
-
-Function TQpxExpressAPI.CreateTripsResource(AOwner : TComponent) : TTripsResource;
-
-begin
-  Result:=TTripsResource.Create(AOwner);
-  Result.API:=Self;
-end;
-
-
-
-initialization
-  TQpxExpressAPI.RegisterAPI;
-end.

+ 2777 - 0
packages/googleapi/src/googleqpxexpress.pp

@@ -0,0 +1,2777 @@
+unit googleqpxExpress;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAircraftData = Class;
+  TAirportData = Class;
+  TBagDescriptor = Class;
+  TCarrierData = Class;
+  TCityData = Class;
+  TData = Class;
+  TFareInfo = Class;
+  TFlightInfo = Class;
+  TFreeBaggageAllowance = Class;
+  TLegInfo = Class;
+  TPassengerCounts = Class;
+  TPricingInfo = Class;
+  TSegmentInfo = Class;
+  TSegmentPricing = Class;
+  TSliceInfo = Class;
+  TSliceInput = Class;
+  TTaxData = Class;
+  TTaxInfo = Class;
+  TTimeOfDayRange = Class;
+  TTripOption = Class;
+  TTripOptionsRequest = Class;
+  TTripOptionsResponse = Class;
+  TTripsSearchRequest = Class;
+  TTripsSearchResponse = Class;
+  TAircraftDataArray = Array of TAircraftData;
+  TAirportDataArray = Array of TAirportData;
+  TBagDescriptorArray = Array of TBagDescriptor;
+  TCarrierDataArray = Array of TCarrierData;
+  TCityDataArray = Array of TCityData;
+  TDataArray = Array of TData;
+  TFareInfoArray = Array of TFareInfo;
+  TFlightInfoArray = Array of TFlightInfo;
+  TFreeBaggageAllowanceArray = Array of TFreeBaggageAllowance;
+  TLegInfoArray = Array of TLegInfo;
+  TPassengerCountsArray = Array of TPassengerCounts;
+  TPricingInfoArray = Array of TPricingInfo;
+  TSegmentInfoArray = Array of TSegmentInfo;
+  TSegmentPricingArray = Array of TSegmentPricing;
+  TSliceInfoArray = Array of TSliceInfo;
+  TSliceInputArray = Array of TSliceInput;
+  TTaxDataArray = Array of TTaxData;
+  TTaxInfoArray = Array of TTaxInfo;
+  TTimeOfDayRangeArray = Array of TTimeOfDayRange;
+  TTripOptionArray = Array of TTripOption;
+  TTripOptionsRequestArray = Array of TTripOptionsRequest;
+  TTripOptionsResponseArray = Array of TTripOptionsResponse;
+  TTripsSearchRequestArray = Array of TTripsSearchRequest;
+  TTripsSearchResponseArray = Array of TTripsSearchResponse;
+  //Anonymous types, using auto-generated names
+  TDataTypeaircraftArray = Array of TAircraftData;
+  TDataTypeairportArray = Array of TAirportData;
+  TDataTypecarrierArray = Array of TCarrierData;
+  TDataTypecityArray = Array of TCityData;
+  TDataTypetaxArray = Array of TTaxData;
+  TFreeBaggageAllowanceTypebagDescriptorArray = Array of TBagDescriptor;
+  TPricingInfoTypefareArray = Array of TFareInfo;
+  TPricingInfoTypesegmentPricingArray = Array of TSegmentPricing;
+  TPricingInfoTypetaxArray = Array of TTaxInfo;
+  TSegmentInfoTypelegArray = Array of TLegInfo;
+  TSegmentPricingTypefreeBaggageOptionArray = Array of TFreeBaggageAllowance;
+  TSliceInfoTypesegmentArray = Array of TSegmentInfo;
+  TTripOptionTypepricingArray = Array of TPricingInfo;
+  TTripOptionTypesliceArray = Array of TSliceInfo;
+  TTripOptionsRequestTypesliceArray = Array of TSliceInput;
+  TTripOptionsResponseTypetripOptionArray = Array of TTripOption;
+  
+  { --------------------------------------------------------------------
+    TAircraftData
+    --------------------------------------------------------------------}
+  
+  TAircraftData = Class(TGoogleBaseObject)
+  Private
+    Fcode : String;
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property code : String Index 0 Read Fcode Write Setcode;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TAircraftDataClass = Class of TAircraftData;
+  
+  { --------------------------------------------------------------------
+    TAirportData
+    --------------------------------------------------------------------}
+  
+  TAirportData = Class(TGoogleBaseObject)
+  Private
+    Fcity : String;
+    Fcode : String;
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setcity(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property city : String Index 0 Read Fcity Write Setcity;
+    Property code : String Index 8 Read Fcode Write Setcode;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property name : String Index 24 Read Fname Write Setname;
+  end;
+  TAirportDataClass = Class of TAirportData;
+  
+  { --------------------------------------------------------------------
+    TBagDescriptor
+    --------------------------------------------------------------------}
+  
+  TBagDescriptor = Class(TGoogleBaseObject)
+  Private
+    FcommercialName : String;
+    Fcount : integer;
+    Fdescription : TStringArray;
+    Fkind : String;
+    Fsubcode : String;
+  Protected
+    //Property setters
+    Procedure SetcommercialName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsubcode(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property commercialName : String Index 0 Read FcommercialName Write SetcommercialName;
+    Property count : integer Index 8 Read Fcount Write Setcount;
+    Property description : TStringArray Index 16 Read Fdescription Write Setdescription;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property subcode : String Index 32 Read Fsubcode Write Setsubcode;
+  end;
+  TBagDescriptorClass = Class of TBagDescriptor;
+  
+  { --------------------------------------------------------------------
+    TCarrierData
+    --------------------------------------------------------------------}
+  
+  TCarrierData = Class(TGoogleBaseObject)
+  Private
+    Fcode : String;
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property code : String Index 0 Read Fcode Write Setcode;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TCarrierDataClass = Class of TCarrierData;
+  
+  { --------------------------------------------------------------------
+    TCityData
+    --------------------------------------------------------------------}
+  
+  TCityData = Class(TGoogleBaseObject)
+  Private
+    Fcode : String;
+    Fcountry : String;
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property code : String Index 0 Read Fcode Write Setcode;
+    Property country : String Index 8 Read Fcountry Write Setcountry;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property name : String Index 24 Read Fname Write Setname;
+  end;
+  TCityDataClass = Class of TCityData;
+  
+  { --------------------------------------------------------------------
+    TData
+    --------------------------------------------------------------------}
+  
+  TData = Class(TGoogleBaseObject)
+  Private
+    Faircraft : TDataTypeaircraftArray;
+    Fairport : TDataTypeairportArray;
+    Fcarrier : TDataTypecarrierArray;
+    Fcity : TDataTypecityArray;
+    Fkind : String;
+    Ftax : TDataTypetaxArray;
+  Protected
+    //Property setters
+    Procedure Setaircraft(AIndex : Integer; const AValue : TDataTypeaircraftArray); virtual;
+    Procedure Setairport(AIndex : Integer; const AValue : TDataTypeairportArray); virtual;
+    Procedure Setcarrier(AIndex : Integer; const AValue : TDataTypecarrierArray); virtual;
+    Procedure Setcity(AIndex : Integer; const AValue : TDataTypecityArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settax(AIndex : Integer; const AValue : TDataTypetaxArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property aircraft : TDataTypeaircraftArray Index 0 Read Faircraft Write Setaircraft;
+    Property airport : TDataTypeairportArray Index 8 Read Fairport Write Setairport;
+    Property carrier : TDataTypecarrierArray Index 16 Read Fcarrier Write Setcarrier;
+    Property city : TDataTypecityArray Index 24 Read Fcity Write Setcity;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property tax : TDataTypetaxArray Index 40 Read Ftax Write Settax;
+  end;
+  TDataClass = Class of TData;
+  
+  { --------------------------------------------------------------------
+    TFareInfo
+    --------------------------------------------------------------------}
+  
+  TFareInfo = Class(TGoogleBaseObject)
+  Private
+    FbasisCode : String;
+    Fcarrier : String;
+    Fdestination : String;
+    Fid : String;
+    Fkind : String;
+    Forigin : String;
+    F_private : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetbasisCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcarrier(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setorigin(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_private(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property basisCode : String Index 0 Read FbasisCode Write SetbasisCode;
+    Property carrier : String Index 8 Read Fcarrier Write Setcarrier;
+    Property destination : String Index 16 Read Fdestination Write Setdestination;
+    Property id : String Index 24 Read Fid Write Setid;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property origin : String Index 40 Read Forigin Write Setorigin;
+    Property _private : boolean Index 48 Read F_private Write Set_private;
+  end;
+  TFareInfoClass = Class of TFareInfo;
+  
+  { --------------------------------------------------------------------
+    TFlightInfo
+    --------------------------------------------------------------------}
+  
+  TFlightInfo = Class(TGoogleBaseObject)
+  Private
+    Fcarrier : String;
+    Fnumber : String;
+  Protected
+    //Property setters
+    Procedure Setcarrier(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnumber(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property carrier : String Index 0 Read Fcarrier Write Setcarrier;
+    Property number : String Index 8 Read Fnumber Write Setnumber;
+  end;
+  TFlightInfoClass = Class of TFlightInfo;
+  
+  { --------------------------------------------------------------------
+    TFreeBaggageAllowance
+    --------------------------------------------------------------------}
+  
+  TFreeBaggageAllowance = Class(TGoogleBaseObject)
+  Private
+    FbagDescriptor : TFreeBaggageAllowanceTypebagDescriptorArray;
+    Fkilos : integer;
+    FkilosPerPiece : integer;
+    Fkind : String;
+    Fpieces : integer;
+    Fpounds : integer;
+  Protected
+    //Property setters
+    Procedure SetbagDescriptor(AIndex : Integer; const AValue : TFreeBaggageAllowanceTypebagDescriptorArray); virtual;
+    Procedure Setkilos(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetkilosPerPiece(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpieces(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setpounds(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property bagDescriptor : TFreeBaggageAllowanceTypebagDescriptorArray Index 0 Read FbagDescriptor Write SetbagDescriptor;
+    Property kilos : integer Index 8 Read Fkilos Write Setkilos;
+    Property kilosPerPiece : integer Index 16 Read FkilosPerPiece Write SetkilosPerPiece;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property pieces : integer Index 32 Read Fpieces Write Setpieces;
+    Property pounds : integer Index 40 Read Fpounds Write Setpounds;
+  end;
+  TFreeBaggageAllowanceClass = Class of TFreeBaggageAllowance;
+  
+  { --------------------------------------------------------------------
+    TLegInfo
+    --------------------------------------------------------------------}
+  
+  TLegInfo = Class(TGoogleBaseObject)
+  Private
+    Faircraft : String;
+    FarrivalTime : String;
+    FchangePlane : boolean;
+    FconnectionDuration : integer;
+    FdepartureTime : String;
+    Fdestination : String;
+    FdestinationTerminal : String;
+    Fduration : integer;
+    Fid : String;
+    Fkind : String;
+    Fmeal : String;
+    Fmileage : integer;
+    FonTimePerformance : integer;
+    FoperatingDisclosure : String;
+    Forigin : String;
+    ForiginTerminal : String;
+    Fsecure : boolean;
+  Protected
+    //Property setters
+    Procedure Setaircraft(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetarrivalTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetchangePlane(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetconnectionDuration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetdepartureTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdestinationTerminal(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setduration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmeal(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmileage(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetonTimePerformance(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetoperatingDisclosure(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setorigin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetoriginTerminal(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsecure(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property aircraft : String Index 0 Read Faircraft Write Setaircraft;
+    Property arrivalTime : String Index 8 Read FarrivalTime Write SetarrivalTime;
+    Property changePlane : boolean Index 16 Read FchangePlane Write SetchangePlane;
+    Property connectionDuration : integer Index 24 Read FconnectionDuration Write SetconnectionDuration;
+    Property departureTime : String Index 32 Read FdepartureTime Write SetdepartureTime;
+    Property destination : String Index 40 Read Fdestination Write Setdestination;
+    Property destinationTerminal : String Index 48 Read FdestinationTerminal Write SetdestinationTerminal;
+    Property duration : integer Index 56 Read Fduration Write Setduration;
+    Property id : String Index 64 Read Fid Write Setid;
+    Property kind : String Index 72 Read Fkind Write Setkind;
+    Property meal : String Index 80 Read Fmeal Write Setmeal;
+    Property mileage : integer Index 88 Read Fmileage Write Setmileage;
+    Property onTimePerformance : integer Index 96 Read FonTimePerformance Write SetonTimePerformance;
+    Property operatingDisclosure : String Index 104 Read FoperatingDisclosure Write SetoperatingDisclosure;
+    Property origin : String Index 112 Read Forigin Write Setorigin;
+    Property originTerminal : String Index 120 Read ForiginTerminal Write SetoriginTerminal;
+    Property secure : boolean Index 128 Read Fsecure Write Setsecure;
+  end;
+  TLegInfoClass = Class of TLegInfo;
+  
+  { --------------------------------------------------------------------
+    TPassengerCounts
+    --------------------------------------------------------------------}
+  
+  TPassengerCounts = Class(TGoogleBaseObject)
+  Private
+    FadultCount : integer;
+    FchildCount : integer;
+    FinfantInLapCount : integer;
+    FinfantInSeatCount : integer;
+    Fkind : String;
+    FseniorCount : integer;
+  Protected
+    //Property setters
+    Procedure SetadultCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetchildCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinfantInLapCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinfantInSeatCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetseniorCount(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property adultCount : integer Index 0 Read FadultCount Write SetadultCount;
+    Property childCount : integer Index 8 Read FchildCount Write SetchildCount;
+    Property infantInLapCount : integer Index 16 Read FinfantInLapCount Write SetinfantInLapCount;
+    Property infantInSeatCount : integer Index 24 Read FinfantInSeatCount Write SetinfantInSeatCount;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property seniorCount : integer Index 40 Read FseniorCount Write SetseniorCount;
+  end;
+  TPassengerCountsClass = Class of TPassengerCounts;
+  
+  { --------------------------------------------------------------------
+    TPricingInfo
+    --------------------------------------------------------------------}
+  
+  TPricingInfo = Class(TGoogleBaseObject)
+  Private
+    FbaseFareTotal : String;
+    Ffare : TPricingInfoTypefareArray;
+    FfareCalculation : String;
+    Fkind : String;
+    FlatestTicketingTime : String;
+    Fpassengers : TPassengerCounts;
+    Fptc : String;
+    Frefundable : boolean;
+    FsaleFareTotal : String;
+    FsaleTaxTotal : String;
+    FsaleTotal : String;
+    FsegmentPricing : TPricingInfoTypesegmentPricingArray;
+    Ftax : TPricingInfoTypetaxArray;
+  Protected
+    //Property setters
+    Procedure SetbaseFareTotal(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfare(AIndex : Integer; const AValue : TPricingInfoTypefareArray); virtual;
+    Procedure SetfareCalculation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlatestTicketingTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); virtual;
+    Procedure Setptc(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrefundable(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsaleFareTotal(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsaleTaxTotal(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsaleTotal(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsegmentPricing(AIndex : Integer; const AValue : TPricingInfoTypesegmentPricingArray); virtual;
+    Procedure Settax(AIndex : Integer; const AValue : TPricingInfoTypetaxArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property baseFareTotal : String Index 0 Read FbaseFareTotal Write SetbaseFareTotal;
+    Property fare : TPricingInfoTypefareArray Index 8 Read Ffare Write Setfare;
+    Property fareCalculation : String Index 16 Read FfareCalculation Write SetfareCalculation;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property latestTicketingTime : String Index 32 Read FlatestTicketingTime Write SetlatestTicketingTime;
+    Property passengers : TPassengerCounts Index 40 Read Fpassengers Write Setpassengers;
+    Property ptc : String Index 48 Read Fptc Write Setptc;
+    Property refundable : boolean Index 56 Read Frefundable Write Setrefundable;
+    Property saleFareTotal : String Index 64 Read FsaleFareTotal Write SetsaleFareTotal;
+    Property saleTaxTotal : String Index 72 Read FsaleTaxTotal Write SetsaleTaxTotal;
+    Property saleTotal : String Index 80 Read FsaleTotal Write SetsaleTotal;
+    Property segmentPricing : TPricingInfoTypesegmentPricingArray Index 88 Read FsegmentPricing Write SetsegmentPricing;
+    Property tax : TPricingInfoTypetaxArray Index 96 Read Ftax Write Settax;
+  end;
+  TPricingInfoClass = Class of TPricingInfo;
+  
+  { --------------------------------------------------------------------
+    TSegmentInfo
+    --------------------------------------------------------------------}
+  
+  TSegmentInfo = Class(TGoogleBaseObject)
+  Private
+    FbookingCode : String;
+    FbookingCodeCount : integer;
+    Fcabin : String;
+    FconnectionDuration : integer;
+    Fduration : integer;
+    Fflight : TFlightInfo;
+    Fid : String;
+    Fkind : String;
+    Fleg : TSegmentInfoTypelegArray;
+    FmarriedSegmentGroup : String;
+    FsubjectToGovernmentApproval : boolean;
+  Protected
+    //Property setters
+    Procedure SetbookingCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbookingCodeCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setcabin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetconnectionDuration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setduration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setflight(AIndex : Integer; const AValue : TFlightInfo); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setleg(AIndex : Integer; const AValue : TSegmentInfoTypelegArray); virtual;
+    Procedure SetmarriedSegmentGroup(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsubjectToGovernmentApproval(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property bookingCode : String Index 0 Read FbookingCode Write SetbookingCode;
+    Property bookingCodeCount : integer Index 8 Read FbookingCodeCount Write SetbookingCodeCount;
+    Property cabin : String Index 16 Read Fcabin Write Setcabin;
+    Property connectionDuration : integer Index 24 Read FconnectionDuration Write SetconnectionDuration;
+    Property duration : integer Index 32 Read Fduration Write Setduration;
+    Property flight : TFlightInfo Index 40 Read Fflight Write Setflight;
+    Property id : String Index 48 Read Fid Write Setid;
+    Property kind : String Index 56 Read Fkind Write Setkind;
+    Property leg : TSegmentInfoTypelegArray Index 64 Read Fleg Write Setleg;
+    Property marriedSegmentGroup : String Index 72 Read FmarriedSegmentGroup Write SetmarriedSegmentGroup;
+    Property subjectToGovernmentApproval : boolean Index 80 Read FsubjectToGovernmentApproval Write SetsubjectToGovernmentApproval;
+  end;
+  TSegmentInfoClass = Class of TSegmentInfo;
+  
+  { --------------------------------------------------------------------
+    TSegmentPricing
+    --------------------------------------------------------------------}
+  
+  TSegmentPricing = Class(TGoogleBaseObject)
+  Private
+    FfareId : String;
+    FfreeBaggageOption : TSegmentPricingTypefreeBaggageOptionArray;
+    Fkind : String;
+    FsegmentId : String;
+  Protected
+    //Property setters
+    Procedure SetfareId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfreeBaggageOption(AIndex : Integer; const AValue : TSegmentPricingTypefreeBaggageOptionArray); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsegmentId(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property fareId : String Index 0 Read FfareId Write SetfareId;
+    Property freeBaggageOption : TSegmentPricingTypefreeBaggageOptionArray Index 8 Read FfreeBaggageOption Write SetfreeBaggageOption;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property segmentId : String Index 24 Read FsegmentId Write SetsegmentId;
+  end;
+  TSegmentPricingClass = Class of TSegmentPricing;
+  
+  { --------------------------------------------------------------------
+    TSliceInfo
+    --------------------------------------------------------------------}
+  
+  TSliceInfo = Class(TGoogleBaseObject)
+  Private
+    Fduration : integer;
+    Fkind : String;
+    Fsegment : TSliceInfoTypesegmentArray;
+  Protected
+    //Property setters
+    Procedure Setduration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsegment(AIndex : Integer; const AValue : TSliceInfoTypesegmentArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property duration : integer Index 0 Read Fduration Write Setduration;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property segment : TSliceInfoTypesegmentArray Index 16 Read Fsegment Write Setsegment;
+  end;
+  TSliceInfoClass = Class of TSliceInfo;
+  
+  { --------------------------------------------------------------------
+    TSliceInput
+    --------------------------------------------------------------------}
+  
+  TSliceInput = Class(TGoogleBaseObject)
+  Private
+    Falliance : String;
+    Fdate : String;
+    Fdestination : String;
+    Fkind : String;
+    FmaxConnectionDuration : integer;
+    FmaxStops : integer;
+    Forigin : String;
+    FpermittedCarrier : TStringArray;
+    FpermittedDepartureTime : TTimeOfDayRange;
+    FpreferredCabin : String;
+    FprohibitedCarrier : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setalliance(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxConnectionDuration(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxStops(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setorigin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpermittedCarrier(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetpermittedDepartureTime(AIndex : Integer; const AValue : TTimeOfDayRange); virtual;
+    Procedure SetpreferredCabin(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprohibitedCarrier(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property alliance : String Index 0 Read Falliance Write Setalliance;
+    Property date : String Index 8 Read Fdate Write Setdate;
+    Property destination : String Index 16 Read Fdestination Write Setdestination;
+    Property kind : String Index 24 Read Fkind Write Setkind;
+    Property maxConnectionDuration : integer Index 32 Read FmaxConnectionDuration Write SetmaxConnectionDuration;
+    Property maxStops : integer Index 40 Read FmaxStops Write SetmaxStops;
+    Property origin : String Index 48 Read Forigin Write Setorigin;
+    Property permittedCarrier : TStringArray Index 56 Read FpermittedCarrier Write SetpermittedCarrier;
+    Property permittedDepartureTime : TTimeOfDayRange Index 64 Read FpermittedDepartureTime Write SetpermittedDepartureTime;
+    Property preferredCabin : String Index 72 Read FpreferredCabin Write SetpreferredCabin;
+    Property prohibitedCarrier : TStringArray Index 80 Read FprohibitedCarrier Write SetprohibitedCarrier;
+  end;
+  TSliceInputClass = Class of TSliceInput;
+  
+  { --------------------------------------------------------------------
+    TTaxData
+    --------------------------------------------------------------------}
+  
+  TTaxData = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fkind : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TTaxDataClass = Class of TTaxData;
+  
+  { --------------------------------------------------------------------
+    TTaxInfo
+    --------------------------------------------------------------------}
+  
+  TTaxInfo = Class(TGoogleBaseObject)
+  Private
+    FchargeType : String;
+    Fcode : String;
+    Fcountry : String;
+    Fid : String;
+    Fkind : String;
+    FsalePrice : String;
+  Protected
+    //Property setters
+    Procedure SetchargeType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsalePrice(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property chargeType : String Index 0 Read FchargeType Write SetchargeType;
+    Property code : String Index 8 Read Fcode Write Setcode;
+    Property country : String Index 16 Read Fcountry Write Setcountry;
+    Property id : String Index 24 Read Fid Write Setid;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property salePrice : String Index 40 Read FsalePrice Write SetsalePrice;
+  end;
+  TTaxInfoClass = Class of TTaxInfo;
+  
+  { --------------------------------------------------------------------
+    TTimeOfDayRange
+    --------------------------------------------------------------------}
+  
+  TTimeOfDayRange = Class(TGoogleBaseObject)
+  Private
+    FearliestTime : String;
+    Fkind : String;
+    FlatestTime : String;
+  Protected
+    //Property setters
+    Procedure SetearliestTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlatestTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property earliestTime : String Index 0 Read FearliestTime Write SetearliestTime;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property latestTime : String Index 16 Read FlatestTime Write SetlatestTime;
+  end;
+  TTimeOfDayRangeClass = Class of TTimeOfDayRange;
+  
+  { --------------------------------------------------------------------
+    TTripOption
+    --------------------------------------------------------------------}
+  
+  TTripOption = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fkind : String;
+    Fpricing : TTripOptionTypepricingArray;
+    FsaleTotal : String;
+    Fslice : TTripOptionTypesliceArray;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpricing(AIndex : Integer; const AValue : TTripOptionTypepricingArray); virtual;
+    Procedure SetsaleTotal(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setslice(AIndex : Integer; const AValue : TTripOptionTypesliceArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property pricing : TTripOptionTypepricingArray Index 16 Read Fpricing Write Setpricing;
+    Property saleTotal : String Index 24 Read FsaleTotal Write SetsaleTotal;
+    Property slice : TTripOptionTypesliceArray Index 32 Read Fslice Write Setslice;
+  end;
+  TTripOptionClass = Class of TTripOption;
+  
+  { --------------------------------------------------------------------
+    TTripOptionsRequest
+    --------------------------------------------------------------------}
+  
+  TTripOptionsRequest = Class(TGoogleBaseObject)
+  Private
+    FmaxPrice : String;
+    Fpassengers : TPassengerCounts;
+    Frefundable : boolean;
+    FsaleCountry : String;
+    Fslice : TTripOptionsRequestTypesliceArray;
+    Fsolutions : integer;
+  Protected
+    //Property setters
+    Procedure SetmaxPrice(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); virtual;
+    Procedure Setrefundable(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsaleCountry(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setslice(AIndex : Integer; const AValue : TTripOptionsRequestTypesliceArray); virtual;
+    Procedure Setsolutions(AIndex : Integer; const AValue : integer); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property maxPrice : String Index 0 Read FmaxPrice Write SetmaxPrice;
+    Property passengers : TPassengerCounts Index 8 Read Fpassengers Write Setpassengers;
+    Property refundable : boolean Index 16 Read Frefundable Write Setrefundable;
+    Property saleCountry : String Index 24 Read FsaleCountry Write SetsaleCountry;
+    Property slice : TTripOptionsRequestTypesliceArray Index 32 Read Fslice Write Setslice;
+    Property solutions : integer Index 40 Read Fsolutions Write Setsolutions;
+  end;
+  TTripOptionsRequestClass = Class of TTripOptionsRequest;
+  
+  { --------------------------------------------------------------------
+    TTripOptionsResponse
+    --------------------------------------------------------------------}
+  
+  TTripOptionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fdata : TData;
+    Fkind : String;
+    FrequestId : String;
+    FtripOption : TTripOptionsResponseTypetripOptionArray;
+  Protected
+    //Property setters
+    Procedure Setdata(AIndex : Integer; const AValue : TData); virtual;
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrequestId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettripOption(AIndex : Integer; const AValue : TTripOptionsResponseTypetripOptionArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property data : TData Index 0 Read Fdata Write Setdata;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property requestId : String Index 16 Read FrequestId Write SetrequestId;
+    Property tripOption : TTripOptionsResponseTypetripOptionArray Index 24 Read FtripOption Write SettripOption;
+  end;
+  TTripOptionsResponseClass = Class of TTripOptionsResponse;
+  
+  { --------------------------------------------------------------------
+    TTripsSearchRequest
+    --------------------------------------------------------------------}
+  
+  TTripsSearchRequest = Class(TGoogleBaseObject)
+  Private
+    Frequest : TTripOptionsRequest;
+  Protected
+    //Property setters
+    Procedure Setrequest(AIndex : Integer; const AValue : TTripOptionsRequest); virtual;
+  Public
+  Published
+    Property request : TTripOptionsRequest Index 0 Read Frequest Write Setrequest;
+  end;
+  TTripsSearchRequestClass = Class of TTripsSearchRequest;
+  
+  { --------------------------------------------------------------------
+    TTripsSearchResponse
+    --------------------------------------------------------------------}
+  
+  TTripsSearchResponse = Class(TGoogleBaseObject)
+  Private
+    Fkind : String;
+    Ftrips : TTripOptionsResponse;
+  Protected
+    //Property setters
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settrips(AIndex : Integer; const AValue : TTripOptionsResponse); virtual;
+  Public
+  Published
+    Property kind : String Index 0 Read Fkind Write Setkind;
+    Property trips : TTripOptionsResponse Index 8 Read Ftrips Write Settrips;
+  end;
+  TTripsSearchResponseClass = Class of TTripsSearchResponse;
+  
+  { --------------------------------------------------------------------
+    TTripsResource
+    --------------------------------------------------------------------}
+  
+  TTripsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Search(aTripsSearchRequest : TTripsSearchRequest) : TTripsSearchResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TQpxExpressAPI
+    --------------------------------------------------------------------}
+  
+  TQpxExpressAPI = Class(TGoogleAPI)
+  Private
+    FTripsInstance : TTripsResource;
+    Function GetTripsInstance : TTripsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateTripsResource(AOwner : TComponent) : TTripsResource;virtual;overload;
+    Function CreateTripsResource : TTripsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property TripsResource : TTripsResource Read GetTripsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAircraftData
+  --------------------------------------------------------------------}
+
+
+Procedure TAircraftData.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAircraftData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAircraftData.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAirportData
+  --------------------------------------------------------------------}
+
+
+Procedure TAirportData.Setcity(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcity=AValue) then exit;
+  Fcity:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAirportData.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAirportData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAirportData.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBagDescriptor
+  --------------------------------------------------------------------}
+
+
+Procedure TBagDescriptor.SetcommercialName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcommercialName=AValue) then exit;
+  FcommercialName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBagDescriptor.Setcount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcount=AValue) then exit;
+  Fcount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBagDescriptor.Setdescription(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBagDescriptor.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBagDescriptor.Setsubcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsubcode=AValue) then exit;
+  Fsubcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBagDescriptor.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'description' : SetLength(Fdescription,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCarrierData
+  --------------------------------------------------------------------}
+
+
+Procedure TCarrierData.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCarrierData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCarrierData.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCityData
+  --------------------------------------------------------------------}
+
+
+Procedure TCityData.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCityData.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCityData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCityData.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TData
+  --------------------------------------------------------------------}
+
+
+Procedure TData.Setaircraft(AIndex : Integer; const AValue : TDataTypeaircraftArray); 
+
+begin
+  If (Faircraft=AValue) then exit;
+  Faircraft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TData.Setairport(AIndex : Integer; const AValue : TDataTypeairportArray); 
+
+begin
+  If (Fairport=AValue) then exit;
+  Fairport:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TData.Setcarrier(AIndex : Integer; const AValue : TDataTypecarrierArray); 
+
+begin
+  If (Fcarrier=AValue) then exit;
+  Fcarrier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TData.Setcity(AIndex : Integer; const AValue : TDataTypecityArray); 
+
+begin
+  If (Fcity=AValue) then exit;
+  Fcity:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TData.Settax(AIndex : Integer; const AValue : TDataTypetaxArray); 
+
+begin
+  If (Ftax=AValue) then exit;
+  Ftax:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'aircraft' : SetLength(Faircraft,ALength);
+  'airport' : SetLength(Fairport,ALength);
+  'carrier' : SetLength(Fcarrier,ALength);
+  'city' : SetLength(Fcity,ALength);
+  'tax' : SetLength(Ftax,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFareInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TFareInfo.SetbasisCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbasisCode=AValue) then exit;
+  FbasisCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Setcarrier(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcarrier=AValue) then exit;
+  Fcarrier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Setdestination(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdestination=AValue) then exit;
+  Fdestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Setorigin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Forigin=AValue) then exit;
+  Forigin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFareInfo.Set_private(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (F_private=AValue) then exit;
+  F_private:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TFareInfo.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_private' : Result:='private';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TFlightInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TFlightInfo.Setcarrier(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcarrier=AValue) then exit;
+  Fcarrier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFlightInfo.Setnumber(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fnumber=AValue) then exit;
+  Fnumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFreeBaggageAllowance
+  --------------------------------------------------------------------}
+
+
+Procedure TFreeBaggageAllowance.SetbagDescriptor(AIndex : Integer; const AValue : TFreeBaggageAllowanceTypebagDescriptorArray); 
+
+begin
+  If (FbagDescriptor=AValue) then exit;
+  FbagDescriptor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFreeBaggageAllowance.Setkilos(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fkilos=AValue) then exit;
+  Fkilos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFreeBaggageAllowance.SetkilosPerPiece(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FkilosPerPiece=AValue) then exit;
+  FkilosPerPiece:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFreeBaggageAllowance.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFreeBaggageAllowance.Setpieces(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fpieces=AValue) then exit;
+  Fpieces:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFreeBaggageAllowance.Setpounds(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fpounds=AValue) then exit;
+  Fpounds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFreeBaggageAllowance.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'bagdescriptor' : SetLength(FbagDescriptor,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLegInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TLegInfo.Setaircraft(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faircraft=AValue) then exit;
+  Faircraft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetarrivalTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FarrivalTime=AValue) then exit;
+  FarrivalTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetchangePlane(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FchangePlane=AValue) then exit;
+  FchangePlane:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetconnectionDuration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FconnectionDuration=AValue) then exit;
+  FconnectionDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetdepartureTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdepartureTime=AValue) then exit;
+  FdepartureTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setdestination(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdestination=AValue) then exit;
+  Fdestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetdestinationTerminal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdestinationTerminal=AValue) then exit;
+  FdestinationTerminal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setduration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fduration=AValue) then exit;
+  Fduration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setmeal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmeal=AValue) then exit;
+  Fmeal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setmileage(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fmileage=AValue) then exit;
+  Fmileage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetonTimePerformance(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FonTimePerformance=AValue) then exit;
+  FonTimePerformance:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetoperatingDisclosure(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoperatingDisclosure=AValue) then exit;
+  FoperatingDisclosure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setorigin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Forigin=AValue) then exit;
+  Forigin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.SetoriginTerminal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginTerminal=AValue) then exit;
+  ForiginTerminal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLegInfo.Setsecure(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fsecure=AValue) then exit;
+  Fsecure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPassengerCounts
+  --------------------------------------------------------------------}
+
+
+Procedure TPassengerCounts.SetadultCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FadultCount=AValue) then exit;
+  FadultCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPassengerCounts.SetchildCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FchildCount=AValue) then exit;
+  FchildCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPassengerCounts.SetinfantInLapCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FinfantInLapCount=AValue) then exit;
+  FinfantInLapCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPassengerCounts.SetinfantInSeatCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FinfantInSeatCount=AValue) then exit;
+  FinfantInSeatCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPassengerCounts.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPassengerCounts.SetseniorCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FseniorCount=AValue) then exit;
+  FseniorCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPricingInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TPricingInfo.SetbaseFareTotal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbaseFareTotal=AValue) then exit;
+  FbaseFareTotal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Setfare(AIndex : Integer; const AValue : TPricingInfoTypefareArray); 
+
+begin
+  If (Ffare=AValue) then exit;
+  Ffare:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetfareCalculation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfareCalculation=AValue) then exit;
+  FfareCalculation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetlatestTicketingTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlatestTicketingTime=AValue) then exit;
+  FlatestTicketingTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); 
+
+begin
+  If (Fpassengers=AValue) then exit;
+  Fpassengers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Setptc(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fptc=AValue) then exit;
+  Fptc:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Setrefundable(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Frefundable=AValue) then exit;
+  Frefundable:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetsaleFareTotal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsaleFareTotal=AValue) then exit;
+  FsaleFareTotal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetsaleTaxTotal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsaleTaxTotal=AValue) then exit;
+  FsaleTaxTotal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetsaleTotal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsaleTotal=AValue) then exit;
+  FsaleTotal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.SetsegmentPricing(AIndex : Integer; const AValue : TPricingInfoTypesegmentPricingArray); 
+
+begin
+  If (FsegmentPricing=AValue) then exit;
+  FsegmentPricing:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPricingInfo.Settax(AIndex : Integer; const AValue : TPricingInfoTypetaxArray); 
+
+begin
+  If (Ftax=AValue) then exit;
+  Ftax:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPricingInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'fare' : SetLength(Ffare,ALength);
+  'segmentpricing' : SetLength(FsegmentPricing,ALength);
+  'tax' : SetLength(Ftax,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentInfo.SetbookingCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbookingCode=AValue) then exit;
+  FbookingCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.SetbookingCodeCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FbookingCodeCount=AValue) then exit;
+  FbookingCodeCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setcabin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcabin=AValue) then exit;
+  Fcabin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.SetconnectionDuration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FconnectionDuration=AValue) then exit;
+  FconnectionDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setduration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fduration=AValue) then exit;
+  Fduration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setflight(AIndex : Integer; const AValue : TFlightInfo); 
+
+begin
+  If (Fflight=AValue) then exit;
+  Fflight:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.Setleg(AIndex : Integer; const AValue : TSegmentInfoTypelegArray); 
+
+begin
+  If (Fleg=AValue) then exit;
+  Fleg:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.SetmarriedSegmentGroup(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmarriedSegmentGroup=AValue) then exit;
+  FmarriedSegmentGroup:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentInfo.SetsubjectToGovernmentApproval(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FsubjectToGovernmentApproval=AValue) then exit;
+  FsubjectToGovernmentApproval:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSegmentInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'leg' : SetLength(Fleg,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSegmentPricing
+  --------------------------------------------------------------------}
+
+
+Procedure TSegmentPricing.SetfareId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfareId=AValue) then exit;
+  FfareId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentPricing.SetfreeBaggageOption(AIndex : Integer; const AValue : TSegmentPricingTypefreeBaggageOptionArray); 
+
+begin
+  If (FfreeBaggageOption=AValue) then exit;
+  FfreeBaggageOption:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentPricing.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSegmentPricing.SetsegmentId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsegmentId=AValue) then exit;
+  FsegmentId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSegmentPricing.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'freebaggageoption' : SetLength(FfreeBaggageOption,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSliceInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TSliceInfo.Setduration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fduration=AValue) then exit;
+  Fduration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInfo.Setsegment(AIndex : Integer; const AValue : TSliceInfoTypesegmentArray); 
+
+begin
+  If (Fsegment=AValue) then exit;
+  Fsegment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSliceInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'segment' : SetLength(Fsegment,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSliceInput
+  --------------------------------------------------------------------}
+
+
+Procedure TSliceInput.Setalliance(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Falliance=AValue) then exit;
+  Falliance:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.Setdate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdate=AValue) then exit;
+  Fdate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.Setdestination(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdestination=AValue) then exit;
+  Fdestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetmaxConnectionDuration(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxConnectionDuration=AValue) then exit;
+  FmaxConnectionDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetmaxStops(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxStops=AValue) then exit;
+  FmaxStops:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.Setorigin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Forigin=AValue) then exit;
+  Forigin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetpermittedCarrier(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FpermittedCarrier=AValue) then exit;
+  FpermittedCarrier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetpermittedDepartureTime(AIndex : Integer; const AValue : TTimeOfDayRange); 
+
+begin
+  If (FpermittedDepartureTime=AValue) then exit;
+  FpermittedDepartureTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetpreferredCabin(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpreferredCabin=AValue) then exit;
+  FpreferredCabin:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSliceInput.SetprohibitedCarrier(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FprohibitedCarrier=AValue) then exit;
+  FprohibitedCarrier:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSliceInput.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'permittedcarrier' : SetLength(FpermittedCarrier,ALength);
+  'prohibitedcarrier' : SetLength(FprohibitedCarrier,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTaxData
+  --------------------------------------------------------------------}
+
+
+Procedure TTaxData.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxData.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxData.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTaxInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TTaxInfo.SetchargeType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchargeType=AValue) then exit;
+  FchargeType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxInfo.Setcode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxInfo.Setcountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcountry=AValue) then exit;
+  Fcountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxInfo.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxInfo.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTaxInfo.SetsalePrice(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsalePrice=AValue) then exit;
+  FsalePrice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimeOfDayRange
+  --------------------------------------------------------------------}
+
+
+Procedure TTimeOfDayRange.SetearliestTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FearliestTime=AValue) then exit;
+  FearliestTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeOfDayRange.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimeOfDayRange.SetlatestTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlatestTime=AValue) then exit;
+  FlatestTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripOption
+  --------------------------------------------------------------------}
+
+
+Procedure TTripOption.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOption.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOption.Setpricing(AIndex : Integer; const AValue : TTripOptionTypepricingArray); 
+
+begin
+  If (Fpricing=AValue) then exit;
+  Fpricing:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOption.SetsaleTotal(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsaleTotal=AValue) then exit;
+  FsaleTotal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOption.Setslice(AIndex : Integer; const AValue : TTripOptionTypesliceArray); 
+
+begin
+  If (Fslice=AValue) then exit;
+  Fslice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTripOption.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'pricing' : SetLength(Fpricing,ALength);
+  'slice' : SetLength(Fslice,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripOptionsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTripOptionsRequest.SetmaxPrice(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxPrice=AValue) then exit;
+  FmaxPrice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsRequest.Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); 
+
+begin
+  If (Fpassengers=AValue) then exit;
+  Fpassengers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsRequest.Setrefundable(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Frefundable=AValue) then exit;
+  Frefundable:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsRequest.SetsaleCountry(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsaleCountry=AValue) then exit;
+  FsaleCountry:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsRequest.Setslice(AIndex : Integer; const AValue : TTripOptionsRequestTypesliceArray); 
+
+begin
+  If (Fslice=AValue) then exit;
+  Fslice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsRequest.Setsolutions(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fsolutions=AValue) then exit;
+  Fsolutions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTripOptionsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'slice' : SetLength(Fslice,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripOptionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTripOptionsResponse.Setdata(AIndex : Integer; const AValue : TData); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsResponse.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsResponse.SetrequestId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrequestId=AValue) then exit;
+  FrequestId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripOptionsResponse.SettripOption(AIndex : Integer; const AValue : TTripOptionsResponseTypetripOptionArray); 
+
+begin
+  If (FtripOption=AValue) then exit;
+  FtripOption:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTripOptionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'tripoption' : SetLength(FtripOption,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripsSearchRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTripsSearchRequest.Setrequest(AIndex : Integer; const AValue : TTripOptionsRequest); 
+
+begin
+  If (Frequest=AValue) then exit;
+  Frequest:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripsSearchResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TTripsSearchResponse.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTripsSearchResponse.Settrips(AIndex : Integer; const AValue : TTripOptionsResponse); 
+
+begin
+  If (Ftrips=AValue) then exit;
+  Ftrips:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTripsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TTripsResource.ResourceName : String;
+
+begin
+  Result:='trips';
+end;
+
+Class Function TTripsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TqpxExpressAPI;
+end;
+
+Function TTripsResource.Search(aTripsSearchRequest : TTripsSearchRequest) : TTripsSearchResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'search';
+  _Methodid   = 'qpxExpress.trips.search';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aTripsSearchRequest,TTripsSearchResponse) as TTripsSearchResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TQpxExpressAPI
+  --------------------------------------------------------------------}
+
+Class Function TQpxExpressAPI.APIName : String;
+
+begin
+  Result:='qpxExpress';
+end;
+
+Class Function TQpxExpressAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TQpxExpressAPI.APIRevision : String;
+
+begin
+  Result:='20160307';
+end;
+
+Class Function TQpxExpressAPI.APIID : String;
+
+begin
+  Result:='qpxExpress:v1';
+end;
+
+Class Function TQpxExpressAPI.APITitle : String;
+
+begin
+  Result:='QPX Express API';
+end;
+
+Class Function TQpxExpressAPI.APIDescription : String;
+
+begin
+  Result:='Finds the least expensive flights between an origin and a destination.';
+end;
+
+Class Function TQpxExpressAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TQpxExpressAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TQpxExpressAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TQpxExpressAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TQpxExpressAPI.APIdocumentationLink : String;
+
+begin
+  Result:='http://developers.google.com/qpx-express';
+end;
+
+Class Function TQpxExpressAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TQpxExpressAPI.APIbasePath : string;
+
+begin
+  Result:='/qpxExpress/v1/trips/';
+end;
+
+Class Function TQpxExpressAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/qpxExpress/v1/trips/';
+end;
+
+Class Function TQpxExpressAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TQpxExpressAPI.APIservicePath : string;
+
+begin
+  Result:='qpxExpress/v1/trips/';
+end;
+
+Class Function TQpxExpressAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TQpxExpressAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,0);
+  
+end;
+
+Class Function TQpxExpressAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=False;
+end;
+
+Class Procedure TQpxExpressAPI.RegisterAPIResources;
+
+begin
+  TAircraftData.RegisterObject;
+  TAirportData.RegisterObject;
+  TBagDescriptor.RegisterObject;
+  TCarrierData.RegisterObject;
+  TCityData.RegisterObject;
+  TData.RegisterObject;
+  TFareInfo.RegisterObject;
+  TFlightInfo.RegisterObject;
+  TFreeBaggageAllowance.RegisterObject;
+  TLegInfo.RegisterObject;
+  TPassengerCounts.RegisterObject;
+  TPricingInfo.RegisterObject;
+  TSegmentInfo.RegisterObject;
+  TSegmentPricing.RegisterObject;
+  TSliceInfo.RegisterObject;
+  TSliceInput.RegisterObject;
+  TTaxData.RegisterObject;
+  TTaxInfo.RegisterObject;
+  TTimeOfDayRange.RegisterObject;
+  TTripOption.RegisterObject;
+  TTripOptionsRequest.RegisterObject;
+  TTripOptionsResponse.RegisterObject;
+  TTripsSearchRequest.RegisterObject;
+  TTripsSearchResponse.RegisterObject;
+end;
+
+
+Function TQpxExpressAPI.GetTripsInstance : TTripsResource;
+
+begin
+  if (FTripsInstance=Nil) then
+    FTripsInstance:=CreateTripsResource;
+  Result:=FTripsInstance;
+end;
+
+Function TQpxExpressAPI.CreateTripsResource : TTripsResource;
+
+begin
+  Result:=CreateTripsResource(Self);
+end;
+
+
+Function TQpxExpressAPI.CreateTripsResource(AOwner : TComponent) : TTripsResource;
+
+begin
+  Result:=TTripsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TQpxExpressAPI.RegisterAPI;
+end.

File diff suppressed because it is too large
+ 313 - 360
packages/googleapi/src/googlereplicapool.pp


File diff suppressed because it is too large
+ 372 - 340
packages/googleapi/src/googlereplicapoolupdater.pp


File diff suppressed because it is too large
+ 383 - 340
packages/googleapi/src/googlereseller.pp


File diff suppressed because it is too large
+ 306 - 432
packages/googleapi/src/googleresourceviews.pp


+ 1862 - 0
packages/googleapi/src/googleruntimeconfig.pp

@@ -0,0 +1,1862 @@
+unit googleruntimeconfig;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TStatus = Class;
+  TListConfigsResponse = Class;
+  TVariable = Class;
+  TOperation = Class;
+  TWaiter = Class;
+  TRuntimeConfig = Class;
+  TListWaitersResponse = Class;
+  TEndCondition = Class;
+  TCardinality = Class;
+  TEmpty = Class;
+  TWatchVariableRequest = Class;
+  TListVariablesResponse = Class;
+  TStatusArray = Array of TStatus;
+  TListConfigsResponseArray = Array of TListConfigsResponse;
+  TVariableArray = Array of TVariable;
+  TOperationArray = Array of TOperation;
+  TWaiterArray = Array of TWaiter;
+  TRuntimeConfigArray = Array of TRuntimeConfig;
+  TListWaitersResponseArray = Array of TListWaitersResponse;
+  TEndConditionArray = Array of TEndCondition;
+  TCardinalityArray = Array of TCardinality;
+  TEmptyArray = Array of TEmpty;
+  TWatchVariableRequestArray = Array of TWatchVariableRequest;
+  TListVariablesResponseArray = Array of TListVariablesResponse;
+  //Anonymous types, using auto-generated names
+  TStatusTypedetailsItem = Class;
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TListConfigsResponseTypeconfigsArray = Array of TRuntimeConfig;
+  TListWaitersResponseTypewaitersArray = Array of TWaiter;
+  TListVariablesResponseTypevariablesArray = Array of TVariable;
+  
+  { --------------------------------------------------------------------
+    TStatusTypedetailsItem
+    --------------------------------------------------------------------}
+  
+  TStatusTypedetailsItem = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
+  
+  { --------------------------------------------------------------------
+    TStatus
+    --------------------------------------------------------------------}
+  
+  TStatus = Class(TGoogleBaseObject)
+  Private
+    Fcode : integer;
+    Fdetails : TStatusTypedetailsArray;
+    Fmessage : String;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : integer Index 0 Read Fcode Write Setcode;
+    Property details : TStatusTypedetailsArray Index 8 Read Fdetails Write Setdetails;
+    Property message : String Index 16 Read Fmessage Write Setmessage;
+  end;
+  TStatusClass = Class of TStatus;
+  
+  { --------------------------------------------------------------------
+    TListConfigsResponse
+    --------------------------------------------------------------------}
+  
+  TListConfigsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fconfigs : TListConfigsResponseTypeconfigsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setconfigs(AIndex : Integer; const AValue : TListConfigsResponseTypeconfigsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property configs : TListConfigsResponseTypeconfigsArray Index 8 Read Fconfigs Write Setconfigs;
+  end;
+  TListConfigsResponseClass = Class of TListConfigsResponse;
+  
+  { --------------------------------------------------------------------
+    TVariable
+    --------------------------------------------------------------------}
+  
+  TVariable = Class(TGoogleBaseObject)
+  Private
+    Fvalue : String;
+    FupdateTime : String;
+    Fstate : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property value : String Index 0 Read Fvalue Write Setvalue;
+    Property updateTime : String Index 8 Read FupdateTime Write SetupdateTime;
+    Property state : String Index 16 Read Fstate Write Setstate;
+    Property name : String Index 24 Read Fname Write Setname;
+  end;
+  TVariableClass = Class of TVariable;
+  
+  { --------------------------------------------------------------------
+    TOperationTypemetadata
+    --------------------------------------------------------------------}
+  
+  TOperationTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTypemetadataClass = Class of TOperationTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationTyperesponse
+    --------------------------------------------------------------------}
+  
+  TOperationTyperesponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTyperesponseClass = Class of TOperationTyperesponse;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    Ferror : TStatus;
+    Fdone : boolean;
+    Fmetadata : TOperationTypemetadata;
+    Fresponse : TOperationTyperesponse;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property error : TStatus Index 0 Read Ferror Write Seterror;
+    Property done : boolean Index 8 Read Fdone Write Setdone;
+    Property metadata : TOperationTypemetadata Index 16 Read Fmetadata Write Setmetadata;
+    Property response : TOperationTyperesponse Index 24 Read Fresponse Write Setresponse;
+    Property name : String Index 32 Read Fname Write Setname;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TWaiter
+    --------------------------------------------------------------------}
+  
+  TWaiter = Class(TGoogleBaseObject)
+  Private
+    Ftimeout : String;
+    Fsuccess : TEndCondition;
+    Ffailure : TEndCondition;
+    FcreateTime : String;
+    Fname : String;
+    Ferror : TStatus;
+    Fdone : boolean;
+  Protected
+    //Property setters
+    Procedure Settimeout(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsuccess(AIndex : Integer; const AValue : TEndCondition); virtual;
+    Procedure Setfailure(AIndex : Integer; const AValue : TEndCondition); virtual;
+    Procedure SetcreateTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property timeout : String Index 0 Read Ftimeout Write Settimeout;
+    Property success : TEndCondition Index 8 Read Fsuccess Write Setsuccess;
+    Property failure : TEndCondition Index 16 Read Ffailure Write Setfailure;
+    Property createTime : String Index 24 Read FcreateTime Write SetcreateTime;
+    Property name : String Index 32 Read Fname Write Setname;
+    Property error : TStatus Index 40 Read Ferror Write Seterror;
+    Property done : boolean Index 48 Read Fdone Write Setdone;
+  end;
+  TWaiterClass = Class of TWaiter;
+  
+  { --------------------------------------------------------------------
+    TRuntimeConfig
+    --------------------------------------------------------------------}
+  
+  TRuntimeConfig = Class(TGoogleBaseObject)
+  Private
+    Fdescription : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property description : String Index 0 Read Fdescription Write Setdescription;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TRuntimeConfigClass = Class of TRuntimeConfig;
+  
+  { --------------------------------------------------------------------
+    TListWaitersResponse
+    --------------------------------------------------------------------}
+  
+  TListWaitersResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fwaiters : TListWaitersResponseTypewaitersArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwaiters(AIndex : Integer; const AValue : TListWaitersResponseTypewaitersArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property nextPageToken : String Index 0 Read FnextPageToken Write SetnextPageToken;
+    Property waiters : TListWaitersResponseTypewaitersArray Index 8 Read Fwaiters Write Setwaiters;
+  end;
+  TListWaitersResponseClass = Class of TListWaitersResponse;
+  
+  { --------------------------------------------------------------------
+    TEndCondition
+    --------------------------------------------------------------------}
+  
+  TEndCondition = Class(TGoogleBaseObject)
+  Private
+    Fcardinality : TCardinality;
+  Protected
+    //Property setters
+    Procedure Setcardinality(AIndex : Integer; const AValue : TCardinality); virtual;
+  Public
+  Published
+    Property cardinality : TCardinality Index 0 Read Fcardinality Write Setcardinality;
+  end;
+  TEndConditionClass = Class of TEndCondition;
+  
+  { --------------------------------------------------------------------
+    TCardinality
+    --------------------------------------------------------------------}
+  
+  TCardinality = Class(TGoogleBaseObject)
+  Private
+    Fpath : String;
+    Fnumber : integer;
+  Protected
+    //Property setters
+    Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnumber(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property path : String Index 0 Read Fpath Write Setpath;
+    Property number : integer Index 8 Read Fnumber Write Setnumber;
+  end;
+  TCardinalityClass = Class of TCardinality;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TWatchVariableRequest
+    --------------------------------------------------------------------}
+  
+  TWatchVariableRequest = Class(TGoogleBaseObject)
+  Private
+    FnewerThan : String;
+  Protected
+    //Property setters
+    Procedure SetnewerThan(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property newerThan : String Index 0 Read FnewerThan Write SetnewerThan;
+  end;
+  TWatchVariableRequestClass = Class of TWatchVariableRequest;
+  
+  { --------------------------------------------------------------------
+    TListVariablesResponse
+    --------------------------------------------------------------------}
+  
+  TListVariablesResponse = Class(TGoogleBaseObject)
+  Private
+    Fvariables : TListVariablesResponseTypevariablesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setvariables(AIndex : Integer; const AValue : TListVariablesResponseTypevariablesArray); virtual;
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property variables : TListVariablesResponseTypevariablesArray Index 0 Read Fvariables Write Setvariables;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListVariablesResponseClass = Class of TListVariablesResponse;
+  
+  { --------------------------------------------------------------------
+    TProjectsConfigsVariablesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsConfigsVariablesResource, method List
+  
+  TProjectsConfigsVariablesListOptions = Record
+    pageSize : integer;
+    filter : String;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsConfigsVariablesResource, method Delete
+  
+  TProjectsConfigsVariablesDeleteOptions = Record
+    recursive : boolean;
+  end;
+  
+  TProjectsConfigsVariablesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Watch(_name: string; aWatchVariableRequest : TWatchVariableRequest) : TVariable;
+    Function List(parent: string; AQuery : string  = '') : TListVariablesResponse;
+    Function List(parent: string; AQuery : TProjectsConfigsVariableslistOptions) : TListVariablesResponse;
+    Function Get(_name: string) : TVariable;
+    Function Create(parent: string; aVariable : TVariable) : TVariable;overload;
+    Function Update(_name: string; aVariable : TVariable) : TVariable;
+    Function Delete(_name: string; AQuery : string  = '') : TEmpty;
+    Function Delete(_name: string; AQuery : TProjectsConfigsVariablesdeleteOptions) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsConfigsWaitersResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsConfigsWaitersResource, method List
+  
+  TProjectsConfigsWaitersListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsConfigsWaitersResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_name: string) : TWaiter;
+    Function Create(parent: string; aWaiter : TWaiter) : TOperation;overload;
+    Function List(parent: string; AQuery : string  = '') : TListWaitersResponse;
+    Function List(parent: string; AQuery : TProjectsConfigsWaiterslistOptions) : TListWaitersResponse;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsConfigsOperationsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsConfigsOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(_name: string) : TOperation;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsConfigsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsConfigsResource, method List
+  
+  TProjectsConfigsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsConfigsResource = Class(TGoogleResource)
+  Private
+    FVariablesInstance : TProjectsConfigsVariablesResource;
+    FWaitersInstance : TProjectsConfigsWaitersResource;
+    FOperationsInstance : TProjectsConfigsOperationsResource;
+    Function GetVariablesInstance : TProjectsConfigsVariablesResource;virtual;
+    Function GetWaitersInstance : TProjectsConfigsWaitersResource;virtual;
+    Function GetOperationsInstance : TProjectsConfigsOperationsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(_name: string; aRuntimeConfig : TRuntimeConfig) : TRuntimeConfig;
+    Function Get(_name: string) : TRuntimeConfig;
+    Function Create(parent: string; aRuntimeConfig : TRuntimeConfig) : TRuntimeConfig;overload;
+    Function List(parent: string; AQuery : string  = '') : TListConfigsResponse;
+    Function List(parent: string; AQuery : TProjectsConfigslistOptions) : TListConfigsResponse;
+    Function Delete(_name: string) : TEmpty;
+    Function CreateVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateVariablesResource : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateWaitersResource : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;virtual;overload;
+    Function CreateOperationsResource : TProjectsConfigsOperationsResource;virtual;overload;
+    Property VariablesResource : TProjectsConfigsVariablesResource Read GetVariablesInstance;
+    Property WaitersResource : TProjectsConfigsWaitersResource Read GetWaitersInstance;
+    Property OperationsResource : TProjectsConfigsOperationsResource Read GetOperationsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FConfigsVariablesInstance : TProjectsConfigsVariablesResource;
+    FConfigsWaitersInstance : TProjectsConfigsWaitersResource;
+    FConfigsOperationsInstance : TProjectsConfigsOperationsResource;
+    FConfigsInstance : TProjectsConfigsResource;
+    Function GetConfigsVariablesInstance : TProjectsConfigsVariablesResource;virtual;
+    Function GetConfigsWaitersInstance : TProjectsConfigsWaitersResource;virtual;
+    Function GetConfigsOperationsInstance : TProjectsConfigsOperationsResource;virtual;
+    Function GetConfigsInstance : TProjectsConfigsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CreateConfigsVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateConfigsVariablesResource : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateConfigsWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateConfigsWaitersResource : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateConfigsOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;virtual;overload;
+    Function CreateConfigsOperationsResource : TProjectsConfigsOperationsResource;virtual;overload;
+    Function CreateConfigsResource(AOwner : TComponent) : TProjectsConfigsResource;virtual;overload;
+    Function CreateConfigsResource : TProjectsConfigsResource;virtual;overload;
+    Property ConfigsVariablesResource : TProjectsConfigsVariablesResource Read GetConfigsVariablesInstance;
+    Property ConfigsWaitersResource : TProjectsConfigsWaitersResource Read GetConfigsWaitersInstance;
+    Property ConfigsOperationsResource : TProjectsConfigsOperationsResource Read GetConfigsOperationsInstance;
+    Property ConfigsResource : TProjectsConfigsResource Read GetConfigsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TRuntimeconfigAPI
+    --------------------------------------------------------------------}
+  
+  TRuntimeconfigAPI = Class(TGoogleAPI)
+  Private
+    FProjectsConfigsVariablesInstance : TProjectsConfigsVariablesResource;
+    FProjectsConfigsWaitersInstance : TProjectsConfigsWaitersResource;
+    FProjectsConfigsOperationsInstance : TProjectsConfigsOperationsResource;
+    FProjectsConfigsInstance : TProjectsConfigsResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsConfigsVariablesInstance : TProjectsConfigsVariablesResource;virtual;
+    Function GetProjectsConfigsWaitersInstance : TProjectsConfigsWaitersResource;virtual;
+    Function GetProjectsConfigsOperationsInstance : TProjectsConfigsOperationsResource;virtual;
+    Function GetProjectsConfigsInstance : TProjectsConfigsResource;virtual;
+    Function GetProjectsInstance : TProjectsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateProjectsConfigsVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateProjectsConfigsVariablesResource : TProjectsConfigsVariablesResource;virtual;overload;
+    Function CreateProjectsConfigsWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateProjectsConfigsWaitersResource : TProjectsConfigsWaitersResource;virtual;overload;
+    Function CreateProjectsConfigsOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;virtual;overload;
+    Function CreateProjectsConfigsOperationsResource : TProjectsConfigsOperationsResource;virtual;overload;
+    Function CreateProjectsConfigsResource(AOwner : TComponent) : TProjectsConfigsResource;virtual;overload;
+    Function CreateProjectsConfigsResource : TProjectsConfigsResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsConfigsVariablesResource : TProjectsConfigsVariablesResource Read GetProjectsConfigsVariablesInstance;
+    Property ProjectsConfigsWaitersResource : TProjectsConfigsWaitersResource Read GetProjectsConfigsWaitersInstance;
+    Property ProjectsConfigsOperationsResource : TProjectsConfigsOperationsResource Read GetProjectsConfigsOperationsInstance;
+    Property ProjectsConfigsResource : TProjectsConfigsResource Read GetProjectsConfigsInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TStatusTypedetailsItem
+  --------------------------------------------------------------------}
+
+
+Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'details' : SetLength(Fdetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListConfigsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListConfigsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListConfigsResponse.Setconfigs(AIndex : Integer; const AValue : TListConfigsResponseTypeconfigsArray); 
+
+begin
+  If (Fconfigs=AValue) then exit;
+  Fconfigs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListConfigsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'configs' : SetLength(Fconfigs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TVariable
+  --------------------------------------------------------------------}
+
+
+Procedure TVariable.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.SetupdateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTime=AValue) then exit;
+  FupdateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVariable.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTyperesponse
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TWaiter
+  --------------------------------------------------------------------}
+
+
+Procedure TWaiter.Settimeout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftimeout=AValue) then exit;
+  Ftimeout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.Setsuccess(AIndex : Integer; const AValue : TEndCondition); 
+
+begin
+  If (Fsuccess=AValue) then exit;
+  Fsuccess:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.Setfailure(AIndex : Integer; const AValue : TEndCondition); 
+
+begin
+  If (Ffailure=AValue) then exit;
+  Ffailure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.SetcreateTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreateTime=AValue) then exit;
+  FcreateTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWaiter.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRuntimeConfig
+  --------------------------------------------------------------------}
+
+
+Procedure TRuntimeConfig.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRuntimeConfig.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListWaitersResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListWaitersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListWaitersResponse.Setwaiters(AIndex : Integer; const AValue : TListWaitersResponseTypewaitersArray); 
+
+begin
+  If (Fwaiters=AValue) then exit;
+  Fwaiters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListWaitersResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'waiters' : SetLength(Fwaiters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEndCondition
+  --------------------------------------------------------------------}
+
+
+Procedure TEndCondition.Setcardinality(AIndex : Integer; const AValue : TCardinality); 
+
+begin
+  If (Fcardinality=AValue) then exit;
+  Fcardinality:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCardinality
+  --------------------------------------------------------------------}
+
+
+Procedure TCardinality.Setpath(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpath=AValue) then exit;
+  Fpath:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCardinality.Setnumber(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnumber=AValue) then exit;
+  Fnumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TWatchVariableRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TWatchVariableRequest.SetnewerThan(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnewerThan=AValue) then exit;
+  FnewerThan:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListVariablesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListVariablesResponse.Setvariables(AIndex : Integer; const AValue : TListVariablesResponseTypevariablesArray); 
+
+begin
+  If (Fvariables=AValue) then exit;
+  Fvariables:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListVariablesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListVariablesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'variables' : SetLength(Fvariables,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsConfigsVariablesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsConfigsVariablesResource.ResourceName : String;
+
+begin
+  Result:='variables';
+end;
+
+Class Function TProjectsConfigsVariablesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TruntimeconfigAPI;
+end;
+
+Function TProjectsConfigsVariablesResource.Watch(_name: string; aWatchVariableRequest : TWatchVariableRequest) : TVariable;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+name}:watch';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.watch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aWatchVariableRequest,TVariable) as TVariable;
+end;
+
+Function TProjectsConfigsVariablesResource.List(parent: string; AQuery : string = '') : TListVariablesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+parent}/variables';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListVariablesResponse) as TListVariablesResponse;
+end;
+
+
+Function TProjectsConfigsVariablesResource.List(parent: string; AQuery : TProjectsConfigsVariableslistOptions) : TListVariablesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(parent,_Q);
+end;
+
+Function TProjectsConfigsVariablesResource.Get(_name: string) : TVariable;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TVariable) as TVariable;
+end;
+
+Function TProjectsConfigsVariablesResource.Create(parent: string; aVariable : TVariable) : TVariable;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+parent}/variables';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aVariable,TVariable) as TVariable;
+end;
+
+Function TProjectsConfigsVariablesResource.Update(_name: string; aVariable : TVariable) : TVariable;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aVariable,TVariable) as TVariable;
+end;
+
+Function TProjectsConfigsVariablesResource.Delete(_name: string; AQuery : string = '') : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.variables.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEmpty) as TEmpty;
+end;
+
+
+Function TProjectsConfigsVariablesResource.Delete(_name: string; AQuery : TProjectsConfigsVariablesdeleteOptions) : TEmpty;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'recursive',AQuery.recursive);
+  Result:=Delete(_name,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsConfigsWaitersResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsConfigsWaitersResource.ResourceName : String;
+
+begin
+  Result:='waiters';
+end;
+
+Class Function TProjectsConfigsWaitersResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TruntimeconfigAPI;
+end;
+
+Function TProjectsConfigsWaitersResource.Get(_name: string) : TWaiter;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.waiters.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TWaiter) as TWaiter;
+end;
+
+Function TProjectsConfigsWaitersResource.Create(parent: string; aWaiter : TWaiter) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+parent}/waiters';
+  _Methodid   = 'runtimeconfig.projects.configs.waiters.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aWaiter,TOperation) as TOperation;
+end;
+
+Function TProjectsConfigsWaitersResource.List(parent: string; AQuery : string = '') : TListWaitersResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+parent}/waiters';
+  _Methodid   = 'runtimeconfig.projects.configs.waiters.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListWaitersResponse) as TListWaitersResponse;
+end;
+
+
+Function TProjectsConfigsWaitersResource.List(parent: string; AQuery : TProjectsConfigsWaiterslistOptions) : TListWaitersResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(parent,_Q);
+end;
+
+Function TProjectsConfigsWaitersResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.waiters.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsConfigsOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsConfigsOperationsResource.ResourceName : String;
+
+begin
+  Result:='operations';
+end;
+
+Class Function TProjectsConfigsOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TruntimeconfigAPI;
+end;
+
+Function TProjectsConfigsOperationsResource.Get(_name: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.operations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsConfigsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsConfigsResource.ResourceName : String;
+
+begin
+  Result:='configs';
+end;
+
+Class Function TProjectsConfigsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TruntimeconfigAPI;
+end;
+
+Function TProjectsConfigsResource.Update(_name: string; aRuntimeConfig : TRuntimeConfig) : TRuntimeConfig;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aRuntimeConfig,TRuntimeConfig) as TRuntimeConfig;
+end;
+
+Function TProjectsConfigsResource.Get(_name: string) : TRuntimeConfig;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TRuntimeConfig) as TRuntimeConfig;
+end;
+
+Function TProjectsConfigsResource.Create(parent: string; aRuntimeConfig : TRuntimeConfig) : TRuntimeConfig;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1beta1/{+parent}/configs';
+  _Methodid   = 'runtimeconfig.projects.configs.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aRuntimeConfig,TRuntimeConfig) as TRuntimeConfig;
+end;
+
+Function TProjectsConfigsResource.List(parent: string; AQuery : string = '') : TListConfigsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1beta1/{+parent}/configs';
+  _Methodid   = 'runtimeconfig.projects.configs.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['parent',parent]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListConfigsResponse) as TListConfigsResponse;
+end;
+
+
+Function TProjectsConfigsResource.List(parent: string; AQuery : TProjectsConfigslistOptions) : TListConfigsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(parent,_Q);
+end;
+
+Function TProjectsConfigsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1beta1/{+name}';
+  _Methodid   = 'runtimeconfig.projects.configs.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+Function TProjectsConfigsResource.GetVariablesInstance : TProjectsConfigsVariablesResource;
+
+begin
+  if (FVariablesInstance=Nil) then
+    FVariablesInstance:=CreateVariablesResource;
+  Result:=FVariablesInstance;
+end;
+
+Function TProjectsConfigsResource.CreateVariablesResource : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=CreateVariablesResource(Self);
+end;
+
+
+Function TProjectsConfigsResource.CreateVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=TProjectsConfigsVariablesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsConfigsResource.GetWaitersInstance : TProjectsConfigsWaitersResource;
+
+begin
+  if (FWaitersInstance=Nil) then
+    FWaitersInstance:=CreateWaitersResource;
+  Result:=FWaitersInstance;
+end;
+
+Function TProjectsConfigsResource.CreateWaitersResource : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=CreateWaitersResource(Self);
+end;
+
+
+Function TProjectsConfigsResource.CreateWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=TProjectsConfigsWaitersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsConfigsResource.GetOperationsInstance : TProjectsConfigsOperationsResource;
+
+begin
+  if (FOperationsInstance=Nil) then
+    FOperationsInstance:=CreateOperationsResource;
+  Result:=FOperationsInstance;
+end;
+
+Function TProjectsConfigsResource.CreateOperationsResource : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=CreateOperationsResource(Self);
+end;
+
+
+Function TProjectsConfigsResource.CreateOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=TProjectsConfigsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TruntimeconfigAPI;
+end;
+
+
+
+Function TProjectsResource.GetConfigsVariablesInstance : TProjectsConfigsVariablesResource;
+
+begin
+  if (FConfigsVariablesInstance=Nil) then
+    FConfigsVariablesInstance:=CreateConfigsVariablesResource;
+  Result:=FConfigsVariablesInstance;
+end;
+
+Function TProjectsResource.CreateConfigsVariablesResource : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=CreateConfigsVariablesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateConfigsVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=TProjectsConfigsVariablesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetConfigsWaitersInstance : TProjectsConfigsWaitersResource;
+
+begin
+  if (FConfigsWaitersInstance=Nil) then
+    FConfigsWaitersInstance:=CreateConfigsWaitersResource;
+  Result:=FConfigsWaitersInstance;
+end;
+
+Function TProjectsResource.CreateConfigsWaitersResource : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=CreateConfigsWaitersResource(Self);
+end;
+
+
+Function TProjectsResource.CreateConfigsWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=TProjectsConfigsWaitersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetConfigsOperationsInstance : TProjectsConfigsOperationsResource;
+
+begin
+  if (FConfigsOperationsInstance=Nil) then
+    FConfigsOperationsInstance:=CreateConfigsOperationsResource;
+  Result:=FConfigsOperationsInstance;
+end;
+
+Function TProjectsResource.CreateConfigsOperationsResource : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=CreateConfigsOperationsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateConfigsOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=TProjectsConfigsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetConfigsInstance : TProjectsConfigsResource;
+
+begin
+  if (FConfigsInstance=Nil) then
+    FConfigsInstance:=CreateConfigsResource;
+  Result:=FConfigsInstance;
+end;
+
+Function TProjectsResource.CreateConfigsResource : TProjectsConfigsResource;
+
+begin
+  Result:=CreateConfigsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateConfigsResource(AOwner : TComponent) : TProjectsConfigsResource;
+
+begin
+  Result:=TProjectsConfigsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TRuntimeconfigAPI
+  --------------------------------------------------------------------}
+
+Class Function TRuntimeconfigAPI.APIName : String;
+
+begin
+  Result:='runtimeconfig';
+end;
+
+Class Function TRuntimeconfigAPI.APIVersion : String;
+
+begin
+  Result:='v1beta1';
+end;
+
+Class Function TRuntimeconfigAPI.APIRevision : String;
+
+begin
+  Result:='20160518';
+end;
+
+Class Function TRuntimeconfigAPI.APIID : String;
+
+begin
+  Result:='runtimeconfig:v1beta1';
+end;
+
+Class Function TRuntimeconfigAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud RuntimeConfig API';
+end;
+
+Class Function TRuntimeconfigAPI.APIDescription : String;
+
+begin
+  Result:='Provides capabilities for dynamic configuration and coordination for applications running on Google Cloud Platform.';
+end;
+
+Class Function TRuntimeconfigAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TRuntimeconfigAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TRuntimeconfigAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TRuntimeconfigAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TRuntimeconfigAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/deployment-manager/docs/';
+end;
+
+Class Function TRuntimeconfigAPI.APIrootUrl : string;
+
+begin
+  Result:='https://runtimeconfig.googleapis.com/';
+end;
+
+Class Function TRuntimeconfigAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TRuntimeconfigAPI.APIbaseURL : String;
+
+begin
+  Result:='https://runtimeconfig.googleapis.com/';
+end;
+
+Class Function TRuntimeconfigAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TRuntimeconfigAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TRuntimeconfigAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TRuntimeconfigAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,2);
+  Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
+  Result[0].Description:='View and manage your data across Google Cloud Platform services';
+  Result[1].Name:='https://www.googleapis.com/auth/cloudruntimeconfig';
+  Result[1].Description:='Manage your Google Cloud Platform services'' runtime configuration';
+  
+end;
+
+Class Function TRuntimeconfigAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TRuntimeconfigAPI.RegisterAPIResources;
+
+begin
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TListConfigsResponse.RegisterObject;
+  TVariable.RegisterObject;
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TWaiter.RegisterObject;
+  TRuntimeConfig.RegisterObject;
+  TListWaitersResponse.RegisterObject;
+  TEndCondition.RegisterObject;
+  TCardinality.RegisterObject;
+  TEmpty.RegisterObject;
+  TWatchVariableRequest.RegisterObject;
+  TListVariablesResponse.RegisterObject;
+end;
+
+
+Function TRuntimeconfigAPI.GetProjectsConfigsVariablesInstance : TProjectsConfigsVariablesResource;
+
+begin
+  if (FProjectsConfigsVariablesInstance=Nil) then
+    FProjectsConfigsVariablesInstance:=CreateProjectsConfigsVariablesResource;
+  Result:=FProjectsConfigsVariablesInstance;
+end;
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsVariablesResource : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=CreateProjectsConfigsVariablesResource(Self);
+end;
+
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsVariablesResource(AOwner : TComponent) : TProjectsConfigsVariablesResource;
+
+begin
+  Result:=TProjectsConfigsVariablesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TRuntimeconfigAPI.GetProjectsConfigsWaitersInstance : TProjectsConfigsWaitersResource;
+
+begin
+  if (FProjectsConfigsWaitersInstance=Nil) then
+    FProjectsConfigsWaitersInstance:=CreateProjectsConfigsWaitersResource;
+  Result:=FProjectsConfigsWaitersInstance;
+end;
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsWaitersResource : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=CreateProjectsConfigsWaitersResource(Self);
+end;
+
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsWaitersResource(AOwner : TComponent) : TProjectsConfigsWaitersResource;
+
+begin
+  Result:=TProjectsConfigsWaitersResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TRuntimeconfigAPI.GetProjectsConfigsOperationsInstance : TProjectsConfigsOperationsResource;
+
+begin
+  if (FProjectsConfigsOperationsInstance=Nil) then
+    FProjectsConfigsOperationsInstance:=CreateProjectsConfigsOperationsResource;
+  Result:=FProjectsConfigsOperationsInstance;
+end;
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsOperationsResource : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=CreateProjectsConfigsOperationsResource(Self);
+end;
+
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsOperationsResource(AOwner : TComponent) : TProjectsConfigsOperationsResource;
+
+begin
+  Result:=TProjectsConfigsOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TRuntimeconfigAPI.GetProjectsConfigsInstance : TProjectsConfigsResource;
+
+begin
+  if (FProjectsConfigsInstance=Nil) then
+    FProjectsConfigsInstance:=CreateProjectsConfigsResource;
+  Result:=FProjectsConfigsInstance;
+end;
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsResource : TProjectsConfigsResource;
+
+begin
+  Result:=CreateProjectsConfigsResource(Self);
+end;
+
+
+Function TRuntimeconfigAPI.CreateProjectsConfigsResource(AOwner : TComponent) : TProjectsConfigsResource;
+
+begin
+  Result:=TProjectsConfigsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TRuntimeconfigAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TRuntimeconfigAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TRuntimeconfigAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TRuntimeconfigAPI.RegisterAPI;
+end.

+ 2011 - 0
packages/googleapi/src/googlesafebrowsing.pp

@@ -0,0 +1,2011 @@
+unit googlesafebrowsing;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TFindThreatMatchesRequest = Class;
+  TClientInfo = Class;
+  TThreatInfo = Class;
+  TThreatEntry = Class;
+  TFindThreatMatchesResponse = Class;
+  TThreatMatch = Class;
+  TThreatEntryMetadata = Class;
+  TMetadataEntry = Class;
+  TFetchThreatListUpdatesRequest = Class;
+  TListUpdateRequest = Class;
+  TConstraints = Class;
+  TFetchThreatListUpdatesResponse = Class;
+  TListUpdateResponse = Class;
+  TThreatEntrySet = Class;
+  TRawHashes = Class;
+  TRawIndices = Class;
+  TRiceDeltaEncoding = Class;
+  TChecksum = Class;
+  TFindFullHashesRequest = Class;
+  TFindFullHashesResponse = Class;
+  TListThreatListsResponse = Class;
+  TThreatListDescriptor = Class;
+  TFindThreatMatchesRequestArray = Array of TFindThreatMatchesRequest;
+  TClientInfoArray = Array of TClientInfo;
+  TThreatInfoArray = Array of TThreatInfo;
+  TThreatEntryArray = Array of TThreatEntry;
+  TFindThreatMatchesResponseArray = Array of TFindThreatMatchesResponse;
+  TThreatMatchArray = Array of TThreatMatch;
+  TThreatEntryMetadataArray = Array of TThreatEntryMetadata;
+  TMetadataEntryArray = Array of TMetadataEntry;
+  TFetchThreatListUpdatesRequestArray = Array of TFetchThreatListUpdatesRequest;
+  TListUpdateRequestArray = Array of TListUpdateRequest;
+  TConstraintsArray = Array of TConstraints;
+  TFetchThreatListUpdatesResponseArray = Array of TFetchThreatListUpdatesResponse;
+  TListUpdateResponseArray = Array of TListUpdateResponse;
+  TThreatEntrySetArray = Array of TThreatEntrySet;
+  TRawHashesArray = Array of TRawHashes;
+  TRawIndicesArray = Array of TRawIndices;
+  TRiceDeltaEncodingArray = Array of TRiceDeltaEncoding;
+  TChecksumArray = Array of TChecksum;
+  TFindFullHashesRequestArray = Array of TFindFullHashesRequest;
+  TFindFullHashesResponseArray = Array of TFindFullHashesResponse;
+  TListThreatListsResponseArray = Array of TListThreatListsResponse;
+  TThreatListDescriptorArray = Array of TThreatListDescriptor;
+  //Anonymous types, using auto-generated names
+  TThreatInfoTypethreatEntriesArray = Array of TThreatEntry;
+  TFindThreatMatchesResponseTypematchesArray = Array of TThreatMatch;
+  TThreatEntryMetadataTypeentriesArray = Array of TMetadataEntry;
+  TFetchThreatListUpdatesRequestTypelistUpdateRequestsArray = Array of TListUpdateRequest;
+  TFetchThreatListUpdatesResponseTypelistUpdateResponsesArray = Array of TListUpdateResponse;
+  TListUpdateResponseTypeadditionsArray = Array of TThreatEntrySet;
+  TListUpdateResponseTyperemovalsArray = Array of TThreatEntrySet;
+  TFindFullHashesResponseTypematchesArray = Array of TThreatMatch;
+  TListThreatListsResponseTypethreatListsArray = Array of TThreatListDescriptor;
+  
+  { --------------------------------------------------------------------
+    TFindThreatMatchesRequest
+    --------------------------------------------------------------------}
+  
+  TFindThreatMatchesRequest = Class(TGoogleBaseObject)
+  Private
+    Fclient : TClientInfo;
+    FthreatInfo : TThreatInfo;
+  Protected
+    //Property setters
+    Procedure Setclient(AIndex : Integer; const AValue : TClientInfo); virtual;
+    Procedure SetthreatInfo(AIndex : Integer; const AValue : TThreatInfo); virtual;
+  Public
+  Published
+    Property client : TClientInfo Index 0 Read Fclient Write Setclient;
+    Property threatInfo : TThreatInfo Index 8 Read FthreatInfo Write SetthreatInfo;
+  end;
+  TFindThreatMatchesRequestClass = Class of TFindThreatMatchesRequest;
+  
+  { --------------------------------------------------------------------
+    TClientInfo
+    --------------------------------------------------------------------}
+  
+  TClientInfo = Class(TGoogleBaseObject)
+  Private
+    FclientId : String;
+    FclientVersion : String;
+  Protected
+    //Property setters
+    Procedure SetclientId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetclientVersion(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property clientId : String Index 0 Read FclientId Write SetclientId;
+    Property clientVersion : String Index 8 Read FclientVersion Write SetclientVersion;
+  end;
+  TClientInfoClass = Class of TClientInfo;
+  
+  { --------------------------------------------------------------------
+    TThreatInfo
+    --------------------------------------------------------------------}
+  
+  TThreatInfo = Class(TGoogleBaseObject)
+  Private
+    FthreatTypes : TStringArray;
+    FplatformTypes : TStringArray;
+    FthreatEntryTypes : TStringArray;
+    FthreatEntries : TThreatInfoTypethreatEntriesArray;
+  Protected
+    //Property setters
+    Procedure SetthreatTypes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetplatformTypes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetthreatEntryTypes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetthreatEntries(AIndex : Integer; const AValue : TThreatInfoTypethreatEntriesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property threatTypes : TStringArray Index 0 Read FthreatTypes Write SetthreatTypes;
+    Property platformTypes : TStringArray Index 8 Read FplatformTypes Write SetplatformTypes;
+    Property threatEntryTypes : TStringArray Index 16 Read FthreatEntryTypes Write SetthreatEntryTypes;
+    Property threatEntries : TThreatInfoTypethreatEntriesArray Index 24 Read FthreatEntries Write SetthreatEntries;
+  end;
+  TThreatInfoClass = Class of TThreatInfo;
+  
+  { --------------------------------------------------------------------
+    TThreatEntry
+    --------------------------------------------------------------------}
+  
+  TThreatEntry = Class(TGoogleBaseObject)
+  Private
+    Fhash : String;
+    Furl : String;
+    Fdigest : String;
+  Protected
+    //Property setters
+    Procedure Sethash(AIndex : Integer; const AValue : String); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdigest(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property hash : String Index 0 Read Fhash Write Sethash;
+    Property url : String Index 8 Read Furl Write Seturl;
+    Property digest : String Index 16 Read Fdigest Write Setdigest;
+  end;
+  TThreatEntryClass = Class of TThreatEntry;
+  
+  { --------------------------------------------------------------------
+    TFindThreatMatchesResponse
+    --------------------------------------------------------------------}
+  
+  TFindThreatMatchesResponse = Class(TGoogleBaseObject)
+  Private
+    Fmatches : TFindThreatMatchesResponseTypematchesArray;
+  Protected
+    //Property setters
+    Procedure Setmatches(AIndex : Integer; const AValue : TFindThreatMatchesResponseTypematchesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property matches : TFindThreatMatchesResponseTypematchesArray Index 0 Read Fmatches Write Setmatches;
+  end;
+  TFindThreatMatchesResponseClass = Class of TFindThreatMatchesResponse;
+  
+  { --------------------------------------------------------------------
+    TThreatMatch
+    --------------------------------------------------------------------}
+  
+  TThreatMatch = Class(TGoogleBaseObject)
+  Private
+    FthreatType : String;
+    FplatformType : String;
+    FthreatEntryType : String;
+    Fthreat : TThreatEntry;
+    FthreatEntryMetadata : TThreatEntryMetadata;
+    FcacheDuration : String;
+  Protected
+    //Property setters
+    Procedure SetthreatType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplatformType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthreatEntryType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setthreat(AIndex : Integer; const AValue : TThreatEntry); virtual;
+    Procedure SetthreatEntryMetadata(AIndex : Integer; const AValue : TThreatEntryMetadata); virtual;
+    Procedure SetcacheDuration(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property threatType : String Index 0 Read FthreatType Write SetthreatType;
+    Property platformType : String Index 8 Read FplatformType Write SetplatformType;
+    Property threatEntryType : String Index 16 Read FthreatEntryType Write SetthreatEntryType;
+    Property threat : TThreatEntry Index 24 Read Fthreat Write Setthreat;
+    Property threatEntryMetadata : TThreatEntryMetadata Index 32 Read FthreatEntryMetadata Write SetthreatEntryMetadata;
+    Property cacheDuration : String Index 40 Read FcacheDuration Write SetcacheDuration;
+  end;
+  TThreatMatchClass = Class of TThreatMatch;
+  
+  { --------------------------------------------------------------------
+    TThreatEntryMetadata
+    --------------------------------------------------------------------}
+  
+  TThreatEntryMetadata = Class(TGoogleBaseObject)
+  Private
+    Fentries : TThreatEntryMetadataTypeentriesArray;
+  Protected
+    //Property setters
+    Procedure Setentries(AIndex : Integer; const AValue : TThreatEntryMetadataTypeentriesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property entries : TThreatEntryMetadataTypeentriesArray Index 0 Read Fentries Write Setentries;
+  end;
+  TThreatEntryMetadataClass = Class of TThreatEntryMetadata;
+  
+  { --------------------------------------------------------------------
+    TMetadataEntry
+    --------------------------------------------------------------------}
+  
+  TMetadataEntry = Class(TGoogleBaseObject)
+  Private
+    Fkey : String;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property key : String Index 0 Read Fkey Write Setkey;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TMetadataEntryClass = Class of TMetadataEntry;
+  
+  { --------------------------------------------------------------------
+    TFetchThreatListUpdatesRequest
+    --------------------------------------------------------------------}
+  
+  TFetchThreatListUpdatesRequest = Class(TGoogleBaseObject)
+  Private
+    Fclient : TClientInfo;
+    FlistUpdateRequests : TFetchThreatListUpdatesRequestTypelistUpdateRequestsArray;
+  Protected
+    //Property setters
+    Procedure Setclient(AIndex : Integer; const AValue : TClientInfo); virtual;
+    Procedure SetlistUpdateRequests(AIndex : Integer; const AValue : TFetchThreatListUpdatesRequestTypelistUpdateRequestsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property client : TClientInfo Index 0 Read Fclient Write Setclient;
+    Property listUpdateRequests : TFetchThreatListUpdatesRequestTypelistUpdateRequestsArray Index 8 Read FlistUpdateRequests Write SetlistUpdateRequests;
+  end;
+  TFetchThreatListUpdatesRequestClass = Class of TFetchThreatListUpdatesRequest;
+  
+  { --------------------------------------------------------------------
+    TListUpdateRequest
+    --------------------------------------------------------------------}
+  
+  TListUpdateRequest = Class(TGoogleBaseObject)
+  Private
+    FthreatType : String;
+    FplatformType : String;
+    FthreatEntryType : String;
+    Fstate : String;
+    Fconstraints : TConstraints;
+  Protected
+    //Property setters
+    Procedure SetthreatType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplatformType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthreatEntryType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setconstraints(AIndex : Integer; const AValue : TConstraints); virtual;
+  Public
+  Published
+    Property threatType : String Index 0 Read FthreatType Write SetthreatType;
+    Property platformType : String Index 8 Read FplatformType Write SetplatformType;
+    Property threatEntryType : String Index 16 Read FthreatEntryType Write SetthreatEntryType;
+    Property state : String Index 24 Read Fstate Write Setstate;
+    Property constraints : TConstraints Index 32 Read Fconstraints Write Setconstraints;
+  end;
+  TListUpdateRequestClass = Class of TListUpdateRequest;
+  
+  { --------------------------------------------------------------------
+    TConstraints
+    --------------------------------------------------------------------}
+  
+  TConstraints = Class(TGoogleBaseObject)
+  Private
+    FmaxUpdateEntries : integer;
+    FmaxDatabaseEntries : integer;
+    Fregion : String;
+    FsupportedCompressions : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetmaxUpdateEntries(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxDatabaseEntries(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setregion(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsupportedCompressions(AIndex : Integer; const AValue : TStringArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property maxUpdateEntries : integer Index 0 Read FmaxUpdateEntries Write SetmaxUpdateEntries;
+    Property maxDatabaseEntries : integer Index 8 Read FmaxDatabaseEntries Write SetmaxDatabaseEntries;
+    Property region : String Index 16 Read Fregion Write Setregion;
+    Property supportedCompressions : TStringArray Index 24 Read FsupportedCompressions Write SetsupportedCompressions;
+  end;
+  TConstraintsClass = Class of TConstraints;
+  
+  { --------------------------------------------------------------------
+    TFetchThreatListUpdatesResponse
+    --------------------------------------------------------------------}
+  
+  TFetchThreatListUpdatesResponse = Class(TGoogleBaseObject)
+  Private
+    FlistUpdateResponses : TFetchThreatListUpdatesResponseTypelistUpdateResponsesArray;
+    FminimumWaitDuration : String;
+  Protected
+    //Property setters
+    Procedure SetlistUpdateResponses(AIndex : Integer; const AValue : TFetchThreatListUpdatesResponseTypelistUpdateResponsesArray); virtual;
+    Procedure SetminimumWaitDuration(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property listUpdateResponses : TFetchThreatListUpdatesResponseTypelistUpdateResponsesArray Index 0 Read FlistUpdateResponses Write SetlistUpdateResponses;
+    Property minimumWaitDuration : String Index 8 Read FminimumWaitDuration Write SetminimumWaitDuration;
+  end;
+  TFetchThreatListUpdatesResponseClass = Class of TFetchThreatListUpdatesResponse;
+  
+  { --------------------------------------------------------------------
+    TListUpdateResponse
+    --------------------------------------------------------------------}
+  
+  TListUpdateResponse = Class(TGoogleBaseObject)
+  Private
+    FthreatType : String;
+    FthreatEntryType : String;
+    FplatformType : String;
+    FresponseType : String;
+    Fadditions : TListUpdateResponseTypeadditionsArray;
+    Fremovals : TListUpdateResponseTyperemovalsArray;
+    FnewClientState : String;
+    Fchecksum : TChecksum;
+  Protected
+    //Property setters
+    Procedure SetthreatType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthreatEntryType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplatformType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetresponseType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setadditions(AIndex : Integer; const AValue : TListUpdateResponseTypeadditionsArray); virtual;
+    Procedure Setremovals(AIndex : Integer; const AValue : TListUpdateResponseTyperemovalsArray); virtual;
+    Procedure SetnewClientState(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setchecksum(AIndex : Integer; const AValue : TChecksum); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property threatType : String Index 0 Read FthreatType Write SetthreatType;
+    Property threatEntryType : String Index 8 Read FthreatEntryType Write SetthreatEntryType;
+    Property platformType : String Index 16 Read FplatformType Write SetplatformType;
+    Property responseType : String Index 24 Read FresponseType Write SetresponseType;
+    Property additions : TListUpdateResponseTypeadditionsArray Index 32 Read Fadditions Write Setadditions;
+    Property removals : TListUpdateResponseTyperemovalsArray Index 40 Read Fremovals Write Setremovals;
+    Property newClientState : String Index 48 Read FnewClientState Write SetnewClientState;
+    Property checksum : TChecksum Index 56 Read Fchecksum Write Setchecksum;
+  end;
+  TListUpdateResponseClass = Class of TListUpdateResponse;
+  
+  { --------------------------------------------------------------------
+    TThreatEntrySet
+    --------------------------------------------------------------------}
+  
+  TThreatEntrySet = Class(TGoogleBaseObject)
+  Private
+    FcompressionType : String;
+    FrawHashes : TRawHashes;
+    FrawIndices : TRawIndices;
+    FriceHashes : TRiceDeltaEncoding;
+    FriceIndices : TRiceDeltaEncoding;
+  Protected
+    //Property setters
+    Procedure SetcompressionType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrawHashes(AIndex : Integer; const AValue : TRawHashes); virtual;
+    Procedure SetrawIndices(AIndex : Integer; const AValue : TRawIndices); virtual;
+    Procedure SetriceHashes(AIndex : Integer; const AValue : TRiceDeltaEncoding); virtual;
+    Procedure SetriceIndices(AIndex : Integer; const AValue : TRiceDeltaEncoding); virtual;
+  Public
+  Published
+    Property compressionType : String Index 0 Read FcompressionType Write SetcompressionType;
+    Property rawHashes : TRawHashes Index 8 Read FrawHashes Write SetrawHashes;
+    Property rawIndices : TRawIndices Index 16 Read FrawIndices Write SetrawIndices;
+    Property riceHashes : TRiceDeltaEncoding Index 24 Read FriceHashes Write SetriceHashes;
+    Property riceIndices : TRiceDeltaEncoding Index 32 Read FriceIndices Write SetriceIndices;
+  end;
+  TThreatEntrySetClass = Class of TThreatEntrySet;
+  
+  { --------------------------------------------------------------------
+    TRawHashes
+    --------------------------------------------------------------------}
+  
+  TRawHashes = Class(TGoogleBaseObject)
+  Private
+    FprefixSize : integer;
+    FrawHashes : String;
+  Protected
+    //Property setters
+    Procedure SetprefixSize(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrawHashes(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property prefixSize : integer Index 0 Read FprefixSize Write SetprefixSize;
+    Property rawHashes : String Index 8 Read FrawHashes Write SetrawHashes;
+  end;
+  TRawHashesClass = Class of TRawHashes;
+  
+  { --------------------------------------------------------------------
+    TRawIndices
+    --------------------------------------------------------------------}
+  
+  TRawIndices = Class(TGoogleBaseObject)
+  Private
+    Findices : TintegerArray;
+  Protected
+    //Property setters
+    Procedure Setindices(AIndex : Integer; const AValue : TintegerArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property indices : TintegerArray Index 0 Read Findices Write Setindices;
+  end;
+  TRawIndicesClass = Class of TRawIndices;
+  
+  { --------------------------------------------------------------------
+    TRiceDeltaEncoding
+    --------------------------------------------------------------------}
+  
+  TRiceDeltaEncoding = Class(TGoogleBaseObject)
+  Private
+    FfirstValue : String;
+    FriceParameter : integer;
+    FnumEntries : integer;
+    FencodedData : String;
+  Protected
+    //Property setters
+    Procedure SetfirstValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetriceParameter(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumEntries(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetencodedData(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property firstValue : String Index 0 Read FfirstValue Write SetfirstValue;
+    Property riceParameter : integer Index 8 Read FriceParameter Write SetriceParameter;
+    Property numEntries : integer Index 16 Read FnumEntries Write SetnumEntries;
+    Property encodedData : String Index 24 Read FencodedData Write SetencodedData;
+  end;
+  TRiceDeltaEncodingClass = Class of TRiceDeltaEncoding;
+  
+  { --------------------------------------------------------------------
+    TChecksum
+    --------------------------------------------------------------------}
+  
+  TChecksum = Class(TGoogleBaseObject)
+  Private
+    Fsha256 : String;
+  Protected
+    //Property setters
+    Procedure Setsha256(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sha256 : String Index 0 Read Fsha256 Write Setsha256;
+  end;
+  TChecksumClass = Class of TChecksum;
+  
+  { --------------------------------------------------------------------
+    TFindFullHashesRequest
+    --------------------------------------------------------------------}
+  
+  TFindFullHashesRequest = Class(TGoogleBaseObject)
+  Private
+    Fclient : TClientInfo;
+    FclientStates : TStringArray;
+    FthreatInfo : TThreatInfo;
+  Protected
+    //Property setters
+    Procedure Setclient(AIndex : Integer; const AValue : TClientInfo); virtual;
+    Procedure SetclientStates(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetthreatInfo(AIndex : Integer; const AValue : TThreatInfo); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property client : TClientInfo Index 0 Read Fclient Write Setclient;
+    Property clientStates : TStringArray Index 8 Read FclientStates Write SetclientStates;
+    Property threatInfo : TThreatInfo Index 16 Read FthreatInfo Write SetthreatInfo;
+  end;
+  TFindFullHashesRequestClass = Class of TFindFullHashesRequest;
+  
+  { --------------------------------------------------------------------
+    TFindFullHashesResponse
+    --------------------------------------------------------------------}
+  
+  TFindFullHashesResponse = Class(TGoogleBaseObject)
+  Private
+    Fmatches : TFindFullHashesResponseTypematchesArray;
+    FminimumWaitDuration : String;
+    FnegativeCacheDuration : String;
+  Protected
+    //Property setters
+    Procedure Setmatches(AIndex : Integer; const AValue : TFindFullHashesResponseTypematchesArray); virtual;
+    Procedure SetminimumWaitDuration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnegativeCacheDuration(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property matches : TFindFullHashesResponseTypematchesArray Index 0 Read Fmatches Write Setmatches;
+    Property minimumWaitDuration : String Index 8 Read FminimumWaitDuration Write SetminimumWaitDuration;
+    Property negativeCacheDuration : String Index 16 Read FnegativeCacheDuration Write SetnegativeCacheDuration;
+  end;
+  TFindFullHashesResponseClass = Class of TFindFullHashesResponse;
+  
+  { --------------------------------------------------------------------
+    TListThreatListsResponse
+    --------------------------------------------------------------------}
+  
+  TListThreatListsResponse = Class(TGoogleBaseObject)
+  Private
+    FthreatLists : TListThreatListsResponseTypethreatListsArray;
+  Protected
+    //Property setters
+    Procedure SetthreatLists(AIndex : Integer; const AValue : TListThreatListsResponseTypethreatListsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property threatLists : TListThreatListsResponseTypethreatListsArray Index 0 Read FthreatLists Write SetthreatLists;
+  end;
+  TListThreatListsResponseClass = Class of TListThreatListsResponse;
+  
+  { --------------------------------------------------------------------
+    TThreatListDescriptor
+    --------------------------------------------------------------------}
+  
+  TThreatListDescriptor = Class(TGoogleBaseObject)
+  Private
+    FthreatType : String;
+    FplatformType : String;
+    FthreatEntryType : String;
+  Protected
+    //Property setters
+    Procedure SetthreatType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetplatformType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetthreatEntryType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property threatType : String Index 0 Read FthreatType Write SetthreatType;
+    Property platformType : String Index 8 Read FplatformType Write SetplatformType;
+    Property threatEntryType : String Index 16 Read FthreatEntryType Write SetthreatEntryType;
+  end;
+  TThreatListDescriptorClass = Class of TThreatListDescriptor;
+  
+  { --------------------------------------------------------------------
+    TThreatMatchesResource
+    --------------------------------------------------------------------}
+  
+  TThreatMatchesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Find(aFindThreatMatchesRequest : TFindThreatMatchesRequest) : TFindThreatMatchesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TThreatListUpdatesResource
+    --------------------------------------------------------------------}
+  
+  TThreatListUpdatesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Fetch(aFetchThreatListUpdatesRequest : TFetchThreatListUpdatesRequest) : TFetchThreatListUpdatesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TFullHashesResource
+    --------------------------------------------------------------------}
+  
+  TFullHashesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Find(aFindFullHashesRequest : TFindFullHashesRequest) : TFindFullHashesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TThreatListsResource
+    --------------------------------------------------------------------}
+  
+  TThreatListsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List : TListThreatListsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TSafebrowsingAPI
+    --------------------------------------------------------------------}
+  
+  TSafebrowsingAPI = Class(TGoogleAPI)
+  Private
+    FThreatMatchesInstance : TThreatMatchesResource;
+    FThreatListUpdatesInstance : TThreatListUpdatesResource;
+    FFullHashesInstance : TFullHashesResource;
+    FThreatListsInstance : TThreatListsResource;
+    Function GetThreatMatchesInstance : TThreatMatchesResource;virtual;
+    Function GetThreatListUpdatesInstance : TThreatListUpdatesResource;virtual;
+    Function GetFullHashesInstance : TFullHashesResource;virtual;
+    Function GetThreatListsInstance : TThreatListsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateThreatMatchesResource(AOwner : TComponent) : TThreatMatchesResource;virtual;overload;
+    Function CreateThreatMatchesResource : TThreatMatchesResource;virtual;overload;
+    Function CreateThreatListUpdatesResource(AOwner : TComponent) : TThreatListUpdatesResource;virtual;overload;
+    Function CreateThreatListUpdatesResource : TThreatListUpdatesResource;virtual;overload;
+    Function CreateFullHashesResource(AOwner : TComponent) : TFullHashesResource;virtual;overload;
+    Function CreateFullHashesResource : TFullHashesResource;virtual;overload;
+    Function CreateThreatListsResource(AOwner : TComponent) : TThreatListsResource;virtual;overload;
+    Function CreateThreatListsResource : TThreatListsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ThreatMatchesResource : TThreatMatchesResource Read GetThreatMatchesInstance;
+    Property ThreatListUpdatesResource : TThreatListUpdatesResource Read GetThreatListUpdatesInstance;
+    Property FullHashesResource : TFullHashesResource Read GetFullHashesInstance;
+    Property ThreatListsResource : TThreatListsResource Read GetThreatListsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TFindThreatMatchesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TFindThreatMatchesRequest.Setclient(AIndex : Integer; const AValue : TClientInfo); 
+
+begin
+  If (Fclient=AValue) then exit;
+  Fclient:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindThreatMatchesRequest.SetthreatInfo(AIndex : Integer; const AValue : TThreatInfo); 
+
+begin
+  If (FthreatInfo=AValue) then exit;
+  FthreatInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TClientInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TClientInfo.SetclientId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientId=AValue) then exit;
+  FclientId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TClientInfo.SetclientVersion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclientVersion=AValue) then exit;
+  FclientVersion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatInfo.SetthreatTypes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FthreatTypes=AValue) then exit;
+  FthreatTypes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatInfo.SetplatformTypes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FplatformTypes=AValue) then exit;
+  FplatformTypes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatInfo.SetthreatEntryTypes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FthreatEntryTypes=AValue) then exit;
+  FthreatEntryTypes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatInfo.SetthreatEntries(AIndex : Integer; const AValue : TThreatInfoTypethreatEntriesArray); 
+
+begin
+  If (FthreatEntries=AValue) then exit;
+  FthreatEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TThreatInfo.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'threattypes' : SetLength(FthreatTypes,ALength);
+  'platformtypes' : SetLength(FplatformTypes,ALength);
+  'threatentrytypes' : SetLength(FthreatEntryTypes,ALength);
+  'threatentries' : SetLength(FthreatEntries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatEntry.Sethash(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fhash=AValue) then exit;
+  Fhash:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntry.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntry.Setdigest(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdigest=AValue) then exit;
+  Fdigest:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFindThreatMatchesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TFindThreatMatchesResponse.Setmatches(AIndex : Integer; const AValue : TFindThreatMatchesResponseTypematchesArray); 
+
+begin
+  If (Fmatches=AValue) then exit;
+  Fmatches:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFindThreatMatchesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'matches' : SetLength(Fmatches,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatMatch
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatMatch.SetthreatType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatType=AValue) then exit;
+  FthreatType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatMatch.SetplatformType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplatformType=AValue) then exit;
+  FplatformType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatMatch.SetthreatEntryType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatEntryType=AValue) then exit;
+  FthreatEntryType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatMatch.Setthreat(AIndex : Integer; const AValue : TThreatEntry); 
+
+begin
+  If (Fthreat=AValue) then exit;
+  Fthreat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatMatch.SetthreatEntryMetadata(AIndex : Integer; const AValue : TThreatEntryMetadata); 
+
+begin
+  If (FthreatEntryMetadata=AValue) then exit;
+  FthreatEntryMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatMatch.SetcacheDuration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcacheDuration=AValue) then exit;
+  FcacheDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatEntryMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatEntryMetadata.Setentries(AIndex : Integer; const AValue : TThreatEntryMetadataTypeentriesArray); 
+
+begin
+  If (Fentries=AValue) then exit;
+  Fentries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TThreatEntryMetadata.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'entries' : SetLength(Fentries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TMetadataEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TMetadataEntry.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMetadataEntry.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFetchThreatListUpdatesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TFetchThreatListUpdatesRequest.Setclient(AIndex : Integer; const AValue : TClientInfo); 
+
+begin
+  If (Fclient=AValue) then exit;
+  Fclient:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFetchThreatListUpdatesRequest.SetlistUpdateRequests(AIndex : Integer; const AValue : TFetchThreatListUpdatesRequestTypelistUpdateRequestsArray); 
+
+begin
+  If (FlistUpdateRequests=AValue) then exit;
+  FlistUpdateRequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFetchThreatListUpdatesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'listupdaterequests' : SetLength(FlistUpdateRequests,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListUpdateRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TListUpdateRequest.SetthreatType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatType=AValue) then exit;
+  FthreatType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateRequest.SetplatformType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplatformType=AValue) then exit;
+  FplatformType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateRequest.SetthreatEntryType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatEntryType=AValue) then exit;
+  FthreatEntryType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateRequest.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateRequest.Setconstraints(AIndex : Integer; const AValue : TConstraints); 
+
+begin
+  If (Fconstraints=AValue) then exit;
+  Fconstraints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TConstraints
+  --------------------------------------------------------------------}
+
+
+Procedure TConstraints.SetmaxUpdateEntries(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxUpdateEntries=AValue) then exit;
+  FmaxUpdateEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConstraints.SetmaxDatabaseEntries(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxDatabaseEntries=AValue) then exit;
+  FmaxDatabaseEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConstraints.Setregion(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fregion=AValue) then exit;
+  Fregion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConstraints.SetsupportedCompressions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FsupportedCompressions=AValue) then exit;
+  FsupportedCompressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TConstraints.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'supportedcompressions' : SetLength(FsupportedCompressions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFetchThreatListUpdatesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TFetchThreatListUpdatesResponse.SetlistUpdateResponses(AIndex : Integer; const AValue : TFetchThreatListUpdatesResponseTypelistUpdateResponsesArray); 
+
+begin
+  If (FlistUpdateResponses=AValue) then exit;
+  FlistUpdateResponses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFetchThreatListUpdatesResponse.SetminimumWaitDuration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FminimumWaitDuration=AValue) then exit;
+  FminimumWaitDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFetchThreatListUpdatesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'listupdateresponses' : SetLength(FlistUpdateResponses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListUpdateResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListUpdateResponse.SetthreatType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatType=AValue) then exit;
+  FthreatType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.SetthreatEntryType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatEntryType=AValue) then exit;
+  FthreatEntryType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.SetplatformType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplatformType=AValue) then exit;
+  FplatformType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.SetresponseType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FresponseType=AValue) then exit;
+  FresponseType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.Setadditions(AIndex : Integer; const AValue : TListUpdateResponseTypeadditionsArray); 
+
+begin
+  If (Fadditions=AValue) then exit;
+  Fadditions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.Setremovals(AIndex : Integer; const AValue : TListUpdateResponseTyperemovalsArray); 
+
+begin
+  If (Fremovals=AValue) then exit;
+  Fremovals:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.SetnewClientState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnewClientState=AValue) then exit;
+  FnewClientState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListUpdateResponse.Setchecksum(AIndex : Integer; const AValue : TChecksum); 
+
+begin
+  If (Fchecksum=AValue) then exit;
+  Fchecksum:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListUpdateResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'additions' : SetLength(Fadditions,ALength);
+  'removals' : SetLength(Fremovals,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatEntrySet
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatEntrySet.SetcompressionType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcompressionType=AValue) then exit;
+  FcompressionType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntrySet.SetrawHashes(AIndex : Integer; const AValue : TRawHashes); 
+
+begin
+  If (FrawHashes=AValue) then exit;
+  FrawHashes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntrySet.SetrawIndices(AIndex : Integer; const AValue : TRawIndices); 
+
+begin
+  If (FrawIndices=AValue) then exit;
+  FrawIndices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntrySet.SetriceHashes(AIndex : Integer; const AValue : TRiceDeltaEncoding); 
+
+begin
+  If (FriceHashes=AValue) then exit;
+  FriceHashes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatEntrySet.SetriceIndices(AIndex : Integer; const AValue : TRiceDeltaEncoding); 
+
+begin
+  If (FriceIndices=AValue) then exit;
+  FriceIndices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRawHashes
+  --------------------------------------------------------------------}
+
+
+Procedure TRawHashes.SetprefixSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FprefixSize=AValue) then exit;
+  FprefixSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRawHashes.SetrawHashes(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrawHashes=AValue) then exit;
+  FrawHashes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRawIndices
+  --------------------------------------------------------------------}
+
+
+Procedure TRawIndices.Setindices(AIndex : Integer; const AValue : TintegerArray); 
+
+begin
+  If (Findices=AValue) then exit;
+  Findices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TRawIndices.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'indices' : SetLength(Findices,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRiceDeltaEncoding
+  --------------------------------------------------------------------}
+
+
+Procedure TRiceDeltaEncoding.SetfirstValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfirstValue=AValue) then exit;
+  FfirstValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRiceDeltaEncoding.SetriceParameter(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FriceParameter=AValue) then exit;
+  FriceParameter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRiceDeltaEncoding.SetnumEntries(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnumEntries=AValue) then exit;
+  FnumEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRiceDeltaEncoding.SetencodedData(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FencodedData=AValue) then exit;
+  FencodedData:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TChecksum
+  --------------------------------------------------------------------}
+
+
+Procedure TChecksum.Setsha256(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsha256=AValue) then exit;
+  Fsha256:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFindFullHashesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TFindFullHashesRequest.Setclient(AIndex : Integer; const AValue : TClientInfo); 
+
+begin
+  If (Fclient=AValue) then exit;
+  Fclient:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindFullHashesRequest.SetclientStates(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FclientStates=AValue) then exit;
+  FclientStates:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindFullHashesRequest.SetthreatInfo(AIndex : Integer; const AValue : TThreatInfo); 
+
+begin
+  If (FthreatInfo=AValue) then exit;
+  FthreatInfo:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFindFullHashesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'clientstates' : SetLength(FclientStates,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFindFullHashesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TFindFullHashesResponse.Setmatches(AIndex : Integer; const AValue : TFindFullHashesResponseTypematchesArray); 
+
+begin
+  If (Fmatches=AValue) then exit;
+  Fmatches:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindFullHashesResponse.SetminimumWaitDuration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FminimumWaitDuration=AValue) then exit;
+  FminimumWaitDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindFullHashesResponse.SetnegativeCacheDuration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnegativeCacheDuration=AValue) then exit;
+  FnegativeCacheDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFindFullHashesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'matches' : SetLength(Fmatches,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListThreatListsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListThreatListsResponse.SetthreatLists(AIndex : Integer; const AValue : TListThreatListsResponseTypethreatListsArray); 
+
+begin
+  If (FthreatLists=AValue) then exit;
+  FthreatLists:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListThreatListsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'threatlists' : SetLength(FthreatLists,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatListDescriptor
+  --------------------------------------------------------------------}
+
+
+Procedure TThreatListDescriptor.SetthreatType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatType=AValue) then exit;
+  FthreatType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatListDescriptor.SetplatformType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FplatformType=AValue) then exit;
+  FplatformType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThreatListDescriptor.SetthreatEntryType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FthreatEntryType=AValue) then exit;
+  FthreatEntryType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TThreatMatchesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TThreatMatchesResource.ResourceName : String;
+
+begin
+  Result:='threatMatches';
+end;
+
+Class Function TThreatMatchesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsafebrowsingAPI;
+end;
+
+Function TThreatMatchesResource.Find(aFindThreatMatchesRequest : TFindThreatMatchesRequest) : TFindThreatMatchesResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/threatMatches:find';
+  _Methodid   = 'safebrowsing.threatMatches.find';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aFindThreatMatchesRequest,TFindThreatMatchesResponse) as TFindThreatMatchesResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TThreatListUpdatesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TThreatListUpdatesResource.ResourceName : String;
+
+begin
+  Result:='threatListUpdates';
+end;
+
+Class Function TThreatListUpdatesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsafebrowsingAPI;
+end;
+
+Function TThreatListUpdatesResource.Fetch(aFetchThreatListUpdatesRequest : TFetchThreatListUpdatesRequest) : TFetchThreatListUpdatesResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/threatListUpdates:fetch';
+  _Methodid   = 'safebrowsing.threatListUpdates.fetch';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aFetchThreatListUpdatesRequest,TFetchThreatListUpdatesResponse) as TFetchThreatListUpdatesResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TFullHashesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TFullHashesResource.ResourceName : String;
+
+begin
+  Result:='fullHashes';
+end;
+
+Class Function TFullHashesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsafebrowsingAPI;
+end;
+
+Function TFullHashesResource.Find(aFindFullHashesRequest : TFindFullHashesRequest) : TFindFullHashesResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/fullHashes:find';
+  _Methodid   = 'safebrowsing.fullHashes.find';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aFindFullHashesRequest,TFindFullHashesResponse) as TFindFullHashesResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TThreatListsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TThreatListsResource.ResourceName : String;
+
+begin
+  Result:='threatLists';
+end;
+
+Class Function TThreatListsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsafebrowsingAPI;
+end;
+
+Function TThreatListsResource.List : TListThreatListsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v4/threatLists';
+  _Methodid   = 'safebrowsing.threatLists.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',Nil,TListThreatListsResponse) as TListThreatListsResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSafebrowsingAPI
+  --------------------------------------------------------------------}
+
+Class Function TSafebrowsingAPI.APIName : String;
+
+begin
+  Result:='safebrowsing';
+end;
+
+Class Function TSafebrowsingAPI.APIVersion : String;
+
+begin
+  Result:='v4';
+end;
+
+Class Function TSafebrowsingAPI.APIRevision : String;
+
+begin
+  Result:='20160520';
+end;
+
+Class Function TSafebrowsingAPI.APIID : String;
+
+begin
+  Result:='safebrowsing:v4';
+end;
+
+Class Function TSafebrowsingAPI.APITitle : String;
+
+begin
+  Result:='Safe Browsing APIs';
+end;
+
+Class Function TSafebrowsingAPI.APIDescription : String;
+
+begin
+  Result:='Enables client applications to check web resources (most commonly URLs) against Google-generated lists of unsafe web resources.';
+end;
+
+Class Function TSafebrowsingAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TSafebrowsingAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TSafebrowsingAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TSafebrowsingAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TSafebrowsingAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/safe-browsing/';
+end;
+
+Class Function TSafebrowsingAPI.APIrootUrl : string;
+
+begin
+  Result:='https://safebrowsing.googleapis.com/';
+end;
+
+Class Function TSafebrowsingAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TSafebrowsingAPI.APIbaseURL : String;
+
+begin
+  Result:='https://safebrowsing.googleapis.com/';
+end;
+
+Class Function TSafebrowsingAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TSafebrowsingAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TSafebrowsingAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TSafebrowsingAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,0);
+  
+end;
+
+Class Function TSafebrowsingAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=False;
+end;
+
+Class Procedure TSafebrowsingAPI.RegisterAPIResources;
+
+begin
+  TFindThreatMatchesRequest.RegisterObject;
+  TClientInfo.RegisterObject;
+  TThreatInfo.RegisterObject;
+  TThreatEntry.RegisterObject;
+  TFindThreatMatchesResponse.RegisterObject;
+  TThreatMatch.RegisterObject;
+  TThreatEntryMetadata.RegisterObject;
+  TMetadataEntry.RegisterObject;
+  TFetchThreatListUpdatesRequest.RegisterObject;
+  TListUpdateRequest.RegisterObject;
+  TConstraints.RegisterObject;
+  TFetchThreatListUpdatesResponse.RegisterObject;
+  TListUpdateResponse.RegisterObject;
+  TThreatEntrySet.RegisterObject;
+  TRawHashes.RegisterObject;
+  TRawIndices.RegisterObject;
+  TRiceDeltaEncoding.RegisterObject;
+  TChecksum.RegisterObject;
+  TFindFullHashesRequest.RegisterObject;
+  TFindFullHashesResponse.RegisterObject;
+  TListThreatListsResponse.RegisterObject;
+  TThreatListDescriptor.RegisterObject;
+end;
+
+
+Function TSafebrowsingAPI.GetThreatMatchesInstance : TThreatMatchesResource;
+
+begin
+  if (FThreatMatchesInstance=Nil) then
+    FThreatMatchesInstance:=CreateThreatMatchesResource;
+  Result:=FThreatMatchesInstance;
+end;
+
+Function TSafebrowsingAPI.CreateThreatMatchesResource : TThreatMatchesResource;
+
+begin
+  Result:=CreateThreatMatchesResource(Self);
+end;
+
+
+Function TSafebrowsingAPI.CreateThreatMatchesResource(AOwner : TComponent) : TThreatMatchesResource;
+
+begin
+  Result:=TThreatMatchesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSafebrowsingAPI.GetThreatListUpdatesInstance : TThreatListUpdatesResource;
+
+begin
+  if (FThreatListUpdatesInstance=Nil) then
+    FThreatListUpdatesInstance:=CreateThreatListUpdatesResource;
+  Result:=FThreatListUpdatesInstance;
+end;
+
+Function TSafebrowsingAPI.CreateThreatListUpdatesResource : TThreatListUpdatesResource;
+
+begin
+  Result:=CreateThreatListUpdatesResource(Self);
+end;
+
+
+Function TSafebrowsingAPI.CreateThreatListUpdatesResource(AOwner : TComponent) : TThreatListUpdatesResource;
+
+begin
+  Result:=TThreatListUpdatesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSafebrowsingAPI.GetFullHashesInstance : TFullHashesResource;
+
+begin
+  if (FFullHashesInstance=Nil) then
+    FFullHashesInstance:=CreateFullHashesResource;
+  Result:=FFullHashesInstance;
+end;
+
+Function TSafebrowsingAPI.CreateFullHashesResource : TFullHashesResource;
+
+begin
+  Result:=CreateFullHashesResource(Self);
+end;
+
+
+Function TSafebrowsingAPI.CreateFullHashesResource(AOwner : TComponent) : TFullHashesResource;
+
+begin
+  Result:=TFullHashesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSafebrowsingAPI.GetThreatListsInstance : TThreatListsResource;
+
+begin
+  if (FThreatListsInstance=Nil) then
+    FThreatListsInstance:=CreateThreatListsResource;
+  Result:=FThreatListsInstance;
+end;
+
+Function TSafebrowsingAPI.CreateThreatListsResource : TThreatListsResource;
+
+begin
+  Result:=CreateThreatListsResource(Self);
+end;
+
+
+Function TSafebrowsingAPI.CreateThreatListsResource(AOwner : TComponent) : TThreatListsResource;
+
+begin
+  Result:=TThreatListsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TSafebrowsingAPI.RegisterAPI;
+end.

+ 809 - 0
packages/googleapi/src/googlescript.pp

@@ -0,0 +1,809 @@
+unit googlescript;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TExecutionRequest = Class;
+  TOperation = Class;
+  TStatus = Class;
+  TExecutionError = Class;
+  TScriptStackTraceElement = Class;
+  TExecutionResponse = Class;
+  TExecutionRequestArray = Array of TExecutionRequest;
+  TOperationArray = Array of TOperation;
+  TStatusArray = Array of TStatus;
+  TExecutionErrorArray = Array of TExecutionError;
+  TScriptStackTraceElementArray = Array of TScriptStackTraceElement;
+  TExecutionResponseArray = Array of TExecutionResponse;
+  //Anonymous types, using auto-generated names
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsItem = Class;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TExecutionErrorTypescriptStackTraceElementsArray = Array of TScriptStackTraceElement;
+  
+  { --------------------------------------------------------------------
+    TExecutionRequest
+    --------------------------------------------------------------------}
+  
+  TExecutionRequest = Class(TGoogleBaseObject)
+  Private
+    F_function : String;
+    Fparameters : TTJSONSchemaArray;
+    FsessionState : String;
+    FdevMode : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_function(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
+    Procedure SetsessionState(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdevMode(AIndex : Integer; const AValue : boolean); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property _function : String Index 0 Read F_function Write Set_function;
+    Property parameters : TTJSONSchemaArray Index 8 Read Fparameters Write Setparameters;
+    Property sessionState : String Index 16 Read FsessionState Write SetsessionState;
+    Property devMode : boolean Index 24 Read FdevMode Write SetdevMode;
+  end;
+  TExecutionRequestClass = Class of TExecutionRequest;
+  
+  { --------------------------------------------------------------------
+    TOperationTypemetadata
+    --------------------------------------------------------------------}
+  
+  TOperationTypemetadata = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTypemetadataClass = Class of TOperationTypemetadata;
+  
+  { --------------------------------------------------------------------
+    TOperationTyperesponse
+    --------------------------------------------------------------------}
+  
+  TOperationTyperesponse = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TOperationTyperesponseClass = Class of TOperationTyperesponse;
+  
+  { --------------------------------------------------------------------
+    TOperation
+    --------------------------------------------------------------------}
+  
+  TOperation = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fmetadata : TOperationTypemetadata;
+    Fdone : boolean;
+    Ferror : TStatus;
+    Fresponse : TOperationTyperesponse;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property metadata : TOperationTypemetadata Index 8 Read Fmetadata Write Setmetadata;
+    Property done : boolean Index 16 Read Fdone Write Setdone;
+    Property error : TStatus Index 24 Read Ferror Write Seterror;
+    Property response : TOperationTyperesponse Index 32 Read Fresponse Write Setresponse;
+  end;
+  TOperationClass = Class of TOperation;
+  
+  { --------------------------------------------------------------------
+    TStatusTypedetailsItem
+    --------------------------------------------------------------------}
+  
+  TStatusTypedetailsItem = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
+  
+  { --------------------------------------------------------------------
+    TStatus
+    --------------------------------------------------------------------}
+  
+  TStatus = Class(TGoogleBaseObject)
+  Private
+    Fcode : integer;
+    Fmessage : String;
+    Fdetails : TStatusTypedetailsArray;
+  Protected
+    //Property setters
+    Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property code : integer Index 0 Read Fcode Write Setcode;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+    Property details : TStatusTypedetailsArray Index 16 Read Fdetails Write Setdetails;
+  end;
+  TStatusClass = Class of TStatus;
+  
+  { --------------------------------------------------------------------
+    TExecutionError
+    --------------------------------------------------------------------}
+  
+  TExecutionError = Class(TGoogleBaseObject)
+  Private
+    FscriptStackTraceElements : TExecutionErrorTypescriptStackTraceElementsArray;
+    FerrorMessage : String;
+    FerrorType : String;
+  Protected
+    //Property setters
+    Procedure SetscriptStackTraceElements(AIndex : Integer; const AValue : TExecutionErrorTypescriptStackTraceElementsArray); virtual;
+    Procedure SeterrorMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorType(AIndex : Integer; const AValue : String); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property scriptStackTraceElements : TExecutionErrorTypescriptStackTraceElementsArray Index 0 Read FscriptStackTraceElements Write SetscriptStackTraceElements;
+    Property errorMessage : String Index 8 Read FerrorMessage Write SeterrorMessage;
+    Property errorType : String Index 16 Read FerrorType Write SeterrorType;
+  end;
+  TExecutionErrorClass = Class of TExecutionError;
+  
+  { --------------------------------------------------------------------
+    TScriptStackTraceElement
+    --------------------------------------------------------------------}
+  
+  TScriptStackTraceElement = Class(TGoogleBaseObject)
+  Private
+    F_function : String;
+    FlineNumber : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_function(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlineNumber(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property _function : String Index 0 Read F_function Write Set_function;
+    Property lineNumber : integer Index 8 Read FlineNumber Write SetlineNumber;
+  end;
+  TScriptStackTraceElementClass = Class of TScriptStackTraceElement;
+  
+  { --------------------------------------------------------------------
+    TExecutionResponse
+    --------------------------------------------------------------------}
+  
+  TExecutionResponse = Class(TGoogleBaseObject)
+  Private
+    Fresult : TJSONSchema;
+  Protected
+    //Property setters
+    Procedure Setresult(AIndex : Integer; const AValue : TJSONSchema); virtual;
+  Public
+  Published
+    Property result : TJSONSchema Index 0 Read Fresult Write Setresult;
+  end;
+  TExecutionResponseClass = Class of TExecutionResponse;
+  
+  { --------------------------------------------------------------------
+    TScriptsResource
+    --------------------------------------------------------------------}
+  
+  TScriptsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Run(scriptId: string; aExecutionRequest : TExecutionRequest) : TOperation;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TScriptAPI
+    --------------------------------------------------------------------}
+  
+  TScriptAPI = Class(TGoogleAPI)
+  Private
+    FScriptsInstance : TScriptsResource;
+    Function GetScriptsInstance : TScriptsResource;virtual;
+  Public
+    //Override class functions with API info
+    Class Function APIName : String; override;
+    Class Function APIVersion : String; override;
+    Class Function APIRevision : String; override;
+    Class Function APIID : String; override;
+    Class Function APITitle : String; override;
+    Class Function APIDescription : String; override;
+    Class Function APIOwnerDomain : String; override;
+    Class Function APIOwnerName : String; override;
+    Class Function APIIcon16 : String; override;
+    Class Function APIIcon32 : String; override;
+    Class Function APIdocumentationLink : String; override;
+    Class Function APIrootUrl : string; override;
+    Class Function APIbasePath : string;override;
+    Class Function APIbaseURL : String;override;
+    Class Function APIProtocol : string;override;
+    Class Function APIservicePath : string;override;
+    Class Function APIbatchPath : String;override;
+    Class Function APIAuthScopes : TScopeInfoArray;override;
+    Class Function APINeedsAuth : Boolean;override;
+    Class Procedure RegisterAPIResources; override;
+    //Add create function for resources
+    Function CreateScriptsResource(AOwner : TComponent) : TScriptsResource;virtual;overload;
+    Function CreateScriptsResource : TScriptsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ScriptsResource : TScriptsResource Read GetScriptsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TExecutionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TExecutionRequest.Set_function(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_function=AValue) then exit;
+  F_function:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecutionRequest.Setparameters(AIndex : Integer; const AValue : TTJSONSchemaArray); 
+
+begin
+  If (Fparameters=AValue) then exit;
+  Fparameters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecutionRequest.SetsessionState(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsessionState=AValue) then exit;
+  FsessionState:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecutionRequest.SetdevMode(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdevMode=AValue) then exit;
+  FdevMode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TExecutionRequest.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_function' : Result:='function';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TExecutionRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'parameters' : SetLength(Fparameters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTypemetadata
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationTyperesponse
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); 
+
+begin
+  If (Fmetadata=AValue) then exit;
+  Fmetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fdone=AValue) then exit;
+  Fdone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); 
+
+begin
+  If (Fresponse=AValue) then exit;
+  Fresponse:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStatusTypedetailsItem
+  --------------------------------------------------------------------}
+
+
+Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStatus
+  --------------------------------------------------------------------}
+
+
+Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fcode=AValue) then exit;
+  Fcode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); 
+
+begin
+  If (Fdetails=AValue) then exit;
+  Fdetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'details' : SetLength(Fdetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TExecutionError
+  --------------------------------------------------------------------}
+
+
+Procedure TExecutionError.SetscriptStackTraceElements(AIndex : Integer; const AValue : TExecutionErrorTypescriptStackTraceElementsArray); 
+
+begin
+  If (FscriptStackTraceElements=AValue) then exit;
+  FscriptStackTraceElements:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecutionError.SeterrorMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorMessage=AValue) then exit;
+  FerrorMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecutionError.SeterrorType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorType=AValue) then exit;
+  FerrorType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TExecutionError.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'scriptstacktraceelements' : SetLength(FscriptStackTraceElements,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TScriptStackTraceElement
+  --------------------------------------------------------------------}
+
+
+Procedure TScriptStackTraceElement.Set_function(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_function=AValue) then exit;
+  F_function:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TScriptStackTraceElement.SetlineNumber(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FlineNumber=AValue) then exit;
+  FlineNumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TScriptStackTraceElement.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_function' : Result:='function';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TExecutionResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TExecutionResponse.Setresult(AIndex : Integer; const AValue : TJSONSchema); 
+
+begin
+  If (Fresult=AValue) then exit;
+  Fresult:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TScriptsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TScriptsResource.ResourceName : String;
+
+begin
+  Result:='scripts';
+end;
+
+Class Function TScriptsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TscriptAPI;
+end;
+
+Function TScriptsResource.Run(scriptId: string; aExecutionRequest : TExecutionRequest) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/scripts/{scriptId}:run';
+  _Methodid   = 'script.scripts.run';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['scriptId',scriptId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aExecutionRequest,TOperation) as TOperation;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TScriptAPI
+  --------------------------------------------------------------------}
+
+Class Function TScriptAPI.APIName : String;
+
+begin
+  Result:='script';
+end;
+
+Class Function TScriptAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TScriptAPI.APIRevision : String;
+
+begin
+  Result:='20160426';
+end;
+
+Class Function TScriptAPI.APIID : String;
+
+begin
+  Result:='script:v1';
+end;
+
+Class Function TScriptAPI.APITitle : String;
+
+begin
+  Result:='Google Apps Script Execution API';
+end;
+
+Class Function TScriptAPI.APIDescription : String;
+
+begin
+  Result:='Executes Google Apps Script projects.';
+end;
+
+Class Function TScriptAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TScriptAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TScriptAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TScriptAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TScriptAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/apps-script/execution/rest/v1/scripts/run';
+end;
+
+Class Function TScriptAPI.APIrootUrl : string;
+
+begin
+  Result:='https://script.googleapis.com/';
+end;
+
+Class Function TScriptAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TScriptAPI.APIbaseURL : String;
+
+begin
+  Result:='https://script.googleapis.com/';
+end;
+
+Class Function TScriptAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TScriptAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TScriptAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TScriptAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,11);
+  Result[0].Name:='https://mail.google.com/';
+  Result[0].Description:='View and manage your mail';
+  Result[1].Name:='https://www.google.com/calendar/feeds';
+  Result[1].Description:='Manage your calendars';
+  Result[2].Name:='https://www.google.com/m8/feeds';
+  Result[2].Description:='Manage your contacts';
+  Result[3].Name:='https://www.googleapis.com/auth/admin.directory.group';
+  Result[3].Description:='View and manage the provisioning of groups on your domain';
+  Result[4].Name:='https://www.googleapis.com/auth/admin.directory.user';
+  Result[4].Description:='View and manage the provisioning of users on your domain';
+  Result[5].Name:='https://www.googleapis.com/auth/drive';
+  Result[5].Description:='View and manage the files in your Google Drive';
+  Result[6].Name:='https://www.googleapis.com/auth/forms';
+  Result[6].Description:='View and manage your forms in Google Drive';
+  Result[7].Name:='https://www.googleapis.com/auth/forms.currentonly';
+  Result[7].Description:='View and manage forms that this application has been installed in';
+  Result[8].Name:='https://www.googleapis.com/auth/groups';
+  Result[8].Description:='View and manage your Google Groups';
+  Result[9].Name:='https://www.googleapis.com/auth/spreadsheets';
+  Result[9].Description:='View and manage your spreadsheets in Google Drive';
+  Result[10].Name:='https://www.googleapis.com/auth/userinfo.email';
+  Result[10].Description:='View your email address';
+  
+end;
+
+Class Function TScriptAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TScriptAPI.RegisterAPIResources;
+
+begin
+  TExecutionRequest.RegisterObject;
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TExecutionError.RegisterObject;
+  TScriptStackTraceElement.RegisterObject;
+  TExecutionResponse.RegisterObject;
+end;
+
+
+Function TScriptAPI.GetScriptsInstance : TScriptsResource;
+
+begin
+  if (FScriptsInstance=Nil) then
+    FScriptsInstance:=CreateScriptsResource;
+  Result:=FScriptsInstance;
+end;
+
+Function TScriptAPI.CreateScriptsResource : TScriptsResource;
+
+begin
+  Result:=CreateScriptsResource(Self);
+end;
+
+
+Function TScriptAPI.CreateScriptsResource(AOwner : TComponent) : TScriptsResource;
+
+begin
+  Result:=TScriptsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TScriptAPI.RegisterAPI;
+end.

+ 36 - 42
packages/googleapi/src/googleservice.pp

@@ -1,33 +1,17 @@
-{ Base Google service API classes
-
-  Copyright (C) 2015 Michael Van Canneyt [email protected]
-
-  This library is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version with the following modification:
-
-  As a special exception, the copyright holders of this library give you
-  permission to link this library with independent modules to produce an
-  executable, regardless of the license terms of these independent modules,and
-  to copy and distribute the resulting executable under terms of your choice,
-  provided that you also meet, for each linked independent module, the terms
-  and conditions of the license of that module. An independent module is a
-  module which is not derived from or based on this library. If you modify
-  this library, you may extend this exception to your version of the library,
-  but you are not obligated to do so. If you do not wish to do so, delete this
-  exception statement from your version.
-
-  This program is distributed in the hope that it will be useful, but WITHOUT
-  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
-  for more details.
-
-  You should have received a copy of the GNU Library General Public License
-  along with this library; if not, write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-}
+{ **********************************************************************
+    This file is part of the Free Component Library (FCL)
+    Copyright (c) 2015 The free pascal team.
 
+    Base Google service API classes
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
 unit googleservice;
 
 {$mode objfpc}{$H+}
@@ -83,6 +67,7 @@ Type
     procedure SetGoogleClient(AValue: TGoogleClient);
   Protected
     Procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    Function API : TGoogleAPI;// Used when creating resources.
   Public
     // All info in one fell swoop
     Class Function APIInfo : TAPIInfo; virtual;
@@ -381,7 +366,7 @@ end;
 
 { TGoogleAPI }
 
-class function TGoogleAPI.APIName: String;
+Class Function TGoogleAPI.APIName: String;
 begin
   Result:=ClassName;
   if UpCase(Result[1])='T' then
@@ -390,7 +375,7 @@ begin
     Result:=Copy(Result,1,Length(Result)-7);
 end;
 
-class function TGoogleAPI.APINeedsAuth: Boolean;
+Class Function TGoogleAPI.APINeedsAuth: Boolean;
 begin
   Result:=Length(APIAuthScopes)<>0;
 end;
@@ -405,7 +390,7 @@ begin
     FGoogleClient.FreeNotification(Self);
 end;
 
-procedure TGoogleAPI.Notification(AComponent: TComponent; Operation: TOperation
+Procedure TGoogleAPI.Notification(AComponent: TComponent; Operation: TOperation
   );
 begin
   inherited Notification(AComponent, Operation);
@@ -413,7 +398,12 @@ begin
     FGoogleClient:=Nil;
 end;
 
-class function TGoogleAPI.APIInfo: TAPIInfo;
+Function TGoogleAPI.API: TGoogleAPI;
+begin
+  Result:=Self;
+end;
+
+Class Function TGoogleAPI.APIInfo: TAPIInfo;
 begin
   Result.Name:=APIName;
   Result.Version:=APIVersion;
@@ -435,17 +425,17 @@ begin
   Result.AuthScopes:=APIAuthScopes;
 end;
 
-class procedure TGoogleAPI.RegisterAPI;
+Class Procedure TGoogleAPI.RegisterAPI;
 begin
   APIFactory.RegisterAPI(Self);
 end;
 
-class procedure TGoogleAPI.RegisterAPIResources;
+Class Procedure TGoogleAPI.RegisterAPIResources;
 begin
   // needs to be implemented in descendents
 end;
 
-function TGoogleAPI.ServiceCall(const AResource: TGoogleResource; AMethod,
+Function TGoogleAPI.ServiceCall(Const AResource: TGoogleResource; AMethod,
   APath, AQuery: String; AInput: TGoogleBaseObject;
   AReturnClass: TGoogleBaseObjectClass): TGoogleBaseObject;
 
@@ -503,7 +493,7 @@ begin
     end;
 end;
 
-function TGoogleAPI.ServiceCall(const AResource: TGoogleResource; AMethod,
+Function TGoogleAPI.ServiceCall(Const AResource: TGoogleResource; AMethod,
   APath, AQuery, AInput: String): String;
 
 Var
@@ -520,7 +510,11 @@ begin
   Resp:=Nil;
   try
     Req:=googleclient.WebClient.CreateRequest;
-    Req.SetContentFromString(AInput);
+    if (AInput<>'') then
+      begin
+      Req.Headers.Values['Content-type']:='application/json';
+      Req.SetContentFromString(AInput);
+      end;
     If Not APINeedsAuth then
       Resp:=googleclient.WebClient.ExecuteRequest(AMethod,URL,Req)
     else
@@ -534,8 +528,8 @@ begin
   end;
 end;
 
-function TGoogleAPI.SubstitutePath(const AResource, APath: String;
-  const Args: array of const): String;
+Function TGoogleAPI.SubstitutePath(Const AResource, APath: String;
+  Const Args: Array of const): String;
 
 Var
   N,V : String;
@@ -575,14 +569,14 @@ begin
     end;
 end;
 
-function TGoogleAPI.CreateResource(AClass: TGoogleResourceClass
+Function TGoogleAPI.CreateResource(AClass: TGoogleResourceClass
   ): TGoogleResource;
 begin
   Result:=AClass.Create(Self);
   Result.SetAPI(Self);
 end;
 
-function TGoogleAPI.CreateResource(const Resource: String): TGoogleResource;
+Function TGoogleAPI.CreateResource(const Resource: String): TGoogleResource;
 begin
   Result:=CreateResource(APIFactory.GetResourceClass(Resource));
 end;

Some files were not shown because too many files changed in this diff