Browse Source

* Updated from latest service descriptions

git-svn-id: trunk@33777 -
michael 9 years ago
parent
commit
300db70983
100 changed files with 99726 additions and 9560 deletions
  1. 37 6
      .gitattributes
  2. 37 6
      packages/googleapi/fpmake.pp
  3. 493 0
      packages/googleapi/src/googleacceleratedmobilepageurl.pp
  4. 5276 464
      packages/googleapi/src/googleadexchangebuyer.pp
  5. 1252 0
      packages/googleapi/src/googleadexchangebuyer2.pp
  6. 45 60
      packages/googleapi/src/googleadexchangeseller.pp
  7. 41 56
      packages/googleapi/src/googleadmin.pp
  8. 99 114
      packages/googleapi/src/googleadsense.pp
  9. 42 57
      packages/googleapi/src/googleadsensehost.pp
  10. 225 225
      packages/googleapi/src/googleanalytics.pp
  11. 3021 0
      packages/googleapi/src/googleanalyticsreporting.pp
  12. 560 57
      packages/googleapi/src/googleandroidenterprise.pp
  13. 424 92
      packages/googleapi/src/googleandroidpublisher.pp
  14. 4370 0
      packages/googleapi/src/googleappengine.pp
  15. 67 56
      packages/googleapi/src/googleappsactivity.pp
  16. 11 26
      packages/googleapi/src/googleappstate.pp
  17. 89 198
      packages/googleapi/src/googleautoscaler.pp
  18. 434 180
      packages/googleapi/src/googlebigquery.pp
  19. 98 113
      packages/googleapi/src/googleblogger.pp
  20. 386 117
      packages/googleapi/src/googlebooks.pp
  21. 246 170
      packages/googleapi/src/googlecalendar.pp
  22. 223 120
      packages/googleapi/src/googlecivicinfo.pp
  23. 4445 0
      packages/googleapi/src/googleclassroom.pp
  24. 776 0
      packages/googleapi/src/googlecloudbilling.pp
  25. 1492 0
      packages/googleapi/src/googlecloudbuild.pp
  26. 2920 0
      packages/googleapi/src/googleclouddebugger.pp
  27. 1494 0
      packages/googleapi/src/googleclouderrorreporting.pp
  28. 14 29
      packages/googleapi/src/googlecloudlatencytest.pp
  29. 65 78
      packages/googleapi/src/googlecloudmonitoring.pp
  30. 1015 0
      packages/googleapi/src/googlecloudresourcemanager.pp
  31. 777 0
      packages/googleapi/src/googlecloudtrace.pp
  32. 3420 0
      packages/googleapi/src/googleclouduseraccounts.pp
  33. 487 76
      packages/googleapi/src/googlecompute.pp
  34. 1716 0
      packages/googleapi/src/googleconsumersurveys.pp
  35. 522 232
      packages/googleapi/src/googlecontainer.pp
  36. 6193 978
      packages/googleapi/src/googlecontent.pp
  37. 53 66
      packages/googleapi/src/googlecoordinate.pp
  38. 51 66
      packages/googleapi/src/googlecustomsearch.pp
  39. 491 472
      packages/googleapi/src/googledataflow.pp
  40. 4471 0
      packages/googleapi/src/googledataproc.pp
  41. 485 550
      packages/googleapi/src/googledatastore.pp
  42. 498 116
      packages/googleapi/src/googledeploymentmanager.pp
  43. 362 188
      packages/googleapi/src/googledfareporting.pp
  44. 138 127
      packages/googleapi/src/googlediscovery.pp
  45. 43 54
      packages/googleapi/src/googledns.pp
  46. 340 77
      packages/googleapi/src/googledoubleclickbidmanager.pp
  47. 87 89
      packages/googleapi/src/googledoubleclicksearch.pp
  48. 178 596
      packages/googleapi/src/googledrive.pp
  49. 1244 0
      packages/googleapi/src/googlefirebaserules.pp
  50. 657 43
      packages/googleapi/src/googlefitness.pp
  51. 19 34
      packages/googleapi/src/googlefreebase.pp
  52. 109 124
      packages/googleapi/src/googlefusiontables.pp
  53. 217 175
      packages/googleapi/src/googlegames.pp
  54. 49 64
      packages/googleapi/src/googlegamesconfiguration.pp
  55. 146 60
      packages/googleapi/src/googlegamesmanagement.pp
  56. 458 348
      packages/googleapi/src/googlegenomics.pp
  57. 333 102
      packages/googleapi/src/googlegmail.pp
  58. 2 17
      packages/googleapi/src/googlegroupsmigration.pp
  59. 25 27
      packages/googleapi/src/googlegroupssettings.pp
  60. 1937 0
      packages/googleapi/src/googleiam.pp
  61. 512 90
      packages/googleapi/src/googleidentitytoolkit.pp
  62. 370 0
      packages/googleapi/src/googlekgsearch.pp
  63. 5 20
      packages/googleapi/src/googlelicensing.pp
  64. 578 313
      packages/googleapi/src/googlelogging.pp
  65. 79 94
      packages/googleapi/src/googlemirror.pp
  66. 3702 0
      packages/googleapi/src/googlemonitoring.pp
  67. 13 28
      packages/googleapi/src/googleoauth2.pp
  68. 70 85
      packages/googleapi/src/googlepagespeedonline.pp
  69. 2690 0
      packages/googleapi/src/googlepartners.pp
  70. 3517 0
      packages/googleapi/src/googlepeople.pp
  71. 3570 0
      packages/googleapi/src/googleplaymoviespartner.pp
  72. 255 370
      packages/googleapi/src/googleplus.pp
  73. 389 128
      packages/googleapi/src/googleplusdomains.pp
  74. 66 79
      packages/googleapi/src/googleprediction.pp
  75. 2506 0
      packages/googleapi/src/googleproximitybeacon.pp
  76. 437 226
      packages/googleapi/src/googlepubsub.pp
  77. 110 125
      packages/googleapi/src/googleqpxexpress.pp
  78. 118 67
      packages/googleapi/src/googlereplicapool.pp
  79. 214 70
      packages/googleapi/src/googlereplicapoolupdater.pp
  80. 137 70
      packages/googleapi/src/googlereseller.pp
  81. 52 65
      packages/googleapi/src/googleresourceviews.pp
  82. 1862 0
      packages/googleapi/src/googleruntimeconfig.pp
  83. 2011 0
      packages/googleapi/src/googlesafebrowsing.pp
  84. 809 0
      packages/googleapi/src/googlescript.pp
  85. 1416 0
      packages/googleapi/src/googleserviceregistry.pp
  86. 9330 0
      packages/googleapi/src/googlesheets.pp
  87. 12 27
      packages/googleapi/src/googlesiteverification.pp
  88. 147 162
      packages/googleapi/src/googlespectrum.pp
  89. 298 126
      packages/googleapi/src/googlesqladmin.pp
  90. 200 126
      packages/googleapi/src/googlestorage.pp
  91. 2538 0
      packages/googleapi/src/googlestoragetransfer.pp
  92. 400 150
      packages/googleapi/src/googletagmanager.pp
  93. 24 39
      packages/googleapi/src/googletaskqueue.pp
  94. 20 35
      packages/googleapi/src/googletasks.pp
  95. 3412 0
      packages/googleapi/src/googletoolresults.pp
  96. 13 28
      packages/googleapi/src/googletranslate.pp
  97. 29 44
      packages/googleapi/src/googleurlshortener.pp
  98. 2018 0
      packages/googleapi/src/googlevision.pp
  99. 16 31
      packages/googleapi/src/googlewebfonts.pp
  100. 576 57
      packages/googleapi/src/googlewebmasters.pp

+ 37 - 6
.gitattributes

@@ -3595,14 +3595,18 @@ 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
@@ -3613,17 +3617,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
@@ -3633,48 +3647,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

+ 37 - 6
packages/googleapi/fpmake.pp

@@ -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
+ 5276 - 464
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.

+ 45 - 60
packages/googleapi/src/googleadexchangeseller.pp

@@ -1,19 +1,4 @@
 unit googleadexchangeseller;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:57
 {$MODE objfpc}
 {$H+}
 
@@ -107,7 +92,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -136,11 +121,11 @@ type
     FsupportsReporting : boolean;
   Protected
     //Property setters
-    Procedure SetarcOptIn(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetarcOptIn(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsupportsReporting(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetsupportsReporting(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property arcOptIn : boolean Index 0 Read FarcOptIn Write SetarcOptIn;
@@ -164,7 +149,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -219,7 +204,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TAlertsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAlertsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -274,7 +259,7 @@ type
     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 SettargetingInfo(AIndex : Integer; AValue : TCustomChannelTypetargetingInfo); virtual;
+    Procedure SettargetingInfo(AIndex : Integer; const AValue : TCustomChannelTypetargetingInfo); virtual;
   Public
   Published
     Property code : String Index 0 Read Fcode Write Setcode;
@@ -298,7 +283,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -324,7 +309,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TMetadataTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TMetadataTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -384,7 +369,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TPreferredDealsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPreferredDealsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -435,13 +420,13 @@ type
     Fwarnings : TStringArray;
   Protected
     //Property setters
-    Procedure Setaverages(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setheaders(AIndex : Integer; AValue : TReportTypeheadersArray); virtual;
+    Procedure Setaverages(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setheaders(AIndex : Integer; const AValue : TReportTypeheadersArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrows(AIndex : Integer; AValue : TReportTyperowsArray); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); virtual;
     Procedure SettotalMatchedRows(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settotals(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setwarnings(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Settotals(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setwarnings(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -473,13 +458,13 @@ type
     FsupportedProducts : TStringArray;
   Protected
     //Property setters
-    Procedure SetcompatibleDimensions(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetcompatibleMetrics(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetcompatibleDimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetcompatibleMetrics(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetrequiredDimensions(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetrequiredMetrics(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetsupportedProducts(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetrequiredDimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetrequiredMetrics(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetsupportedProducts(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -531,7 +516,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TSavedReportsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSavedReportsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -582,7 +567,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -1022,7 +1007,7 @@ end;
 
 
 
-Procedure TAccounts.Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); 
+Procedure TAccounts.Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1072,7 +1057,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdClient.SetarcOptIn(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetarcOptIn(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FarcOptIn=AValue) then exit;
@@ -1112,7 +1097,7 @@ end;
 
 
 
-Procedure TAdClient.SetsupportsReporting(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetsupportsReporting(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsReporting=AValue) then exit;
@@ -1139,7 +1124,7 @@ end;
 
 
 
-Procedure TAdClients.Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); 
+Procedure TAdClients.Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1257,7 +1242,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAlerts.Setitems(AIndex : Integer; AValue : TAlertsTypeitemsArray); 
+Procedure TAlerts.Setitems(AIndex : Integer; const AValue : TAlertsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1384,7 +1369,7 @@ end;
 
 
 
-Procedure TCustomChannel.SettargetingInfo(AIndex : Integer; AValue : TCustomChannelTypetargetingInfo); 
+Procedure TCustomChannel.SettargetingInfo(AIndex : Integer; const AValue : TCustomChannelTypetargetingInfo); 
 
 begin
   If (FtargetingInfo=AValue) then exit;
@@ -1411,7 +1396,7 @@ end;
 
 
 
-Procedure TCustomChannels.Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); 
+Procedure TCustomChannels.Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1461,7 +1446,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TMetadata.Setitems(AIndex : Integer; AValue : TMetadataTypeitemsArray); 
+Procedure TMetadata.Setitems(AIndex : Integer; const AValue : TMetadataTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1588,7 +1573,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPreferredDeals.Setitems(AIndex : Integer; AValue : TPreferredDealsTypeitemsArray); 
+Procedure TPreferredDeals.Setitems(AIndex : Integer; const AValue : TPreferredDealsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1676,7 +1661,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReport.Setaverages(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Setaverages(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Faverages=AValue) then exit;
@@ -1686,7 +1671,7 @@ end;
 
 
 
-Procedure TReport.Setheaders(AIndex : Integer; AValue : TReportTypeheadersArray); 
+Procedure TReport.Setheaders(AIndex : Integer; const AValue : TReportTypeheadersArray); 
 
 begin
   If (Fheaders=AValue) then exit;
@@ -1706,7 +1691,7 @@ end;
 
 
 
-Procedure TReport.Setrows(AIndex : Integer; AValue : TReportTyperowsArray); 
+Procedure TReport.Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); 
 
 begin
   If (Frows=AValue) then exit;
@@ -1726,7 +1711,7 @@ end;
 
 
 
-Procedure TReport.Settotals(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Settotals(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ftotals=AValue) then exit;
@@ -1736,7 +1721,7 @@ end;
 
 
 
-Procedure TReport.Setwarnings(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Setwarnings(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1770,7 +1755,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportingMetadataEntry.SetcompatibleDimensions(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetcompatibleDimensions(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FcompatibleDimensions=AValue) then exit;
@@ -1780,7 +1765,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetcompatibleMetrics(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetcompatibleMetrics(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FcompatibleMetrics=AValue) then exit;
@@ -1810,7 +1795,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetrequiredDimensions(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetrequiredDimensions(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FrequiredDimensions=AValue) then exit;
@@ -1820,7 +1805,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetrequiredMetrics(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetrequiredMetrics(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FrequiredMetrics=AValue) then exit;
@@ -1830,7 +1815,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetsupportedProducts(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetsupportedProducts(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FsupportedProducts=AValue) then exit;
@@ -1911,7 +1896,7 @@ end;
 
 
 
-Procedure TSavedReports.Setitems(AIndex : Integer; AValue : TSavedReportsTypeitemsArray); 
+Procedure TSavedReports.Setitems(AIndex : Integer; const AValue : TSavedReportsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2008,7 +1993,7 @@ end;
 
 
 
-Procedure TUrlChannels.Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); 
+Procedure TUrlChannels.Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2910,7 +2895,7 @@ end;
 Class Function TAdexchangesellerAPI.APIRevision : String;
 
 begin
-  Result:='20150401';
+  Result:='20160513';
 end;
 
 Class Function TAdexchangesellerAPI.APIID : String;
@@ -2964,7 +2949,7 @@ end;
 Class Function TAdexchangesellerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAdexchangesellerAPI.APIbasePath : string;
@@ -2976,7 +2961,7 @@ end;
 Class Function TAdexchangesellerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/adexchangeseller/v2.0/';
+  Result:='https://www.googleapis.com/adexchangeseller/v2.0/';
 end;
 
 Class Function TAdexchangesellerAPI.APIProtocol : string;

+ 41 - 56
packages/googleapi/src/googleadmin.pp

@@ -1,19 +1,4 @@
 unit googleadmin;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:57
 {$MODE objfpc}
 {$H+}
 
@@ -67,7 +52,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TActivitiesTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TActivitiesTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -122,10 +107,10 @@ type
     Fvalue : String;
   Protected
     //Property setters
-    Procedure SetboolValue(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetboolValue(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetintValue(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmultiIntValue(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetmultiValue(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetmultiIntValue(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetmultiValue(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -156,7 +141,7 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparameters(AIndex : Integer; AValue : TActivityTypeeventsItemTypeparametersArray); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TActivityTypeeventsItemTypeparametersArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -184,7 +169,7 @@ type
     //Property setters
     Procedure SetapplicationName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomerId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settime(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Settime(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetuniqueQualifier(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -210,10 +195,10 @@ type
     FownerDomain : String;
   Protected
     //Property setters
-    Procedure Setactor(AIndex : Integer; AValue : TActivityTypeactor); virtual;
+    Procedure Setactor(AIndex : Integer; const AValue : TActivityTypeactor); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setevents(AIndex : Integer; AValue : TActivityTypeeventsArray); virtual;
-    Procedure Setid(AIndex : Integer; AValue : TActivityTypeid); virtual;
+    Procedure Setevents(AIndex : Integer; const AValue : TActivityTypeeventsArray); virtual;
+    Procedure Setid(AIndex : Integer; const 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;
@@ -270,8 +255,8 @@ type
     Procedure Setexpiration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparams(AIndex : Integer; AValue : TChannelTypeparams); virtual;
-    Procedure Setpayload(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setparams(AIndex : Integer; const AValue : TChannelTypeparams); virtual;
+    Procedure Setpayload(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetresourceId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetresourceUri(AIndex : Integer; const AValue : String); virtual;
     Procedure Settoken(AIndex : Integer; const AValue : String); virtual;
@@ -345,10 +330,10 @@ type
     FstringValue : String;
   Protected
     //Property setters
-    Procedure SetboolValue(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetdatetimeValue(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetboolValue(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdatetimeValue(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetintValue(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmsgValue(AIndex : Integer; AValue : TUsageReportTypeparametersItemTypemsgValueArray); virtual;
+    Procedure SetmsgValue(AIndex : Integer; const AValue : TUsageReportTypeparametersItemTypemsgValueArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstringValue(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -380,10 +365,10 @@ type
   Protected
     //Property setters
     Procedure Setdate(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setentity(AIndex : Integer; AValue : TUsageReportTypeentity); virtual;
+    Procedure Setentity(AIndex : Integer; const AValue : TUsageReportTypeentity); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparameters(AIndex : Integer; AValue : TUsageReportTypeparametersArray); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TUsageReportTypeparametersArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -429,7 +414,7 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : TUsageReportsTypewarningsItemTypedataArray); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : TUsageReportsTypewarningsItemTypedataArray); virtual;
     Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -459,8 +444,8 @@ type
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetusageReports(AIndex : Integer; AValue : TUsageReportsTypeusageReportsArray); virtual;
-    Procedure Setwarnings(AIndex : Integer; AValue : TUsageReportsTypewarningsArray); virtual;
+    Procedure SetusageReports(AIndex : Integer; const AValue : TUsageReportsTypeusageReportsArray); virtual;
+    Procedure Setwarnings(AIndex : Integer; const AValue : TUsageReportsTypewarningsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -646,7 +631,7 @@ end;
 
 
 
-Procedure TActivities.Setitems(AIndex : Integer; AValue : TActivitiesTypeitemsArray); 
+Procedure TActivities.Setitems(AIndex : Integer; const AValue : TActivitiesTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -743,7 +728,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TActivityTypeeventsItemTypeparametersItem.SetboolValue(AIndex : Integer; AValue : boolean); 
+Procedure TActivityTypeeventsItemTypeparametersItem.SetboolValue(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FboolValue=AValue) then exit;
@@ -763,7 +748,7 @@ end;
 
 
 
-Procedure TActivityTypeeventsItemTypeparametersItem.SetmultiIntValue(AIndex : Integer; AValue : TStringArray); 
+Procedure TActivityTypeeventsItemTypeparametersItem.SetmultiIntValue(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FmultiIntValue=AValue) then exit;
@@ -773,7 +758,7 @@ end;
 
 
 
-Procedure TActivityTypeeventsItemTypeparametersItem.SetmultiValue(AIndex : Integer; AValue : TStringArray); 
+Procedure TActivityTypeeventsItemTypeparametersItem.SetmultiValue(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FmultiValue=AValue) then exit;
@@ -834,7 +819,7 @@ end;
 
 
 
-Procedure TActivityTypeeventsItem.Setparameters(AIndex : Integer; AValue : TActivityTypeeventsItemTypeparametersArray); 
+Procedure TActivityTypeeventsItem.Setparameters(AIndex : Integer; const AValue : TActivityTypeeventsItemTypeparametersArray); 
 
 begin
   If (Fparameters=AValue) then exit;
@@ -905,7 +890,7 @@ end;
 
 
 
-Procedure TActivityTypeid.Settime(AIndex : Integer; AValue : TDatetime); 
+Procedure TActivityTypeid.Settime(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Ftime=AValue) then exit;
@@ -932,7 +917,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TActivity.Setactor(AIndex : Integer; AValue : TActivityTypeactor); 
+Procedure TActivity.Setactor(AIndex : Integer; const AValue : TActivityTypeactor); 
 
 begin
   If (Factor=AValue) then exit;
@@ -952,7 +937,7 @@ end;
 
 
 
-Procedure TActivity.Setevents(AIndex : Integer; AValue : TActivityTypeeventsArray); 
+Procedure TActivity.Setevents(AIndex : Integer; const AValue : TActivityTypeeventsArray); 
 
 begin
   If (Fevents=AValue) then exit;
@@ -962,7 +947,7 @@ end;
 
 
 
-Procedure TActivity.Setid(AIndex : Integer; AValue : TActivityTypeid); 
+Procedure TActivity.Setid(AIndex : Integer; const AValue : TActivityTypeid); 
 
 begin
   If (Fid=AValue) then exit;
@@ -1075,7 +1060,7 @@ end;
 
 
 
-Procedure TChannel.Setparams(AIndex : Integer; AValue : TChannelTypeparams); 
+Procedure TChannel.Setparams(AIndex : Integer; const AValue : TChannelTypeparams); 
 
 begin
   If (Fparams=AValue) then exit;
@@ -1085,7 +1070,7 @@ end;
 
 
 
-Procedure TChannel.Setpayload(AIndex : Integer; AValue : boolean); 
+Procedure TChannel.Setpayload(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fpayload=AValue) then exit;
@@ -1224,7 +1209,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUsageReportTypeparametersItem.SetboolValue(AIndex : Integer; AValue : boolean); 
+Procedure TUsageReportTypeparametersItem.SetboolValue(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FboolValue=AValue) then exit;
@@ -1234,7 +1219,7 @@ end;
 
 
 
-Procedure TUsageReportTypeparametersItem.SetdatetimeValue(AIndex : Integer; AValue : TDatetime); 
+Procedure TUsageReportTypeparametersItem.SetdatetimeValue(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FdatetimeValue=AValue) then exit;
@@ -1254,7 +1239,7 @@ end;
 
 
 
-Procedure TUsageReportTypeparametersItem.SetmsgValue(AIndex : Integer; AValue : TUsageReportTypeparametersItemTypemsgValueArray); 
+Procedure TUsageReportTypeparametersItem.SetmsgValue(AIndex : Integer; const AValue : TUsageReportTypeparametersItemTypemsgValueArray); 
 
 begin
   If (FmsgValue=AValue) then exit;
@@ -1314,7 +1299,7 @@ end;
 
 
 
-Procedure TUsageReport.Setentity(AIndex : Integer; AValue : TUsageReportTypeentity); 
+Procedure TUsageReport.Setentity(AIndex : Integer; const AValue : TUsageReportTypeentity); 
 
 begin
   If (Fentity=AValue) then exit;
@@ -1344,7 +1329,7 @@ end;
 
 
 
-Procedure TUsageReport.Setparameters(AIndex : Integer; AValue : TUsageReportTypeparametersArray); 
+Procedure TUsageReport.Setparameters(AIndex : Integer; const AValue : TUsageReportTypeparametersArray); 
 
 begin
   If (Fparameters=AValue) then exit;
@@ -1411,7 +1396,7 @@ end;
 
 
 
-Procedure TUsageReportsTypewarningsItem.Setdata(AIndex : Integer; AValue : TUsageReportsTypewarningsItemTypedataArray); 
+Procedure TUsageReportsTypewarningsItem.Setdata(AIndex : Integer; const AValue : TUsageReportsTypewarningsItemTypedataArray); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -1481,7 +1466,7 @@ end;
 
 
 
-Procedure TUsageReports.SetusageReports(AIndex : Integer; AValue : TUsageReportsTypeusageReportsArray); 
+Procedure TUsageReports.SetusageReports(AIndex : Integer; const AValue : TUsageReportsTypeusageReportsArray); 
 
 begin
   If (FusageReports=AValue) then exit;
@@ -1491,7 +1476,7 @@ end;
 
 
 
-Procedure TUsageReports.Setwarnings(AIndex : Integer; AValue : TUsageReportsTypewarningsArray); 
+Procedure TUsageReports.Setwarnings(AIndex : Integer; const AValue : TUsageReportsTypewarningsArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1751,7 +1736,7 @@ end;
 Class Function TAdminAPI.APIRevision : String;
 
 begin
-  Result:='20150429';
+  Result:='20151113';
 end;
 
 Class Function TAdminAPI.APIID : String;
@@ -1805,7 +1790,7 @@ end;
 Class Function TAdminAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAdminAPI.APIbasePath : string;
@@ -1817,7 +1802,7 @@ end;
 Class Function TAdminAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/admin/reports/v1/';
+  Result:='https://www.googleapis.com/admin/reports/v1/';
 end;
 
 Class Function TAdminAPI.APIProtocol : string;

+ 99 - 114
packages/googleapi/src/googleadsense.pp

@@ -1,19 +1,4 @@
 unit googleadsense;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:57
 {$MODE objfpc}
 {$H+}
 
@@ -99,6 +84,7 @@ type
   
   TAccount = Class(TGoogleBaseObject)
   Private
+    Fcreation_time : String;
     Fid : String;
     Fkind : String;
     Fname : String;
@@ -107,11 +93,12 @@ type
     Ftimezone : String;
   Protected
     //Property setters
+    Procedure Setcreation_time(AIndex : Integer; const AValue : String); 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 Setpremium(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsubAccounts(AIndex : Integer; AValue : TAccountTypesubAccountsArray); virtual;
+    Procedure Setpremium(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsubAccounts(AIndex : Integer; const AValue : TAccountTypesubAccountsArray); virtual;
     Procedure Settimezone(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -119,12 +106,13 @@ type
     {$ENDIF VER2_6}
   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;
-    Property premium : boolean Index 24 Read Fpremium Write Setpremium;
-    Property subAccounts : TAccountTypesubAccountsArray Index 32 Read FsubAccounts Write SetsubAccounts;
-    Property timezone : String Index 40 Read Ftimezone Write Settimezone;
+    Property creation_time : String Index 0 Read Fcreation_time Write Setcreation_time;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property name : String Index 24 Read Fname Write Setname;
+    Property premium : boolean Index 32 Read Fpremium Write Setpremium;
+    Property subAccounts : TAccountTypesubAccountsArray Index 40 Read FsubAccounts Write SetsubAccounts;
+    Property timezone : String Index 48 Read Ftimezone Write Settimezone;
   end;
   TAccountClass = Class of TAccount;
   
@@ -141,7 +129,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -164,27 +152,24 @@ type
   TAdClient = Class(TGoogleBaseObject)
   Private
     FarcOptIn : boolean;
-    FarcReviewMode : String;
     Fid : String;
     Fkind : String;
     FproductCode : String;
     FsupportsReporting : boolean;
   Protected
     //Property setters
-    Procedure SetarcOptIn(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetarcReviewMode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetarcOptIn(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsupportsReporting(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetsupportsReporting(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property arcOptIn : boolean Index 0 Read FarcOptIn Write SetarcOptIn;
-    Property arcReviewMode : String Index 8 Read FarcReviewMode Write SetarcReviewMode;
-    Property id : String Index 16 Read Fid Write Setid;
-    Property kind : String Index 24 Read Fkind Write Setkind;
-    Property productCode : String Index 32 Read FproductCode Write SetproductCode;
-    Property supportsReporting : boolean Index 40 Read FsupportsReporting Write SetsupportsReporting;
+    Property id : String Index 8 Read Fid Write Setid;
+    Property kind : String Index 16 Read Fkind Write Setkind;
+    Property productCode : String Index 24 Read FproductCode Write SetproductCode;
+    Property supportsReporting : boolean Index 32 Read FsupportsReporting Write SetsupportsReporting;
   end;
   TAdClientClass = Class of TAdClient;
   
@@ -201,7 +186,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -295,9 +280,9 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setcolors(AIndex : Integer; AValue : TAdStyleTypecolors); virtual;
+    Procedure Setcolors(AIndex : Integer; const AValue : TAdStyleTypecolors); virtual;
     Procedure Setcorners(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfont(AIndex : Integer; AValue : TAdStyleTypefont); virtual;
+    Procedure Setfont(AIndex : Integer; const AValue : TAdStyleTypefont); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -343,7 +328,7 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure SetbackupOption(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); virtual;
+    Procedure SetbackupOption(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); virtual;
     Procedure Setsize(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -368,8 +353,8 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure SetadPosition(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfrequency(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetminimumWordCount(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setfrequency(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetminimumWordCount(AIndex : Integer; const AValue : integer); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -425,12 +410,12 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcontentAdsSettings(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettings); virtual;
-    Procedure SetcustomStyle(AIndex : Integer; AValue : TAdStyle); virtual;
-    Procedure SetfeedAdsSettings(AIndex : Integer; AValue : TAdUnitTypefeedAdsSettings); virtual;
+    Procedure SetcontentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettings); virtual;
+    Procedure SetcustomStyle(AIndex : Integer; const AValue : TAdStyle); virtual;
+    Procedure SetfeedAdsSettings(AIndex : Integer; const AValue : TAdUnitTypefeedAdsSettings); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmobileContentAdsSettings(AIndex : Integer; AValue : TAdUnitTypemobileContentAdsSettings); virtual;
+    Procedure SetmobileContentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypemobileContentAdsSettings); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetsavedStyleId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
@@ -462,7 +447,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAdUnitsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAdUnitsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -518,15 +503,15 @@ type
     Fwarnings : TStringArray;
   Protected
     //Property setters
-    Procedure Setaverages(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setaverages(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setheaders(AIndex : Integer; AValue : TAdsenseReportsGenerateResponseTypeheadersArray); virtual;
+    Procedure Setheaders(AIndex : Integer; const AValue : TAdsenseReportsGenerateResponseTypeheadersArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrows(AIndex : Integer; AValue : TAdsenseReportsGenerateResponseTyperowsArray); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TAdsenseReportsGenerateResponseTyperowsArray); virtual;
     Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
     Procedure SettotalMatchedRows(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settotals(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setwarnings(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Settotals(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setwarnings(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -561,7 +546,7 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisDismissible(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisDismissible(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
     Procedure Setseverity(AIndex : Integer; const AValue : String); virtual;
@@ -587,7 +572,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TAlertsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAlertsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -642,7 +627,7 @@ type
     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 SettargetingInfo(AIndex : Integer; AValue : TCustomChannelTypetargetingInfo); virtual;
+    Procedure SettargetingInfo(AIndex : Integer; const AValue : TCustomChannelTypetargetingInfo); virtual;
   Public
   Published
     Property code : String Index 0 Read Fcode Write Setcode;
@@ -666,7 +651,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -692,7 +677,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TMetadataTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TMetadataTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -743,7 +728,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TPaymentsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPaymentsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -771,13 +756,13 @@ type
     FsupportedProducts : TStringArray;
   Protected
     //Property setters
-    Procedure SetcompatibleDimensions(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetcompatibleMetrics(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetcompatibleDimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetcompatibleMetrics(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetrequiredDimensions(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetrequiredMetrics(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetsupportedProducts(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetrequiredDimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetrequiredMetrics(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetsupportedProducts(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -806,7 +791,7 @@ type
     Fname : String;
   Protected
     //Property setters
-    Procedure SetadStyle(AIndex : Integer; AValue : TAdStyle); virtual;
+    Procedure SetadStyle(AIndex : Integer; const AValue : TAdStyle); 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;
@@ -832,7 +817,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TSavedAdStylesTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSavedAdStylesTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -883,7 +868,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TSavedReportsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSavedReportsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -934,7 +919,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -1785,6 +1770,16 @@ implementation
   --------------------------------------------------------------------}
 
 
+Procedure TAccount.Setcreation_time(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcreation_time=AValue) then exit;
+  Fcreation_time:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TAccount.Setid(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1815,7 +1810,7 @@ end;
 
 
 
-Procedure TAccount.Setpremium(AIndex : Integer; AValue : boolean); 
+Procedure TAccount.Setpremium(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fpremium=AValue) then exit;
@@ -1825,7 +1820,7 @@ end;
 
 
 
-Procedure TAccount.SetsubAccounts(AIndex : Integer; AValue : TAccountTypesubAccountsArray); 
+Procedure TAccount.SetsubAccounts(AIndex : Integer; const AValue : TAccountTypesubAccountsArray); 
 
 begin
   If (FsubAccounts=AValue) then exit;
@@ -1875,7 +1870,7 @@ end;
 
 
 
-Procedure TAccounts.Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); 
+Procedure TAccounts.Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1925,7 +1920,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdClient.SetarcOptIn(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetarcOptIn(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FarcOptIn=AValue) then exit;
@@ -1935,16 +1930,6 @@ end;
 
 
 
-Procedure TAdClient.SetarcReviewMode(AIndex : Integer; const AValue : String); 
-
-begin
-  If (FarcReviewMode=AValue) then exit;
-  FarcReviewMode:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
 Procedure TAdClient.Setid(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1975,7 +1960,7 @@ end;
 
 
 
-Procedure TAdClient.SetsupportsReporting(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetsupportsReporting(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsReporting=AValue) then exit;
@@ -2002,7 +1987,7 @@ end;
 
 
 
-Procedure TAdClients.Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); 
+Procedure TAdClients.Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2163,7 +2148,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdStyle.Setcolors(AIndex : Integer; AValue : TAdStyleTypecolors); 
+Procedure TAdStyle.Setcolors(AIndex : Integer; const AValue : TAdStyleTypecolors); 
 
 begin
   If (Fcolors=AValue) then exit;
@@ -2183,7 +2168,7 @@ end;
 
 
 
-Procedure TAdStyle.Setfont(AIndex : Integer; AValue : TAdStyleTypefont); 
+Procedure TAdStyle.Setfont(AIndex : Integer; const AValue : TAdStyleTypefont); 
 
 begin
   If (Ffont=AValue) then exit;
@@ -2258,7 +2243,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdUnitTypecontentAdsSettings.SetbackupOption(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); 
+Procedure TAdUnitTypecontentAdsSettings.SetbackupOption(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); 
 
 begin
   If (FbackupOption=AValue) then exit;
@@ -2316,7 +2301,7 @@ end;
 
 
 
-Procedure TAdUnitTypefeedAdsSettings.Setfrequency(AIndex : Integer; AValue : integer); 
+Procedure TAdUnitTypefeedAdsSettings.Setfrequency(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Ffrequency=AValue) then exit;
@@ -2326,7 +2311,7 @@ end;
 
 
 
-Procedure TAdUnitTypefeedAdsSettings.SetminimumWordCount(AIndex : Integer; AValue : integer); 
+Procedure TAdUnitTypefeedAdsSettings.SetminimumWordCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FminimumWordCount=AValue) then exit;
@@ -2432,7 +2417,7 @@ end;
 
 
 
-Procedure TAdUnit.SetcontentAdsSettings(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettings); 
+Procedure TAdUnit.SetcontentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettings); 
 
 begin
   If (FcontentAdsSettings=AValue) then exit;
@@ -2442,7 +2427,7 @@ end;
 
 
 
-Procedure TAdUnit.SetcustomStyle(AIndex : Integer; AValue : TAdStyle); 
+Procedure TAdUnit.SetcustomStyle(AIndex : Integer; const AValue : TAdStyle); 
 
 begin
   If (FcustomStyle=AValue) then exit;
@@ -2452,7 +2437,7 @@ end;
 
 
 
-Procedure TAdUnit.SetfeedAdsSettings(AIndex : Integer; AValue : TAdUnitTypefeedAdsSettings); 
+Procedure TAdUnit.SetfeedAdsSettings(AIndex : Integer; const AValue : TAdUnitTypefeedAdsSettings); 
 
 begin
   If (FfeedAdsSettings=AValue) then exit;
@@ -2482,7 +2467,7 @@ end;
 
 
 
-Procedure TAdUnit.SetmobileContentAdsSettings(AIndex : Integer; AValue : TAdUnitTypemobileContentAdsSettings); 
+Procedure TAdUnit.SetmobileContentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypemobileContentAdsSettings); 
 
 begin
   If (FmobileContentAdsSettings=AValue) then exit;
@@ -2539,7 +2524,7 @@ end;
 
 
 
-Procedure TAdUnits.Setitems(AIndex : Integer; AValue : TAdUnitsTypeitemsArray); 
+Procedure TAdUnits.Setitems(AIndex : Integer; const AValue : TAdUnitsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2637,7 +2622,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdsenseReportsGenerateResponse.Setaverages(AIndex : Integer; AValue : TStringArray); 
+Procedure TAdsenseReportsGenerateResponse.Setaverages(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Faverages=AValue) then exit;
@@ -2657,7 +2642,7 @@ end;
 
 
 
-Procedure TAdsenseReportsGenerateResponse.Setheaders(AIndex : Integer; AValue : TAdsenseReportsGenerateResponseTypeheadersArray); 
+Procedure TAdsenseReportsGenerateResponse.Setheaders(AIndex : Integer; const AValue : TAdsenseReportsGenerateResponseTypeheadersArray); 
 
 begin
   If (Fheaders=AValue) then exit;
@@ -2677,7 +2662,7 @@ end;
 
 
 
-Procedure TAdsenseReportsGenerateResponse.Setrows(AIndex : Integer; AValue : TAdsenseReportsGenerateResponseTyperowsArray); 
+Procedure TAdsenseReportsGenerateResponse.Setrows(AIndex : Integer; const AValue : TAdsenseReportsGenerateResponseTyperowsArray); 
 
 begin
   If (Frows=AValue) then exit;
@@ -2707,7 +2692,7 @@ end;
 
 
 
-Procedure TAdsenseReportsGenerateResponse.Settotals(AIndex : Integer; AValue : TStringArray); 
+Procedure TAdsenseReportsGenerateResponse.Settotals(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ftotals=AValue) then exit;
@@ -2717,7 +2702,7 @@ end;
 
 
 
-Procedure TAdsenseReportsGenerateResponse.Setwarnings(AIndex : Integer; AValue : TStringArray); 
+Procedure TAdsenseReportsGenerateResponse.Setwarnings(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -2761,7 +2746,7 @@ end;
 
 
 
-Procedure TAlert.SetisDismissible(AIndex : Integer; AValue : boolean); 
+Procedure TAlert.SetisDismissible(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisDismissible=AValue) then exit;
@@ -2829,7 +2814,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAlerts.Setitems(AIndex : Integer; AValue : TAlertsTypeitemsArray); 
+Procedure TAlerts.Setitems(AIndex : Integer; const AValue : TAlertsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2956,7 +2941,7 @@ end;
 
 
 
-Procedure TCustomChannel.SettargetingInfo(AIndex : Integer; AValue : TCustomChannelTypetargetingInfo); 
+Procedure TCustomChannel.SettargetingInfo(AIndex : Integer; const AValue : TCustomChannelTypetargetingInfo); 
 
 begin
   If (FtargetingInfo=AValue) then exit;
@@ -2983,7 +2968,7 @@ end;
 
 
 
-Procedure TCustomChannels.Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); 
+Procedure TCustomChannels.Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3033,7 +3018,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TMetadata.Setitems(AIndex : Integer; AValue : TMetadataTypeitemsArray); 
+Procedure TMetadata.Setitems(AIndex : Integer; const AValue : TMetadataTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3130,7 +3115,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPayments.Setitems(AIndex : Integer; AValue : TPaymentsTypeitemsArray); 
+Procedure TPayments.Setitems(AIndex : Integer; const AValue : TPaymentsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3170,7 +3155,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportingMetadataEntry.SetcompatibleDimensions(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetcompatibleDimensions(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FcompatibleDimensions=AValue) then exit;
@@ -3180,7 +3165,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetcompatibleMetrics(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetcompatibleMetrics(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FcompatibleMetrics=AValue) then exit;
@@ -3210,7 +3195,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetrequiredDimensions(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetrequiredDimensions(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FrequiredDimensions=AValue) then exit;
@@ -3220,7 +3205,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetrequiredMetrics(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetrequiredMetrics(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FrequiredMetrics=AValue) then exit;
@@ -3230,7 +3215,7 @@ end;
 
 
 
-Procedure TReportingMetadataEntry.SetsupportedProducts(AIndex : Integer; AValue : TStringArray); 
+Procedure TReportingMetadataEntry.SetsupportedProducts(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FsupportedProducts=AValue) then exit;
@@ -3264,7 +3249,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSavedAdStyle.SetadStyle(AIndex : Integer; AValue : TAdStyle); 
+Procedure TSavedAdStyle.SetadStyle(AIndex : Integer; const AValue : TAdStyle); 
 
 begin
   If (FadStyle=AValue) then exit;
@@ -3321,7 +3306,7 @@ end;
 
 
 
-Procedure TSavedAdStyles.Setitems(AIndex : Integer; AValue : TSavedAdStylesTypeitemsArray); 
+Procedure TSavedAdStyles.Setitems(AIndex : Integer; const AValue : TSavedAdStylesTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3418,7 +3403,7 @@ end;
 
 
 
-Procedure TSavedReports.Setitems(AIndex : Integer; AValue : TSavedReportsTypeitemsArray); 
+Procedure TSavedReports.Setitems(AIndex : Integer; const AValue : TSavedReportsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3515,7 +3500,7 @@ end;
 
 
 
-Procedure TUrlChannels.Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); 
+Procedure TUrlChannels.Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -5397,7 +5382,7 @@ end;
 Class Function TAdsenseAPI.APIRevision : String;
 
 begin
-  Result:='20150401';
+  Result:='20160522';
 end;
 
 Class Function TAdsenseAPI.APIID : String;
@@ -5415,7 +5400,7 @@ end;
 Class Function TAdsenseAPI.APIDescription : String;
 
 begin
-  Result:='Gives AdSense publishers access to their inventory and the ability to generate reports';
+  Result:='Accesses AdSense publishers'' inventory and generates performance reports.';
 end;
 
 Class Function TAdsenseAPI.APIOwnerDomain : String;
@@ -5451,7 +5436,7 @@ end;
 Class Function TAdsenseAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAdsenseAPI.APIbasePath : string;
@@ -5463,7 +5448,7 @@ end;
 Class Function TAdsenseAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/adsense/v1.4/';
+  Result:='https://www.googleapis.com/adsense/v1.4/';
 end;
 
 Class Function TAdsenseAPI.APIProtocol : string;

+ 42 - 57
packages/googleapi/src/googleadsensehost.pp

@@ -1,19 +1,4 @@
 unit googleadsensehost;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:57
 {$MODE objfpc}
 {$H+}
 
@@ -104,7 +89,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -131,11 +116,11 @@ type
     FsupportsReporting : boolean;
   Protected
     //Property setters
-    Procedure SetarcOptIn(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetarcOptIn(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsupportsReporting(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetsupportsReporting(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property arcOptIn : boolean Index 0 Read FarcOptIn Write SetarcOptIn;
@@ -159,7 +144,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -253,9 +238,9 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setcolors(AIndex : Integer; AValue : TAdStyleTypecolors); virtual;
+    Procedure Setcolors(AIndex : Integer; const AValue : TAdStyleTypecolors); virtual;
     Procedure Setcorners(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfont(AIndex : Integer; AValue : TAdStyleTypefont); virtual;
+    Procedure Setfont(AIndex : Integer; const AValue : TAdStyleTypefont); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -301,7 +286,7 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure SetbackupOption(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); virtual;
+    Procedure SetbackupOption(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); virtual;
     Procedure Setsize(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -355,11 +340,11 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcontentAdsSettings(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettings); virtual;
-    Procedure SetcustomStyle(AIndex : Integer; AValue : TAdStyle); virtual;
+    Procedure SetcontentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettings); virtual;
+    Procedure SetcustomStyle(AIndex : Integer; const AValue : TAdStyle); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmobileContentAdsSettings(AIndex : Integer; AValue : TAdUnitTypemobileContentAdsSettings); virtual;
+    Procedure SetmobileContentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypemobileContentAdsSettings); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -388,7 +373,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TAdUnitsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAdUnitsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -424,7 +409,7 @@ type
     Procedure SetaccountId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetproductCodes(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetproductCodes(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetredirectUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure SetuserLocale(AIndex : Integer; const AValue : String); virtual;
@@ -486,7 +471,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -540,13 +525,13 @@ type
     Fwarnings : TStringArray;
   Protected
     //Property setters
-    Procedure Setaverages(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setheaders(AIndex : Integer; AValue : TReportTypeheadersArray); virtual;
+    Procedure Setaverages(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setheaders(AIndex : Integer; const AValue : TReportTypeheadersArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrows(AIndex : Integer; AValue : TReportTyperowsArray); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); virtual;
     Procedure SettotalMatchedRows(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settotals(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setwarnings(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Settotals(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setwarnings(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -598,7 +583,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -1026,7 +1011,7 @@ end;
 
 
 
-Procedure TAccounts.Setitems(AIndex : Integer; AValue : TAccountsTypeitemsArray); 
+Procedure TAccounts.Setitems(AIndex : Integer; const AValue : TAccountsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1066,7 +1051,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdClient.SetarcOptIn(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetarcOptIn(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FarcOptIn=AValue) then exit;
@@ -1106,7 +1091,7 @@ end;
 
 
 
-Procedure TAdClient.SetsupportsReporting(AIndex : Integer; AValue : boolean); 
+Procedure TAdClient.SetsupportsReporting(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsReporting=AValue) then exit;
@@ -1133,7 +1118,7 @@ end;
 
 
 
-Procedure TAdClients.Setitems(AIndex : Integer; AValue : TAdClientsTypeitemsArray); 
+Procedure TAdClients.Setitems(AIndex : Integer; const AValue : TAdClientsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1294,7 +1279,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdStyle.Setcolors(AIndex : Integer; AValue : TAdStyleTypecolors); 
+Procedure TAdStyle.Setcolors(AIndex : Integer; const AValue : TAdStyleTypecolors); 
 
 begin
   If (Fcolors=AValue) then exit;
@@ -1314,7 +1299,7 @@ end;
 
 
 
-Procedure TAdStyle.Setfont(AIndex : Integer; AValue : TAdStyleTypefont); 
+Procedure TAdStyle.Setfont(AIndex : Integer; const AValue : TAdStyleTypefont); 
 
 begin
   If (Ffont=AValue) then exit;
@@ -1389,7 +1374,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAdUnitTypecontentAdsSettings.SetbackupOption(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); 
+Procedure TAdUnitTypecontentAdsSettings.SetbackupOption(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettingsTypebackupOption); 
 
 begin
   If (FbackupOption=AValue) then exit;
@@ -1505,7 +1490,7 @@ end;
 
 
 
-Procedure TAdUnit.SetcontentAdsSettings(AIndex : Integer; AValue : TAdUnitTypecontentAdsSettings); 
+Procedure TAdUnit.SetcontentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypecontentAdsSettings); 
 
 begin
   If (FcontentAdsSettings=AValue) then exit;
@@ -1515,7 +1500,7 @@ end;
 
 
 
-Procedure TAdUnit.SetcustomStyle(AIndex : Integer; AValue : TAdStyle); 
+Procedure TAdUnit.SetcustomStyle(AIndex : Integer; const AValue : TAdStyle); 
 
 begin
   If (FcustomStyle=AValue) then exit;
@@ -1545,7 +1530,7 @@ end;
 
 
 
-Procedure TAdUnit.SetmobileContentAdsSettings(AIndex : Integer; AValue : TAdUnitTypemobileContentAdsSettings); 
+Procedure TAdUnit.SetmobileContentAdsSettings(AIndex : Integer; const AValue : TAdUnitTypemobileContentAdsSettings); 
 
 begin
   If (FmobileContentAdsSettings=AValue) then exit;
@@ -1592,7 +1577,7 @@ end;
 
 
 
-Procedure TAdUnits.Setitems(AIndex : Integer; AValue : TAdUnitsTypeitemsArray); 
+Procedure TAdUnits.Setitems(AIndex : Integer; const AValue : TAdUnitsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1672,7 +1657,7 @@ end;
 
 
 
-Procedure TAssociationSession.SetproductCodes(AIndex : Integer; AValue : TStringArray); 
+Procedure TAssociationSession.SetproductCodes(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FproductCodes=AValue) then exit;
@@ -1809,7 +1794,7 @@ end;
 
 
 
-Procedure TCustomChannels.Setitems(AIndex : Integer; AValue : TCustomChannelsTypeitemsArray); 
+Procedure TCustomChannels.Setitems(AIndex : Integer; const AValue : TCustomChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1907,7 +1892,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReport.Setaverages(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Setaverages(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Faverages=AValue) then exit;
@@ -1917,7 +1902,7 @@ end;
 
 
 
-Procedure TReport.Setheaders(AIndex : Integer; AValue : TReportTypeheadersArray); 
+Procedure TReport.Setheaders(AIndex : Integer; const AValue : TReportTypeheadersArray); 
 
 begin
   If (Fheaders=AValue) then exit;
@@ -1937,7 +1922,7 @@ end;
 
 
 
-Procedure TReport.Setrows(AIndex : Integer; AValue : TReportTyperowsArray); 
+Procedure TReport.Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); 
 
 begin
   If (Frows=AValue) then exit;
@@ -1957,7 +1942,7 @@ end;
 
 
 
-Procedure TReport.Settotals(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Settotals(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ftotals=AValue) then exit;
@@ -1967,7 +1952,7 @@ end;
 
 
 
-Procedure TReport.Setwarnings(AIndex : Integer; AValue : TStringArray); 
+Procedure TReport.Setwarnings(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -2048,7 +2033,7 @@ end;
 
 
 
-Procedure TUrlChannels.Setitems(AIndex : Integer; AValue : TUrlChannelsTypeitemsArray); 
+Procedure TUrlChannels.Setitems(AIndex : Integer; const AValue : TUrlChannelsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2906,7 +2891,7 @@ end;
 Class Function TAdsensehostAPI.APIRevision : String;
 
 begin
-  Result:='20150505';
+  Result:='20160522';
 end;
 
 Class Function TAdsensehostAPI.APIID : String;
@@ -2924,7 +2909,7 @@ end;
 Class Function TAdsensehostAPI.APIDescription : String;
 
 begin
-  Result:='Gives AdSense Hosts access to report generation, ad code generation, and publisher management capabilities.';
+  Result:='Generates performance reports, generates ad codes, and provides publisher management capabilities for AdSense Hosts.';
 end;
 
 Class Function TAdsensehostAPI.APIOwnerDomain : String;
@@ -2960,7 +2945,7 @@ end;
 Class Function TAdsensehostAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAdsensehostAPI.APIbasePath : string;
@@ -2972,7 +2957,7 @@ end;
 Class Function TAdsensehostAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/adsensehost/v4.1/';
+  Result:='https://www.googleapis.com/adsensehost/v4.1/';
 end;
 
 Class Function TAdsensehostAPI.APIProtocol : string;

File diff suppressed because it is too large
+ 225 - 225
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
+ 560 - 57
packages/googleapi/src/googleandroidenterprise.pp


File diff suppressed because it is too large
+ 424 - 92
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.

+ 67 - 56
packages/googleapi/src/googleappsactivity.pp

@@ -1,19 +1,4 @@
 unit googleappsactivity;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:58
 {$MODE objfpc}
 {$H+}
 
@@ -65,8 +50,8 @@ type
     FsingleEvents : TActivityTypesingleEventsArray;
   Protected
     //Property setters
-    Procedure SetcombinedEvent(AIndex : Integer; AValue : TEvent); virtual;
-    Procedure SetsingleEvents(AIndex : Integer; AValue : TActivityTypesingleEventsArray); virtual;
+    Procedure SetcombinedEvent(AIndex : Integer; const AValue : TEvent); virtual;
+    Procedure SetsingleEvents(AIndex : Integer; const AValue : TActivityTypesingleEventsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -95,15 +80,15 @@ type
     Fuser : TUser;
   Protected
     //Property setters
-    Procedure SetadditionalEventTypes(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetadditionalEventTypes(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SeteventTimeMillis(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetfromUserDeletion(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setmove(AIndex : Integer; AValue : TMove); virtual;
-    Procedure SetpermissionChanges(AIndex : Integer; AValue : TEventTypepermissionChangesArray); virtual;
+    Procedure SetfromUserDeletion(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setmove(AIndex : Integer; const AValue : TMove); virtual;
+    Procedure SetpermissionChanges(AIndex : Integer; const AValue : TEventTypepermissionChangesArray); virtual;
     Procedure SetprimaryEventType(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrename(AIndex : Integer; AValue : TRename); virtual;
-    Procedure Settarget(AIndex : Integer; AValue : TTarget); virtual;
-    Procedure Setuser(AIndex : Integer; AValue : TUser); virtual;
+    Procedure Setrename(AIndex : Integer; const AValue : TRename); virtual;
+    Procedure Settarget(AIndex : Integer; const AValue : TTarget); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : TUser); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -132,7 +117,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setactivities(AIndex : Integer; AValue : TListActivitiesResponseTypeactivitiesArray); virtual;
+    Procedure Setactivities(AIndex : Integer; const AValue : TListActivitiesResponseTypeactivitiesArray); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -155,8 +140,8 @@ type
     FremovedParents : TMoveTyperemovedParentsArray;
   Protected
     //Property setters
-    Procedure SetaddedParents(AIndex : Integer; AValue : TMoveTypeaddedParentsArray); virtual;
-    Procedure SetremovedParents(AIndex : Integer; AValue : TMoveTyperemovedParentsArray); virtual;
+    Procedure SetaddedParents(AIndex : Integer; const AValue : TMoveTypeaddedParentsArray); virtual;
+    Procedure SetremovedParents(AIndex : Integer; const AValue : TMoveTyperemovedParentsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -180,7 +165,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisRoot(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisRoot(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -209,8 +194,8 @@ type
     Procedure SetpermissionId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setuser(AIndex : Integer; AValue : TUser); virtual;
-    Procedure SetwithLink(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setuser(AIndex : Integer; const AValue : TUser); virtual;
+    Procedure SetwithLink(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property name : String Index 0 Read Fname Write Setname;
@@ -232,8 +217,8 @@ type
     FremovedPermissions : TPermissionChangeTyperemovedPermissionsArray;
   Protected
     //Property setters
-    Procedure SetaddedPermissions(AIndex : Integer; AValue : TPermissionChangeTypeaddedPermissionsArray); virtual;
-    Procedure SetremovedPermissions(AIndex : Integer; AValue : TPermissionChangeTyperemovedPermissionsArray); virtual;
+    Procedure SetaddedPermissions(AIndex : Integer; const AValue : TPermissionChangeTypeaddedPermissionsArray); virtual;
+    Procedure SetremovedPermissions(AIndex : Integer; const AValue : TPermissionChangeTyperemovedPermissionsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -308,16 +293,22 @@ type
   
   TUser = Class(TGoogleBaseObject)
   Private
+    FisDeleted : boolean;
     Fname : String;
+    FpermissionId : String;
     Fphoto : TPhoto;
   Protected
     //Property setters
+    Procedure SetisDeleted(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setphoto(AIndex : Integer; AValue : TPhoto); virtual;
+    Procedure SetpermissionId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setphoto(AIndex : Integer; const AValue : TPhoto); virtual;
   Public
   Published
-    Property name : String Index 0 Read Fname Write Setname;
-    Property photo : TPhoto Index 8 Read Fphoto Write Setphoto;
+    Property isDeleted : boolean Index 0 Read FisDeleted Write SetisDeleted;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property permissionId : String Index 16 Read FpermissionId Write SetpermissionId;
+    Property photo : TPhoto Index 24 Read Fphoto Write Setphoto;
   end;
   TUserClass = Class of TUser;
   
@@ -392,7 +383,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TActivity.SetcombinedEvent(AIndex : Integer; AValue : TEvent); 
+Procedure TActivity.SetcombinedEvent(AIndex : Integer; const AValue : TEvent); 
 
 begin
   If (FcombinedEvent=AValue) then exit;
@@ -402,7 +393,7 @@ end;
 
 
 
-Procedure TActivity.SetsingleEvents(AIndex : Integer; AValue : TActivityTypesingleEventsArray); 
+Procedure TActivity.SetsingleEvents(AIndex : Integer; const AValue : TActivityTypesingleEventsArray); 
 
 begin
   If (FsingleEvents=AValue) then exit;
@@ -432,7 +423,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TEvent.SetadditionalEventTypes(AIndex : Integer; AValue : TStringArray); 
+Procedure TEvent.SetadditionalEventTypes(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FadditionalEventTypes=AValue) then exit;
@@ -452,7 +443,7 @@ end;
 
 
 
-Procedure TEvent.SetfromUserDeletion(AIndex : Integer; AValue : boolean); 
+Procedure TEvent.SetfromUserDeletion(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FfromUserDeletion=AValue) then exit;
@@ -462,7 +453,7 @@ end;
 
 
 
-Procedure TEvent.Setmove(AIndex : Integer; AValue : TMove); 
+Procedure TEvent.Setmove(AIndex : Integer; const AValue : TMove); 
 
 begin
   If (Fmove=AValue) then exit;
@@ -472,7 +463,7 @@ end;
 
 
 
-Procedure TEvent.SetpermissionChanges(AIndex : Integer; AValue : TEventTypepermissionChangesArray); 
+Procedure TEvent.SetpermissionChanges(AIndex : Integer; const AValue : TEventTypepermissionChangesArray); 
 
 begin
   If (FpermissionChanges=AValue) then exit;
@@ -492,7 +483,7 @@ end;
 
 
 
-Procedure TEvent.Setrename(AIndex : Integer; AValue : TRename); 
+Procedure TEvent.Setrename(AIndex : Integer; const AValue : TRename); 
 
 begin
   If (Frename=AValue) then exit;
@@ -502,7 +493,7 @@ end;
 
 
 
-Procedure TEvent.Settarget(AIndex : Integer; AValue : TTarget); 
+Procedure TEvent.Settarget(AIndex : Integer; const AValue : TTarget); 
 
 begin
   If (Ftarget=AValue) then exit;
@@ -512,7 +503,7 @@ end;
 
 
 
-Procedure TEvent.Setuser(AIndex : Integer; AValue : TUser); 
+Procedure TEvent.Setuser(AIndex : Integer; const AValue : TUser); 
 
 begin
   If (Fuser=AValue) then exit;
@@ -543,7 +534,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListActivitiesResponse.Setactivities(AIndex : Integer; AValue : TListActivitiesResponseTypeactivitiesArray); 
+Procedure TListActivitiesResponse.Setactivities(AIndex : Integer; const AValue : TListActivitiesResponseTypeactivitiesArray); 
 
 begin
   If (Factivities=AValue) then exit;
@@ -583,7 +574,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TMove.SetaddedParents(AIndex : Integer; AValue : TMoveTypeaddedParentsArray); 
+Procedure TMove.SetaddedParents(AIndex : Integer; const AValue : TMoveTypeaddedParentsArray); 
 
 begin
   If (FaddedParents=AValue) then exit;
@@ -593,7 +584,7 @@ end;
 
 
 
-Procedure TMove.SetremovedParents(AIndex : Integer; AValue : TMoveTyperemovedParentsArray); 
+Procedure TMove.SetremovedParents(AIndex : Integer; const AValue : TMoveTyperemovedParentsArray); 
 
 begin
   If (FremovedParents=AValue) then exit;
@@ -634,7 +625,7 @@ end;
 
 
 
-Procedure TParent.SetisRoot(AIndex : Integer; AValue : boolean); 
+Procedure TParent.SetisRoot(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisRoot=AValue) then exit;
@@ -701,7 +692,7 @@ end;
 
 
 
-Procedure TPermission.Setuser(AIndex : Integer; AValue : TUser); 
+Procedure TPermission.Setuser(AIndex : Integer; const AValue : TUser); 
 
 begin
   If (Fuser=AValue) then exit;
@@ -711,7 +702,7 @@ end;
 
 
 
-Procedure TPermission.SetwithLink(AIndex : Integer; AValue : boolean); 
+Procedure TPermission.SetwithLink(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FwithLink=AValue) then exit;
@@ -739,7 +730,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPermissionChange.SetaddedPermissions(AIndex : Integer; AValue : TPermissionChangeTypeaddedPermissionsArray); 
+Procedure TPermissionChange.SetaddedPermissions(AIndex : Integer; const AValue : TPermissionChangeTypeaddedPermissionsArray); 
 
 begin
   If (FaddedPermissions=AValue) then exit;
@@ -749,7 +740,7 @@ end;
 
 
 
-Procedure TPermissionChange.SetremovedPermissions(AIndex : Integer; AValue : TPermissionChangeTyperemovedPermissionsArray); 
+Procedure TPermissionChange.SetremovedPermissions(AIndex : Integer; const AValue : TPermissionChangeTyperemovedPermissionsArray); 
 
 begin
   If (FremovedPermissions=AValue) then exit;
@@ -861,6 +852,16 @@ end;
   --------------------------------------------------------------------}
 
 
+Procedure TUser.SetisDeleted(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FisDeleted=AValue) then exit;
+  FisDeleted:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TUser.Setname(AIndex : Integer; const AValue : String); 
 
 begin
@@ -871,7 +872,17 @@ end;
 
 
 
-Procedure TUser.Setphoto(AIndex : Integer; AValue : TPhoto); 
+Procedure TUser.SetpermissionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpermissionId=AValue) then exit;
+  FpermissionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUser.Setphoto(AIndex : Integer; const AValue : TPhoto); 
 
 begin
   If (Fphoto=AValue) then exit;
@@ -950,7 +961,7 @@ end;
 Class Function TAppsactivityAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160129';
 end;
 
 Class Function TAppsactivityAPI.APIID : String;
@@ -1004,7 +1015,7 @@ end;
 Class Function TAppsactivityAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAppsactivityAPI.APIbasePath : string;
@@ -1016,7 +1027,7 @@ end;
 Class Function TAppsactivityAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/appsactivity/v1/';
+  Result:='https://www.googleapis.com/appsactivity/v1/';
 end;
 
 Class Function TAppsactivityAPI.APIProtocol : string;

+ 11 - 26
packages/googleapi/src/googleappstate.pp

@@ -1,19 +1,4 @@
 unit googleappstate;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:58
 {$MODE objfpc}
 {$H+}
 
@@ -50,7 +35,7 @@ type
     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; AValue : integer); virtual;
+    Procedure SetstateKey(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property currentStateVersion : String Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
@@ -71,9 +56,9 @@ type
     FmaximumKeyCount : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmaximumKeyCount(AIndex : Integer; AValue : integer); 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;
@@ -118,7 +103,7 @@ type
     //Property setters
     Procedure SetcurrentStateVersion(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetstateKey(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetstateKey(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property currentStateVersion : String Index 0 Read FcurrentStateVersion Write SetcurrentStateVersion;
@@ -242,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;
@@ -259,7 +244,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListResponse.Setitems(AIndex : Integer; AValue : TListResponseTypeitemsArray); 
+Procedure TListResponse.Setitems(AIndex : Integer; const AValue : TListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -279,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;
@@ -356,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;
@@ -513,7 +498,7 @@ end;
 Class Function TAppstateAPI.APIRevision : String;
 
 begin
-  Result:='20150512';
+  Result:='20160519';
 end;
 
 Class Function TAppstateAPI.APIID : String;
@@ -567,7 +552,7 @@ end;
 Class Function TAppstateAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAppstateAPI.APIbasePath : string;
@@ -579,7 +564,7 @@ end;
 Class Function TAppstateAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/appstate/v1/';
+  Result:='https://www.googleapis.com/appstate/v1/';
 end;
 
 Class Function TAppstateAPI.APIProtocol : string;

+ 89 - 198
packages/googleapi/src/googleautoscaler.pp

@@ -1,19 +1,4 @@
 unit googleautoscaler;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:59
 {$MODE objfpc}
 {$H+}
 
@@ -51,14 +36,12 @@ type
   TOperationTypeerror = Class;
   TOperationTypewarningsItemTypedataItem = Class;
   TOperationTypewarningsItem = Class;
-  TZoneTypemaintenanceWindowsItem = Class;
   TAutoscalerListResponseTypeitemsArray = Array of TAutoscaler;
   TAutoscalingPolicyTypecustomMetricUtilizationsArray = Array of TAutoscalingPolicyCustomMetricUtilization;
   TOperationTypeerrorTypeerrorsArray = Array of TOperationTypeerrorTypeerrorsItem;
   TOperationTypewarningsItemTypedataArray = Array of TOperationTypewarningsItemTypedataItem;
   TOperationTypewarningsArray = Array of TOperationTypewarningsItem;
   TOperationListTypeitemsArray = Array of TOperation;
-  TZoneTypemaintenanceWindowsArray = Array of TZoneTypemaintenanceWindowsItem;
   TZoneListTypeitemsArray = Array of TZone;
   
   { --------------------------------------------------------------------
@@ -77,7 +60,7 @@ type
     Ftarget : String;
   Protected
     //Property setters
-    Procedure SetautoscalingPolicy(AIndex : Integer; AValue : TAutoscalingPolicy); virtual;
+    Procedure SetautoscalingPolicy(AIndex : Integer; const AValue : TAutoscalingPolicy); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
@@ -109,7 +92,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TAutoscalerListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAutoscalerListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -138,12 +121,12 @@ type
     FminNumReplicas : integer;
   Protected
     //Property setters
-    Procedure SetcoolDownPeriodSec(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetcpuUtilization(AIndex : Integer; AValue : TAutoscalingPolicyCpuUtilization); virtual;
-    Procedure SetcustomMetricUtilizations(AIndex : Integer; AValue : TAutoscalingPolicyTypecustomMetricUtilizationsArray); virtual;
-    Procedure SetloadBalancingUtilization(AIndex : Integer; AValue : TAutoscalingPolicyLoadBalancingUtilization); virtual;
-    Procedure SetmaxNumReplicas(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetminNumReplicas(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcoolDownPeriodSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetcpuUtilization(AIndex : Integer; const AValue : TAutoscalingPolicyCpuUtilization); virtual;
+    Procedure SetcustomMetricUtilizations(AIndex : Integer; const AValue : TAutoscalingPolicyTypecustomMetricUtilizationsArray); virtual;
+    Procedure SetloadBalancingUtilization(AIndex : Integer; const AValue : TAutoscalingPolicyLoadBalancingUtilization); virtual;
+    Procedure SetmaxNumReplicas(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetminNumReplicas(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -168,7 +151,7 @@ type
     FutilizationTarget : double;
   Protected
     //Property setters
-    Procedure SetutilizationTarget(AIndex : Integer; AValue : double); virtual;
+    Procedure SetutilizationTarget(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property utilizationTarget : double Index 0 Read FutilizationTarget Write SetutilizationTarget;
@@ -187,7 +170,7 @@ type
   Protected
     //Property setters
     Procedure Setmetric(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetutilizationTarget(AIndex : Integer; AValue : double); virtual;
+    Procedure SetutilizationTarget(AIndex : Integer; const AValue : double); virtual;
     Procedure SetutilizationTargetType(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -206,7 +189,7 @@ type
     FutilizationTarget : double;
   Protected
     //Property setters
-    Procedure SetutilizationTarget(AIndex : Integer; AValue : double); virtual;
+    Procedure SetutilizationTarget(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property utilizationTarget : double Index 0 Read FutilizationTarget Write SetutilizationTarget;
@@ -272,7 +255,7 @@ type
     Ferrors : TOperationTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -314,7 +297,7 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 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}
@@ -336,6 +319,7 @@ type
   Private
     FclientOperationId : String;
     FcreationTimestamp : String;
+    Fdescription : String;
     FendTime : String;
     Ferror : TOperationTypeerror;
     FhttpErrorMessage : String;
@@ -360,16 +344,17 @@ type
     //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; AValue : TOperationTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TOperationTypeerror); virtual;
     Procedure SethttpErrorMessage(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 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; AValue : integer); 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;
@@ -378,7 +363,7 @@ type
     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; AValue : TOperationTypewarningsArray); 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}
@@ -388,26 +373,27 @@ type
   Published
     Property clientOperationId : String Index 0 Read FclientOperationId Write SetclientOperationId;
     Property creationTimestamp : String Index 8 Read FcreationTimestamp Write SetcreationTimestamp;
-    Property endTime : String Index 16 Read FendTime Write SetendTime;
-    Property error : TOperationTypeerror Index 24 Read Ferror Write Seterror;
-    Property httpErrorMessage : String Index 32 Read FhttpErrorMessage Write SethttpErrorMessage;
-    Property httpErrorStatusCode : integer Index 40 Read FhttpErrorStatusCode Write SethttpErrorStatusCode;
-    Property id : String Index 48 Read Fid Write Setid;
-    Property insertTime : String Index 56 Read FinsertTime Write SetinsertTime;
-    Property kind : String Index 64 Read Fkind Write Setkind;
-    Property name : String Index 72 Read Fname Write Setname;
-    Property operationType : String Index 80 Read FoperationType Write SetoperationType;
-    Property progress : integer Index 88 Read Fprogress Write Setprogress;
-    Property region : String Index 96 Read Fregion Write Setregion;
-    Property selfLink : String Index 104 Read FselfLink Write SetselfLink;
-    Property startTime : String Index 112 Read FstartTime Write SetstartTime;
-    Property status : String Index 120 Read Fstatus Write Setstatus;
-    Property statusMessage : String Index 128 Read FstatusMessage Write SetstatusMessage;
-    Property targetId : String Index 136 Read FtargetId Write SettargetId;
-    Property targetLink : String Index 144 Read FtargetLink Write SettargetLink;
-    Property user : String Index 152 Read Fuser Write Setuser;
-    Property warnings : TOperationTypewarningsArray Index 160 Read Fwarnings Write Setwarnings;
-    Property zone : String Index 168 Read Fzone Write Setzone;
+    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;
   
@@ -425,7 +411,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 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;
@@ -443,31 +429,6 @@ type
   end;
   TOperationListClass = Class of TOperationList;
   
-  { --------------------------------------------------------------------
-    TZoneTypemaintenanceWindowsItem
-    --------------------------------------------------------------------}
-  
-  TZoneTypemaintenanceWindowsItem = Class(TGoogleBaseObject)
-  Private
-    FbeginTime : String;
-    Fdescription : String;
-    FendTime : String;
-    Fname : String;
-  Protected
-    //Property setters
-    Procedure SetbeginTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-  Public
-  Published
-    Property beginTime : String Index 0 Read FbeginTime Write SetbeginTime;
-    Property description : String Index 8 Read Fdescription Write Setdescription;
-    Property endTime : String Index 16 Read FendTime Write SetendTime;
-    Property name : String Index 24 Read Fname Write Setname;
-  end;
-  TZoneTypemaintenanceWindowsItemClass = Class of TZoneTypemaintenanceWindowsItem;
-  
   { --------------------------------------------------------------------
     TZone
     --------------------------------------------------------------------}
@@ -479,7 +440,6 @@ type
     Fdescription : String;
     Fid : String;
     Fkind : String;
-    FmaintenanceWindows : TZoneTypemaintenanceWindowsArray;
     Fname : String;
     Fregion : String;
     FselfLink : String;
@@ -487,19 +447,14 @@ type
   Protected
     //Property setters
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdeprecated(AIndex : Integer; AValue : TDeprecationStatus); virtual;
+    Procedure Setdeprecated(AIndex : Integer; const AValue : TDeprecationStatus); 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 SetmaintenanceWindows(AIndex : Integer; AValue : TZoneTypemaintenanceWindowsArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setregion(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(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;
@@ -507,11 +462,10 @@ type
     Property description : String Index 16 Read Fdescription Write Setdescription;
     Property id : String Index 24 Read Fid Write Setid;
     Property kind : String Index 32 Read Fkind Write Setkind;
-    Property maintenanceWindows : TZoneTypemaintenanceWindowsArray Index 40 Read FmaintenanceWindows Write SetmaintenanceWindows;
-    Property name : String Index 48 Read Fname Write Setname;
-    Property region : String Index 56 Read Fregion Write Setregion;
-    Property selfLink : String Index 64 Read FselfLink Write SetselfLink;
-    Property status : String Index 72 Read Fstatus Write Setstatus;
+    Property name : String Index 40 Read Fname Write Setname;
+    Property region : String Index 48 Read Fregion Write Setregion;
+    Property selfLink : String Index 56 Read FselfLink Write SetselfLink;
+    Property status : String Index 64 Read Fstatus Write Setstatus;
   end;
   TZoneClass = Class of TZone;
   
@@ -529,7 +483,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TZoneListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TZoneListTypeitemsArray); 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;
@@ -609,14 +563,15 @@ type
     filter : String;
     maxResults : integer;
     pageToken : String;
+    project : String;
   end;
   
   TZonesResource = Class(TGoogleResource)
   Public
     Class Function ResourceName : String; override;
     Class Function DefaultAPI : TGoogleAPIClass; override;
-    Function List(project: string; AQuery : string  = '') : TZoneList;
-    Function List(project: string; AQuery : TZoneslistOptions) : TZoneList;
+    Function List(AQuery : string  = '') : TZoneList;
+    Function List(AQuery : TZoneslistOptions) : TZoneList;
   end;
   
   
@@ -675,7 +630,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAutoscaler.SetautoscalingPolicy(AIndex : Integer; AValue : TAutoscalingPolicy); 
+Procedure TAutoscaler.SetautoscalingPolicy(AIndex : Integer; const AValue : TAutoscalingPolicy); 
 
 begin
   If (FautoscalingPolicy=AValue) then exit;
@@ -762,7 +717,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAutoscalerListResponse.Setitems(AIndex : Integer; AValue : TAutoscalerListResponseTypeitemsArray); 
+Procedure TAutoscalerListResponse.Setitems(AIndex : Integer; const AValue : TAutoscalerListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -812,7 +767,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAutoscalingPolicy.SetcoolDownPeriodSec(AIndex : Integer; AValue : integer); 
+Procedure TAutoscalingPolicy.SetcoolDownPeriodSec(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FcoolDownPeriodSec=AValue) then exit;
@@ -822,7 +777,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicy.SetcpuUtilization(AIndex : Integer; AValue : TAutoscalingPolicyCpuUtilization); 
+Procedure TAutoscalingPolicy.SetcpuUtilization(AIndex : Integer; const AValue : TAutoscalingPolicyCpuUtilization); 
 
 begin
   If (FcpuUtilization=AValue) then exit;
@@ -832,7 +787,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicy.SetcustomMetricUtilizations(AIndex : Integer; AValue : TAutoscalingPolicyTypecustomMetricUtilizationsArray); 
+Procedure TAutoscalingPolicy.SetcustomMetricUtilizations(AIndex : Integer; const AValue : TAutoscalingPolicyTypecustomMetricUtilizationsArray); 
 
 begin
   If (FcustomMetricUtilizations=AValue) then exit;
@@ -842,7 +797,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicy.SetloadBalancingUtilization(AIndex : Integer; AValue : TAutoscalingPolicyLoadBalancingUtilization); 
+Procedure TAutoscalingPolicy.SetloadBalancingUtilization(AIndex : Integer; const AValue : TAutoscalingPolicyLoadBalancingUtilization); 
 
 begin
   If (FloadBalancingUtilization=AValue) then exit;
@@ -852,7 +807,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicy.SetmaxNumReplicas(AIndex : Integer; AValue : integer); 
+Procedure TAutoscalingPolicy.SetmaxNumReplicas(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxNumReplicas=AValue) then exit;
@@ -862,7 +817,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicy.SetminNumReplicas(AIndex : Integer; AValue : integer); 
+Procedure TAutoscalingPolicy.SetminNumReplicas(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FminNumReplicas=AValue) then exit;
@@ -892,7 +847,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAutoscalingPolicyCpuUtilization.SetutilizationTarget(AIndex : Integer; AValue : double); 
+Procedure TAutoscalingPolicyCpuUtilization.SetutilizationTarget(AIndex : Integer; const AValue : double); 
 
 begin
   If (FutilizationTarget=AValue) then exit;
@@ -919,7 +874,7 @@ end;
 
 
 
-Procedure TAutoscalingPolicyCustomMetricUtilization.SetutilizationTarget(AIndex : Integer; AValue : double); 
+Procedure TAutoscalingPolicyCustomMetricUtilization.SetutilizationTarget(AIndex : Integer; const AValue : double); 
 
 begin
   If (FutilizationTarget=AValue) then exit;
@@ -946,7 +901,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAutoscalingPolicyLoadBalancingUtilization.SetutilizationTarget(AIndex : Integer; AValue : double); 
+Procedure TAutoscalingPolicyLoadBalancingUtilization.SetutilizationTarget(AIndex : Integer; const AValue : double); 
 
 begin
   If (FutilizationTarget=AValue) then exit;
@@ -1057,7 +1012,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TOperationTypeerror.Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); 
+Procedure TOperationTypeerror.Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1124,7 +1079,7 @@ end;
 
 
 
-Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 
+Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -1184,6 +1139,16 @@ 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
@@ -1194,7 +1159,7 @@ end;
 
 
 
-Procedure TOperation.Seterror(AIndex : Integer; AValue : TOperationTypeerror); 
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TOperationTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -1214,7 +1179,7 @@ end;
 
 
 
-Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 
+Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FhttpErrorStatusCode=AValue) then exit;
@@ -1274,7 +1239,7 @@ end;
 
 
 
-Procedure TOperation.Setprogress(AIndex : Integer; AValue : integer); 
+Procedure TOperation.Setprogress(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fprogress=AValue) then exit;
@@ -1364,7 +1329,7 @@ end;
 
 
 
-Procedure TOperation.Setwarnings(AIndex : Integer; AValue : TOperationTypewarningsArray); 
+Procedure TOperation.Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1414,7 +1379,7 @@ end;
 
 
 
-Procedure TOperationList.Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 
+Procedure TOperationList.Setitems(AIndex : Integer; const AValue : TOperationListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1469,53 +1434,6 @@ end;
 
 
 
-{ --------------------------------------------------------------------
-  TZoneTypemaintenanceWindowsItem
-  --------------------------------------------------------------------}
-
-
-Procedure TZoneTypemaintenanceWindowsItem.SetbeginTime(AIndex : Integer; const AValue : String); 
-
-begin
-  If (FbeginTime=AValue) then exit;
-  FbeginTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TZoneTypemaintenanceWindowsItem.Setdescription(AIndex : Integer; const AValue : String); 
-
-begin
-  If (Fdescription=AValue) then exit;
-  Fdescription:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TZoneTypemaintenanceWindowsItem.SetendTime(AIndex : Integer; const AValue : String); 
-
-begin
-  If (FendTime=AValue) then exit;
-  FendTime:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-Procedure TZoneTypemaintenanceWindowsItem.Setname(AIndex : Integer; const AValue : String); 
-
-begin
-  If (Fname=AValue) then exit;
-  Fname:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
-
-
 { --------------------------------------------------------------------
   TZone
   --------------------------------------------------------------------}
@@ -1531,7 +1449,7 @@ end;
 
 
 
-Procedure TZone.Setdeprecated(AIndex : Integer; AValue : TDeprecationStatus); 
+Procedure TZone.Setdeprecated(AIndex : Integer; const AValue : TDeprecationStatus); 
 
 begin
   If (Fdeprecated=AValue) then exit;
@@ -1571,16 +1489,6 @@ end;
 
 
 
-Procedure TZone.SetmaintenanceWindows(AIndex : Integer; AValue : TZoneTypemaintenanceWindowsArray); 
-
-begin
-  If (FmaintenanceWindows=AValue) then exit;
-  FmaintenanceWindows:=AValue;
-  MarkPropertyChanged(AIndex);
-end;
-
-
-
 Procedure TZone.Setname(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1620,19 +1528,6 @@ begin
 end;
 
 
-//2.6.4. bug workaround
-{$IFDEF VER2_6}
-Procedure TZone.SetArrayLength(Const AName : String; ALength : Longint); 
-
-begin
-  Case AName of
-  'maintenancewindows' : SetLength(FmaintenanceWindows,ALength);
-  else
-    Inherited SetArrayLength(AName,ALength);
-  end;
-end;
-{$ENDIF VER2_6}
-
 
 
 
@@ -1651,7 +1546,7 @@ end;
 
 
 
-Procedure TZoneList.Setitems(AIndex : Integer; AValue : TZoneListTypeitemsArray); 
+Procedure TZoneList.Setitems(AIndex : Integer; const AValue : TZoneListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1924,23 +1819,19 @@ begin
   Result:=TautoscalerAPI;
 end;
 
-Function TZonesResource.List(project: string; AQuery : string = '') : TZoneList;
+Function TZonesResource.List(AQuery : string = '') : TZoneList;
 
 Const
   _HTTPMethod = 'GET';
-  _Path       = '{project}/zones';
+  _Path       = 'zones';
   _Methodid   = 'autoscaler.zones.list';
 
-Var
-  _P : String;
-
 begin
-  _P:=SubstitutePath(_Path,['project',project]);
-  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TZoneList) as TZoneList;
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TZoneList) as TZoneList;
 end;
 
 
-Function TZonesResource.List(project: string; AQuery : TZoneslistOptions) : TZoneList;
+Function TZonesResource.List(AQuery : TZoneslistOptions) : TZoneList;
 
 Var
   _Q : String;
@@ -1950,7 +1841,8 @@ begin
   AddToQuery(_Q,'filter',AQuery.filter);
   AddToQuery(_Q,'maxResults',AQuery.maxResults);
   AddToQuery(_Q,'pageToken',AQuery.pageToken);
-  Result:=List(project,_Q);
+  AddToQuery(_Q,'project',AQuery.project);
+  Result:=List(_Q);
 end;
 
 
@@ -1974,7 +1866,7 @@ end;
 Class Function TAutoscalerAPI.APIRevision : String;
 
 begin
-  Result:='20141112';
+  Result:='20160511';
 end;
 
 Class Function TAutoscalerAPI.APIID : String;
@@ -2028,7 +1920,7 @@ end;
 Class Function TAutoscalerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TAutoscalerAPI.APIbasePath : string;
@@ -2040,7 +1932,7 @@ end;
 Class Function TAutoscalerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/autoscaler/v1beta2/';
+  Result:='https://www.googleapis.com/autoscaler/v1beta2/';
 end;
 
 Class Function TAutoscalerAPI.APIProtocol : string;
@@ -2094,7 +1986,6 @@ begin
   TOperationTypewarningsItem.RegisterObject;
   TOperation.RegisterObject;
   TOperationList.RegisterObject;
-  TZoneTypemaintenanceWindowsItem.RegisterObject;
   TZone.RegisterObject;
   TZoneList.RegisterObject;
 end;

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


+ 98 - 113
packages/googleapi/src/googleblogger.pp

@@ -1,19 +1,4 @@
 unit googleblogger;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:52:59
 {$MODE objfpc}
 {$H+}
 
@@ -119,7 +104,7 @@ type
   Protected
     //Property setters
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); virtual;
+    Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property selfLink : String Index 0 Read FselfLink Write SetselfLink;
@@ -138,9 +123,9 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TBlogTypepostsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TBlogTypepostsTypeitemsArray); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -179,14 +164,14 @@ type
     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 Setlocale(AIndex : Integer; AValue : TBlogTypelocale); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : TBlogTypelocale); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpages(AIndex : Integer; AValue : TBlogTypepages); virtual;
-    Procedure Setposts(AIndex : Integer; AValue : TBlogTypeposts); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setpages(AIndex : Integer; const AValue : TBlogTypepages); virtual;
+    Procedure Setposts(AIndex : Integer; const AValue : TBlogTypeposts); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -217,8 +202,8 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure SetblogUserInfos(AIndex : Integer; AValue : TBlogListTypeblogUserInfosArray); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TBlogListTypeitemsArray); virtual;
+    Procedure SetblogUserInfos(AIndex : Integer; const AValue : TBlogListTypeblogUserInfosArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TBlogListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -247,7 +232,7 @@ type
   Protected
     //Property setters
     Procedure SetblogId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethasAdminAccess(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SethasAdminAccess(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetphotosAlbumKey(AIndex : Integer; const AValue : String); virtual;
     Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
@@ -274,8 +259,8 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setblog(AIndex : Integer; AValue : TBlog); virtual;
-    Procedure Setblog_user_info(AIndex : Integer; AValue : TBlogPerUserInfo); virtual;
+    Procedure Setblog(AIndex : Integer; const AValue : TBlog); virtual;
+    Procedure Setblog_user_info(AIndex : Integer; const AValue : TBlogPerUserInfo); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -315,7 +300,7 @@ type
     //Property setters
     Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TCommentTypeauthorTypeimage); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TCommentTypeauthorTypeimage); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -394,17 +379,17 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setauthor(AIndex : Integer; AValue : TCommentTypeauthor); virtual;
-    Procedure Setblog(AIndex : Integer; AValue : TCommentTypeblog); virtual;
+    Procedure Setauthor(AIndex : Integer; const AValue : TCommentTypeauthor); virtual;
+    Procedure Setblog(AIndex : Integer; const AValue : TCommentTypeblog); virtual;
     Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetinReplyTo(AIndex : Integer; AValue : TCommentTypeinReplyTo); virtual;
+    Procedure SetinReplyTo(AIndex : Integer; const AValue : TCommentTypeinReplyTo); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpost(AIndex : Integer; AValue : TCommentTypepost); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setpost(AIndex : Integer; const AValue : TCommentTypepost); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
   Public
   Published
     Property author : TCommentTypeauthor Index 0 Read Fauthor Write Setauthor;
@@ -435,7 +420,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TCommentListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCommentListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     Procedure SetprevPageToken(AIndex : Integer; const AValue : String); virtual;
@@ -483,7 +468,7 @@ type
     //Property setters
     Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TPageTypeauthorTypeimage); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TPageTypeauthorTypeimage); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -531,17 +516,17 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setauthor(AIndex : Integer; AValue : TPageTypeauthor); virtual;
-    Procedure Setblog(AIndex : Integer; AValue : TPageTypeblog); virtual;
+    Procedure Setauthor(AIndex : Integer; const AValue : TPageTypeauthor); virtual;
+    Procedure Setblog(AIndex : Integer; const AValue : TPageTypeblog); virtual;
     Procedure Setcontent(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 Set_published(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -573,7 +558,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TPageListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPageListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -620,7 +605,7 @@ type
   Protected
     //Property setters
     Procedure SetblogId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setcounts(AIndex : Integer; AValue : TPageviewsTypecountsArray); virtual;
+    Procedure Setcounts(AIndex : Integer; const AValue : TPageviewsTypecountsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -664,7 +649,7 @@ type
     //Property setters
     Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TPostTypeauthorTypeimage); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TPostTypeauthorTypeimage); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -719,8 +704,8 @@ type
     Fspan : String;
   Protected
     //Property setters
-    Procedure Setlat(AIndex : Integer; AValue : double); virtual;
-    Procedure Setlng(AIndex : Integer; AValue : double); virtual;
+    Procedure Setlat(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlng(AIndex : Integer; const AValue : double); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setspan(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -743,7 +728,7 @@ type
     FtotalItems : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TPostTyperepliesTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPostTyperepliesTypeitemsArray); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SettotalItems(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -786,24 +771,24 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setauthor(AIndex : Integer; AValue : TPostTypeauthor); virtual;
-    Procedure Setblog(AIndex : Integer; AValue : TPostTypeblog); virtual;
+    Procedure Setauthor(AIndex : Integer; const AValue : TPostTypeauthor); virtual;
+    Procedure Setblog(AIndex : Integer; const AValue : TPostTypeblog); virtual;
     Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomMetaData(AIndex : Integer; const AValue : String); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimages(AIndex : Integer; AValue : TPostTypeimagesArray); virtual;
+    Procedure Setimages(AIndex : Integer; const AValue : TPostTypeimagesArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setlocation(AIndex : Integer; AValue : TPostTypelocation); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TPostTypelocation); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetreaderComments(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setreplies(AIndex : Integer; AValue : TPostTypereplies); virtual;
+    Procedure Setreplies(AIndex : Integer; const AValue : TPostTypereplies); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     Procedure SettitleLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -846,7 +831,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TPostListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPostListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -876,7 +861,7 @@ type
   Protected
     //Property setters
     Procedure SetblogId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethasEditAccess(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SethasEditAccess(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpostId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
@@ -902,8 +887,8 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpost(AIndex : Integer; AValue : TPost); virtual;
-    Procedure Setpost_user_info(AIndex : Integer; AValue : TPostPerUserInfo); virtual;
+    Procedure Setpost(AIndex : Integer; const AValue : TPost); virtual;
+    Procedure Setpost_user_info(AIndex : Integer; const AValue : TPostPerUserInfo); virtual;
   Public
   Published
     Property kind : String Index 0 Read Fkind Write Setkind;
@@ -923,7 +908,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TPostUserInfosListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TPostUserInfosListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -994,12 +979,12 @@ type
   Protected
     //Property setters
     Procedure Setabout(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setblogs(AIndex : Integer; AValue : TUserTypeblogs); virtual;
-    Procedure Setcreated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setblogs(AIndex : Integer; const AValue : TUserTypeblogs); virtual;
+    Procedure Setcreated(AIndex : Integer; const AValue : TDatetime); 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 Setlocale(AIndex : Integer; AValue : TUserTypelocale); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : TUserTypelocale); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -1504,7 +1489,7 @@ end;
 
 
 
-Procedure TBlogTypepages.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TBlogTypepages.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -1521,7 +1506,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBlogTypeposts.Setitems(AIndex : Integer; AValue : TBlogTypepostsTypeitemsArray); 
+Procedure TBlogTypeposts.Setitems(AIndex : Integer; const AValue : TBlogTypepostsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1541,7 +1526,7 @@ end;
 
 
 
-Procedure TBlogTypeposts.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TBlogTypeposts.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -1611,7 +1596,7 @@ end;
 
 
 
-Procedure TBlog.Setlocale(AIndex : Integer; AValue : TBlogTypelocale); 
+Procedure TBlog.Setlocale(AIndex : Integer; const AValue : TBlogTypelocale); 
 
 begin
   If (Flocale=AValue) then exit;
@@ -1631,7 +1616,7 @@ end;
 
 
 
-Procedure TBlog.Setpages(AIndex : Integer; AValue : TBlogTypepages); 
+Procedure TBlog.Setpages(AIndex : Integer; const AValue : TBlogTypepages); 
 
 begin
   If (Fpages=AValue) then exit;
@@ -1641,7 +1626,7 @@ end;
 
 
 
-Procedure TBlog.Setposts(AIndex : Integer; AValue : TBlogTypeposts); 
+Procedure TBlog.Setposts(AIndex : Integer; const AValue : TBlogTypeposts); 
 
 begin
   If (Fposts=AValue) then exit;
@@ -1651,7 +1636,7 @@ end;
 
 
 
-Procedure TBlog.Set_published(AIndex : Integer; AValue : TDatetime); 
+Procedure TBlog.Set_published(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (F_published=AValue) then exit;
@@ -1681,7 +1666,7 @@ end;
 
 
 
-Procedure TBlog.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TBlog.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -1719,7 +1704,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBlogList.SetblogUserInfos(AIndex : Integer; AValue : TBlogListTypeblogUserInfosArray); 
+Procedure TBlogList.SetblogUserInfos(AIndex : Integer; const AValue : TBlogListTypeblogUserInfosArray); 
 
 begin
   If (FblogUserInfos=AValue) then exit;
@@ -1729,7 +1714,7 @@ end;
 
 
 
-Procedure TBlogList.Setitems(AIndex : Integer; AValue : TBlogListTypeitemsArray); 
+Procedure TBlogList.Setitems(AIndex : Integer; const AValue : TBlogListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1780,7 +1765,7 @@ end;
 
 
 
-Procedure TBlogPerUserInfo.SethasAdminAccess(AIndex : Integer; AValue : boolean); 
+Procedure TBlogPerUserInfo.SethasAdminAccess(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FhasAdminAccess=AValue) then exit;
@@ -1837,7 +1822,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBlogUserInfo.Setblog(AIndex : Integer; AValue : TBlog); 
+Procedure TBlogUserInfo.Setblog(AIndex : Integer; const AValue : TBlog); 
 
 begin
   If (Fblog=AValue) then exit;
@@ -1847,7 +1832,7 @@ end;
 
 
 
-Procedure TBlogUserInfo.Setblog_user_info(AIndex : Integer; AValue : TBlogPerUserInfo); 
+Procedure TBlogUserInfo.Setblog_user_info(AIndex : Integer; const AValue : TBlogPerUserInfo); 
 
 begin
   If (Fblog_user_info=AValue) then exit;
@@ -1911,7 +1896,7 @@ end;
 
 
 
-Procedure TCommentTypeauthor.Setimage(AIndex : Integer; AValue : TCommentTypeauthorTypeimage); 
+Procedure TCommentTypeauthor.Setimage(AIndex : Integer; const AValue : TCommentTypeauthorTypeimage); 
 
 begin
   If (Fimage=AValue) then exit;
@@ -1989,7 +1974,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TComment.Setauthor(AIndex : Integer; AValue : TCommentTypeauthor); 
+Procedure TComment.Setauthor(AIndex : Integer; const AValue : TCommentTypeauthor); 
 
 begin
   If (Fauthor=AValue) then exit;
@@ -1999,7 +1984,7 @@ end;
 
 
 
-Procedure TComment.Setblog(AIndex : Integer; AValue : TCommentTypeblog); 
+Procedure TComment.Setblog(AIndex : Integer; const AValue : TCommentTypeblog); 
 
 begin
   If (Fblog=AValue) then exit;
@@ -2029,7 +2014,7 @@ end;
 
 
 
-Procedure TComment.SetinReplyTo(AIndex : Integer; AValue : TCommentTypeinReplyTo); 
+Procedure TComment.SetinReplyTo(AIndex : Integer; const AValue : TCommentTypeinReplyTo); 
 
 begin
   If (FinReplyTo=AValue) then exit;
@@ -2049,7 +2034,7 @@ end;
 
 
 
-Procedure TComment.Setpost(AIndex : Integer; AValue : TCommentTypepost); 
+Procedure TComment.Setpost(AIndex : Integer; const AValue : TCommentTypepost); 
 
 begin
   If (Fpost=AValue) then exit;
@@ -2059,7 +2044,7 @@ end;
 
 
 
-Procedure TComment.Set_published(AIndex : Integer; AValue : TDatetime); 
+Procedure TComment.Set_published(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (F_published=AValue) then exit;
@@ -2089,7 +2074,7 @@ end;
 
 
 
-Procedure TComment.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TComment.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -2127,7 +2112,7 @@ end;
 
 
 
-Procedure TCommentList.Setitems(AIndex : Integer; AValue : TCommentListTypeitemsArray); 
+Procedure TCommentList.Setitems(AIndex : Integer; const AValue : TCommentListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2224,7 +2209,7 @@ end;
 
 
 
-Procedure TPageTypeauthor.Setimage(AIndex : Integer; AValue : TPageTypeauthorTypeimage); 
+Procedure TPageTypeauthor.Setimage(AIndex : Integer; const AValue : TPageTypeauthorTypeimage); 
 
 begin
   If (Fimage=AValue) then exit;
@@ -2268,7 +2253,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPage.Setauthor(AIndex : Integer; AValue : TPageTypeauthor); 
+Procedure TPage.Setauthor(AIndex : Integer; const AValue : TPageTypeauthor); 
 
 begin
   If (Fauthor=AValue) then exit;
@@ -2278,7 +2263,7 @@ end;
 
 
 
-Procedure TPage.Setblog(AIndex : Integer; AValue : TPageTypeblog); 
+Procedure TPage.Setblog(AIndex : Integer; const AValue : TPageTypeblog); 
 
 begin
   If (Fblog=AValue) then exit;
@@ -2328,7 +2313,7 @@ end;
 
 
 
-Procedure TPage.Set_published(AIndex : Integer; AValue : TDatetime); 
+Procedure TPage.Set_published(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (F_published=AValue) then exit;
@@ -2368,7 +2353,7 @@ end;
 
 
 
-Procedure TPage.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TPage.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -2416,7 +2401,7 @@ end;
 
 
 
-Procedure TPageList.Setitems(AIndex : Integer; AValue : TPageListTypeitemsArray); 
+Procedure TPageList.Setitems(AIndex : Integer; const AValue : TPageListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2503,7 +2488,7 @@ end;
 
 
 
-Procedure TPageviews.Setcounts(AIndex : Integer; AValue : TPageviewsTypecountsArray); 
+Procedure TPageviews.Setcounts(AIndex : Integer; const AValue : TPageviewsTypecountsArray); 
 
 begin
   If (Fcounts=AValue) then exit;
@@ -2580,7 +2565,7 @@ end;
 
 
 
-Procedure TPostTypeauthor.Setimage(AIndex : Integer; AValue : TPostTypeauthorTypeimage); 
+Procedure TPostTypeauthor.Setimage(AIndex : Integer; const AValue : TPostTypeauthorTypeimage); 
 
 begin
   If (Fimage=AValue) then exit;
@@ -2641,7 +2626,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPostTypelocation.Setlat(AIndex : Integer; AValue : double); 
+Procedure TPostTypelocation.Setlat(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flat=AValue) then exit;
@@ -2651,7 +2636,7 @@ end;
 
 
 
-Procedure TPostTypelocation.Setlng(AIndex : Integer; AValue : double); 
+Procedure TPostTypelocation.Setlng(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flng=AValue) then exit;
@@ -2688,7 +2673,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPostTypereplies.Setitems(AIndex : Integer; AValue : TPostTyperepliesTypeitemsArray); 
+Procedure TPostTypereplies.Setitems(AIndex : Integer; const AValue : TPostTyperepliesTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2738,7 +2723,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPost.Setauthor(AIndex : Integer; AValue : TPostTypeauthor); 
+Procedure TPost.Setauthor(AIndex : Integer; const AValue : TPostTypeauthor); 
 
 begin
   If (Fauthor=AValue) then exit;
@@ -2748,7 +2733,7 @@ end;
 
 
 
-Procedure TPost.Setblog(AIndex : Integer; AValue : TPostTypeblog); 
+Procedure TPost.Setblog(AIndex : Integer; const AValue : TPostTypeblog); 
 
 begin
   If (Fblog=AValue) then exit;
@@ -2798,7 +2783,7 @@ end;
 
 
 
-Procedure TPost.Setimages(AIndex : Integer; AValue : TPostTypeimagesArray); 
+Procedure TPost.Setimages(AIndex : Integer; const AValue : TPostTypeimagesArray); 
 
 begin
   If (Fimages=AValue) then exit;
@@ -2818,7 +2803,7 @@ end;
 
 
 
-Procedure TPost.Setlabels(AIndex : Integer; AValue : TStringArray); 
+Procedure TPost.Setlabels(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -2828,7 +2813,7 @@ end;
 
 
 
-Procedure TPost.Setlocation(AIndex : Integer; AValue : TPostTypelocation); 
+Procedure TPost.Setlocation(AIndex : Integer; const AValue : TPostTypelocation); 
 
 begin
   If (Flocation=AValue) then exit;
@@ -2838,7 +2823,7 @@ end;
 
 
 
-Procedure TPost.Set_published(AIndex : Integer; AValue : TDatetime); 
+Procedure TPost.Set_published(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (F_published=AValue) then exit;
@@ -2858,7 +2843,7 @@ end;
 
 
 
-Procedure TPost.Setreplies(AIndex : Integer; AValue : TPostTypereplies); 
+Procedure TPost.Setreplies(AIndex : Integer; const AValue : TPostTypereplies); 
 
 begin
   If (Freplies=AValue) then exit;
@@ -2908,7 +2893,7 @@ end;
 
 
 
-Procedure TPost.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TPost.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -2970,7 +2955,7 @@ end;
 
 
 
-Procedure TPostList.Setitems(AIndex : Integer; AValue : TPostListTypeitemsArray); 
+Procedure TPostList.Setitems(AIndex : Integer; const AValue : TPostListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3030,7 +3015,7 @@ end;
 
 
 
-Procedure TPostPerUserInfo.SethasEditAccess(AIndex : Integer; AValue : boolean); 
+Procedure TPostPerUserInfo.SethasEditAccess(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FhasEditAccess=AValue) then exit;
@@ -3087,7 +3072,7 @@ end;
 
 
 
-Procedure TPostUserInfo.Setpost(AIndex : Integer; AValue : TPost); 
+Procedure TPostUserInfo.Setpost(AIndex : Integer; const AValue : TPost); 
 
 begin
   If (Fpost=AValue) then exit;
@@ -3097,7 +3082,7 @@ end;
 
 
 
-Procedure TPostUserInfo.Setpost_user_info(AIndex : Integer; AValue : TPostPerUserInfo); 
+Procedure TPostUserInfo.Setpost_user_info(AIndex : Integer; const AValue : TPostPerUserInfo); 
 
 begin
   If (Fpost_user_info=AValue) then exit;
@@ -3114,7 +3099,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPostUserInfosList.Setitems(AIndex : Integer; AValue : TPostUserInfosListTypeitemsArray); 
+Procedure TPostUserInfosList.Setitems(AIndex : Integer; const AValue : TPostUserInfosListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -3228,7 +3213,7 @@ end;
 
 
 
-Procedure TUser.Setblogs(AIndex : Integer; AValue : TUserTypeblogs); 
+Procedure TUser.Setblogs(AIndex : Integer; const AValue : TUserTypeblogs); 
 
 begin
   If (Fblogs=AValue) then exit;
@@ -3238,7 +3223,7 @@ end;
 
 
 
-Procedure TUser.Setcreated(AIndex : Integer; AValue : TDatetime); 
+Procedure TUser.Setcreated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fcreated=AValue) then exit;
@@ -3278,7 +3263,7 @@ end;
 
 
 
-Procedure TUser.Setlocale(AIndex : Integer; AValue : TUserTypelocale); 
+Procedure TUser.Setlocale(AIndex : Integer; const AValue : TUserTypelocale); 
 
 begin
   If (Flocale=AValue) then exit;
@@ -4358,7 +4343,7 @@ end;
 Class Function TBloggerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TBloggerAPI.APIbasePath : string;
@@ -4370,7 +4355,7 @@ end;
 Class Function TBloggerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/blogger/v3/';
+  Result:='https://www.googleapis.com/blogger/v3/';
 end;
 
 Class Function TBloggerAPI.APIProtocol : string;

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


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


+ 223 - 120
packages/googleapi/src/googlecivicinfo.pp

@@ -1,19 +1,4 @@
 unit googlecivicinfo;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:00
 {$MODE objfpc}
 {$H+}
 
@@ -102,11 +87,11 @@ type
     Fsources : TAdministrationRegionTypesourcesArray;
   Protected
     //Property setters
-    Procedure SetelectionAdministrationBody(AIndex : Integer; AValue : TAdministrativeBody); virtual;
+    Procedure SetelectionAdministrationBody(AIndex : Integer; const AValue : TAdministrativeBody); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlocal_jurisdiction(AIndex : Integer; AValue : TAdministrationRegion); virtual;
+    Procedure Setlocal_jurisdiction(AIndex : Integer; const AValue : TAdministrationRegion); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsources(AIndex : Integer; AValue : TAdministrationRegionTypesourcesArray); virtual;
+    Procedure Setsources(AIndex : Integer; const AValue : TAdministrationRegionTypesourcesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -144,16 +129,16 @@ type
     //Property setters
     Procedure SetabsenteeVotingInfoUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SetballotInfoUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcorrespondenceAddress(AIndex : Integer; AValue : TSimpleAddressType); virtual;
+    Procedure SetcorrespondenceAddress(AIndex : Integer; const AValue : TSimpleAddressType); virtual;
     Procedure SetelectionInfoUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetelectionOfficials(AIndex : Integer; AValue : TAdministrativeBodyTypeelectionOfficialsArray); virtual;
+    Procedure SetelectionOfficials(AIndex : Integer; const AValue : TAdministrativeBodyTypeelectionOfficialsArray); virtual;
     Procedure SetelectionRegistrationConfirmationUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SetelectionRegistrationUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SetelectionRulesUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SethoursOfOperation(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetphysicalAddress(AIndex : Integer; AValue : TSimpleAddressType); virtual;
-    Procedure Setvoter_services(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetphysicalAddress(AIndex : Integer; const AValue : TSimpleAddressType); virtual;
+    Procedure Setvoter_services(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetvotingLocationFinderUrl(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -194,7 +179,7 @@ type
   Protected
     //Property setters
     Procedure SetcandidateUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setchannels(AIndex : Integer; AValue : TCandidateTypechannelsArray); virtual;
+    Procedure Setchannels(AIndex : Integer; const AValue : TCandidateTypechannelsArray); virtual;
     Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetorderOnBallot(AIndex : Integer; const AValue : String); virtual;
@@ -254,7 +239,14 @@ type
     FnumberVotingFor : String;
     Foffice : String;
     FprimaryParty : String;
+    FreferendumBallotResponses : TStringArray;
+    FreferendumBrief : String;
+    FreferendumConStatement : String;
+    FreferendumEffectOfAbstain : String;
+    FreferendumPassageThreshold : String;
+    FreferendumProStatement : String;
     FreferendumSubtitle : String;
+    FreferendumText : String;
     FreferendumTitle : String;
     FreferendumUrl : String;
     Froles : TStringArray;
@@ -265,20 +257,27 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure SetballotPlacement(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setcandidates(AIndex : Integer; AValue : TContestTypecandidatesArray); virtual;
-    Procedure Setdistrict(AIndex : Integer; AValue : TElectoralDistrict); virtual;
+    Procedure Setcandidates(AIndex : Integer; const AValue : TContestTypecandidatesArray); virtual;
+    Procedure Setdistrict(AIndex : Integer; const AValue : TElectoralDistrict); virtual;
     Procedure SetelectorateSpecifications(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlevel(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setlevel(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetnumberElected(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnumberVotingFor(AIndex : Integer; const AValue : String); virtual;
     Procedure Setoffice(AIndex : Integer; const AValue : String); virtual;
     Procedure SetprimaryParty(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumBallotResponses(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetreferendumBrief(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumConStatement(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumEffectOfAbstain(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumPassageThreshold(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumProStatement(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreferendumSubtitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetreferendumText(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreferendumTitle(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreferendumUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setroles(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setsources(AIndex : Integer; AValue : TContestTypesourcesArray); virtual;
+    Procedure Setroles(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setsources(AIndex : Integer; const AValue : TContestTypesourcesArray); virtual;
     Procedure Setspecial(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -297,13 +296,20 @@ type
     Property numberVotingFor : String Index 56 Read FnumberVotingFor Write SetnumberVotingFor;
     Property office : String Index 64 Read Foffice Write Setoffice;
     Property primaryParty : String Index 72 Read FprimaryParty Write SetprimaryParty;
-    Property referendumSubtitle : String Index 80 Read FreferendumSubtitle Write SetreferendumSubtitle;
-    Property referendumTitle : String Index 88 Read FreferendumTitle Write SetreferendumTitle;
-    Property referendumUrl : String Index 96 Read FreferendumUrl Write SetreferendumUrl;
-    Property roles : TStringArray Index 104 Read Froles Write Setroles;
-    Property sources : TContestTypesourcesArray Index 112 Read Fsources Write Setsources;
-    Property special : String Index 120 Read Fspecial Write Setspecial;
-    Property _type : String Index 128 Read F_type Write Set_type;
+    Property referendumBallotResponses : TStringArray Index 80 Read FreferendumBallotResponses Write SetreferendumBallotResponses;
+    Property referendumBrief : String Index 88 Read FreferendumBrief Write SetreferendumBrief;
+    Property referendumConStatement : String Index 96 Read FreferendumConStatement Write SetreferendumConStatement;
+    Property referendumEffectOfAbstain : String Index 104 Read FreferendumEffectOfAbstain Write SetreferendumEffectOfAbstain;
+    Property referendumPassageThreshold : String Index 112 Read FreferendumPassageThreshold Write SetreferendumPassageThreshold;
+    Property referendumProStatement : String Index 120 Read FreferendumProStatement Write SetreferendumProStatement;
+    Property referendumSubtitle : String Index 128 Read FreferendumSubtitle Write SetreferendumSubtitle;
+    Property referendumText : String Index 136 Read FreferendumText Write SetreferendumText;
+    Property referendumTitle : String Index 144 Read FreferendumTitle Write SetreferendumTitle;
+    Property referendumUrl : String Index 152 Read FreferendumUrl Write SetreferendumUrl;
+    Property roles : TStringArray Index 160 Read Froles Write Setroles;
+    Property sources : TContestTypesourcesArray Index 168 Read Fsources Write Setsources;
+    Property special : String Index 176 Read Fspecial Write Setspecial;
+    Property _type : String Index 184 Read F_type Write Set_type;
   end;
   TContestClass = Class of TContest;
   
@@ -318,7 +324,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresults(AIndex : Integer; AValue : TDivisionSearchResponseTyperesultsArray); virtual;
+    Procedure Setresults(AIndex : Integer; const AValue : TDivisionSearchResponseTyperesultsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -341,7 +347,7 @@ type
     FocdId : String;
   Protected
     //Property setters
-    Procedure Setaliases(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setaliases(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetocdId(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -365,16 +371,19 @@ type
     FelectionDay : String;
     Fid : String;
     Fname : String;
+    FocdDivisionId : String;
   Protected
     //Property setters
     Procedure SetelectionDay(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetocdDivisionId(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
     Property electionDay : String Index 0 Read FelectionDay Write SetelectionDay;
     Property id : String Index 8 Read Fid Write Setid;
     Property name : String Index 16 Read Fname Write Setname;
+    Property ocdDivisionId : String Index 24 Read FocdDivisionId Write SetocdDivisionId;
   end;
   TElectionClass = Class of TElection;
   
@@ -416,7 +425,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setelections(AIndex : Integer; AValue : TElectionsQueryResponseTypeelectionsArray); virtual;
+    Procedure Setelections(AIndex : Integer; const AValue : TElectionsQueryResponseTypeelectionsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -462,9 +471,9 @@ type
     FofficeIndices : TintegerArray;
   Protected
     //Property setters
-    Procedure SetalsoKnownAs(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetalsoKnownAs(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetofficeIndices(AIndex : Integer; AValue : TintegerArray); virtual;
+    Procedure SetofficeIndices(AIndex : Integer; const AValue : TintegerArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -492,11 +501,11 @@ type
   Protected
     //Property setters
     Procedure SetdivisionId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlevels(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setlevels(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetofficialIndices(AIndex : Integer; AValue : TintegerArray); virtual;
-    Procedure Setroles(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setsources(AIndex : Integer; AValue : TOfficeTypesourcesArray); virtual;
+    Procedure SetofficialIndices(AIndex : Integer; const AValue : TintegerArray); virtual;
+    Procedure Setroles(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setsources(AIndex : Integer; const AValue : TOfficeTypesourcesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -528,14 +537,14 @@ type
     Furls : TStringArray;
   Protected
     //Property setters
-    Procedure Setaddress(AIndex : Integer; AValue : TOfficialTypeaddressArray); virtual;
-    Procedure Setchannels(AIndex : Integer; AValue : TOfficialTypechannelsArray); virtual;
-    Procedure Setemails(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setaddress(AIndex : Integer; const AValue : TOfficialTypeaddressArray); virtual;
+    Procedure Setchannels(AIndex : Integer; const AValue : TOfficialTypechannelsArray); virtual;
+    Procedure Setemails(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setparty(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setphones(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setphones(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetphotoUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seturls(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Seturls(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -570,13 +579,13 @@ type
     FvoterServices : String;
   Protected
     //Property setters
-    Procedure Setaddress(AIndex : Integer; AValue : TSimpleAddressType); virtual;
+    Procedure Setaddress(AIndex : Integer; const AValue : TSimpleAddressType); virtual;
     Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setnotes(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpollingHours(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsources(AIndex : Integer; AValue : TPollingLocationTypesourcesArray); virtual;
+    Procedure Setsources(AIndex : Integer; const AValue : TPollingLocationTypesourcesArray); virtual;
     Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
     Procedure SetvoterServices(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -622,9 +631,9 @@ type
     Fofficials : TRepresentativeInfoDataTypeofficialsArray;
   Protected
     //Property setters
-    Procedure Setdivisions(AIndex : Integer; AValue : TRepresentativeInfoDataTypedivisions); virtual;
-    Procedure Setoffices(AIndex : Integer; AValue : TRepresentativeInfoDataTypeofficesArray); virtual;
-    Procedure Setofficials(AIndex : Integer; AValue : TRepresentativeInfoDataTypeofficialsArray); virtual;
+    Procedure Setdivisions(AIndex : Integer; const AValue : TRepresentativeInfoDataTypedivisions); virtual;
+    Procedure Setoffices(AIndex : Integer; const AValue : TRepresentativeInfoDataTypeofficesArray); virtual;
+    Procedure Setofficials(AIndex : Integer; const AValue : TRepresentativeInfoDataTypeofficialsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -664,11 +673,11 @@ type
     Fofficials : TRepresentativeInfoResponseTypeofficialsArray;
   Protected
     //Property setters
-    Procedure Setdivisions(AIndex : Integer; AValue : TRepresentativeInfoResponseTypedivisions); virtual;
+    Procedure Setdivisions(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypedivisions); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnormalizedInput(AIndex : Integer; AValue : TSimpleAddressType); virtual;
-    Procedure Setoffices(AIndex : Integer; AValue : TRepresentativeInfoResponseTypeofficesArray); virtual;
-    Procedure Setofficials(AIndex : Integer; AValue : TRepresentativeInfoResponseTypeofficialsArray); virtual;
+    Procedure SetnormalizedInput(AIndex : Integer; const AValue : TSimpleAddressType); virtual;
+    Procedure Setoffices(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypeofficesArray); virtual;
+    Procedure Setofficials(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypeofficialsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -728,7 +737,7 @@ type
   Protected
     //Property setters
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setofficial(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setofficial(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property name : String Index 0 Read Fname Write Setname;
@@ -747,6 +756,7 @@ type
     FearlyVoteSites : TVoterInfoResponseTypeearlyVoteSitesArray;
     Felection : TElection;
     Fkind : String;
+    FmailOnly : boolean;
     FnormalizedInput : TSimpleAddressType;
     FotherElections : TVoterInfoResponseTypeotherElectionsArray;
     FpollingLocations : TVoterInfoResponseTypepollingLocationsArray;
@@ -754,16 +764,17 @@ type
     Fstate : TVoterInfoResponseTypestateArray;
   Protected
     //Property setters
-    Procedure Setcontests(AIndex : Integer; AValue : TVoterInfoResponseTypecontestsArray); virtual;
-    Procedure SetdropOffLocations(AIndex : Integer; AValue : TVoterInfoResponseTypedropOffLocationsArray); virtual;
-    Procedure SetearlyVoteSites(AIndex : Integer; AValue : TVoterInfoResponseTypeearlyVoteSitesArray); virtual;
-    Procedure Setelection(AIndex : Integer; AValue : TElection); virtual;
+    Procedure Setcontests(AIndex : Integer; const AValue : TVoterInfoResponseTypecontestsArray); virtual;
+    Procedure SetdropOffLocations(AIndex : Integer; const AValue : TVoterInfoResponseTypedropOffLocationsArray); virtual;
+    Procedure SetearlyVoteSites(AIndex : Integer; const AValue : TVoterInfoResponseTypeearlyVoteSitesArray); virtual;
+    Procedure Setelection(AIndex : Integer; const AValue : TElection); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnormalizedInput(AIndex : Integer; AValue : TSimpleAddressType); virtual;
-    Procedure SetotherElections(AIndex : Integer; AValue : TVoterInfoResponseTypeotherElectionsArray); virtual;
-    Procedure SetpollingLocations(AIndex : Integer; AValue : TVoterInfoResponseTypepollingLocationsArray); virtual;
+    Procedure SetmailOnly(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnormalizedInput(AIndex : Integer; const AValue : TSimpleAddressType); virtual;
+    Procedure SetotherElections(AIndex : Integer; const AValue : TVoterInfoResponseTypeotherElectionsArray); virtual;
+    Procedure SetpollingLocations(AIndex : Integer; const AValue : TVoterInfoResponseTypepollingLocationsArray); virtual;
     Procedure SetprecinctId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstate(AIndex : Integer; AValue : TVoterInfoResponseTypestateArray); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : TVoterInfoResponseTypestateArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -775,11 +786,12 @@ type
     Property earlyVoteSites : TVoterInfoResponseTypeearlyVoteSitesArray Index 16 Read FearlyVoteSites Write SetearlyVoteSites;
     Property election : TElection Index 24 Read Felection Write Setelection;
     Property kind : String Index 32 Read Fkind Write Setkind;
-    Property normalizedInput : TSimpleAddressType Index 40 Read FnormalizedInput Write SetnormalizedInput;
-    Property otherElections : TVoterInfoResponseTypeotherElectionsArray Index 48 Read FotherElections Write SetotherElections;
-    Property pollingLocations : TVoterInfoResponseTypepollingLocationsArray Index 56 Read FpollingLocations Write SetpollingLocations;
-    Property precinctId : String Index 64 Read FprecinctId Write SetprecinctId;
-    Property state : TVoterInfoResponseTypestateArray Index 72 Read Fstate Write Setstate;
+    Property mailOnly : boolean Index 40 Read FmailOnly Write SetmailOnly;
+    Property normalizedInput : TSimpleAddressType Index 48 Read FnormalizedInput Write SetnormalizedInput;
+    Property otherElections : TVoterInfoResponseTypeotherElectionsArray Index 56 Read FotherElections Write SetotherElections;
+    Property pollingLocations : TVoterInfoResponseTypepollingLocationsArray Index 64 Read FpollingLocations Write SetpollingLocations;
+    Property precinctId : String Index 72 Read FprecinctId Write SetprecinctId;
+    Property state : TVoterInfoResponseTypestateArray Index 80 Read Fstate Write Setstate;
   end;
   TVoterInfoResponseClass = Class of TVoterInfoResponse;
   
@@ -915,7 +927,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAdministrationRegion.SetelectionAdministrationBody(AIndex : Integer; AValue : TAdministrativeBody); 
+Procedure TAdministrationRegion.SetelectionAdministrationBody(AIndex : Integer; const AValue : TAdministrativeBody); 
 
 begin
   If (FelectionAdministrationBody=AValue) then exit;
@@ -935,7 +947,7 @@ end;
 
 
 
-Procedure TAdministrationRegion.Setlocal_jurisdiction(AIndex : Integer; AValue : TAdministrationRegion); 
+Procedure TAdministrationRegion.Setlocal_jurisdiction(AIndex : Integer; const AValue : TAdministrationRegion); 
 
 begin
   If (Flocal_jurisdiction=AValue) then exit;
@@ -955,7 +967,7 @@ end;
 
 
 
-Procedure TAdministrationRegion.Setsources(AIndex : Integer; AValue : TAdministrationRegionTypesourcesArray); 
+Procedure TAdministrationRegion.Setsources(AIndex : Integer; const AValue : TAdministrationRegionTypesourcesArray); 
 
 begin
   If (Fsources=AValue) then exit;
@@ -1005,7 +1017,7 @@ end;
 
 
 
-Procedure TAdministrativeBody.SetcorrespondenceAddress(AIndex : Integer; AValue : TSimpleAddressType); 
+Procedure TAdministrativeBody.SetcorrespondenceAddress(AIndex : Integer; const AValue : TSimpleAddressType); 
 
 begin
   If (FcorrespondenceAddress=AValue) then exit;
@@ -1025,7 +1037,7 @@ end;
 
 
 
-Procedure TAdministrativeBody.SetelectionOfficials(AIndex : Integer; AValue : TAdministrativeBodyTypeelectionOfficialsArray); 
+Procedure TAdministrativeBody.SetelectionOfficials(AIndex : Integer; const AValue : TAdministrativeBodyTypeelectionOfficialsArray); 
 
 begin
   If (FelectionOfficials=AValue) then exit;
@@ -1085,7 +1097,7 @@ end;
 
 
 
-Procedure TAdministrativeBody.SetphysicalAddress(AIndex : Integer; AValue : TSimpleAddressType); 
+Procedure TAdministrativeBody.SetphysicalAddress(AIndex : Integer; const AValue : TSimpleAddressType); 
 
 begin
   If (FphysicalAddress=AValue) then exit;
@@ -1095,7 +1107,7 @@ end;
 
 
 
-Procedure TAdministrativeBody.Setvoter_services(AIndex : Integer; AValue : TStringArray); 
+Procedure TAdministrativeBody.Setvoter_services(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fvoter_services=AValue) then exit;
@@ -1146,7 +1158,7 @@ end;
 
 
 
-Procedure TCandidate.Setchannels(AIndex : Integer; AValue : TCandidateTypechannelsArray); 
+Procedure TCandidate.Setchannels(AIndex : Integer; const AValue : TCandidateTypechannelsArray); 
 
 begin
   If (Fchannels=AValue) then exit;
@@ -1284,7 +1296,7 @@ end;
 
 
 
-Procedure TContest.Setcandidates(AIndex : Integer; AValue : TContestTypecandidatesArray); 
+Procedure TContest.Setcandidates(AIndex : Integer; const AValue : TContestTypecandidatesArray); 
 
 begin
   If (Fcandidates=AValue) then exit;
@@ -1294,7 +1306,7 @@ end;
 
 
 
-Procedure TContest.Setdistrict(AIndex : Integer; AValue : TElectoralDistrict); 
+Procedure TContest.Setdistrict(AIndex : Integer; const AValue : TElectoralDistrict); 
 
 begin
   If (Fdistrict=AValue) then exit;
@@ -1324,7 +1336,7 @@ end;
 
 
 
-Procedure TContest.Setlevel(AIndex : Integer; AValue : TStringArray); 
+Procedure TContest.Setlevel(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Flevel=AValue) then exit;
@@ -1374,6 +1386,66 @@ end;
 
 
 
+Procedure TContest.SetreferendumBallotResponses(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FreferendumBallotResponses=AValue) then exit;
+  FreferendumBallotResponses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TContest.SetreferendumBrief(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumBrief=AValue) then exit;
+  FreferendumBrief:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TContest.SetreferendumConStatement(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumConStatement=AValue) then exit;
+  FreferendumConStatement:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TContest.SetreferendumEffectOfAbstain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumEffectOfAbstain=AValue) then exit;
+  FreferendumEffectOfAbstain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TContest.SetreferendumPassageThreshold(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumPassageThreshold=AValue) then exit;
+  FreferendumPassageThreshold:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TContest.SetreferendumProStatement(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumProStatement=AValue) then exit;
+  FreferendumProStatement:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TContest.SetreferendumSubtitle(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1384,6 +1456,16 @@ end;
 
 
 
+Procedure TContest.SetreferendumText(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FreferendumText=AValue) then exit;
+  FreferendumText:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TContest.SetreferendumTitle(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1404,7 +1486,7 @@ end;
 
 
 
-Procedure TContest.Setroles(AIndex : Integer; AValue : TStringArray); 
+Procedure TContest.Setroles(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Froles=AValue) then exit;
@@ -1414,7 +1496,7 @@ end;
 
 
 
-Procedure TContest.Setsources(AIndex : Integer; AValue : TContestTypesourcesArray); 
+Procedure TContest.Setsources(AIndex : Integer; const AValue : TContestTypesourcesArray); 
 
 begin
   If (Fsources=AValue) then exit;
@@ -1462,6 +1544,7 @@ begin
   Case AName of
   'candidates' : SetLength(Fcandidates,ALength);
   'level' : SetLength(Flevel,ALength);
+  'referendumballotresponses' : SetLength(FreferendumBallotResponses,ALength);
   'roles' : SetLength(Froles,ALength);
   'sources' : SetLength(Fsources,ALength);
   else
@@ -1488,7 +1571,7 @@ end;
 
 
 
-Procedure TDivisionSearchResponse.Setresults(AIndex : Integer; AValue : TDivisionSearchResponseTyperesultsArray); 
+Procedure TDivisionSearchResponse.Setresults(AIndex : Integer; const AValue : TDivisionSearchResponseTyperesultsArray); 
 
 begin
   If (Fresults=AValue) then exit;
@@ -1518,7 +1601,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TDivisionSearchResult.Setaliases(AIndex : Integer; AValue : TStringArray); 
+Procedure TDivisionSearchResult.Setaliases(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Faliases=AValue) then exit;
@@ -1598,6 +1681,16 @@ end;
 
 
 
+Procedure TElection.SetocdDivisionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FocdDivisionId=AValue) then exit;
+  FocdDivisionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 
 
 { --------------------------------------------------------------------
@@ -1662,7 +1755,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TElectionsQueryResponse.Setelections(AIndex : Integer; AValue : TElectionsQueryResponseTypeelectionsArray); 
+Procedure TElectionsQueryResponse.Setelections(AIndex : Integer; const AValue : TElectionsQueryResponseTypeelectionsArray); 
 
 begin
   If (Felections=AValue) then exit;
@@ -1739,7 +1832,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TGeographicDivision.SetalsoKnownAs(AIndex : Integer; AValue : TStringArray); 
+Procedure TGeographicDivision.SetalsoKnownAs(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FalsoKnownAs=AValue) then exit;
@@ -1759,7 +1852,7 @@ end;
 
 
 
-Procedure TGeographicDivision.SetofficeIndices(AIndex : Integer; AValue : TintegerArray); 
+Procedure TGeographicDivision.SetofficeIndices(AIndex : Integer; const AValue : TintegerArray); 
 
 begin
   If (FofficeIndices=AValue) then exit;
@@ -1800,7 +1893,7 @@ end;
 
 
 
-Procedure TOffice.Setlevels(AIndex : Integer; AValue : TStringArray); 
+Procedure TOffice.Setlevels(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Flevels=AValue) then exit;
@@ -1820,7 +1913,7 @@ end;
 
 
 
-Procedure TOffice.SetofficialIndices(AIndex : Integer; AValue : TintegerArray); 
+Procedure TOffice.SetofficialIndices(AIndex : Integer; const AValue : TintegerArray); 
 
 begin
   If (FofficialIndices=AValue) then exit;
@@ -1830,7 +1923,7 @@ end;
 
 
 
-Procedure TOffice.Setroles(AIndex : Integer; AValue : TStringArray); 
+Procedure TOffice.Setroles(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Froles=AValue) then exit;
@@ -1840,7 +1933,7 @@ end;
 
 
 
-Procedure TOffice.Setsources(AIndex : Integer; AValue : TOfficeTypesourcesArray); 
+Procedure TOffice.Setsources(AIndex : Integer; const AValue : TOfficeTypesourcesArray); 
 
 begin
   If (Fsources=AValue) then exit;
@@ -1873,7 +1966,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TOfficial.Setaddress(AIndex : Integer; AValue : TOfficialTypeaddressArray); 
+Procedure TOfficial.Setaddress(AIndex : Integer; const AValue : TOfficialTypeaddressArray); 
 
 begin
   If (Faddress=AValue) then exit;
@@ -1883,7 +1976,7 @@ end;
 
 
 
-Procedure TOfficial.Setchannels(AIndex : Integer; AValue : TOfficialTypechannelsArray); 
+Procedure TOfficial.Setchannels(AIndex : Integer; const AValue : TOfficialTypechannelsArray); 
 
 begin
   If (Fchannels=AValue) then exit;
@@ -1893,7 +1986,7 @@ end;
 
 
 
-Procedure TOfficial.Setemails(AIndex : Integer; AValue : TStringArray); 
+Procedure TOfficial.Setemails(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Femails=AValue) then exit;
@@ -1923,7 +2016,7 @@ end;
 
 
 
-Procedure TOfficial.Setphones(AIndex : Integer; AValue : TStringArray); 
+Procedure TOfficial.Setphones(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fphones=AValue) then exit;
@@ -1943,7 +2036,7 @@ end;
 
 
 
-Procedure TOfficial.Seturls(AIndex : Integer; AValue : TStringArray); 
+Procedure TOfficial.Seturls(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Furls=AValue) then exit;
@@ -1977,7 +2070,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPollingLocation.Setaddress(AIndex : Integer; AValue : TSimpleAddressType); 
+Procedure TPollingLocation.Setaddress(AIndex : Integer; const AValue : TSimpleAddressType); 
 
 begin
   If (Faddress=AValue) then exit;
@@ -2037,7 +2130,7 @@ end;
 
 
 
-Procedure TPollingLocation.Setsources(AIndex : Integer; AValue : TPollingLocationTypesourcesArray); 
+Procedure TPollingLocation.Setsources(AIndex : Integer; const AValue : TPollingLocationTypesourcesArray); 
 
 begin
   If (Fsources=AValue) then exit;
@@ -2100,7 +2193,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRepresentativeInfoData.Setdivisions(AIndex : Integer; AValue : TRepresentativeInfoDataTypedivisions); 
+Procedure TRepresentativeInfoData.Setdivisions(AIndex : Integer; const AValue : TRepresentativeInfoDataTypedivisions); 
 
 begin
   If (Fdivisions=AValue) then exit;
@@ -2110,7 +2203,7 @@ end;
 
 
 
-Procedure TRepresentativeInfoData.Setoffices(AIndex : Integer; AValue : TRepresentativeInfoDataTypeofficesArray); 
+Procedure TRepresentativeInfoData.Setoffices(AIndex : Integer; const AValue : TRepresentativeInfoDataTypeofficesArray); 
 
 begin
   If (Foffices=AValue) then exit;
@@ -2120,7 +2213,7 @@ end;
 
 
 
-Procedure TRepresentativeInfoData.Setofficials(AIndex : Integer; AValue : TRepresentativeInfoDataTypeofficialsArray); 
+Procedure TRepresentativeInfoData.Setofficials(AIndex : Integer; const AValue : TRepresentativeInfoDataTypeofficialsArray); 
 
 begin
   If (Fofficials=AValue) then exit;
@@ -2164,7 +2257,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRepresentativeInfoResponse.Setdivisions(AIndex : Integer; AValue : TRepresentativeInfoResponseTypedivisions); 
+Procedure TRepresentativeInfoResponse.Setdivisions(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypedivisions); 
 
 begin
   If (Fdivisions=AValue) then exit;
@@ -2184,7 +2277,7 @@ end;
 
 
 
-Procedure TRepresentativeInfoResponse.SetnormalizedInput(AIndex : Integer; AValue : TSimpleAddressType); 
+Procedure TRepresentativeInfoResponse.SetnormalizedInput(AIndex : Integer; const AValue : TSimpleAddressType); 
 
 begin
   If (FnormalizedInput=AValue) then exit;
@@ -2194,7 +2287,7 @@ end;
 
 
 
-Procedure TRepresentativeInfoResponse.Setoffices(AIndex : Integer; AValue : TRepresentativeInfoResponseTypeofficesArray); 
+Procedure TRepresentativeInfoResponse.Setoffices(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypeofficesArray); 
 
 begin
   If (Foffices=AValue) then exit;
@@ -2204,7 +2297,7 @@ end;
 
 
 
-Procedure TRepresentativeInfoResponse.Setofficials(AIndex : Integer; AValue : TRepresentativeInfoResponseTypeofficialsArray); 
+Procedure TRepresentativeInfoResponse.Setofficials(AIndex : Integer; const AValue : TRepresentativeInfoResponseTypeofficialsArray); 
 
 begin
   If (Fofficials=AValue) then exit;
@@ -2322,7 +2415,7 @@ end;
 
 
 
-Procedure TSource.Setofficial(AIndex : Integer; AValue : boolean); 
+Procedure TSource.Setofficial(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fofficial=AValue) then exit;
@@ -2339,7 +2432,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TVoterInfoResponse.Setcontests(AIndex : Integer; AValue : TVoterInfoResponseTypecontestsArray); 
+Procedure TVoterInfoResponse.Setcontests(AIndex : Integer; const AValue : TVoterInfoResponseTypecontestsArray); 
 
 begin
   If (Fcontests=AValue) then exit;
@@ -2349,7 +2442,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.SetdropOffLocations(AIndex : Integer; AValue : TVoterInfoResponseTypedropOffLocationsArray); 
+Procedure TVoterInfoResponse.SetdropOffLocations(AIndex : Integer; const AValue : TVoterInfoResponseTypedropOffLocationsArray); 
 
 begin
   If (FdropOffLocations=AValue) then exit;
@@ -2359,7 +2452,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.SetearlyVoteSites(AIndex : Integer; AValue : TVoterInfoResponseTypeearlyVoteSitesArray); 
+Procedure TVoterInfoResponse.SetearlyVoteSites(AIndex : Integer; const AValue : TVoterInfoResponseTypeearlyVoteSitesArray); 
 
 begin
   If (FearlyVoteSites=AValue) then exit;
@@ -2369,7 +2462,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.Setelection(AIndex : Integer; AValue : TElection); 
+Procedure TVoterInfoResponse.Setelection(AIndex : Integer; const AValue : TElection); 
 
 begin
   If (Felection=AValue) then exit;
@@ -2389,7 +2482,17 @@ end;
 
 
 
-Procedure TVoterInfoResponse.SetnormalizedInput(AIndex : Integer; AValue : TSimpleAddressType); 
+Procedure TVoterInfoResponse.SetmailOnly(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FmailOnly=AValue) then exit;
+  FmailOnly:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVoterInfoResponse.SetnormalizedInput(AIndex : Integer; const AValue : TSimpleAddressType); 
 
 begin
   If (FnormalizedInput=AValue) then exit;
@@ -2399,7 +2502,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.SetotherElections(AIndex : Integer; AValue : TVoterInfoResponseTypeotherElectionsArray); 
+Procedure TVoterInfoResponse.SetotherElections(AIndex : Integer; const AValue : TVoterInfoResponseTypeotherElectionsArray); 
 
 begin
   If (FotherElections=AValue) then exit;
@@ -2409,7 +2512,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.SetpollingLocations(AIndex : Integer; AValue : TVoterInfoResponseTypepollingLocationsArray); 
+Procedure TVoterInfoResponse.SetpollingLocations(AIndex : Integer; const AValue : TVoterInfoResponseTypepollingLocationsArray); 
 
 begin
   If (FpollingLocations=AValue) then exit;
@@ -2429,7 +2532,7 @@ end;
 
 
 
-Procedure TVoterInfoResponse.Setstate(AIndex : Integer; AValue : TVoterInfoResponseTypestateArray); 
+Procedure TVoterInfoResponse.Setstate(AIndex : Integer; const AValue : TVoterInfoResponseTypestateArray); 
 
 begin
   If (Fstate=AValue) then exit;
@@ -2649,7 +2752,7 @@ end;
 Class Function TCivicinfoAPI.APIRevision : String;
 
 begin
-  Result:='20150302';
+  Result:='20150820';
 end;
 
 Class Function TCivicinfoAPI.APIID : String;
@@ -2703,7 +2806,7 @@ end;
 Class Function TCivicinfoAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TCivicinfoAPI.APIbasePath : string;
@@ -2715,7 +2818,7 @@ end;
 Class Function TCivicinfoAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/civicinfo/v2/';
+  Result:='https://www.googleapis.com/civicinfo/v2/';
 end;
 
 Class Function TCivicinfoAPI.APIProtocol : string;

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

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

+ 14 - 29
packages/googleapi/src/googlecloudlatencytest.pp

@@ -1,19 +1,4 @@
 unit googlecloudlatencytest;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:00
 {$MODE objfpc}
 {$H+}
 
@@ -53,7 +38,7 @@ type
     Fstats : TAggregatedStatsTypestatsArray;
   Protected
     //Property setters
-    Procedure Setstats(AIndex : Integer; AValue : TAggregatedStatsTypestatsArray); 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;
@@ -92,7 +77,7 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure Set_label(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property _label : String Index 0 Read F_label Write Set_label;
@@ -132,10 +117,10 @@ type
     Ftime : double;
   Protected
     //Property setters
-    Procedure SetdoubleValues(AIndex : Integer; AValue : TStatsTypedoubleValuesArray); virtual;
-    Procedure SetintValues(AIndex : Integer; AValue : TStatsTypeintValuesArray); virtual;
-    Procedure SetstringValues(AIndex : Integer; AValue : TStatsTypestringValuesArray); 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;
@@ -243,7 +228,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAggregatedStats.Setstats(AIndex : Integer; AValue : TAggregatedStatsTypestatsArray); 
+Procedure TAggregatedStats.Setstats(AIndex : Integer; const AValue : TAggregatedStatsTypestatsArray); 
 
 begin
   If (Fstats=AValue) then exit;
@@ -300,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;
@@ -366,7 +351,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStats.SetdoubleValues(AIndex : Integer; AValue : TStatsTypedoubleValuesArray); 
+Procedure TStats.SetdoubleValues(AIndex : Integer; const AValue : TStatsTypedoubleValuesArray); 
 
 begin
   If (FdoubleValues=AValue) then exit;
@@ -376,7 +361,7 @@ end;
 
 
 
-Procedure TStats.SetintValues(AIndex : Integer; AValue : TStatsTypeintValuesArray); 
+Procedure TStats.SetintValues(AIndex : Integer; const AValue : TStatsTypeintValuesArray); 
 
 begin
   If (FintValues=AValue) then exit;
@@ -386,7 +371,7 @@ end;
 
 
 
-Procedure TStats.SetstringValues(AIndex : Integer; AValue : TStatsTypestringValuesArray); 
+Procedure TStats.SetstringValues(AIndex : Integer; const AValue : TStatsTypestringValuesArray); 
 
 begin
   If (FstringValues=AValue) then exit;
@@ -396,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;
@@ -538,7 +523,7 @@ end;
 Class Function TCloudlatencytestAPI.APIRevision : String;
 
 begin
-  Result:='20150508';
+  Result:='20160309';
 end;
 
 Class Function TCloudlatencytestAPI.APIID : String;
@@ -556,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;

+ 65 - 78
packages/googleapi/src/googlecloudmonitoring.pp

@@ -1,19 +1,4 @@
 unit googlecloudmonitoring;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:00
 {$MODE objfpc}
 {$H+}
 
@@ -121,7 +106,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmetrics(AIndex : Integer; AValue : TListMetricDescriptorsResponseTypemetricsArray); virtual;
+    Procedure Setmetrics(AIndex : Integer; const AValue : TListMetricDescriptorsResponseTypemetricsArray); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -166,9 +151,9 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setoldest(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Settimeseries(AIndex : Integer; AValue : TListTimeseriesDescriptorsResponseTypetimeseriesArray); virtual;
-    Procedure Setyoungest(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setoldest(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Settimeseries(AIndex : Integer; const AValue : TListTimeseriesDescriptorsResponseTypetimeseriesArray); virtual;
+    Procedure Setyoungest(AIndex : Integer; const AValue : TDatetime); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -214,9 +199,9 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setoldest(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Settimeseries(AIndex : Integer; AValue : TListTimeseriesResponseTypetimeseriesArray); virtual;
-    Procedure Setyoungest(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setoldest(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Settimeseries(AIndex : Integer; const AValue : TListTimeseriesResponseTypetimeseriesArray); virtual;
+    Procedure Setyoungest(AIndex : Integer; const AValue : TDatetime); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -245,10 +230,10 @@ type
   Protected
     //Property setters
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TMetricDescriptorTypelabelsArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TMetricDescriptorTypelabelsArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setproject(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettypeDescriptor(AIndex : Integer; AValue : TMetricDescriptorTypeDescriptor); virtual;
+    Procedure SettypeDescriptor(AIndex : Integer; const AValue : TMetricDescriptorTypeDescriptor); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -317,12 +302,12 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure SetboolValue(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetdistributionValue(AIndex : Integer; AValue : TPointDistribution); virtual;
-    Procedure SetdoubleValue(AIndex : Integer; AValue : double); virtual;
-    Procedure Set_end(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetboolValue(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdistributionValue(AIndex : Integer; const AValue : TPointDistribution); virtual;
+    Procedure SetdoubleValue(AIndex : Integer; const AValue : double); virtual;
+    Procedure Set_end(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setint64Value(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstart(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setstart(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetstringValue(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -347,9 +332,9 @@ type
     FunderflowBucket : TPointDistributionUnderflowBucket;
   Protected
     //Property setters
-    Procedure Setbuckets(AIndex : Integer; AValue : TPointDistributionTypebucketsArray); virtual;
-    Procedure SetoverflowBucket(AIndex : Integer; AValue : TPointDistributionOverflowBucket); virtual;
-    Procedure SetunderflowBucket(AIndex : Integer; AValue : TPointDistributionUnderflowBucket); virtual;
+    Procedure Setbuckets(AIndex : Integer; const AValue : TPointDistributionTypebucketsArray); virtual;
+    Procedure SetoverflowBucket(AIndex : Integer; const AValue : TPointDistributionOverflowBucket); virtual;
+    Procedure SetunderflowBucket(AIndex : Integer; const AValue : TPointDistributionUnderflowBucket); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -374,8 +359,8 @@ type
   Protected
     //Property setters
     Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlowerBound(AIndex : Integer; AValue : double); virtual;
-    Procedure SetupperBound(AIndex : Integer; AValue : double); virtual;
+    Procedure SetlowerBound(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetupperBound(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property count : String Index 0 Read Fcount Write Setcount;
@@ -395,7 +380,7 @@ type
   Protected
     //Property setters
     Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlowerBound(AIndex : Integer; AValue : double); virtual;
+    Procedure SetlowerBound(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property count : String Index 0 Read Fcount Write Setcount;
@@ -414,7 +399,7 @@ type
   Protected
     //Property setters
     Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetupperBound(AIndex : Integer; AValue : double); virtual;
+    Procedure SetupperBound(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property count : String Index 0 Read Fcount Write Setcount;
@@ -432,8 +417,8 @@ type
     FtimeseriesDesc : TTimeseriesDescriptor;
   Protected
     //Property setters
-    Procedure Setpoints(AIndex : Integer; AValue : TTimeseriesTypepointsArray); virtual;
-    Procedure SettimeseriesDesc(AIndex : Integer; AValue : TTimeseriesDescriptor); virtual;
+    Procedure Setpoints(AIndex : Integer; const AValue : TTimeseriesTypepointsArray); virtual;
+    Procedure SettimeseriesDesc(AIndex : Integer; const AValue : TTimeseriesDescriptor); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -470,7 +455,7 @@ type
     Fproject : String;
   Protected
     //Property setters
-    Procedure Setlabels(AIndex : Integer; AValue : TTimeseriesDescriptorTypelabels); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TTimeseriesDescriptorTypelabels); virtual;
     Procedure Setmetric(AIndex : Integer; const AValue : String); virtual;
     Procedure Setproject(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -510,8 +495,8 @@ type
     FtimeseriesDesc : TTimeseriesDescriptor;
   Protected
     //Property setters
-    Procedure Setpoint(AIndex : Integer; AValue : TPoint); virtual;
-    Procedure SettimeseriesDesc(AIndex : Integer; AValue : TTimeseriesDescriptor); virtual;
+    Procedure Setpoint(AIndex : Integer; const AValue : TPoint); virtual;
+    Procedure SettimeseriesDesc(AIndex : Integer; const AValue : TTimeseriesDescriptor); virtual;
   Public
   Published
     Property point : TPoint Index 0 Read Fpoint Write Setpoint;
@@ -543,8 +528,8 @@ type
     Ftimeseries : TWriteTimeseriesRequestTypetimeseriesArray;
   Protected
     //Property setters
-    Procedure SetcommonLabels(AIndex : Integer; AValue : TWriteTimeseriesRequestTypecommonLabels); virtual;
-    Procedure Settimeseries(AIndex : Integer; AValue : TWriteTimeseriesRequestTypetimeseriesArray); virtual;
+    Procedure SetcommonLabels(AIndex : Integer; const AValue : TWriteTimeseriesRequestTypecommonLabels); virtual;
+    Procedure Settimeseries(AIndex : Integer; const AValue : TWriteTimeseriesRequestTypetimeseriesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -750,7 +735,7 @@ end;
 
 
 
-Procedure TListMetricDescriptorsResponse.Setmetrics(AIndex : Integer; AValue : TListMetricDescriptorsResponseTypemetricsArray); 
+Procedure TListMetricDescriptorsResponse.Setmetrics(AIndex : Integer; const AValue : TListMetricDescriptorsResponseTypemetricsArray); 
 
 begin
   If (Fmetrics=AValue) then exit;
@@ -827,7 +812,7 @@ end;
 
 
 
-Procedure TListTimeseriesDescriptorsResponse.Setoldest(AIndex : Integer; AValue : TDatetime); 
+Procedure TListTimeseriesDescriptorsResponse.Setoldest(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Foldest=AValue) then exit;
@@ -837,7 +822,7 @@ end;
 
 
 
-Procedure TListTimeseriesDescriptorsResponse.Settimeseries(AIndex : Integer; AValue : TListTimeseriesDescriptorsResponseTypetimeseriesArray); 
+Procedure TListTimeseriesDescriptorsResponse.Settimeseries(AIndex : Integer; const AValue : TListTimeseriesDescriptorsResponseTypetimeseriesArray); 
 
 begin
   If (Ftimeseries=AValue) then exit;
@@ -847,7 +832,7 @@ end;
 
 
 
-Procedure TListTimeseriesDescriptorsResponse.Setyoungest(AIndex : Integer; AValue : TDatetime); 
+Procedure TListTimeseriesDescriptorsResponse.Setyoungest(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fyoungest=AValue) then exit;
@@ -914,7 +899,7 @@ end;
 
 
 
-Procedure TListTimeseriesResponse.Setoldest(AIndex : Integer; AValue : TDatetime); 
+Procedure TListTimeseriesResponse.Setoldest(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Foldest=AValue) then exit;
@@ -924,7 +909,7 @@ end;
 
 
 
-Procedure TListTimeseriesResponse.Settimeseries(AIndex : Integer; AValue : TListTimeseriesResponseTypetimeseriesArray); 
+Procedure TListTimeseriesResponse.Settimeseries(AIndex : Integer; const AValue : TListTimeseriesResponseTypetimeseriesArray); 
 
 begin
   If (Ftimeseries=AValue) then exit;
@@ -934,7 +919,7 @@ end;
 
 
 
-Procedure TListTimeseriesResponse.Setyoungest(AIndex : Integer; AValue : TDatetime); 
+Procedure TListTimeseriesResponse.Setyoungest(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fyoungest=AValue) then exit;
@@ -974,7 +959,7 @@ end;
 
 
 
-Procedure TMetricDescriptor.Setlabels(AIndex : Integer; AValue : TMetricDescriptorTypelabelsArray); 
+Procedure TMetricDescriptor.Setlabels(AIndex : Integer; const AValue : TMetricDescriptorTypelabelsArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1004,7 +989,7 @@ end;
 
 
 
-Procedure TMetricDescriptor.SettypeDescriptor(AIndex : Integer; AValue : TMetricDescriptorTypeDescriptor); 
+Procedure TMetricDescriptor.SettypeDescriptor(AIndex : Integer; const AValue : TMetricDescriptorTypeDescriptor); 
 
 begin
   If (FtypeDescriptor=AValue) then exit;
@@ -1088,7 +1073,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPoint.SetboolValue(AIndex : Integer; AValue : boolean); 
+Procedure TPoint.SetboolValue(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FboolValue=AValue) then exit;
@@ -1098,7 +1083,7 @@ end;
 
 
 
-Procedure TPoint.SetdistributionValue(AIndex : Integer; AValue : TPointDistribution); 
+Procedure TPoint.SetdistributionValue(AIndex : Integer; const AValue : TPointDistribution); 
 
 begin
   If (FdistributionValue=AValue) then exit;
@@ -1108,7 +1093,7 @@ end;
 
 
 
-Procedure TPoint.SetdoubleValue(AIndex : Integer; AValue : double); 
+Procedure TPoint.SetdoubleValue(AIndex : Integer; const AValue : double); 
 
 begin
   If (FdoubleValue=AValue) then exit;
@@ -1118,7 +1103,7 @@ end;
 
 
 
-Procedure TPoint.Set_end(AIndex : Integer; AValue : TDatetime); 
+Procedure TPoint.Set_end(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (F_end=AValue) then exit;
@@ -1138,7 +1123,7 @@ end;
 
 
 
-Procedure TPoint.Setstart(AIndex : Integer; AValue : TDatetime); 
+Procedure TPoint.Setstart(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fstart=AValue) then exit;
@@ -1176,7 +1161,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPointDistribution.Setbuckets(AIndex : Integer; AValue : TPointDistributionTypebucketsArray); 
+Procedure TPointDistribution.Setbuckets(AIndex : Integer; const AValue : TPointDistributionTypebucketsArray); 
 
 begin
   If (Fbuckets=AValue) then exit;
@@ -1186,7 +1171,7 @@ end;
 
 
 
-Procedure TPointDistribution.SetoverflowBucket(AIndex : Integer; AValue : TPointDistributionOverflowBucket); 
+Procedure TPointDistribution.SetoverflowBucket(AIndex : Integer; const AValue : TPointDistributionOverflowBucket); 
 
 begin
   If (FoverflowBucket=AValue) then exit;
@@ -1196,7 +1181,7 @@ end;
 
 
 
-Procedure TPointDistribution.SetunderflowBucket(AIndex : Integer; AValue : TPointDistributionUnderflowBucket); 
+Procedure TPointDistribution.SetunderflowBucket(AIndex : Integer; const AValue : TPointDistributionUnderflowBucket); 
 
 begin
   If (FunderflowBucket=AValue) then exit;
@@ -1236,7 +1221,7 @@ end;
 
 
 
-Procedure TPointDistributionBucket.SetlowerBound(AIndex : Integer; AValue : double); 
+Procedure TPointDistributionBucket.SetlowerBound(AIndex : Integer; const AValue : double); 
 
 begin
   If (FlowerBound=AValue) then exit;
@@ -1246,7 +1231,7 @@ end;
 
 
 
-Procedure TPointDistributionBucket.SetupperBound(AIndex : Integer; AValue : double); 
+Procedure TPointDistributionBucket.SetupperBound(AIndex : Integer; const AValue : double); 
 
 begin
   If (FupperBound=AValue) then exit;
@@ -1273,7 +1258,7 @@ end;
 
 
 
-Procedure TPointDistributionOverflowBucket.SetlowerBound(AIndex : Integer; AValue : double); 
+Procedure TPointDistributionOverflowBucket.SetlowerBound(AIndex : Integer; const AValue : double); 
 
 begin
   If (FlowerBound=AValue) then exit;
@@ -1300,7 +1285,7 @@ end;
 
 
 
-Procedure TPointDistributionUnderflowBucket.SetupperBound(AIndex : Integer; AValue : double); 
+Procedure TPointDistributionUnderflowBucket.SetupperBound(AIndex : Integer; const AValue : double); 
 
 begin
   If (FupperBound=AValue) then exit;
@@ -1317,7 +1302,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTimeseries.Setpoints(AIndex : Integer; AValue : TTimeseriesTypepointsArray); 
+Procedure TTimeseries.Setpoints(AIndex : Integer; const AValue : TTimeseriesTypepointsArray); 
 
 begin
   If (Fpoints=AValue) then exit;
@@ -1327,7 +1312,7 @@ end;
 
 
 
-Procedure TTimeseries.SettimeseriesDesc(AIndex : Integer; AValue : TTimeseriesDescriptor); 
+Procedure TTimeseries.SettimeseriesDesc(AIndex : Integer; const AValue : TTimeseriesDescriptor); 
 
 begin
   If (FtimeseriesDesc=AValue) then exit;
@@ -1370,7 +1355,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTimeseriesDescriptor.Setlabels(AIndex : Integer; AValue : TTimeseriesDescriptorTypelabels); 
+Procedure TTimeseriesDescriptor.Setlabels(AIndex : Integer; const AValue : TTimeseriesDescriptorTypelabels); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1434,7 +1419,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTimeseriesPoint.Setpoint(AIndex : Integer; AValue : TPoint); 
+Procedure TTimeseriesPoint.Setpoint(AIndex : Integer; const AValue : TPoint); 
 
 begin
   If (Fpoint=AValue) then exit;
@@ -1444,7 +1429,7 @@ end;
 
 
 
-Procedure TTimeseriesPoint.SettimeseriesDesc(AIndex : Integer; AValue : TTimeseriesDescriptor); 
+Procedure TTimeseriesPoint.SettimeseriesDesc(AIndex : Integer; const AValue : TTimeseriesDescriptor); 
 
 begin
   If (FtimeseriesDesc=AValue) then exit;
@@ -1474,7 +1459,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TWriteTimeseriesRequest.SetcommonLabels(AIndex : Integer; AValue : TWriteTimeseriesRequestTypecommonLabels); 
+Procedure TWriteTimeseriesRequest.SetcommonLabels(AIndex : Integer; const AValue : TWriteTimeseriesRequestTypecommonLabels); 
 
 begin
   If (FcommonLabels=AValue) then exit;
@@ -1484,7 +1469,7 @@ end;
 
 
 
-Procedure TWriteTimeseriesRequest.Settimeseries(AIndex : Integer; AValue : TWriteTimeseriesRequestTypetimeseriesArray); 
+Procedure TWriteTimeseriesRequest.Settimeseries(AIndex : Integer; const AValue : TWriteTimeseriesRequestTypetimeseriesArray); 
 
 begin
   If (Ftimeseries=AValue) then exit;
@@ -1744,7 +1729,7 @@ end;
 Class Function TCloudmonitoringAPI.APIRevision : String;
 
 begin
-  Result:='20150210';
+  Result:='20160415';
 end;
 
 Class Function TCloudmonitoringAPI.APIID : String;
@@ -1762,7 +1747,7 @@ end;
 Class Function TCloudmonitoringAPI.APIDescription : String;
 
 begin
-  Result:='API for accessing Google Cloud and API monitoring data.';
+  Result:='Accesses Google Cloud Monitoring data.';
 end;
 
 Class Function TCloudmonitoringAPI.APIOwnerDomain : String;
@@ -1798,7 +1783,7 @@ end;
 Class Function TCloudmonitoringAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TCloudmonitoringAPI.APIbasePath : string;
@@ -1810,7 +1795,7 @@ end;
 Class Function TCloudmonitoringAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/cloudmonitoring/v2beta2/projects/';
+  Result:='https://www.googleapis.com/cloudmonitoring/v2beta2/projects/';
 end;
 
 Class Function TCloudmonitoringAPI.APIProtocol : string;
@@ -1834,9 +1819,11 @@ end;
 Class Function TCloudmonitoringAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,1);
-  Result[0].Name:='https://www.googleapis.com/auth/monitoring';
-  Result[0].Description:='View and write monitoring data for all of your Google and third-party Cloud and API projects';
+  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/monitoring';
+  Result[1].Description:='View and write monitoring data for all of your Google and third-party Cloud and API projects';
   
 end;
 

+ 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
+ 487 - 76
packages/googleapi/src/googlecompute.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
+ 522 - 232
packages/googleapi/src/googlecontainer.pp


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


+ 53 - 66
packages/googleapi/src/googlecoordinate.pp

@@ -1,19 +1,4 @@
 unit googlecoordinate;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:01
 {$MODE objfpc}
 {$H+}
 
@@ -108,12 +93,12 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setenabled(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setenumitems(AIndex : Integer; AValue : TCustomFieldDefTypeenumitemsArray); virtual;
+    Procedure Setenabled(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setenumitems(AIndex : Integer; const AValue : TCustomFieldDefTypeenumitemsArray); 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 SetrequiredForCheckout(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetrequiredForCheckout(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -141,7 +126,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TCustomFieldDefListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TCustomFieldDefListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -164,7 +149,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure SetcustomField(AIndex : Integer; AValue : TCustomFieldsTypecustomFieldArray); virtual;
+    Procedure SetcustomField(AIndex : Integer; const AValue : TCustomFieldsTypecustomFieldArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -188,7 +173,7 @@ type
     Fvalue : String;
   Protected
     //Property setters
-    Procedure Setactive(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setactive(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -212,9 +197,9 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetjobChange(AIndex : Integer; AValue : TJobTypejobChangeArray); virtual;
+    Procedure SetjobChange(AIndex : Integer; const AValue : TJobTypejobChangeArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstate(AIndex : Integer; AValue : TJobState); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : TJobState); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -240,7 +225,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstate(AIndex : Integer; AValue : TJobState); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : TJobState); virtual;
     Procedure Settimestamp(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -261,7 +246,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TJobListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TJobListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -294,12 +279,12 @@ type
   Protected
     //Property setters
     Procedure Setassignee(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcustomFields(AIndex : Integer; AValue : TCustomFields); virtual;
+    Procedure SetcustomFields(AIndex : Integer; const AValue : TCustomFields); virtual;
     Procedure SetcustomerName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomerPhoneNumber(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlocation(AIndex : Integer; AValue : TLocation); virtual;
-    Procedure Setnote(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TLocation); virtual;
+    Procedure Setnote(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setprogress(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -332,10 +317,10 @@ type
     Flng : double;
   Protected
     //Property setters
-    Procedure SetaddressLine(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetaddressLine(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlat(AIndex : Integer; AValue : double); virtual;
-    Procedure Setlng(AIndex : Integer; AValue : double); virtual;
+    Procedure Setlat(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlng(AIndex : Integer; const AValue : double); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -361,10 +346,10 @@ type
     FtokenPagination : TTokenPagination;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TLocationListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TLocationListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettokenPagination(AIndex : Integer; AValue : TTokenPagination); 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;
@@ -392,10 +377,10 @@ type
   Protected
     //Property setters
     Procedure SetcollectionTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetconfidenceRadius(AIndex : Integer; AValue : double); virtual;
+    Procedure SetconfidenceRadius(AIndex : Integer; const AValue : double); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlatitude(AIndex : Integer; AValue : double); virtual;
-    Procedure Setlongitude(AIndex : Integer; AValue : double); virtual;
+    Procedure Setlatitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlongitude(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property collectionTime : String Index 0 Read FcollectionTime Write SetcollectionTime;
@@ -419,7 +404,7 @@ type
     FstartTime : String;
   Protected
     //Property setters
-    Procedure SetallDay(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetallDay(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setduration(AIndex : Integer; const AValue : String); virtual;
     Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
@@ -466,7 +451,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTeamListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTeamListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -530,7 +515,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TWorkerListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TWorkerListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -580,6 +565,7 @@ type
   TJobsListOptions = Record
     maxResults : integer;
     minModifiedTimestampMs : String;
+    omitJobChanges : boolean;
     pageToken : String;
   end;
   
@@ -830,7 +816,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TCustomFieldDef.Setenabled(AIndex : Integer; AValue : boolean); 
+Procedure TCustomFieldDef.Setenabled(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fenabled=AValue) then exit;
@@ -840,7 +826,7 @@ end;
 
 
 
-Procedure TCustomFieldDef.Setenumitems(AIndex : Integer; AValue : TCustomFieldDefTypeenumitemsArray); 
+Procedure TCustomFieldDef.Setenumitems(AIndex : Integer; const AValue : TCustomFieldDefTypeenumitemsArray); 
 
 begin
   If (Fenumitems=AValue) then exit;
@@ -880,7 +866,7 @@ end;
 
 
 
-Procedure TCustomFieldDef.SetrequiredForCheckout(AIndex : Integer; AValue : boolean); 
+Procedure TCustomFieldDef.SetrequiredForCheckout(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FrequiredForCheckout=AValue) then exit;
@@ -931,7 +917,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TCustomFieldDefListResponse.Setitems(AIndex : Integer; AValue : TCustomFieldDefListResponseTypeitemsArray); 
+Procedure TCustomFieldDefListResponse.Setitems(AIndex : Integer; const AValue : TCustomFieldDefListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -971,7 +957,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TCustomFields.SetcustomField(AIndex : Integer; AValue : TCustomFieldsTypecustomFieldArray); 
+Procedure TCustomFields.SetcustomField(AIndex : Integer; const AValue : TCustomFieldsTypecustomFieldArray); 
 
 begin
   If (FcustomField=AValue) then exit;
@@ -1011,7 +997,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TEnumItemDef.Setactive(AIndex : Integer; AValue : boolean); 
+Procedure TEnumItemDef.Setactive(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Factive=AValue) then exit;
@@ -1058,7 +1044,7 @@ end;
 
 
 
-Procedure TJob.SetjobChange(AIndex : Integer; AValue : TJobTypejobChangeArray); 
+Procedure TJob.SetjobChange(AIndex : Integer; const AValue : TJobTypejobChangeArray); 
 
 begin
   If (FjobChange=AValue) then exit;
@@ -1078,7 +1064,7 @@ end;
 
 
 
-Procedure TJob.Setstate(AIndex : Integer; AValue : TJobState); 
+Procedure TJob.Setstate(AIndex : Integer; const AValue : TJobState); 
 
 begin
   If (Fstate=AValue) then exit;
@@ -1118,7 +1104,7 @@ end;
 
 
 
-Procedure TJobChange.Setstate(AIndex : Integer; AValue : TJobState); 
+Procedure TJobChange.Setstate(AIndex : Integer; const AValue : TJobState); 
 
 begin
   If (Fstate=AValue) then exit;
@@ -1145,7 +1131,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TJobListResponse.Setitems(AIndex : Integer; AValue : TJobListResponseTypeitemsArray); 
+Procedure TJobListResponse.Setitems(AIndex : Integer; const AValue : TJobListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1205,7 +1191,7 @@ end;
 
 
 
-Procedure TJobState.SetcustomFields(AIndex : Integer; AValue : TCustomFields); 
+Procedure TJobState.SetcustomFields(AIndex : Integer; const AValue : TCustomFields); 
 
 begin
   If (FcustomFields=AValue) then exit;
@@ -1245,7 +1231,7 @@ end;
 
 
 
-Procedure TJobState.Setlocation(AIndex : Integer; AValue : TLocation); 
+Procedure TJobState.Setlocation(AIndex : Integer; const AValue : TLocation); 
 
 begin
   If (Flocation=AValue) then exit;
@@ -1255,7 +1241,7 @@ end;
 
 
 
-Procedure TJobState.Setnote(AIndex : Integer; AValue : TStringArray); 
+Procedure TJobState.Setnote(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fnote=AValue) then exit;
@@ -1305,7 +1291,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLocation.SetaddressLine(AIndex : Integer; AValue : TStringArray); 
+Procedure TLocation.SetaddressLine(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FaddressLine=AValue) then exit;
@@ -1325,7 +1311,7 @@ end;
 
 
 
-Procedure TLocation.Setlat(AIndex : Integer; AValue : double); 
+Procedure TLocation.Setlat(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flat=AValue) then exit;
@@ -1335,7 +1321,7 @@ end;
 
 
 
-Procedure TLocation.Setlng(AIndex : Integer; AValue : double); 
+Procedure TLocation.Setlng(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flng=AValue) then exit;
@@ -1365,7 +1351,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLocationListResponse.Setitems(AIndex : Integer; AValue : TLocationListResponseTypeitemsArray); 
+Procedure TLocationListResponse.Setitems(AIndex : Integer; const AValue : TLocationListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1395,7 +1381,7 @@ end;
 
 
 
-Procedure TLocationListResponse.SettokenPagination(AIndex : Integer; AValue : TTokenPagination); 
+Procedure TLocationListResponse.SettokenPagination(AIndex : Integer; const AValue : TTokenPagination); 
 
 begin
   If (FtokenPagination=AValue) then exit;
@@ -1435,7 +1421,7 @@ end;
 
 
 
-Procedure TLocationRecord.SetconfidenceRadius(AIndex : Integer; AValue : double); 
+Procedure TLocationRecord.SetconfidenceRadius(AIndex : Integer; const AValue : double); 
 
 begin
   If (FconfidenceRadius=AValue) then exit;
@@ -1455,7 +1441,7 @@ end;
 
 
 
-Procedure TLocationRecord.Setlatitude(AIndex : Integer; AValue : double); 
+Procedure TLocationRecord.Setlatitude(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flatitude=AValue) then exit;
@@ -1465,7 +1451,7 @@ end;
 
 
 
-Procedure TLocationRecord.Setlongitude(AIndex : Integer; AValue : double); 
+Procedure TLocationRecord.Setlongitude(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flongitude=AValue) then exit;
@@ -1482,7 +1468,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSchedule.SetallDay(AIndex : Integer; AValue : boolean); 
+Procedure TSchedule.SetallDay(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FallDay=AValue) then exit;
@@ -1576,7 +1562,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTeamListResponse.Setitems(AIndex : Integer; AValue : TTeamListResponseTypeitemsArray); 
+Procedure TTeamListResponse.Setitems(AIndex : Integer; const AValue : TTeamListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1680,7 +1666,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TWorkerListResponse.Setitems(AIndex : Integer; AValue : TWorkerListResponseTypeitemsArray); 
+Procedure TWorkerListResponse.Setitems(AIndex : Integer; const AValue : TWorkerListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1841,6 +1827,7 @@ begin
   _Q:='';
   AddToQuery(_Q,'maxResults',AQuery.maxResults);
   AddToQuery(_Q,'minModifiedTimestampMs',AQuery.minModifiedTimestampMs);
+  AddToQuery(_Q,'omitJobChanges',AQuery.omitJobChanges);
   AddToQuery(_Q,'pageToken',AQuery.pageToken);
   Result:=List(teamId,_Q);
 end;
@@ -2158,7 +2145,7 @@ end;
 Class Function TCoordinateAPI.APIRevision : String;
 
 begin
-  Result:='20141215';
+  Result:='20150811';
 end;
 
 Class Function TCoordinateAPI.APIID : String;
@@ -2212,7 +2199,7 @@ end;
 Class Function TCoordinateAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TCoordinateAPI.APIbasePath : string;
@@ -2224,7 +2211,7 @@ end;
 Class Function TCoordinateAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/coordinate/v1/';
+  Result:='https://www.googleapis.com/coordinate/v1/';
 end;
 
 Class Function TCoordinateAPI.APIProtocol : string;

+ 51 - 66
packages/googleapi/src/googlecustomsearch.pp

@@ -1,19 +1,4 @@
 unit googlecustomsearch;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:01
 {$MODE objfpc}
 {$H+}
 
@@ -85,7 +70,7 @@ type
     Ftitle : String;
   Protected
     //Property setters
-    Procedure Setfacets(AIndex : Integer; AValue : TContextTypefacetsArray); virtual;
+    Procedure Setfacets(AIndex : Integer; const AValue : TContextTypefacetsArray); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -134,9 +119,9 @@ type
     Fwidth : integer;
   Protected
     //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setsource(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property height : integer Index 0 Read Fheight Write Setheight;
@@ -159,10 +144,10 @@ type
     Ftitle : String;
   Protected
     //Property setters
-    Procedure SetbodyLines(AIndex : Integer; AValue : TPromotionTypebodyLinesArray); virtual;
+    Procedure SetbodyLines(AIndex : Integer; const AValue : TPromotionTypebodyLinesArray); virtual;
     Procedure SetdisplayLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SethtmlTitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TPromotionTypeimage); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TPromotionTypeimage); virtual;
     Procedure Setlink(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -225,7 +210,7 @@ type
     FtotalResults : String;
   Protected
     //Property setters
-    Procedure Setcount(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setcount(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setcr(AIndex : Integer; const AValue : String); virtual;
     Procedure Setcref(AIndex : Integer; const AValue : String); virtual;
     Procedure Setcx(AIndex : Integer; const AValue : String); virtual;
@@ -258,8 +243,8 @@ type
     Procedure SetsiteSearch(AIndex : Integer; const AValue : String); virtual;
     Procedure SetsiteSearchFilter(AIndex : Integer; const AValue : String); virtual;
     Procedure Setsort(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetstartIndex(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetstartPage(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetstartIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartPage(AIndex : Integer; const AValue : integer); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     Procedure SettotalResults(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -319,13 +304,13 @@ type
     Fwidth : integer;
   Protected
     //Property setters
-    Procedure SetbyteSize(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetbyteSize(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetcontextLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetthumbnailHeight(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetthumbnailHeight(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetthumbnailLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetthumbnailWidth(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetthumbnailWidth(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property byteSize : integer Index 0 Read FbyteSize Write SetbyteSize;
@@ -404,12 +389,12 @@ type
     Procedure SethtmlFormattedUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SethtmlSnippet(AIndex : Integer; const AValue : String); virtual;
     Procedure SethtmlTitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setimage(AIndex : Integer; AValue : TResultTypeimage); virtual;
+    Procedure Setimage(AIndex : Integer; const AValue : TResultTypeimage); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TResultTypelabelsArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TResultTypelabelsArray); virtual;
     Procedure Setlink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setmime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpagemap(AIndex : Integer; AValue : TResultTypepagemap); virtual;
+    Procedure Setpagemap(AIndex : Integer; const AValue : TResultTypepagemap); virtual;
     Procedure Setsnippet(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -464,7 +449,7 @@ type
     //Property setters
     Procedure SetformattedSearchTime(AIndex : Integer; const AValue : String); virtual;
     Procedure SetformattedTotalResults(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsearchTime(AIndex : Integer; AValue : double); virtual;
+    Procedure SetsearchTime(AIndex : Integer; const AValue : double); virtual;
     Procedure SettotalResults(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -530,14 +515,14 @@ type
     Furl : TSearchTypeurl;
   Protected
     //Property setters
-    Procedure Setcontext(AIndex : Integer; AValue : TContext); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TSearchTypeitemsArray); virtual;
+    Procedure Setcontext(AIndex : Integer; const AValue : TContext); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSearchTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpromotions(AIndex : Integer; AValue : TSearchTypepromotionsArray); virtual;
-    Procedure Setqueries(AIndex : Integer; AValue : TSearchTypequeries); virtual;
-    Procedure SetsearchInformation(AIndex : Integer; AValue : TSearchTypesearchInformation); virtual;
-    Procedure Setspelling(AIndex : Integer; AValue : TSearchTypespelling); virtual;
-    Procedure Seturl(AIndex : Integer; AValue : TSearchTypeurl); virtual;
+    Procedure Setpromotions(AIndex : Integer; const AValue : TSearchTypepromotionsArray); virtual;
+    Procedure Setqueries(AIndex : Integer; const AValue : TSearchTypequeries); virtual;
+    Procedure SetsearchInformation(AIndex : Integer; const AValue : TSearchTypesearchInformation); virtual;
+    Procedure Setspelling(AIndex : Integer; const AValue : TSearchTypespelling); virtual;
+    Procedure Seturl(AIndex : Integer; const AValue : TSearchTypeurl); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -699,7 +684,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TContext.Setfacets(AIndex : Integer; AValue : TContextTypefacetsArray); 
+Procedure TContext.Setfacets(AIndex : Integer; const AValue : TContextTypefacetsArray); 
 
 begin
   If (Ffacets=AValue) then exit;
@@ -786,7 +771,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPromotionTypeimage.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TPromotionTypeimage.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -806,7 +791,7 @@ end;
 
 
 
-Procedure TPromotionTypeimage.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TPromotionTypeimage.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -823,7 +808,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPromotion.SetbodyLines(AIndex : Integer; AValue : TPromotionTypebodyLinesArray); 
+Procedure TPromotion.SetbodyLines(AIndex : Integer; const AValue : TPromotionTypebodyLinesArray); 
 
 begin
   If (FbodyLines=AValue) then exit;
@@ -853,7 +838,7 @@ end;
 
 
 
-Procedure TPromotion.Setimage(AIndex : Integer; AValue : TPromotionTypeimage); 
+Procedure TPromotion.Setimage(AIndex : Integer; const AValue : TPromotionTypeimage); 
 
 begin
   If (Fimage=AValue) then exit;
@@ -903,7 +888,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TQuery.Setcount(AIndex : Integer; AValue : integer); 
+Procedure TQuery.Setcount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fcount=AValue) then exit;
@@ -1233,7 +1218,7 @@ end;
 
 
 
-Procedure TQuery.SetstartIndex(AIndex : Integer; AValue : integer); 
+Procedure TQuery.SetstartIndex(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstartIndex=AValue) then exit;
@@ -1243,7 +1228,7 @@ end;
 
 
 
-Procedure TQuery.SetstartPage(AIndex : Integer; AValue : integer); 
+Procedure TQuery.SetstartPage(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstartPage=AValue) then exit;
@@ -1280,7 +1265,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TResultTypeimage.SetbyteSize(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeimage.SetbyteSize(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FbyteSize=AValue) then exit;
@@ -1300,7 +1285,7 @@ end;
 
 
 
-Procedure TResultTypeimage.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeimage.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -1310,7 +1295,7 @@ end;
 
 
 
-Procedure TResultTypeimage.SetthumbnailHeight(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeimage.SetthumbnailHeight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FthumbnailHeight=AValue) then exit;
@@ -1330,7 +1315,7 @@ end;
 
 
 
-Procedure TResultTypeimage.SetthumbnailWidth(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeimage.SetthumbnailWidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FthumbnailWidth=AValue) then exit;
@@ -1340,7 +1325,7 @@ end;
 
 
 
-Procedure TResultTypeimage.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeimage.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -1477,7 +1462,7 @@ end;
 
 
 
-Procedure TResult.Setimage(AIndex : Integer; AValue : TResultTypeimage); 
+Procedure TResult.Setimage(AIndex : Integer; const AValue : TResultTypeimage); 
 
 begin
   If (Fimage=AValue) then exit;
@@ -1497,7 +1482,7 @@ end;
 
 
 
-Procedure TResult.Setlabels(AIndex : Integer; AValue : TResultTypelabelsArray); 
+Procedure TResult.Setlabels(AIndex : Integer; const AValue : TResultTypelabelsArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1527,7 +1512,7 @@ end;
 
 
 
-Procedure TResult.Setpagemap(AIndex : Integer; AValue : TResultTypepagemap); 
+Procedure TResult.Setpagemap(AIndex : Integer; const AValue : TResultTypepagemap); 
 
 begin
   If (Fpagemap=AValue) then exit;
@@ -1610,7 +1595,7 @@ end;
 
 
 
-Procedure TSearchTypesearchInformation.SetsearchTime(AIndex : Integer; AValue : double); 
+Procedure TSearchTypesearchInformation.SetsearchTime(AIndex : Integer; const AValue : double); 
 
 begin
   If (FsearchTime=AValue) then exit;
@@ -1702,7 +1687,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSearch.Setcontext(AIndex : Integer; AValue : TContext); 
+Procedure TSearch.Setcontext(AIndex : Integer; const AValue : TContext); 
 
 begin
   If (Fcontext=AValue) then exit;
@@ -1712,7 +1697,7 @@ end;
 
 
 
-Procedure TSearch.Setitems(AIndex : Integer; AValue : TSearchTypeitemsArray); 
+Procedure TSearch.Setitems(AIndex : Integer; const AValue : TSearchTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1732,7 +1717,7 @@ end;
 
 
 
-Procedure TSearch.Setpromotions(AIndex : Integer; AValue : TSearchTypepromotionsArray); 
+Procedure TSearch.Setpromotions(AIndex : Integer; const AValue : TSearchTypepromotionsArray); 
 
 begin
   If (Fpromotions=AValue) then exit;
@@ -1742,7 +1727,7 @@ end;
 
 
 
-Procedure TSearch.Setqueries(AIndex : Integer; AValue : TSearchTypequeries); 
+Procedure TSearch.Setqueries(AIndex : Integer; const AValue : TSearchTypequeries); 
 
 begin
   If (Fqueries=AValue) then exit;
@@ -1752,7 +1737,7 @@ end;
 
 
 
-Procedure TSearch.SetsearchInformation(AIndex : Integer; AValue : TSearchTypesearchInformation); 
+Procedure TSearch.SetsearchInformation(AIndex : Integer; const AValue : TSearchTypesearchInformation); 
 
 begin
   If (FsearchInformation=AValue) then exit;
@@ -1762,7 +1747,7 @@ end;
 
 
 
-Procedure TSearch.Setspelling(AIndex : Integer; AValue : TSearchTypespelling); 
+Procedure TSearch.Setspelling(AIndex : Integer; const AValue : TSearchTypespelling); 
 
 begin
   If (Fspelling=AValue) then exit;
@@ -1772,7 +1757,7 @@ end;
 
 
 
-Procedure TSearch.Seturl(AIndex : Integer; AValue : TSearchTypeurl); 
+Procedure TSearch.Seturl(AIndex : Integer; const AValue : TSearchTypeurl); 
 
 begin
   If (Furl=AValue) then exit;
@@ -1890,7 +1875,7 @@ end;
 Class Function TCustomsearchAPI.APIRevision : String;
 
 begin
-  Result:='20131205';
+  Result:='20160411';
 end;
 
 Class Function TCustomsearchAPI.APIID : String;
@@ -1944,7 +1929,7 @@ end;
 Class Function TCustomsearchAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TCustomsearchAPI.APIbasePath : string;
@@ -1956,7 +1941,7 @@ end;
 Class Function TCustomsearchAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/customsearch/';
+  Result:='https://www.googleapis.com/customsearch/';
 end;
 
 Class Function TCustomsearchAPI.APIProtocol : string;

File diff suppressed because it is too large
+ 491 - 472
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
+ 485 - 550
packages/googleapi/src/googledatastore.pp


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


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


+ 138 - 127
packages/googleapi/src/googlediscovery.pp

@@ -1,19 +1,4 @@
 unit googlediscovery;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:02
 {$MODE objfpc}
 {$H+}
 
@@ -104,12 +89,12 @@ type
     Procedure SetdiscoveryLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdiscoveryRestUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdocumentationLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seticons(AIndex : Integer; AValue : TDirectoryListTypeitemsItemTypeicons); virtual;
+    Procedure Seticons(AIndex : Integer; const AValue : TDirectoryListTypeitemsItemTypeicons); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpreferred(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setpreferred(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     Procedure Setversion(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -145,7 +130,7 @@ type
   Protected
     //Property setters
     Procedure SetdiscoveryVersion(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TDirectoryListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TDirectoryListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -168,7 +153,7 @@ type
     Frequired : TStringArray;
   Protected
     //Property setters
-    Procedure Setrequired(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setrequired(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -224,7 +209,7 @@ type
   Protected
     //Property setters
     Procedure Setdiscriminant(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmap(AIndex : Integer; AValue : TJsonSchemaTypevariantTypemapArray); virtual;
+    Procedure Setmap(AIndex : Integer; const AValue : TJsonSchemaTypevariantTypemapArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -266,25 +251,25 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure Setref(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetadditionalProperties(AIndex : Integer; AValue : TJsonSchema); virtual;
-    Procedure Setannotations(AIndex : Integer; AValue : TJsonSchemaTypeannotations); virtual;
+    Procedure SetadditionalProperties(AIndex : Integer; const AValue : TJsonSchema); virtual;
+    Procedure Setannotations(AIndex : Integer; const AValue : TJsonSchemaTypeannotations); virtual;
     Procedure Setdefault(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setenum(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetenumDescriptions(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setenum(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetenumDescriptions(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TJsonSchema); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TJsonSchema); virtual;
     Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
     Procedure Setmaximum(AIndex : Integer; const AValue : String); virtual;
     Procedure Setminimum(AIndex : Integer; const AValue : String); virtual;
     Procedure Setpattern(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setproperties(AIndex : Integer; AValue : TJsonSchemaTypeproperties); virtual;
-    Procedure SetreadOnly(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setrepeated(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setrequired(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TJsonSchemaTypeproperties); virtual;
+    Procedure SetreadOnly(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrepeated(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrequired(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setvariant(AIndex : Integer; AValue : TJsonSchemaTypevariant); virtual;
+    Procedure Setvariant(AIndex : Integer; const AValue : TJsonSchemaTypevariant); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -337,7 +322,7 @@ type
     Fscopes : TRestDescriptionTypeauthTypeoauth2Typescopes;
   Protected
     //Property setters
-    Procedure Setscopes(AIndex : Integer; AValue : TRestDescriptionTypeauthTypeoauth2Typescopes); virtual;
+    Procedure Setscopes(AIndex : Integer; const AValue : TRestDescriptionTypeauthTypeoauth2Typescopes); virtual;
   Public
   Published
     Property scopes : TRestDescriptionTypeauthTypeoauth2Typescopes Index 0 Read Fscopes Write Setscopes;
@@ -353,7 +338,7 @@ type
     Foauth2 : TRestDescriptionTypeauthTypeoauth2;
   Protected
     //Property setters
-    Procedure Setoauth2(AIndex : Integer; AValue : TRestDescriptionTypeauthTypeoauth2); virtual;
+    Procedure Setoauth2(AIndex : Integer; const AValue : TRestDescriptionTypeauthTypeoauth2); virtual;
   Public
   Published
     Property oauth2 : TRestDescriptionTypeauthTypeoauth2 Index 0 Read Foauth2 Write Setoauth2;
@@ -450,6 +435,7 @@ type
     FdiscoveryVersion : String;
     FdocumentationLink : String;
     Fetag : String;
+    FexponentialBackoffDefault : boolean;
     Ffeatures : TStringArray;
     Ficons : TRestDescriptionTypeicons;
     Fid : String;
@@ -469,9 +455,10 @@ type
     FservicePath : String;
     Ftitle : String;
     Fversion : String;
+    Fversion_module : boolean;
   Protected
     //Property setters
-    Procedure Setauth(AIndex : Integer; AValue : TRestDescriptionTypeauth); virtual;
+    Procedure Setauth(AIndex : Integer; const AValue : TRestDescriptionTypeauth); virtual;
     Procedure SetbasePath(AIndex : Integer; const AValue : String); virtual;
     Procedure SetbaseUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure SetbatchPath(AIndex : Integer; const AValue : String); virtual;
@@ -480,25 +467,27 @@ type
     Procedure SetdiscoveryVersion(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdocumentationLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfeatures(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Seticons(AIndex : Integer; AValue : TRestDescriptionTypeicons); virtual;
+    Procedure SetexponentialBackoffDefault(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setfeatures(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Seticons(AIndex : Integer; const AValue : TRestDescriptionTypeicons); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setmethods(AIndex : Integer; AValue : TRestDescriptionTypemethods); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmethods(AIndex : Integer; const AValue : TRestDescriptionTypemethods); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetownerDomain(AIndex : Integer; const AValue : String); virtual;
     Procedure SetownerName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpackagePath(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparameters(AIndex : Integer; AValue : TRestDescriptionTypeparameters); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TRestDescriptionTypeparameters); virtual;
     Procedure Setprotocol(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresources(AIndex : Integer; AValue : TRestDescriptionTyperesources); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TRestDescriptionTyperesources); virtual;
     Procedure Setrevision(AIndex : Integer; const AValue : String); virtual;
     Procedure SetrootUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setschemas(AIndex : Integer; AValue : TRestDescriptionTypeschemas); virtual;
+    Procedure Setschemas(AIndex : Integer; const AValue : TRestDescriptionTypeschemas); virtual;
     Procedure SetservicePath(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     Procedure Setversion(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setversion_module(AIndex : Integer; const AValue : boolean); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -514,25 +503,27 @@ type
     Property discoveryVersion : String Index 48 Read FdiscoveryVersion Write SetdiscoveryVersion;
     Property documentationLink : String Index 56 Read FdocumentationLink Write SetdocumentationLink;
     Property etag : String Index 64 Read Fetag Write Setetag;
-    Property features : TStringArray Index 72 Read Ffeatures Write Setfeatures;
-    Property icons : TRestDescriptionTypeicons Index 80 Read Ficons Write Seticons;
-    Property id : String Index 88 Read Fid Write Setid;
-    Property kind : String Index 96 Read Fkind Write Setkind;
-    Property labels : TStringArray Index 104 Read Flabels Write Setlabels;
-    Property methods : TRestDescriptionTypemethods Index 112 Read Fmethods Write Setmethods;
-    Property name : String Index 120 Read Fname Write Setname;
-    Property ownerDomain : String Index 128 Read FownerDomain Write SetownerDomain;
-    Property ownerName : String Index 136 Read FownerName Write SetownerName;
-    Property packagePath : String Index 144 Read FpackagePath Write SetpackagePath;
-    Property parameters : TRestDescriptionTypeparameters Index 152 Read Fparameters Write Setparameters;
-    Property protocol : String Index 160 Read Fprotocol Write Setprotocol;
-    Property resources : TRestDescriptionTyperesources Index 168 Read Fresources Write Setresources;
-    Property revision : String Index 176 Read Frevision Write Setrevision;
-    Property rootUrl : String Index 184 Read FrootUrl Write SetrootUrl;
-    Property schemas : TRestDescriptionTypeschemas Index 192 Read Fschemas Write Setschemas;
-    Property servicePath : String Index 200 Read FservicePath Write SetservicePath;
-    Property title : String Index 208 Read Ftitle Write Settitle;
-    Property version : String Index 216 Read Fversion Write Setversion;
+    Property exponentialBackoffDefault : boolean Index 72 Read FexponentialBackoffDefault Write SetexponentialBackoffDefault;
+    Property features : TStringArray Index 80 Read Ffeatures Write Setfeatures;
+    Property icons : TRestDescriptionTypeicons Index 88 Read Ficons Write Seticons;
+    Property id : String Index 96 Read Fid Write Setid;
+    Property kind : String Index 104 Read Fkind Write Setkind;
+    Property labels : TStringArray Index 112 Read Flabels Write Setlabels;
+    Property methods : TRestDescriptionTypemethods Index 120 Read Fmethods Write Setmethods;
+    Property name : String Index 128 Read Fname Write Setname;
+    Property ownerDomain : String Index 136 Read FownerDomain Write SetownerDomain;
+    Property ownerName : String Index 144 Read FownerName Write SetownerName;
+    Property packagePath : String Index 152 Read FpackagePath Write SetpackagePath;
+    Property parameters : TRestDescriptionTypeparameters Index 160 Read Fparameters Write Setparameters;
+    Property protocol : String Index 168 Read Fprotocol Write Setprotocol;
+    Property resources : TRestDescriptionTyperesources Index 176 Read Fresources Write Setresources;
+    Property revision : String Index 184 Read Frevision Write Setrevision;
+    Property rootUrl : String Index 192 Read FrootUrl Write SetrootUrl;
+    Property schemas : TRestDescriptionTypeschemas Index 200 Read Fschemas Write Setschemas;
+    Property servicePath : String Index 208 Read FservicePath Write SetservicePath;
+    Property title : String Index 216 Read Ftitle Write Settitle;
+    Property version : String Index 224 Read Fversion Write Setversion;
+    Property version_module : boolean Index 232 Read Fversion_module Write Setversion_module;
   end;
   TRestDescriptionClass = Class of TRestDescription;
   
@@ -546,7 +537,7 @@ type
     Fpath : String;
   Protected
     //Property setters
-    Procedure Setmultipart(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setmultipart(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -565,7 +556,7 @@ type
     Fpath : String;
   Protected
     //Property setters
-    Procedure Setmultipart(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setmultipart(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -584,8 +575,8 @@ type
     Fsimple : TRestMethodTypemediaUploadTypeprotocolsTypesimple;
   Protected
     //Property setters
-    Procedure Setresumable(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocolsTyperesumable); virtual;
-    Procedure Setsimple(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocolsTypesimple); virtual;
+    Procedure Setresumable(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocolsTyperesumable); virtual;
+    Procedure Setsimple(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocolsTypesimple); virtual;
   Public
   Published
     Property resumable : TRestMethodTypemediaUploadTypeprotocolsTyperesumable Index 0 Read Fresumable Write Setresumable;
@@ -604,9 +595,9 @@ type
     Fprotocols : TRestMethodTypemediaUploadTypeprotocols;
   Protected
     //Property setters
-    Procedure Setaccept(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setaccept(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetmaxSize(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setprotocols(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocols); virtual;
+    Procedure Setprotocols(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocols); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -694,20 +685,20 @@ type
   Protected
     //Property setters
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetetagRequired(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetetagRequired(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SethttpMethod(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmediaUpload(AIndex : Integer; AValue : TRestMethodTypemediaUpload); virtual;
-    Procedure SetparameterOrder(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setparameters(AIndex : Integer; AValue : TRestMethodTypeparameters); virtual;
+    Procedure SetmediaUpload(AIndex : Integer; const AValue : TRestMethodTypemediaUpload); virtual;
+    Procedure SetparameterOrder(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setparameters(AIndex : Integer; const AValue : TRestMethodTypeparameters); virtual;
     Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrequest(AIndex : Integer; AValue : TRestMethodTyperequest); virtual;
-    Procedure Setresponse(AIndex : Integer; AValue : TRestMethodTyperesponse); virtual;
-    Procedure Setscopes(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetsupportsMediaDownload(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsupportsMediaUpload(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsupportsSubscription(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetuseMediaDownloadService(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setrequest(AIndex : Integer; const AValue : TRestMethodTyperequest); virtual;
+    Procedure Setresponse(AIndex : Integer; const AValue : TRestMethodTyperesponse); virtual;
+    Procedure Setscopes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetsupportsMediaDownload(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsupportsMediaUpload(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsupportsSubscription(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetuseMediaDownloadService(AIndex : Integer; const AValue : boolean); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -770,8 +761,8 @@ type
     Fresources : TRestResourceTyperesources;
   Protected
     //Property setters
-    Procedure Setmethods(AIndex : Integer; AValue : TRestResourceTypemethods); virtual;
-    Procedure Setresources(AIndex : Integer; AValue : TRestResourceTyperesources); virtual;
+    Procedure Setmethods(AIndex : Integer; const AValue : TRestResourceTypemethods); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TRestResourceTyperesources); virtual;
   Public
   Published
     Property methods : TRestResourceTypemethods Index 0 Read Fmethods Write Setmethods;
@@ -913,7 +904,7 @@ end;
 
 
 
-Procedure TDirectoryListTypeitemsItem.Seticons(AIndex : Integer; AValue : TDirectoryListTypeitemsItemTypeicons); 
+Procedure TDirectoryListTypeitemsItem.Seticons(AIndex : Integer; const AValue : TDirectoryListTypeitemsItemTypeicons); 
 
 begin
   If (Ficons=AValue) then exit;
@@ -943,7 +934,7 @@ end;
 
 
 
-Procedure TDirectoryListTypeitemsItem.Setlabels(AIndex : Integer; AValue : TStringArray); 
+Procedure TDirectoryListTypeitemsItem.Setlabels(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -963,7 +954,7 @@ end;
 
 
 
-Procedure TDirectoryListTypeitemsItem.Setpreferred(AIndex : Integer; AValue : boolean); 
+Procedure TDirectoryListTypeitemsItem.Setpreferred(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fpreferred=AValue) then exit;
@@ -1023,7 +1014,7 @@ end;
 
 
 
-Procedure TDirectoryList.Setitems(AIndex : Integer; AValue : TDirectoryListTypeitemsArray); 
+Procedure TDirectoryList.Setitems(AIndex : Integer; const AValue : TDirectoryListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1063,7 +1054,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TJsonSchemaTypeannotations.Setrequired(AIndex : Integer; AValue : TStringArray); 
+Procedure TJsonSchemaTypeannotations.Setrequired(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Frequired=AValue) then exit;
@@ -1154,7 +1145,7 @@ end;
 
 
 
-Procedure TJsonSchemaTypevariant.Setmap(AIndex : Integer; AValue : TJsonSchemaTypevariantTypemapArray); 
+Procedure TJsonSchemaTypevariant.Setmap(AIndex : Integer; const AValue : TJsonSchemaTypevariantTypemapArray); 
 
 begin
   If (Fmap=AValue) then exit;
@@ -1194,7 +1185,7 @@ end;
 
 
 
-Procedure TJsonSchema.SetadditionalProperties(AIndex : Integer; AValue : TJsonSchema); 
+Procedure TJsonSchema.SetadditionalProperties(AIndex : Integer; const AValue : TJsonSchema); 
 
 begin
   If (FadditionalProperties=AValue) then exit;
@@ -1204,7 +1195,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setannotations(AIndex : Integer; AValue : TJsonSchemaTypeannotations); 
+Procedure TJsonSchema.Setannotations(AIndex : Integer; const AValue : TJsonSchemaTypeannotations); 
 
 begin
   If (Fannotations=AValue) then exit;
@@ -1234,7 +1225,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setenum(AIndex : Integer; AValue : TStringArray); 
+Procedure TJsonSchema.Setenum(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fenum=AValue) then exit;
@@ -1244,7 +1235,7 @@ end;
 
 
 
-Procedure TJsonSchema.SetenumDescriptions(AIndex : Integer; AValue : TStringArray); 
+Procedure TJsonSchema.SetenumDescriptions(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FenumDescriptions=AValue) then exit;
@@ -1274,7 +1265,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setitems(AIndex : Integer; AValue : TJsonSchema); 
+Procedure TJsonSchema.Setitems(AIndex : Integer; const AValue : TJsonSchema); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1324,7 +1315,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setproperties(AIndex : Integer; AValue : TJsonSchemaTypeproperties); 
+Procedure TJsonSchema.Setproperties(AIndex : Integer; const AValue : TJsonSchemaTypeproperties); 
 
 begin
   If (Fproperties=AValue) then exit;
@@ -1334,7 +1325,7 @@ end;
 
 
 
-Procedure TJsonSchema.SetreadOnly(AIndex : Integer; AValue : boolean); 
+Procedure TJsonSchema.SetreadOnly(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FreadOnly=AValue) then exit;
@@ -1344,7 +1335,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setrepeated(AIndex : Integer; AValue : boolean); 
+Procedure TJsonSchema.Setrepeated(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Frepeated=AValue) then exit;
@@ -1354,7 +1345,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setrequired(AIndex : Integer; AValue : boolean); 
+Procedure TJsonSchema.Setrequired(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Frequired=AValue) then exit;
@@ -1374,7 +1365,7 @@ end;
 
 
 
-Procedure TJsonSchema.Setvariant(AIndex : Integer; AValue : TJsonSchemaTypevariant); 
+Procedure TJsonSchema.Setvariant(AIndex : Integer; const AValue : TJsonSchemaTypevariant); 
 
 begin
   If (Fvariant=AValue) then exit;
@@ -1430,7 +1421,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestDescriptionTypeauthTypeoauth2.Setscopes(AIndex : Integer; AValue : TRestDescriptionTypeauthTypeoauth2Typescopes); 
+Procedure TRestDescriptionTypeauthTypeoauth2.Setscopes(AIndex : Integer; const AValue : TRestDescriptionTypeauthTypeoauth2Typescopes); 
 
 begin
   If (Fscopes=AValue) then exit;
@@ -1447,7 +1438,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestDescriptionTypeauth.Setoauth2(AIndex : Integer; AValue : TRestDescriptionTypeauthTypeoauth2); 
+Procedure TRestDescriptionTypeauth.Setoauth2(AIndex : Integer; const AValue : TRestDescriptionTypeauthTypeoauth2); 
 
 begin
   If (Foauth2=AValue) then exit;
@@ -1543,7 +1534,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestDescription.Setauth(AIndex : Integer; AValue : TRestDescriptionTypeauth); 
+Procedure TRestDescription.Setauth(AIndex : Integer; const AValue : TRestDescriptionTypeauth); 
 
 begin
   If (Fauth=AValue) then exit;
@@ -1633,7 +1624,17 @@ end;
 
 
 
-Procedure TRestDescription.Setfeatures(AIndex : Integer; AValue : TStringArray); 
+Procedure TRestDescription.SetexponentialBackoffDefault(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FexponentialBackoffDefault=AValue) then exit;
+  FexponentialBackoffDefault:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRestDescription.Setfeatures(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ffeatures=AValue) then exit;
@@ -1643,7 +1644,7 @@ end;
 
 
 
-Procedure TRestDescription.Seticons(AIndex : Integer; AValue : TRestDescriptionTypeicons); 
+Procedure TRestDescription.Seticons(AIndex : Integer; const AValue : TRestDescriptionTypeicons); 
 
 begin
   If (Ficons=AValue) then exit;
@@ -1673,7 +1674,7 @@ end;
 
 
 
-Procedure TRestDescription.Setlabels(AIndex : Integer; AValue : TStringArray); 
+Procedure TRestDescription.Setlabels(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1683,7 +1684,7 @@ end;
 
 
 
-Procedure TRestDescription.Setmethods(AIndex : Integer; AValue : TRestDescriptionTypemethods); 
+Procedure TRestDescription.Setmethods(AIndex : Integer; const AValue : TRestDescriptionTypemethods); 
 
 begin
   If (Fmethods=AValue) then exit;
@@ -1733,7 +1734,7 @@ end;
 
 
 
-Procedure TRestDescription.Setparameters(AIndex : Integer; AValue : TRestDescriptionTypeparameters); 
+Procedure TRestDescription.Setparameters(AIndex : Integer; const AValue : TRestDescriptionTypeparameters); 
 
 begin
   If (Fparameters=AValue) then exit;
@@ -1753,7 +1754,7 @@ end;
 
 
 
-Procedure TRestDescription.Setresources(AIndex : Integer; AValue : TRestDescriptionTyperesources); 
+Procedure TRestDescription.Setresources(AIndex : Integer; const AValue : TRestDescriptionTyperesources); 
 
 begin
   If (Fresources=AValue) then exit;
@@ -1783,7 +1784,7 @@ end;
 
 
 
-Procedure TRestDescription.Setschemas(AIndex : Integer; AValue : TRestDescriptionTypeschemas); 
+Procedure TRestDescription.Setschemas(AIndex : Integer; const AValue : TRestDescriptionTypeschemas); 
 
 begin
   If (Fschemas=AValue) then exit;
@@ -1822,6 +1823,16 @@ begin
 end;
 
 
+
+Procedure TRestDescription.Setversion_module(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fversion_module=AValue) then exit;
+  Fversion_module:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
 //2.6.4. bug workaround
 {$IFDEF VER2_6}
 Procedure TRestDescription.SetArrayLength(Const AName : String; ALength : Longint); 
@@ -1844,7 +1855,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestMethodTypemediaUploadTypeprotocolsTyperesumable.Setmultipart(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethodTypemediaUploadTypeprotocolsTyperesumable.Setmultipart(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fmultipart=AValue) then exit;
@@ -1871,7 +1882,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestMethodTypemediaUploadTypeprotocolsTypesimple.Setmultipart(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethodTypemediaUploadTypeprotocolsTypesimple.Setmultipart(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fmultipart=AValue) then exit;
@@ -1898,7 +1909,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestMethodTypemediaUploadTypeprotocols.Setresumable(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocolsTyperesumable); 
+Procedure TRestMethodTypemediaUploadTypeprotocols.Setresumable(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocolsTyperesumable); 
 
 begin
   If (Fresumable=AValue) then exit;
@@ -1908,7 +1919,7 @@ end;
 
 
 
-Procedure TRestMethodTypemediaUploadTypeprotocols.Setsimple(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocolsTypesimple); 
+Procedure TRestMethodTypemediaUploadTypeprotocols.Setsimple(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocolsTypesimple); 
 
 begin
   If (Fsimple=AValue) then exit;
@@ -1925,7 +1936,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestMethodTypemediaUpload.Setaccept(AIndex : Integer; AValue : TStringArray); 
+Procedure TRestMethodTypemediaUpload.Setaccept(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Faccept=AValue) then exit;
@@ -1945,7 +1956,7 @@ end;
 
 
 
-Procedure TRestMethodTypemediaUpload.Setprotocols(AIndex : Integer; AValue : TRestMethodTypemediaUploadTypeprotocols); 
+Procedure TRestMethodTypemediaUpload.Setprotocols(AIndex : Integer; const AValue : TRestMethodTypemediaUploadTypeprotocols); 
 
 begin
   If (Fprotocols=AValue) then exit;
@@ -2064,7 +2075,7 @@ end;
 
 
 
-Procedure TRestMethod.SetetagRequired(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethod.SetetagRequired(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FetagRequired=AValue) then exit;
@@ -2094,7 +2105,7 @@ end;
 
 
 
-Procedure TRestMethod.SetmediaUpload(AIndex : Integer; AValue : TRestMethodTypemediaUpload); 
+Procedure TRestMethod.SetmediaUpload(AIndex : Integer; const AValue : TRestMethodTypemediaUpload); 
 
 begin
   If (FmediaUpload=AValue) then exit;
@@ -2104,7 +2115,7 @@ end;
 
 
 
-Procedure TRestMethod.SetparameterOrder(AIndex : Integer; AValue : TStringArray); 
+Procedure TRestMethod.SetparameterOrder(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FparameterOrder=AValue) then exit;
@@ -2114,7 +2125,7 @@ end;
 
 
 
-Procedure TRestMethod.Setparameters(AIndex : Integer; AValue : TRestMethodTypeparameters); 
+Procedure TRestMethod.Setparameters(AIndex : Integer; const AValue : TRestMethodTypeparameters); 
 
 begin
   If (Fparameters=AValue) then exit;
@@ -2134,7 +2145,7 @@ end;
 
 
 
-Procedure TRestMethod.Setrequest(AIndex : Integer; AValue : TRestMethodTyperequest); 
+Procedure TRestMethod.Setrequest(AIndex : Integer; const AValue : TRestMethodTyperequest); 
 
 begin
   If (Frequest=AValue) then exit;
@@ -2144,7 +2155,7 @@ end;
 
 
 
-Procedure TRestMethod.Setresponse(AIndex : Integer; AValue : TRestMethodTyperesponse); 
+Procedure TRestMethod.Setresponse(AIndex : Integer; const AValue : TRestMethodTyperesponse); 
 
 begin
   If (Fresponse=AValue) then exit;
@@ -2154,7 +2165,7 @@ end;
 
 
 
-Procedure TRestMethod.Setscopes(AIndex : Integer; AValue : TStringArray); 
+Procedure TRestMethod.Setscopes(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fscopes=AValue) then exit;
@@ -2164,7 +2175,7 @@ end;
 
 
 
-Procedure TRestMethod.SetsupportsMediaDownload(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethod.SetsupportsMediaDownload(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsMediaDownload=AValue) then exit;
@@ -2174,7 +2185,7 @@ end;
 
 
 
-Procedure TRestMethod.SetsupportsMediaUpload(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethod.SetsupportsMediaUpload(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsMediaUpload=AValue) then exit;
@@ -2184,7 +2195,7 @@ end;
 
 
 
-Procedure TRestMethod.SetsupportsSubscription(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethod.SetsupportsSubscription(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsupportsSubscription=AValue) then exit;
@@ -2194,7 +2205,7 @@ end;
 
 
 
-Procedure TRestMethod.SetuseMediaDownloadService(AIndex : Integer; AValue : boolean); 
+Procedure TRestMethod.SetuseMediaDownloadService(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FuseMediaDownloadService=AValue) then exit;
@@ -2251,7 +2262,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRestResource.Setmethods(AIndex : Integer; AValue : TRestResourceTypemethods); 
+Procedure TRestResource.Setmethods(AIndex : Integer; const AValue : TRestResourceTypemethods); 
 
 begin
   If (Fmethods=AValue) then exit;
@@ -2261,7 +2272,7 @@ end;
 
 
 
-Procedure TRestResource.Setresources(AIndex : Integer; AValue : TRestResourceTyperesources); 
+Procedure TRestResource.Setresources(AIndex : Integer; const AValue : TRestResourceTyperesources); 
 
 begin
   If (Fresources=AValue) then exit;
@@ -2368,7 +2379,7 @@ end;
 Class Function TDiscoveryAPI.APIDescription : String;
 
 begin
-  Result:='Lets you discover information about other Google APIs, such as what APIs are available, the resource and method details for each API.';
+  Result:='Provides information about other Google APIs, such as what APIs are available, the resource, and method details for each API.';
 end;
 
 Class Function TDiscoveryAPI.APIOwnerDomain : String;
@@ -2404,7 +2415,7 @@ end;
 Class Function TDiscoveryAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TDiscoveryAPI.APIbasePath : string;
@@ -2416,7 +2427,7 @@ end;
 Class Function TDiscoveryAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/discovery/v1/';
+  Result:='https://www.googleapis.com/discovery/v1/';
 end;
 
 Class Function TDiscoveryAPI.APIProtocol : string;

+ 43 - 54
packages/googleapi/src/googledns.pp

@@ -1,19 +1,4 @@
 unit googledns;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:02
 {$MODE objfpc}
 {$H+}
 
@@ -61,8 +46,8 @@ type
     Fstatus : String;
   Protected
     //Property setters
-    Procedure Setadditions(AIndex : Integer; AValue : TChangeTypeadditionsArray); virtual;
-    Procedure Setdeletions(AIndex : Integer; AValue : TChangeTypedeletionsArray); virtual;
+    Procedure Setadditions(AIndex : Integer; const AValue : TChangeTypeadditionsArray); virtual;
+    Procedure Setdeletions(AIndex : Integer; const AValue : TChangeTypedeletionsArray); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
@@ -93,7 +78,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setchanges(AIndex : Integer; AValue : TChangesListResponseTypechangesArray); virtual;
+    Procedure Setchanges(AIndex : Integer; const AValue : TChangesListResponseTypechangesArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -131,7 +116,7 @@ type
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnameServerSet(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnameServers(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetnameServers(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -161,7 +146,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmanagedZones(AIndex : Integer; AValue : TManagedZonesListResponseTypemanagedZonesArray); virtual;
+    Procedure SetmanagedZones(AIndex : Integer; const AValue : TManagedZonesListResponseTypemanagedZonesArray); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -190,7 +175,7 @@ type
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setnumber(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setquota(AIndex : Integer; AValue : TQuota); virtual;
+    Procedure Setquota(AIndex : Integer; const AValue : TQuota); virtual;
   Public
   Published
     Property id : String Index 0 Read Fid Write Setid;
@@ -216,12 +201,12 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmanagedZones(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetresourceRecordsPerRrset(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetrrsetAdditionsPerChange(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetrrsetDeletionsPerChange(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetrrsetsPerManagedZone(AIndex : Integer; AValue : integer); virtual;
-    Procedure SettotalRrdataSizePerChange(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetmanagedZones(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetresourceRecordsPerRrset(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrrsetAdditionsPerChange(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrrsetDeletionsPerChange(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrrsetsPerManagedZone(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettotalRrdataSizePerChange(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property kind : String Index 0 Read Fkind Write Setkind;
@@ -250,8 +235,8 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrrdatas(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setttl(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setrrdatas(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setttl(AIndex : Integer; const AValue : integer); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -280,7 +265,7 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrrsets(AIndex : Integer; AValue : TResourceRecordSetsListResponseTyperrsetsArray); virtual;
+    Procedure Setrrsets(AIndex : Integer; const AValue : TResourceRecordSetsListResponseTyperrsetsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -326,6 +311,7 @@ type
   //Optional query Options for TManagedZonesResource, method List
   
   TManagedZonesListOptions = Record
+    dnsName : String;
     maxResults : integer;
     pageToken : String;
   end;
@@ -437,7 +423,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TChange.Setadditions(AIndex : Integer; AValue : TChangeTypeadditionsArray); 
+Procedure TChange.Setadditions(AIndex : Integer; const AValue : TChangeTypeadditionsArray); 
 
 begin
   If (Fadditions=AValue) then exit;
@@ -447,7 +433,7 @@ end;
 
 
 
-Procedure TChange.Setdeletions(AIndex : Integer; AValue : TChangeTypedeletionsArray); 
+Procedure TChange.Setdeletions(AIndex : Integer; const AValue : TChangeTypedeletionsArray); 
 
 begin
   If (Fdeletions=AValue) then exit;
@@ -518,7 +504,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TChangesListResponse.Setchanges(AIndex : Integer; AValue : TChangesListResponseTypechangesArray); 
+Procedure TChangesListResponse.Setchanges(AIndex : Integer; const AValue : TChangesListResponseTypechangesArray); 
 
 begin
   If (Fchanges=AValue) then exit;
@@ -638,7 +624,7 @@ end;
 
 
 
-Procedure TManagedZone.SetnameServers(AIndex : Integer; AValue : TStringArray); 
+Procedure TManagedZone.SetnameServers(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FnameServers=AValue) then exit;
@@ -678,7 +664,7 @@ end;
 
 
 
-Procedure TManagedZonesListResponse.SetmanagedZones(AIndex : Integer; AValue : TManagedZonesListResponseTypemanagedZonesArray); 
+Procedure TManagedZonesListResponse.SetmanagedZones(AIndex : Integer; const AValue : TManagedZonesListResponseTypemanagedZonesArray); 
 
 begin
   If (FmanagedZones=AValue) then exit;
@@ -748,7 +734,7 @@ end;
 
 
 
-Procedure TProject.Setquota(AIndex : Integer; AValue : TQuota); 
+Procedure TProject.Setquota(AIndex : Integer; const AValue : TQuota); 
 
 begin
   If (Fquota=AValue) then exit;
@@ -775,7 +761,7 @@ end;
 
 
 
-Procedure TQuota.SetmanagedZones(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SetmanagedZones(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmanagedZones=AValue) then exit;
@@ -785,7 +771,7 @@ end;
 
 
 
-Procedure TQuota.SetresourceRecordsPerRrset(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SetresourceRecordsPerRrset(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresourceRecordsPerRrset=AValue) then exit;
@@ -795,7 +781,7 @@ end;
 
 
 
-Procedure TQuota.SetrrsetAdditionsPerChange(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SetrrsetAdditionsPerChange(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrrsetAdditionsPerChange=AValue) then exit;
@@ -805,7 +791,7 @@ end;
 
 
 
-Procedure TQuota.SetrrsetDeletionsPerChange(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SetrrsetDeletionsPerChange(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrrsetDeletionsPerChange=AValue) then exit;
@@ -815,7 +801,7 @@ end;
 
 
 
-Procedure TQuota.SetrrsetsPerManagedZone(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SetrrsetsPerManagedZone(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrrsetsPerManagedZone=AValue) then exit;
@@ -825,7 +811,7 @@ end;
 
 
 
-Procedure TQuota.SettotalRrdataSizePerChange(AIndex : Integer; AValue : integer); 
+Procedure TQuota.SettotalRrdataSizePerChange(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalRrdataSizePerChange=AValue) then exit;
@@ -862,7 +848,7 @@ end;
 
 
 
-Procedure TResourceRecordSet.Setrrdatas(AIndex : Integer; AValue : TStringArray); 
+Procedure TResourceRecordSet.Setrrdatas(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Frrdatas=AValue) then exit;
@@ -872,7 +858,7 @@ end;
 
 
 
-Procedure TResourceRecordSet.Setttl(AIndex : Integer; AValue : integer); 
+Procedure TResourceRecordSet.Setttl(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fttl=AValue) then exit;
@@ -943,7 +929,7 @@ end;
 
 
 
-Procedure TResourceRecordSetsListResponse.Setrrsets(AIndex : Integer; AValue : TResourceRecordSetsListResponseTyperrsetsArray); 
+Procedure TResourceRecordSetsListResponse.Setrrsets(AIndex : Integer; const AValue : TResourceRecordSetsListResponseTyperrsetsArray); 
 
 begin
   If (Frrsets=AValue) then exit;
@@ -1132,6 +1118,7 @@ Var
 
 begin
   _Q:='';
+  AddToQuery(_Q,'dnsName',AQuery.dnsName);
   AddToQuery(_Q,'maxResults',AQuery.maxResults);
   AddToQuery(_Q,'pageToken',AQuery.pageToken);
   Result:=List(project,_Q);
@@ -1241,7 +1228,7 @@ end;
 Class Function TDnsAPI.APIRevision : String;
 
 begin
-  Result:='20150218';
+  Result:='20160513';
 end;
 
 Class Function TDnsAPI.APIID : String;
@@ -1259,7 +1246,7 @@ end;
 Class Function TDnsAPI.APIDescription : String;
 
 begin
-  Result:='The Google Cloud DNS API provides services for configuring and serving authoritative DNS records.';
+  Result:='Configures and serves authoritative DNS records.';
 end;
 
 Class Function TDnsAPI.APIOwnerDomain : String;
@@ -1295,7 +1282,7 @@ end;
 Class Function TDnsAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TDnsAPI.APIbasePath : string;
@@ -1307,7 +1294,7 @@ end;
 Class Function TDnsAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/dns/v1/projects/';
+  Result:='https://www.googleapis.com/dns/v1/projects/';
 end;
 
 Class Function TDnsAPI.APIProtocol : string;
@@ -1331,13 +1318,15 @@ end;
 Class Function TDnsAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,3);
+  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/ndev.clouddns.readonly';
-  Result[1].Description:='View your DNS records hosted by Google Cloud DNS';
-  Result[2].Name:='https://www.googleapis.com/auth/ndev.clouddns.readwrite';
-  Result[2].Description:='View and manage your DNS records hosted by Google Cloud DNS';
+  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/ndev.clouddns.readonly';
+  Result[2].Description:='View your DNS records hosted by Google Cloud DNS';
+  Result[3].Name:='https://www.googleapis.com/auth/ndev.clouddns.readwrite';
+  Result[3].Description:='View and manage your DNS records hosted by Google Cloud DNS';
   
 end;
 

+ 340 - 77
packages/googleapi/src/googledoubleclickbidmanager.pp

@@ -1,19 +1,4 @@
 unit googledoubleclickbidmanager;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:02
 {$MODE objfpc}
 {$H+}
 
@@ -29,6 +14,8 @@ type
   TFilterPair = Class;
   TListQueriesResponse = Class;
   TListReportsResponse = Class;
+  TNote = Class;
+  TNotifyProposalChangeRequest = Class;
   TParameters = Class;
   TQuery = Class;
   TQueryMetadata = Class;
@@ -48,6 +35,8 @@ type
   TFilterPairArray = Array of TFilterPair;
   TListQueriesResponseArray = Array of TListQueriesResponse;
   TListReportsResponseArray = Array of TListReportsResponse;
+  TNoteArray = Array of TNote;
+  TNotifyProposalChangeRequestArray = Array of TNotifyProposalChangeRequest;
   TParametersArray = Array of TParameters;
   TQueryArray = Array of TQuery;
   TQueryMetadataArray = Array of TQueryMetadata;
@@ -65,6 +54,7 @@ type
   //Anonymous types, using auto-generated names
   TListQueriesResponseTypequeriesArray = Array of TQuery;
   TListReportsResponseTypereportsArray = Array of TReport;
+  TNotifyProposalChangeRequestTypenotesArray = Array of TNote;
   TParametersTypefiltersArray = Array of TFilterPair;
   TUploadStatusTyperowStatusArray = Array of TRowStatus;
   
@@ -74,12 +64,14 @@ type
   
   TDownloadLineItemsRequest = Class(TGoogleBaseObject)
   Private
+    FfileSpec : String;
     FfilterIds : TStringArray;
     FfilterType : String;
     Fformat : String;
   Protected
     //Property setters
-    Procedure SetfilterIds(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetfileSpec(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfilterIds(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetfilterType(AIndex : Integer; const AValue : String); virtual;
     Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -88,9 +80,10 @@ type
     {$ENDIF VER2_6}
   Public
   Published
-    Property filterIds : TStringArray Index 0 Read FfilterIds Write SetfilterIds;
-    Property filterType : String Index 8 Read FfilterType Write SetfilterType;
-    Property format : String Index 16 Read Fformat Write Setformat;
+    Property fileSpec : String Index 0 Read FfileSpec Write SetfileSpec;
+    Property filterIds : TStringArray Index 8 Read FfilterIds Write SetfilterIds;
+    Property filterType : String Index 16 Read FfilterType Write SetfilterType;
+    Property format : String Index 24 Read Fformat Write Setformat;
   end;
   TDownloadLineItemsRequestClass = Class of TDownloadLineItemsRequest;
   
@@ -141,7 +134,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setqueries(AIndex : Integer; AValue : TListQueriesResponseTypequeriesArray); virtual;
+    Procedure Setqueries(AIndex : Integer; const AValue : TListQueriesResponseTypequeriesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -164,7 +157,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setreports(AIndex : Integer; AValue : TListReportsResponseTypereportsArray); virtual;
+    Procedure Setreports(AIndex : Integer; const AValue : TListReportsResponseTypereportsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -176,6 +169,66 @@ type
   end;
   TListReportsResponseClass = Class of TListReportsResponse;
   
+  { --------------------------------------------------------------------
+    TNote
+    --------------------------------------------------------------------}
+  
+  TNote = Class(TGoogleBaseObject)
+  Private
+    Fid : String;
+    Fmessage : String;
+    Fsource : String;
+    Ftimestamp : String;
+    Fusername : String;
+  Protected
+    //Property setters
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setusername(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property id : String Index 0 Read Fid Write Setid;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+    Property source : String Index 16 Read Fsource Write Setsource;
+    Property timestamp : String Index 24 Read Ftimestamp Write Settimestamp;
+    Property username : String Index 32 Read Fusername Write Setusername;
+  end;
+  TNoteClass = Class of TNote;
+  
+  { --------------------------------------------------------------------
+    TNotifyProposalChangeRequest
+    --------------------------------------------------------------------}
+  
+  TNotifyProposalChangeRequest = Class(TGoogleBaseObject)
+  Private
+    Faction : String;
+    Fhref : String;
+    Fid : String;
+    Fnotes : TNotifyProposalChangeRequestTypenotesArray;
+    Ftoken : String;
+  Protected
+    //Property setters
+    Procedure Setaction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Sethref(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnotes(AIndex : Integer; const AValue : TNotifyProposalChangeRequestTypenotesArray); virtual;
+    Procedure Settoken(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 action : String Index 0 Read Faction Write Setaction;
+    Property href : String Index 8 Read Fhref Write Sethref;
+    Property id : String Index 16 Read Fid Write Setid;
+    Property notes : TNotifyProposalChangeRequestTypenotesArray Index 24 Read Fnotes Write Setnotes;
+    Property token : String Index 32 Read Ftoken Write Settoken;
+  end;
+  TNotifyProposalChangeRequestClass = Class of TNotifyProposalChangeRequest;
+  
   { --------------------------------------------------------------------
     TParameters
     --------------------------------------------------------------------}
@@ -190,10 +243,10 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setfilters(AIndex : Integer; AValue : TParametersTypefiltersArray); virtual;
-    Procedure SetgroupBys(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetincludeInviteData(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setmetrics(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setfilters(AIndex : Integer; const AValue : TParametersTypefiltersArray); virtual;
+    Procedure SetgroupBys(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetincludeInviteData(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setmetrics(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -226,12 +279,12 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmetadata(AIndex : Integer; AValue : TQueryMetadata); virtual;
-    Procedure Setparams(AIndex : Integer; AValue : TParameters); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TQueryMetadata); virtual;
+    Procedure Setparams(AIndex : Integer; const AValue : TParameters); virtual;
     Procedure SetqueryId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreportDataEndTimeMs(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreportDataStartTimeMs(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setschedule(AIndex : Integer; AValue : TQuerySchedule); virtual;
+    Procedure Setschedule(AIndex : Integer; const AValue : TQuerySchedule); virtual;
     Procedure SettimezoneCode(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -271,10 +324,10 @@ type
     Procedure SetgoogleDrivePathForLatestReport(AIndex : Integer; const AValue : String); virtual;
     Procedure SetlatestReportRunTimeMs(AIndex : Integer; const AValue : String); virtual;
     Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetreportCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setrunning(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetsendNotification(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetshareEmailAddress(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetreportCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setrunning(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsendNotification(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetshareEmailAddress(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -310,7 +363,7 @@ type
     //Property setters
     Procedure SetendTimeMs(AIndex : Integer; const AValue : String); virtual;
     Procedure Setfrequency(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnextRunMinuteOfDay(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetnextRunMinuteOfDay(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetnextRunTimezoneCode(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -332,9 +385,9 @@ type
     Fparams : TParameters;
   Protected
     //Property setters
-    Procedure Setkey(AIndex : Integer; AValue : TReportKey); virtual;
-    Procedure Setmetadata(AIndex : Integer; AValue : TReportMetadata); virtual;
-    Procedure Setparams(AIndex : Integer; AValue : TParameters); virtual;
+    Procedure Setkey(AIndex : Integer; const AValue : TReportKey); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TReportMetadata); virtual;
+    Procedure Setparams(AIndex : Integer; const AValue : TParameters); virtual;
   Public
   Published
     Property key : TReportKey Index 0 Read Fkey Write Setkey;
@@ -393,7 +446,7 @@ type
     Procedure SetgoogleCloudStoragePath(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreportDataEndTimeMs(AIndex : Integer; const AValue : String); virtual;
     Procedure SetreportDataStartTimeMs(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstatus(AIndex : Integer; AValue : TReportStatus); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : TReportStatus); virtual;
   Public
   Published
     Property googleCloudStoragePath : String Index 0 Read FgoogleCloudStoragePath Write SetgoogleCloudStoragePath;
@@ -415,7 +468,7 @@ type
     Fstate : String;
   Protected
     //Property setters
-    Procedure Setfailure(AIndex : Integer; AValue : TReportFailure); virtual;
+    Procedure Setfailure(AIndex : Integer; const AValue : TReportFailure); virtual;
     Procedure SetfinishTimeMs(AIndex : Integer; const AValue : String); virtual;
     Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
@@ -442,12 +495,12 @@ type
     FrowNumber : integer;
   Protected
     //Property setters
-    Procedure Setchanged(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setchanged(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetentityId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetentityName(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seterrors(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setpersisted(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetrowNumber(AIndex : Integer; AValue : integer); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setpersisted(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetrowNumber(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -499,7 +552,7 @@ type
     FlineItems : String;
   Protected
     //Property setters
-    Procedure SetdryRun(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetdryRun(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
     Procedure SetlineItems(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -519,7 +572,7 @@ type
     FuploadStatus : TUploadStatus;
   Protected
     //Property setters
-    Procedure SetuploadStatus(AIndex : Integer; AValue : TUploadStatus); virtual;
+    Procedure SetuploadStatus(AIndex : Integer; const AValue : TUploadStatus); virtual;
   Public
   Published
     Property uploadStatus : TUploadStatus Index 0 Read FuploadStatus Write SetuploadStatus;
@@ -536,8 +589,8 @@ type
     FrowStatus : TUploadStatusTyperowStatusArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetrowStatus(AIndex : Integer; AValue : TUploadStatusTyperowStatusArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetrowStatus(AIndex : Integer; const AValue : TUploadStatusTyperowStatusArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -590,6 +643,18 @@ type
   end;
   
   
+  { --------------------------------------------------------------------
+    TRubiconResource
+    --------------------------------------------------------------------}
+  
+  TRubiconResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Procedure Notifyproposalchange(aNotifyProposalChangeRequest : TNotifyProposalChangeRequest);
+  end;
+  
+  
   { --------------------------------------------------------------------
     TDoubleclickbidmanagerAPI
     --------------------------------------------------------------------}
@@ -599,9 +664,11 @@ type
     FLineitemsInstance : TLineitemsResource;
     FQueriesInstance : TQueriesResource;
     FReportsInstance : TReportsResource;
+    FRubiconInstance : TRubiconResource;
     Function GetLineitemsInstance : TLineitemsResource;virtual;
     Function GetQueriesInstance : TQueriesResource;virtual;
     Function GetReportsInstance : TReportsResource;virtual;
+    Function GetRubiconInstance : TRubiconResource;virtual;
   Public
     //Override class functions with API info
     Class Function APIName : String; override;
@@ -631,10 +698,13 @@ type
     Function CreateQueriesResource : TQueriesResource;virtual;overload;
     Function CreateReportsResource(AOwner : TComponent) : TReportsResource;virtual;overload;
     Function CreateReportsResource : TReportsResource;virtual;overload;
+    Function CreateRubiconResource(AOwner : TComponent) : TRubiconResource;virtual;overload;
+    Function CreateRubiconResource : TRubiconResource;virtual;overload;
     //Add default on-demand instances for resources
     Property LineitemsResource : TLineitemsResource Read GetLineitemsInstance;
     Property QueriesResource : TQueriesResource Read GetQueriesInstance;
     Property ReportsResource : TReportsResource Read GetReportsInstance;
+    Property RubiconResource : TRubiconResource Read GetRubiconInstance;
   end;
 
 implementation
@@ -645,7 +715,17 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TDownloadLineItemsRequest.SetfilterIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TDownloadLineItemsRequest.SetfileSpec(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfileSpec=AValue) then exit;
+  FfileSpec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDownloadLineItemsRequest.SetfilterIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FfilterIds=AValue) then exit;
@@ -760,7 +840,7 @@ end;
 
 
 
-Procedure TListQueriesResponse.Setqueries(AIndex : Integer; AValue : TListQueriesResponseTypequeriesArray); 
+Procedure TListQueriesResponse.Setqueries(AIndex : Integer; const AValue : TListQueriesResponseTypequeriesArray); 
 
 begin
   If (Fqueries=AValue) then exit;
@@ -800,7 +880,7 @@ end;
 
 
 
-Procedure TListReportsResponse.Setreports(AIndex : Integer; AValue : TListReportsResponseTypereportsArray); 
+Procedure TListReportsResponse.Setreports(AIndex : Integer; const AValue : TListReportsResponseTypereportsArray); 
 
 begin
   If (Freports=AValue) then exit;
@@ -825,12 +905,139 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TNote
+  --------------------------------------------------------------------}
+
+
+Procedure TNote.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNote.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNote.Setsource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNote.Settimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftimestamp=AValue) then exit;
+  Ftimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNote.Setusername(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fusername=AValue) then exit;
+  Fusername:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNotifyProposalChangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TNotifyProposalChangeRequest.Setaction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faction=AValue) then exit;
+  Faction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNotifyProposalChangeRequest.Sethref(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fhref=AValue) then exit;
+  Fhref:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNotifyProposalChangeRequest.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNotifyProposalChangeRequest.Setnotes(AIndex : Integer; const AValue : TNotifyProposalChangeRequestTypenotesArray); 
+
+begin
+  If (Fnotes=AValue) then exit;
+  Fnotes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNotifyProposalChangeRequest.Settoken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftoken=AValue) then exit;
+  Ftoken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TNotifyProposalChangeRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'notes' : SetLength(Fnotes,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
 { --------------------------------------------------------------------
   TParameters
   --------------------------------------------------------------------}
 
 
-Procedure TParameters.Setfilters(AIndex : Integer; AValue : TParametersTypefiltersArray); 
+Procedure TParameters.Setfilters(AIndex : Integer; const AValue : TParametersTypefiltersArray); 
 
 begin
   If (Ffilters=AValue) then exit;
@@ -840,7 +1047,7 @@ end;
 
 
 
-Procedure TParameters.SetgroupBys(AIndex : Integer; AValue : TStringArray); 
+Procedure TParameters.SetgroupBys(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FgroupBys=AValue) then exit;
@@ -850,7 +1057,7 @@ end;
 
 
 
-Procedure TParameters.SetincludeInviteData(AIndex : Integer; AValue : boolean); 
+Procedure TParameters.SetincludeInviteData(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FincludeInviteData=AValue) then exit;
@@ -860,7 +1067,7 @@ end;
 
 
 
-Procedure TParameters.Setmetrics(AIndex : Integer; AValue : TStringArray); 
+Procedure TParameters.Setmetrics(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fmetrics=AValue) then exit;
@@ -923,7 +1130,7 @@ end;
 
 
 
-Procedure TQuery.Setmetadata(AIndex : Integer; AValue : TQueryMetadata); 
+Procedure TQuery.Setmetadata(AIndex : Integer; const AValue : TQueryMetadata); 
 
 begin
   If (Fmetadata=AValue) then exit;
@@ -933,7 +1140,7 @@ end;
 
 
 
-Procedure TQuery.Setparams(AIndex : Integer; AValue : TParameters); 
+Procedure TQuery.Setparams(AIndex : Integer; const AValue : TParameters); 
 
 begin
   If (Fparams=AValue) then exit;
@@ -973,7 +1180,7 @@ end;
 
 
 
-Procedure TQuery.Setschedule(AIndex : Integer; AValue : TQuerySchedule); 
+Procedure TQuery.Setschedule(AIndex : Integer; const AValue : TQuerySchedule); 
 
 begin
   If (Fschedule=AValue) then exit;
@@ -1060,7 +1267,7 @@ end;
 
 
 
-Procedure TQueryMetadata.SetreportCount(AIndex : Integer; AValue : integer); 
+Procedure TQueryMetadata.SetreportCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FreportCount=AValue) then exit;
@@ -1070,7 +1277,7 @@ end;
 
 
 
-Procedure TQueryMetadata.Setrunning(AIndex : Integer; AValue : boolean); 
+Procedure TQueryMetadata.Setrunning(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Frunning=AValue) then exit;
@@ -1080,7 +1287,7 @@ end;
 
 
 
-Procedure TQueryMetadata.SetsendNotification(AIndex : Integer; AValue : boolean); 
+Procedure TQueryMetadata.SetsendNotification(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsendNotification=AValue) then exit;
@@ -1090,7 +1297,7 @@ end;
 
 
 
-Procedure TQueryMetadata.SetshareEmailAddress(AIndex : Integer; AValue : TStringArray); 
+Procedure TQueryMetadata.SetshareEmailAddress(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FshareEmailAddress=AValue) then exit;
@@ -1150,7 +1357,7 @@ end;
 
 
 
-Procedure TQuerySchedule.SetnextRunMinuteOfDay(AIndex : Integer; AValue : integer); 
+Procedure TQuerySchedule.SetnextRunMinuteOfDay(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnextRunMinuteOfDay=AValue) then exit;
@@ -1177,7 +1384,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReport.Setkey(AIndex : Integer; AValue : TReportKey); 
+Procedure TReport.Setkey(AIndex : Integer; const AValue : TReportKey); 
 
 begin
   If (Fkey=AValue) then exit;
@@ -1187,7 +1394,7 @@ end;
 
 
 
-Procedure TReport.Setmetadata(AIndex : Integer; AValue : TReportMetadata); 
+Procedure TReport.Setmetadata(AIndex : Integer; const AValue : TReportMetadata); 
 
 begin
   If (Fmetadata=AValue) then exit;
@@ -1197,7 +1404,7 @@ end;
 
 
 
-Procedure TReport.Setparams(AIndex : Integer; AValue : TParameters); 
+Procedure TReport.Setparams(AIndex : Integer; const AValue : TParameters); 
 
 begin
   If (Fparams=AValue) then exit;
@@ -1288,7 +1495,7 @@ end;
 
 
 
-Procedure TReportMetadata.Setstatus(AIndex : Integer; AValue : TReportStatus); 
+Procedure TReportMetadata.Setstatus(AIndex : Integer; const AValue : TReportStatus); 
 
 begin
   If (Fstatus=AValue) then exit;
@@ -1305,7 +1512,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportStatus.Setfailure(AIndex : Integer; AValue : TReportFailure); 
+Procedure TReportStatus.Setfailure(AIndex : Integer; const AValue : TReportFailure); 
 
 begin
   If (Ffailure=AValue) then exit;
@@ -1352,7 +1559,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRowStatus.Setchanged(AIndex : Integer; AValue : boolean); 
+Procedure TRowStatus.Setchanged(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fchanged=AValue) then exit;
@@ -1382,7 +1589,7 @@ end;
 
 
 
-Procedure TRowStatus.Seterrors(AIndex : Integer; AValue : TStringArray); 
+Procedure TRowStatus.Seterrors(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1392,7 +1599,7 @@ end;
 
 
 
-Procedure TRowStatus.Setpersisted(AIndex : Integer; AValue : boolean); 
+Procedure TRowStatus.Setpersisted(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fpersisted=AValue) then exit;
@@ -1402,7 +1609,7 @@ end;
 
 
 
-Procedure TRowStatus.SetrowNumber(AIndex : Integer; AValue : integer); 
+Procedure TRowStatus.SetrowNumber(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrowNumber=AValue) then exit;
@@ -1479,7 +1686,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUploadLineItemsRequest.SetdryRun(AIndex : Integer; AValue : boolean); 
+Procedure TUploadLineItemsRequest.SetdryRun(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FdryRun=AValue) then exit;
@@ -1516,7 +1723,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUploadLineItemsResponse.SetuploadStatus(AIndex : Integer; AValue : TUploadStatus); 
+Procedure TUploadLineItemsResponse.SetuploadStatus(AIndex : Integer; const AValue : TUploadStatus); 
 
 begin
   If (FuploadStatus=AValue) then exit;
@@ -1533,7 +1740,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUploadStatus.Seterrors(AIndex : Integer; AValue : TStringArray); 
+Procedure TUploadStatus.Seterrors(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1543,7 +1750,7 @@ end;
 
 
 
-Procedure TUploadStatus.SetrowStatus(AIndex : Integer; AValue : TUploadStatusTyperowStatusArray); 
+Procedure TUploadStatus.SetrowStatus(AIndex : Integer; const AValue : TUploadStatusTyperowStatusArray); 
 
 begin
   If (FrowStatus=AValue) then exit;
@@ -1730,6 +1937,36 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TRubiconResource
+  --------------------------------------------------------------------}
+
+
+Class Function TRubiconResource.ResourceName : String;
+
+begin
+  Result:='rubicon';
+end;
+
+Class Function TRubiconResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TdoubleclickbidmanagerAPI;
+end;
+
+Procedure TRubiconResource.Notifyproposalchange(aNotifyProposalChangeRequest : TNotifyProposalChangeRequest);
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'rubicon/notifyproposalchange';
+  _Methodid   = 'doubleclickbidmanager.rubicon.notifyproposalchange';
+
+begin
+  ServiceCall(_HTTPMethod,_Path,'',aNotifyProposalChangeRequest,Nil);
+end;
+
+
+
 { --------------------------------------------------------------------
   TDoubleclickbidmanagerAPI
   --------------------------------------------------------------------}
@@ -1749,7 +1986,7 @@ end;
 Class Function TDoubleclickbidmanagerAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160426';
 end;
 
 Class Function TDoubleclickbidmanagerAPI.APIID : String;
@@ -1803,7 +2040,7 @@ end;
 Class Function TDoubleclickbidmanagerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TDoubleclickbidmanagerAPI.APIbasePath : string;
@@ -1815,7 +2052,7 @@ end;
 Class Function TDoubleclickbidmanagerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/doubleclickbidmanager/v1/';
+  Result:='https://www.googleapis.com/doubleclickbidmanager/v1/';
 end;
 
 Class Function TDoubleclickbidmanagerAPI.APIProtocol : string;
@@ -1857,6 +2094,8 @@ begin
   TFilterPair.RegisterObject;
   TListQueriesResponse.RegisterObject;
   TListReportsResponse.RegisterObject;
+  TNote.RegisterObject;
+  TNotifyProposalChangeRequest.RegisterObject;
   TParameters.RegisterObject;
   TQuery.RegisterObject;
   TQueryMetadata.RegisterObject;
@@ -1946,6 +2185,30 @@ end;
 
 
 
+Function TDoubleclickbidmanagerAPI.GetRubiconInstance : TRubiconResource;
+
+begin
+  if (FRubiconInstance=Nil) then
+    FRubiconInstance:=CreateRubiconResource;
+  Result:=FRubiconInstance;
+end;
+
+Function TDoubleclickbidmanagerAPI.CreateRubiconResource : TRubiconResource;
+
+begin
+  Result:=CreateRubiconResource(Self);
+end;
+
+
+Function TDoubleclickbidmanagerAPI.CreateRubiconResource(AOwner : TComponent) : TRubiconResource;
+
+begin
+  Result:=TRubiconResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
 initialization
   TDoubleclickbidmanagerAPI.RegisterAPI;
 end.

+ 87 - 89
packages/googleapi/src/googledoubleclicksearch.pp

@@ -1,19 +1,4 @@
 unit googledoubleclicksearch;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:03
 {$MODE objfpc}
 {$H+}
 
@@ -124,8 +109,8 @@ type
     FdeviceType : String;
     FdsConversionId : String;
     FengineAccountId : String;
-    FfeedId : String;
     FfloodlightOrderId : String;
+    FinventoryAccountId : String;
     FproductCountry : String;
     FproductGroupId : String;
     FproductId : String;
@@ -155,13 +140,13 @@ type
     Procedure SetcountMillis(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcriterionId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcurrencyCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcustomDimension(AIndex : Integer; AValue : TConversionTypecustomDimensionArray); virtual;
-    Procedure SetcustomMetric(AIndex : Integer; AValue : TConversionTypecustomMetricArray); virtual;
+    Procedure SetcustomDimension(AIndex : Integer; const AValue : TConversionTypecustomDimensionArray); virtual;
+    Procedure SetcustomMetric(AIndex : Integer; const AValue : TConversionTypecustomMetricArray); virtual;
     Procedure SetdeviceType(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdsConversionId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetengineAccountId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetfeedId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetfloodlightOrderId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetinventoryAccountId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductCountry(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductGroupId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetproductId(AIndex : Integer; const AValue : String); virtual;
@@ -199,8 +184,8 @@ type
     Property deviceType : String Index 128 Read FdeviceType Write SetdeviceType;
     Property dsConversionId : String Index 136 Read FdsConversionId Write SetdsConversionId;
     Property engineAccountId : String Index 144 Read FengineAccountId Write SetengineAccountId;
-    Property feedId : String Index 152 Read FfeedId Write SetfeedId;
-    Property floodlightOrderId : String Index 160 Read FfloodlightOrderId Write SetfloodlightOrderId;
+    Property floodlightOrderId : String Index 152 Read FfloodlightOrderId Write SetfloodlightOrderId;
+    Property inventoryAccountId : String Index 160 Read FinventoryAccountId Write SetinventoryAccountId;
     Property productCountry : String Index 168 Read FproductCountry Write SetproductCountry;
     Property productGroupId : String Index 176 Read FproductGroupId Write SetproductGroupId;
     Property productId : String Index 184 Read FproductId Write SetproductId;
@@ -226,7 +211,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setconversion(AIndex : Integer; AValue : TConversionListTypeconversionArray); virtual;
+    Procedure Setconversion(AIndex : Integer; const AValue : TConversionListTypeconversionArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -269,7 +254,7 @@ type
   Protected
     //Property setters
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setvalue(AIndex : Integer; AValue : double); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property name : String Index 0 Read Fname Write Setname;
@@ -313,13 +298,13 @@ type
     FstatisticsTimeZone : String;
   Protected
     //Property setters
-    Procedure Setfiles(AIndex : Integer; AValue : TReportTypefilesArray); virtual;
+    Procedure Setfiles(AIndex : Integer; const AValue : TReportTypefilesArray); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisReportReady(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisReportReady(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrequest(AIndex : Integer; AValue : TReportRequest); virtual;
-    Procedure SetrowCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setrows(AIndex : Integer; AValue : TReportTyperowsArray); virtual;
+    Procedure Setrequest(AIndex : Integer; const AValue : TReportRequest); virtual;
+    Procedure SetrowCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); virtual;
     Procedure SetstatisticsCurrencyCode(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstatisticsTimeZone(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -353,6 +338,7 @@ type
     FgroupByColumn : boolean;
     FheaderText : String;
     FplatformSource : String;
+    FproductReportPerspective : String;
     FsavedColumnName : String;
     FstartDate : String;
   Protected
@@ -361,9 +347,10 @@ type
     Procedure SetcustomDimensionName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomMetricName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetgroupByColumn(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetgroupByColumn(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetheaderText(AIndex : Integer; const AValue : String); virtual;
     Procedure SetplatformSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetproductReportPerspective(AIndex : Integer; const AValue : String); virtual;
     Procedure SetsavedColumnName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -375,8 +362,9 @@ type
     Property groupByColumn : boolean Index 32 Read FgroupByColumn Write SetgroupByColumn;
     Property headerText : String Index 40 Read FheaderText Write SetheaderText;
     Property platformSource : String Index 48 Read FplatformSource Write SetplatformSource;
-    Property savedColumnName : String Index 56 Read FsavedColumnName Write SetsavedColumnName;
-    Property startDate : String Index 64 Read FstartDate Write SetstartDate;
+    Property productReportPerspective : String Index 56 Read FproductReportPerspective Write SetproductReportPerspective;
+    Property savedColumnName : String Index 64 Read FsavedColumnName Write SetsavedColumnName;
+    Property startDate : String Index 72 Read FstartDate Write SetstartDate;
   end;
   TReportApiColumnSpecClass = Class of TReportApiColumnSpec;
   
@@ -392,9 +380,9 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setcolumn(AIndex : Integer; AValue : TReportApiColumnSpec); virtual;
+    Procedure Setcolumn(AIndex : Integer; const AValue : TReportApiColumnSpec); virtual;
     Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setvalues(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -417,7 +405,7 @@ type
     FsortOrder : String;
   Protected
     //Property setters
-    Procedure Setcolumn(AIndex : Integer; AValue : TReportApiColumnSpec); virtual;
+    Procedure Setcolumn(AIndex : Integer; const AValue : TReportApiColumnSpec); virtual;
     Procedure SetsortOrder(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -472,8 +460,8 @@ type
     FstartDate : String;
   Protected
     //Property setters
-    Procedure SetchangedAttributesSinceTimestamp(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetchangedMetricsSinceTimestamp(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetchangedAttributesSinceTimestamp(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SetchangedMetricsSinceTimestamp(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -507,20 +495,20 @@ type
     FverifySingleTimeZone : boolean;
   Protected
     //Property setters
-    Procedure Setcolumns(AIndex : Integer; AValue : TReportRequestTypecolumnsArray); virtual;
+    Procedure Setcolumns(AIndex : Integer; const AValue : TReportRequestTypecolumnsArray); virtual;
     Procedure SetdownloadFormat(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfilters(AIndex : Integer; AValue : TReportRequestTypefiltersArray); virtual;
-    Procedure SetincludeDeletedEntities(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetincludeRemovedEntities(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetmaxRowsPerFile(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetorderBy(AIndex : Integer; AValue : TReportRequestTypeorderByArray); virtual;
-    Procedure SetreportScope(AIndex : Integer; AValue : TReportRequestTypereportScope); virtual;
+    Procedure Setfilters(AIndex : Integer; const AValue : TReportRequestTypefiltersArray); virtual;
+    Procedure SetincludeDeletedEntities(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetincludeRemovedEntities(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetmaxRowsPerFile(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetorderBy(AIndex : Integer; const AValue : TReportRequestTypeorderByArray); virtual;
+    Procedure SetreportScope(AIndex : Integer; const AValue : TReportRequestTypereportScope); virtual;
     Procedure SetreportType(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetrowCount(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetstartRow(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetrowCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartRow(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetstatisticsCurrency(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettimeRange(AIndex : Integer; AValue : TReportRequestTypetimeRange); virtual;
-    Procedure SetverifySingleTimeZone(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SettimeRange(AIndex : Integer; const AValue : TReportRequestTypetimeRange); virtual;
+    Procedure SetverifySingleTimeZone(AIndex : Integer; const AValue : boolean); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -591,7 +579,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TSavedColumnListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSavedColumnListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -613,7 +601,7 @@ type
     Favailabilities : TUpdateAvailabilityRequestTypeavailabilitiesArray;
   Protected
     //Property setters
-    Procedure Setavailabilities(AIndex : Integer; AValue : TUpdateAvailabilityRequestTypeavailabilitiesArray); virtual;
+    Procedure Setavailabilities(AIndex : Integer; const AValue : TUpdateAvailabilityRequestTypeavailabilitiesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -633,7 +621,7 @@ type
     Favailabilities : TUpdateAvailabilityResponseTypeavailabilitiesArray;
   Protected
     //Property setters
-    Procedure Setavailabilities(AIndex : Integer; AValue : TUpdateAvailabilityResponseTypeavailabilitiesArray); virtual;
+    Procedure Setavailabilities(AIndex : Integer; const AValue : TUpdateAvailabilityResponseTypeavailabilitiesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -978,7 +966,7 @@ end;
 
 
 
-Procedure TConversion.SetcustomDimension(AIndex : Integer; AValue : TConversionTypecustomDimensionArray); 
+Procedure TConversion.SetcustomDimension(AIndex : Integer; const AValue : TConversionTypecustomDimensionArray); 
 
 begin
   If (FcustomDimension=AValue) then exit;
@@ -988,7 +976,7 @@ end;
 
 
 
-Procedure TConversion.SetcustomMetric(AIndex : Integer; AValue : TConversionTypecustomMetricArray); 
+Procedure TConversion.SetcustomMetric(AIndex : Integer; const AValue : TConversionTypecustomMetricArray); 
 
 begin
   If (FcustomMetric=AValue) then exit;
@@ -1028,21 +1016,21 @@ end;
 
 
 
-Procedure TConversion.SetfeedId(AIndex : Integer; const AValue : String); 
+Procedure TConversion.SetfloodlightOrderId(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FfeedId=AValue) then exit;
-  FfeedId:=AValue;
+  If (FfloodlightOrderId=AValue) then exit;
+  FfloodlightOrderId:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
 
 
-Procedure TConversion.SetfloodlightOrderId(AIndex : Integer; const AValue : String); 
+Procedure TConversion.SetinventoryAccountId(AIndex : Integer; const AValue : String); 
 
 begin
-  If (FfloodlightOrderId=AValue) then exit;
-  FfloodlightOrderId:=AValue;
+  If (FinventoryAccountId=AValue) then exit;
+  FinventoryAccountId:=AValue;
   MarkPropertyChanged(AIndex);
 end;
 
@@ -1200,7 +1188,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TConversionList.Setconversion(AIndex : Integer; AValue : TConversionListTypeconversionArray); 
+Procedure TConversionList.Setconversion(AIndex : Integer; const AValue : TConversionListTypeconversionArray); 
 
 begin
   If (Fconversion=AValue) then exit;
@@ -1277,7 +1265,7 @@ end;
 
 
 
-Procedure TCustomMetric.Setvalue(AIndex : Integer; AValue : double); 
+Procedure TCustomMetric.Setvalue(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fvalue=AValue) then exit;
@@ -1321,7 +1309,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReport.Setfiles(AIndex : Integer; AValue : TReportTypefilesArray); 
+Procedure TReport.Setfiles(AIndex : Integer; const AValue : TReportTypefilesArray); 
 
 begin
   If (Ffiles=AValue) then exit;
@@ -1341,7 +1329,7 @@ end;
 
 
 
-Procedure TReport.SetisReportReady(AIndex : Integer; AValue : boolean); 
+Procedure TReport.SetisReportReady(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisReportReady=AValue) then exit;
@@ -1361,7 +1349,7 @@ end;
 
 
 
-Procedure TReport.Setrequest(AIndex : Integer; AValue : TReportRequest); 
+Procedure TReport.Setrequest(AIndex : Integer; const AValue : TReportRequest); 
 
 begin
   If (Frequest=AValue) then exit;
@@ -1371,7 +1359,7 @@ end;
 
 
 
-Procedure TReport.SetrowCount(AIndex : Integer; AValue : integer); 
+Procedure TReport.SetrowCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrowCount=AValue) then exit;
@@ -1381,7 +1369,7 @@ end;
 
 
 
-Procedure TReport.Setrows(AIndex : Integer; AValue : TReportTyperowsArray); 
+Procedure TReport.Setrows(AIndex : Integer; const AValue : TReportTyperowsArray); 
 
 begin
   If (Frows=AValue) then exit;
@@ -1472,7 +1460,7 @@ end;
 
 
 
-Procedure TReportApiColumnSpec.SetgroupByColumn(AIndex : Integer; AValue : boolean); 
+Procedure TReportApiColumnSpec.SetgroupByColumn(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FgroupByColumn=AValue) then exit;
@@ -1502,6 +1490,16 @@ end;
 
 
 
+Procedure TReportApiColumnSpec.SetproductReportPerspective(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FproductReportPerspective=AValue) then exit;
+  FproductReportPerspective:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TReportApiColumnSpec.SetsavedColumnName(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1529,7 +1527,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportRequestTypefiltersItem.Setcolumn(AIndex : Integer; AValue : TReportApiColumnSpec); 
+Procedure TReportRequestTypefiltersItem.Setcolumn(AIndex : Integer; const AValue : TReportApiColumnSpec); 
 
 begin
   If (Fcolumn=AValue) then exit;
@@ -1549,7 +1547,7 @@ end;
 
 
 
-Procedure TReportRequestTypefiltersItem.Setvalues(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TReportRequestTypefiltersItem.Setvalues(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (Fvalues=AValue) then exit;
@@ -1590,7 +1588,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportRequestTypeorderByItem.Setcolumn(AIndex : Integer; AValue : TReportApiColumnSpec); 
+Procedure TReportRequestTypeorderByItem.Setcolumn(AIndex : Integer; const AValue : TReportApiColumnSpec); 
 
 begin
   If (Fcolumn=AValue) then exit;
@@ -1694,7 +1692,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportRequestTypetimeRange.SetchangedAttributesSinceTimestamp(AIndex : Integer; AValue : TDatetime); 
+Procedure TReportRequestTypetimeRange.SetchangedAttributesSinceTimestamp(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FchangedAttributesSinceTimestamp=AValue) then exit;
@@ -1704,7 +1702,7 @@ end;
 
 
 
-Procedure TReportRequestTypetimeRange.SetchangedMetricsSinceTimestamp(AIndex : Integer; AValue : TDatetime); 
+Procedure TReportRequestTypetimeRange.SetchangedMetricsSinceTimestamp(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FchangedMetricsSinceTimestamp=AValue) then exit;
@@ -1741,7 +1739,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReportRequest.Setcolumns(AIndex : Integer; AValue : TReportRequestTypecolumnsArray); 
+Procedure TReportRequest.Setcolumns(AIndex : Integer; const AValue : TReportRequestTypecolumnsArray); 
 
 begin
   If (Fcolumns=AValue) then exit;
@@ -1761,7 +1759,7 @@ end;
 
 
 
-Procedure TReportRequest.Setfilters(AIndex : Integer; AValue : TReportRequestTypefiltersArray); 
+Procedure TReportRequest.Setfilters(AIndex : Integer; const AValue : TReportRequestTypefiltersArray); 
 
 begin
   If (Ffilters=AValue) then exit;
@@ -1771,7 +1769,7 @@ end;
 
 
 
-Procedure TReportRequest.SetincludeDeletedEntities(AIndex : Integer; AValue : boolean); 
+Procedure TReportRequest.SetincludeDeletedEntities(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FincludeDeletedEntities=AValue) then exit;
@@ -1781,7 +1779,7 @@ end;
 
 
 
-Procedure TReportRequest.SetincludeRemovedEntities(AIndex : Integer; AValue : boolean); 
+Procedure TReportRequest.SetincludeRemovedEntities(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FincludeRemovedEntities=AValue) then exit;
@@ -1791,7 +1789,7 @@ end;
 
 
 
-Procedure TReportRequest.SetmaxRowsPerFile(AIndex : Integer; AValue : integer); 
+Procedure TReportRequest.SetmaxRowsPerFile(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxRowsPerFile=AValue) then exit;
@@ -1801,7 +1799,7 @@ end;
 
 
 
-Procedure TReportRequest.SetorderBy(AIndex : Integer; AValue : TReportRequestTypeorderByArray); 
+Procedure TReportRequest.SetorderBy(AIndex : Integer; const AValue : TReportRequestTypeorderByArray); 
 
 begin
   If (ForderBy=AValue) then exit;
@@ -1811,7 +1809,7 @@ end;
 
 
 
-Procedure TReportRequest.SetreportScope(AIndex : Integer; AValue : TReportRequestTypereportScope); 
+Procedure TReportRequest.SetreportScope(AIndex : Integer; const AValue : TReportRequestTypereportScope); 
 
 begin
   If (FreportScope=AValue) then exit;
@@ -1831,7 +1829,7 @@ end;
 
 
 
-Procedure TReportRequest.SetrowCount(AIndex : Integer; AValue : integer); 
+Procedure TReportRequest.SetrowCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FrowCount=AValue) then exit;
@@ -1841,7 +1839,7 @@ end;
 
 
 
-Procedure TReportRequest.SetstartRow(AIndex : Integer; AValue : integer); 
+Procedure TReportRequest.SetstartRow(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstartRow=AValue) then exit;
@@ -1861,7 +1859,7 @@ end;
 
 
 
-Procedure TReportRequest.SettimeRange(AIndex : Integer; AValue : TReportRequestTypetimeRange); 
+Procedure TReportRequest.SettimeRange(AIndex : Integer; const AValue : TReportRequestTypetimeRange); 
 
 begin
   If (FtimeRange=AValue) then exit;
@@ -1871,7 +1869,7 @@ end;
 
 
 
-Procedure TReportRequest.SetverifySingleTimeZone(AIndex : Integer; AValue : boolean); 
+Procedure TReportRequest.SetverifySingleTimeZone(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FverifySingleTimeZone=AValue) then exit;
@@ -1964,7 +1962,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSavedColumnList.Setitems(AIndex : Integer; AValue : TSavedColumnListTypeitemsArray); 
+Procedure TSavedColumnList.Setitems(AIndex : Integer; const AValue : TSavedColumnListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2004,7 +2002,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUpdateAvailabilityRequest.Setavailabilities(AIndex : Integer; AValue : TUpdateAvailabilityRequestTypeavailabilitiesArray); 
+Procedure TUpdateAvailabilityRequest.Setavailabilities(AIndex : Integer; const AValue : TUpdateAvailabilityRequestTypeavailabilitiesArray); 
 
 begin
   If (Favailabilities=AValue) then exit;
@@ -2034,7 +2032,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUpdateAvailabilityResponse.Setavailabilities(AIndex : Integer; AValue : TUpdateAvailabilityResponseTypeavailabilitiesArray); 
+Procedure TUpdateAvailabilityResponse.Setavailabilities(AIndex : Integer; const AValue : TUpdateAvailabilityResponseTypeavailabilitiesArray); 
 
 begin
   If (Favailabilities=AValue) then exit;
@@ -2298,7 +2296,7 @@ end;
 Class Function TDoubleclicksearchAPI.APIRevision : String;
 
 begin
-  Result:='20150305';
+  Result:='20160519';
 end;
 
 Class Function TDoubleclicksearchAPI.APIID : String;
@@ -2316,7 +2314,7 @@ end;
 Class Function TDoubleclicksearchAPI.APIDescription : String;
 
 begin
-  Result:='Report and modify your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).';
+  Result:='Reports and modifies your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).';
 end;
 
 Class Function TDoubleclicksearchAPI.APIOwnerDomain : String;
@@ -2352,7 +2350,7 @@ end;
 Class Function TDoubleclicksearchAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TDoubleclicksearchAPI.APIbasePath : string;
@@ -2364,7 +2362,7 @@ end;
 Class Function TDoubleclicksearchAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/doubleclicksearch/v2/';
+  Result:='https://www.googleapis.com/doubleclicksearch/v2/';
 end;
 
 Class Function TDoubleclicksearchAPI.APIProtocol : string;

File diff suppressed because it is too large
+ 178 - 596
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
+ 657 - 43
packages/googleapi/src/googlefitness.pp


+ 19 - 34
packages/googleapi/src/googlefreebase.pp

@@ -1,19 +1,4 @@
 unit googlefreebase;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:03
 {$MODE objfpc}
 {$H+}
 
@@ -67,11 +52,11 @@ type
     Fnotable : TReconcileCandidateTypenotable;
   Protected
     //Property setters
-    Procedure Setconfidence(AIndex : Integer; AValue : integer); 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; AValue : TReconcileCandidateTypenotable); virtual;
+    Procedure Setnotable(AIndex : Integer; const AValue : TReconcileCandidateTypenotable); virtual;
   Public
   Published
     Property confidence : integer Index 0 Read Fconfidence Write Setconfidence;
@@ -92,8 +77,8 @@ type
     Fms : integer;
   Protected
     //Property setters
-    Procedure Sethits(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setms(AIndex : Integer; AValue : integer); virtual;
+    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;
@@ -135,10 +120,10 @@ type
     Fwarning : TReconcileGetTypewarningArray;
   Protected
     //Property setters
-    Procedure Setcandidate(AIndex : Integer; AValue : TReconcileGetTypecandidateArray); virtual;
-    Procedure Setcosts(AIndex : Integer; AValue : TReconcileGetTypecosts); virtual;
-    Procedure Setmatch(AIndex : Integer; AValue : TReconcileCandidate); virtual;
-    Procedure Setwarning(AIndex : Integer; AValue : TReconcileGetTypewarningArray); 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;
@@ -219,7 +204,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileCandidate.Setconfidence(AIndex : Integer; AValue : integer); 
+Procedure TReconcileCandidate.Setconfidence(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fconfidence=AValue) then exit;
@@ -259,7 +244,7 @@ end;
 
 
 
-Procedure TReconcileCandidate.Setnotable(AIndex : Integer; AValue : TReconcileCandidateTypenotable); 
+Procedure TReconcileCandidate.Setnotable(AIndex : Integer; const AValue : TReconcileCandidateTypenotable); 
 
 begin
   If (Fnotable=AValue) then exit;
@@ -276,7 +261,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileGetTypecosts.Sethits(AIndex : Integer; AValue : integer); 
+Procedure TReconcileGetTypecosts.Sethits(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fhits=AValue) then exit;
@@ -286,7 +271,7 @@ end;
 
 
 
-Procedure TReconcileGetTypecosts.Setms(AIndex : Integer; AValue : integer); 
+Procedure TReconcileGetTypecosts.Setms(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fms=AValue) then exit;
@@ -340,7 +325,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TReconcileGet.Setcandidate(AIndex : Integer; AValue : TReconcileGetTypecandidateArray); 
+Procedure TReconcileGet.Setcandidate(AIndex : Integer; const AValue : TReconcileGetTypecandidateArray); 
 
 begin
   If (Fcandidate=AValue) then exit;
@@ -350,7 +335,7 @@ end;
 
 
 
-Procedure TReconcileGet.Setcosts(AIndex : Integer; AValue : TReconcileGetTypecosts); 
+Procedure TReconcileGet.Setcosts(AIndex : Integer; const AValue : TReconcileGetTypecosts); 
 
 begin
   If (Fcosts=AValue) then exit;
@@ -360,7 +345,7 @@ end;
 
 
 
-Procedure TReconcileGet.Setmatch(AIndex : Integer; AValue : TReconcileCandidate); 
+Procedure TReconcileGet.Setmatch(AIndex : Integer; const AValue : TReconcileCandidate); 
 
 begin
   If (Fmatch=AValue) then exit;
@@ -370,7 +355,7 @@ end;
 
 
 
-Procedure TReconcileGet.Setwarning(AIndex : Integer; AValue : TReconcileGetTypewarningArray); 
+Procedure TReconcileGet.Setwarning(AIndex : Integer; const AValue : TReconcileGetTypewarningArray); 
 
 begin
   If (Fwarning=AValue) then exit;
@@ -415,7 +400,7 @@ end;
 Class Function TFreebaseAPI.APIRevision : String;
 
 begin
-  Result:='20150330';
+  Result:='20150728';
 end;
 
 Class Function TFreebaseAPI.APIID : String;
@@ -469,7 +454,7 @@ end;
 Class Function TFreebaseAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TFreebaseAPI.APIbasePath : string;
@@ -481,7 +466,7 @@ end;
 Class Function TFreebaseAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/freebase/v1/';
+  Result:='https://www.googleapis.com/freebase/v1/';
 end;
 
 Class Function TFreebaseAPI.APIProtocol : string;

+ 109 - 124
packages/googleapi/src/googlefusiontables.pp

@@ -1,19 +1,4 @@
 unit googlefusiontables;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:03
 {$MODE objfpc}
 {$H+}
 
@@ -99,10 +84,10 @@ type
     //Property setters
     Procedure Setcolor(AIndex : Integer; const AValue : String); virtual;
     Procedure Seticon(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmax(AIndex : Integer; AValue : double); virtual;
-    Procedure Setmin(AIndex : Integer; AValue : double); virtual;
-    Procedure Setopacity(AIndex : Integer; AValue : double); virtual;
-    Procedure Setweight(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setmax(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setmin(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setopacity(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setweight(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property color : String Index 0 Read Fcolor Write Setcolor;
@@ -124,8 +109,8 @@ type
     FtableIndex : integer;
   Protected
     //Property setters
-    Procedure SetcolumnId(AIndex : Integer; AValue : integer); virtual;
-    Procedure SettableIndex(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcolumnId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettableIndex(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property columnId : integer Index 0 Read FcolumnId Write SetcolumnId;
@@ -154,8 +139,8 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure SetbaseColumn(AIndex : Integer; AValue : TColumnTypebaseColumn); virtual;
-    Procedure SetcolumnId(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetbaseColumn(AIndex : Integer; const AValue : TColumnTypebaseColumn); virtual;
+    Procedure SetcolumnId(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetcolumnJsonSchema(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcolumnPropertiesJson(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
@@ -164,8 +149,8 @@ type
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetvalidValues(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetvalidateData(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetvalidValues(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetvalidateData(AIndex : Integer; const AValue : boolean); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -199,10 +184,10 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TColumnListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TColumnListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -228,8 +213,8 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setgeometries(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
-    Procedure Setgeometry(AIndex : Integer; AValue : TJSONSchema); virtual;
+    Procedure Setgeometries(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
+    Procedure Setgeometry(AIndex : Integer; const AValue : TJSONSchema); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -273,7 +258,7 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setcoordinates(AIndex : Integer; AValue : TLineTypecoordinatesArray); virtual;
+    Procedure Setcoordinates(AIndex : Integer; const AValue : TLineTypecoordinatesArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -300,10 +285,10 @@ type
   Protected
     //Property setters
     Procedure SetstrokeColor(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetstrokeColorStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
-    Procedure SetstrokeOpacity(AIndex : Integer; AValue : double); virtual;
-    Procedure SetstrokeWeight(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetstrokeWeightStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
+    Procedure SetstrokeColorStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
+    Procedure SetstrokeOpacity(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetstrokeWeight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstrokeWeightStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
   Public
   Published
     Property strokeColor : String Index 0 Read FstrokeColor Write SetstrokeColor;
@@ -325,7 +310,7 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setcoordinates(AIndex : Integer; AValue : TdoubleArray); virtual;
+    Procedure Setcoordinates(AIndex : Integer; const AValue : TdoubleArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -349,7 +334,7 @@ type
   Protected
     //Property setters
     Procedure SeticonName(AIndex : Integer; const AValue : String); virtual;
-    Procedure SeticonStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
+    Procedure SeticonStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
   Public
   Published
     Property iconName : String Index 0 Read FiconName Write SeticonName;
@@ -368,7 +353,7 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setcoordinates(AIndex : Integer; AValue : TPolygonTypecoordinatesArray); virtual;
+    Procedure Setcoordinates(AIndex : Integer; const AValue : TPolygonTypecoordinatesArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -398,13 +383,13 @@ type
   Protected
     //Property setters
     Procedure SetfillColor(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetfillColorStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
-    Procedure SetfillOpacity(AIndex : Integer; AValue : double); virtual;
+    Procedure SetfillColorStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
+    Procedure SetfillOpacity(AIndex : Integer; const AValue : double); virtual;
     Procedure SetstrokeColor(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetstrokeColorStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
-    Procedure SetstrokeOpacity(AIndex : Integer; AValue : double); virtual;
-    Procedure SetstrokeWeight(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetstrokeWeightStyler(AIndex : Integer; AValue : TStyleFunction); virtual;
+    Procedure SetstrokeColorStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
+    Procedure SetstrokeOpacity(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetstrokeWeight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstrokeWeightStyler(AIndex : Integer; const AValue : TStyleFunction); virtual;
   Public
   Published
     Property fillColor : String Index 0 Read FfillColor Write SetfillColor;
@@ -429,9 +414,9 @@ type
     Frows : TSqlresponseTyperowsArray;
   Protected
     //Property setters
-    Procedure Setcolumns(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setcolumns(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrows(AIndex : Integer; AValue : TSqlresponseTyperowsArray); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TSqlresponseTyperowsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -455,7 +440,7 @@ type
   Protected
     //Property setters
     Procedure Setcolor(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setopacity(AIndex : Integer; AValue : double); virtual;
+    Procedure Setopacity(AIndex : Integer; const AValue : double); virtual;
   Public
   Published
     Property color : String Index 0 Read Fcolor Write Setcolor;
@@ -474,9 +459,9 @@ type
     Fmin : double;
   Protected
     //Property setters
-    Procedure Setcolors(AIndex : Integer; AValue : TStyleFunctionTypegradientTypecolorsArray); virtual;
-    Procedure Setmax(AIndex : Integer; AValue : double); virtual;
-    Procedure Setmin(AIndex : Integer; AValue : double); virtual;
+    Procedure Setcolors(AIndex : Integer; const AValue : TStyleFunctionTypegradientTypecolorsArray); virtual;
+    Procedure Setmax(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setmin(AIndex : Integer; const AValue : double); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -501,9 +486,9 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setbuckets(AIndex : Integer; AValue : TStyleFunctionTypebucketsArray); virtual;
+    Procedure Setbuckets(AIndex : Integer; const AValue : TStyleFunctionTypebucketsArray); virtual;
     Procedure SetcolumnName(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setgradient(AIndex : Integer; AValue : TStyleFunctionTypegradient); virtual;
+    Procedure Setgradient(AIndex : Integer; const AValue : TStyleFunctionTypegradient); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -534,11 +519,11 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmarkerOptions(AIndex : Integer; AValue : TPointStyle); virtual;
+    Procedure SetmarkerOptions(AIndex : Integer; const AValue : TPointStyle); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetpolygonOptions(AIndex : Integer; AValue : TPolygonStyle); virtual;
-    Procedure SetpolylineOptions(AIndex : Integer; AValue : TLineStyle); virtual;
-    Procedure SetstyleId(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetpolygonOptions(AIndex : Integer; const AValue : TPolygonStyle); virtual;
+    Procedure SetpolylineOptions(AIndex : Integer; const AValue : TLineStyle); virtual;
+    Procedure SetstyleId(AIndex : Integer; const AValue : integer); virtual;
     Procedure SettableId(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -564,10 +549,10 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TStyleSettingListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TStyleSettingListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -604,11 +589,11 @@ type
     //Property setters
     Procedure Setattribution(AIndex : Integer; const AValue : String); virtual;
     Procedure SetattributionLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetbaseTableIds(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetbaseTableIds(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetcolumnPropertiesJsonSchema(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setcolumns(AIndex : Integer; AValue : TTableTypecolumnsArray); virtual;
+    Procedure Setcolumns(AIndex : Integer; const AValue : TTableTypecolumnsArray); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisExportable(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisExportable(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setsql(AIndex : Integer; const AValue : String); virtual;
@@ -648,7 +633,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTableListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTableListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -679,7 +664,7 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setprogress(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setstarted(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setstarted(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SettaskId(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -704,10 +689,10 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTaskListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTaskListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -735,12 +720,12 @@ type
     FtemplateId : integer;
   Protected
     //Property setters
-    Procedure SetautomaticColumnNames(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetautomaticColumnNames(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setbody(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SettableId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettemplateId(AIndex : Integer; AValue : integer); virtual;
+    Procedure SettemplateId(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -768,10 +753,10 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTemplateListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTemplateListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -1098,7 +1083,7 @@ end;
 
 
 
-Procedure TBucket.Setmax(AIndex : Integer; AValue : double); 
+Procedure TBucket.Setmax(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fmax=AValue) then exit;
@@ -1108,7 +1093,7 @@ end;
 
 
 
-Procedure TBucket.Setmin(AIndex : Integer; AValue : double); 
+Procedure TBucket.Setmin(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fmin=AValue) then exit;
@@ -1118,7 +1103,7 @@ end;
 
 
 
-Procedure TBucket.Setopacity(AIndex : Integer; AValue : double); 
+Procedure TBucket.Setopacity(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fopacity=AValue) then exit;
@@ -1128,7 +1113,7 @@ end;
 
 
 
-Procedure TBucket.Setweight(AIndex : Integer; AValue : integer); 
+Procedure TBucket.Setweight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fweight=AValue) then exit;
@@ -1145,7 +1130,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TColumnTypebaseColumn.SetcolumnId(AIndex : Integer; AValue : integer); 
+Procedure TColumnTypebaseColumn.SetcolumnId(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FcolumnId=AValue) then exit;
@@ -1155,7 +1140,7 @@ end;
 
 
 
-Procedure TColumnTypebaseColumn.SettableIndex(AIndex : Integer; AValue : integer); 
+Procedure TColumnTypebaseColumn.SettableIndex(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtableIndex=AValue) then exit;
@@ -1172,7 +1157,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TColumn.SetbaseColumn(AIndex : Integer; AValue : TColumnTypebaseColumn); 
+Procedure TColumn.SetbaseColumn(AIndex : Integer; const AValue : TColumnTypebaseColumn); 
 
 begin
   If (FbaseColumn=AValue) then exit;
@@ -1182,7 +1167,7 @@ end;
 
 
 
-Procedure TColumn.SetcolumnId(AIndex : Integer; AValue : integer); 
+Procedure TColumn.SetcolumnId(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FcolumnId=AValue) then exit;
@@ -1272,7 +1257,7 @@ end;
 
 
 
-Procedure TColumn.SetvalidValues(AIndex : Integer; AValue : TStringArray); 
+Procedure TColumn.SetvalidValues(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FvalidValues=AValue) then exit;
@@ -1282,7 +1267,7 @@ end;
 
 
 
-Procedure TColumn.SetvalidateData(AIndex : Integer; AValue : boolean); 
+Procedure TColumn.SetvalidateData(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FvalidateData=AValue) then exit;
@@ -1323,7 +1308,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TColumnList.Setitems(AIndex : Integer; AValue : TColumnListTypeitemsArray); 
+Procedure TColumnList.Setitems(AIndex : Integer; const AValue : TColumnListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1353,7 +1338,7 @@ end;
 
 
 
-Procedure TColumnList.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TColumnList.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -1383,7 +1368,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TGeometry.Setgeometries(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TGeometry.Setgeometries(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (Fgeometries=AValue) then exit;
@@ -1393,7 +1378,7 @@ end;
 
 
 
-Procedure TGeometry.Setgeometry(AIndex : Integer; AValue : TJSONSchema); 
+Procedure TGeometry.Setgeometry(AIndex : Integer; const AValue : TJSONSchema); 
 
 begin
   If (Fgeometry=AValue) then exit;
@@ -1471,7 +1456,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLine.Setcoordinates(AIndex : Integer; AValue : TLineTypecoordinatesArray); 
+Procedure TLine.Setcoordinates(AIndex : Integer; const AValue : TLineTypecoordinatesArray); 
 
 begin
   If (Fcoordinates=AValue) then exit;
@@ -1532,7 +1517,7 @@ end;
 
 
 
-Procedure TLineStyle.SetstrokeColorStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TLineStyle.SetstrokeColorStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FstrokeColorStyler=AValue) then exit;
@@ -1542,7 +1527,7 @@ end;
 
 
 
-Procedure TLineStyle.SetstrokeOpacity(AIndex : Integer; AValue : double); 
+Procedure TLineStyle.SetstrokeOpacity(AIndex : Integer; const AValue : double); 
 
 begin
   If (FstrokeOpacity=AValue) then exit;
@@ -1552,7 +1537,7 @@ end;
 
 
 
-Procedure TLineStyle.SetstrokeWeight(AIndex : Integer; AValue : integer); 
+Procedure TLineStyle.SetstrokeWeight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstrokeWeight=AValue) then exit;
@@ -1562,7 +1547,7 @@ end;
 
 
 
-Procedure TLineStyle.SetstrokeWeightStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TLineStyle.SetstrokeWeightStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FstrokeWeightStyler=AValue) then exit;
@@ -1579,7 +1564,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPoint.Setcoordinates(AIndex : Integer; AValue : TdoubleArray); 
+Procedure TPoint.Setcoordinates(AIndex : Integer; const AValue : TdoubleArray); 
 
 begin
   If (Fcoordinates=AValue) then exit;
@@ -1640,7 +1625,7 @@ end;
 
 
 
-Procedure TPointStyle.SeticonStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TPointStyle.SeticonStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FiconStyler=AValue) then exit;
@@ -1657,7 +1642,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPolygon.Setcoordinates(AIndex : Integer; AValue : TPolygonTypecoordinatesArray); 
+Procedure TPolygon.Setcoordinates(AIndex : Integer; const AValue : TPolygonTypecoordinatesArray); 
 
 begin
   If (Fcoordinates=AValue) then exit;
@@ -1718,7 +1703,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetfillColorStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TPolygonStyle.SetfillColorStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FfillColorStyler=AValue) then exit;
@@ -1728,7 +1713,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetfillOpacity(AIndex : Integer; AValue : double); 
+Procedure TPolygonStyle.SetfillOpacity(AIndex : Integer; const AValue : double); 
 
 begin
   If (FfillOpacity=AValue) then exit;
@@ -1748,7 +1733,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetstrokeColorStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TPolygonStyle.SetstrokeColorStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FstrokeColorStyler=AValue) then exit;
@@ -1758,7 +1743,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetstrokeOpacity(AIndex : Integer; AValue : double); 
+Procedure TPolygonStyle.SetstrokeOpacity(AIndex : Integer; const AValue : double); 
 
 begin
   If (FstrokeOpacity=AValue) then exit;
@@ -1768,7 +1753,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetstrokeWeight(AIndex : Integer; AValue : integer); 
+Procedure TPolygonStyle.SetstrokeWeight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstrokeWeight=AValue) then exit;
@@ -1778,7 +1763,7 @@ end;
 
 
 
-Procedure TPolygonStyle.SetstrokeWeightStyler(AIndex : Integer; AValue : TStyleFunction); 
+Procedure TPolygonStyle.SetstrokeWeightStyler(AIndex : Integer; const AValue : TStyleFunction); 
 
 begin
   If (FstrokeWeightStyler=AValue) then exit;
@@ -1795,7 +1780,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSqlresponse.Setcolumns(AIndex : Integer; AValue : TStringArray); 
+Procedure TSqlresponse.Setcolumns(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fcolumns=AValue) then exit;
@@ -1815,7 +1800,7 @@ end;
 
 
 
-Procedure TSqlresponse.Setrows(AIndex : Integer; AValue : TSqlresponseTyperowsArray); 
+Procedure TSqlresponse.Setrows(AIndex : Integer; const AValue : TSqlresponseTyperowsArray); 
 
 begin
   If (Frows=AValue) then exit;
@@ -1856,7 +1841,7 @@ end;
 
 
 
-Procedure TStyleFunctionTypegradientTypecolorsItem.Setopacity(AIndex : Integer; AValue : double); 
+Procedure TStyleFunctionTypegradientTypecolorsItem.Setopacity(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fopacity=AValue) then exit;
@@ -1873,7 +1858,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStyleFunctionTypegradient.Setcolors(AIndex : Integer; AValue : TStyleFunctionTypegradientTypecolorsArray); 
+Procedure TStyleFunctionTypegradient.Setcolors(AIndex : Integer; const AValue : TStyleFunctionTypegradientTypecolorsArray); 
 
 begin
   If (Fcolors=AValue) then exit;
@@ -1883,7 +1868,7 @@ end;
 
 
 
-Procedure TStyleFunctionTypegradient.Setmax(AIndex : Integer; AValue : double); 
+Procedure TStyleFunctionTypegradient.Setmax(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fmax=AValue) then exit;
@@ -1893,7 +1878,7 @@ end;
 
 
 
-Procedure TStyleFunctionTypegradient.Setmin(AIndex : Integer; AValue : double); 
+Procedure TStyleFunctionTypegradient.Setmin(AIndex : Integer; const AValue : double); 
 
 begin
   If (Fmin=AValue) then exit;
@@ -1923,7 +1908,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStyleFunction.Setbuckets(AIndex : Integer; AValue : TStyleFunctionTypebucketsArray); 
+Procedure TStyleFunction.Setbuckets(AIndex : Integer; const AValue : TStyleFunctionTypebucketsArray); 
 
 begin
   If (Fbuckets=AValue) then exit;
@@ -1943,7 +1928,7 @@ end;
 
 
 
-Procedure TStyleFunction.Setgradient(AIndex : Integer; AValue : TStyleFunctionTypegradient); 
+Procedure TStyleFunction.Setgradient(AIndex : Integer; const AValue : TStyleFunctionTypegradient); 
 
 begin
   If (Fgradient=AValue) then exit;
@@ -1993,7 +1978,7 @@ end;
 
 
 
-Procedure TStyleSetting.SetmarkerOptions(AIndex : Integer; AValue : TPointStyle); 
+Procedure TStyleSetting.SetmarkerOptions(AIndex : Integer; const AValue : TPointStyle); 
 
 begin
   If (FmarkerOptions=AValue) then exit;
@@ -2013,7 +1998,7 @@ end;
 
 
 
-Procedure TStyleSetting.SetpolygonOptions(AIndex : Integer; AValue : TPolygonStyle); 
+Procedure TStyleSetting.SetpolygonOptions(AIndex : Integer; const AValue : TPolygonStyle); 
 
 begin
   If (FpolygonOptions=AValue) then exit;
@@ -2023,7 +2008,7 @@ end;
 
 
 
-Procedure TStyleSetting.SetpolylineOptions(AIndex : Integer; AValue : TLineStyle); 
+Procedure TStyleSetting.SetpolylineOptions(AIndex : Integer; const AValue : TLineStyle); 
 
 begin
   If (FpolylineOptions=AValue) then exit;
@@ -2033,7 +2018,7 @@ end;
 
 
 
-Procedure TStyleSetting.SetstyleId(AIndex : Integer; AValue : integer); 
+Procedure TStyleSetting.SetstyleId(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstyleId=AValue) then exit;
@@ -2060,7 +2045,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TStyleSettingList.Setitems(AIndex : Integer; AValue : TStyleSettingListTypeitemsArray); 
+Procedure TStyleSettingList.Setitems(AIndex : Integer; const AValue : TStyleSettingListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2090,7 +2075,7 @@ end;
 
 
 
-Procedure TStyleSettingList.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TStyleSettingList.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -2140,7 +2125,7 @@ end;
 
 
 
-Procedure TTable.SetbaseTableIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TTable.SetbaseTableIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FbaseTableIds=AValue) then exit;
@@ -2160,7 +2145,7 @@ end;
 
 
 
-Procedure TTable.Setcolumns(AIndex : Integer; AValue : TTableTypecolumnsArray); 
+Procedure TTable.Setcolumns(AIndex : Integer; const AValue : TTableTypecolumnsArray); 
 
 begin
   If (Fcolumns=AValue) then exit;
@@ -2180,7 +2165,7 @@ end;
 
 
 
-Procedure TTable.SetisExportable(AIndex : Integer; AValue : boolean); 
+Procedure TTable.SetisExportable(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisExportable=AValue) then exit;
@@ -2271,7 +2256,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTableList.Setitems(AIndex : Integer; AValue : TTableListTypeitemsArray); 
+Procedure TTableList.Setitems(AIndex : Integer; const AValue : TTableListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2341,7 +2326,7 @@ end;
 
 
 
-Procedure TTask.Setstarted(AIndex : Integer; AValue : boolean); 
+Procedure TTask.Setstarted(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fstarted=AValue) then exit;
@@ -2389,7 +2374,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTaskList.Setitems(AIndex : Integer; AValue : TTaskListTypeitemsArray); 
+Procedure TTaskList.Setitems(AIndex : Integer; const AValue : TTaskListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2419,7 +2404,7 @@ end;
 
 
 
-Procedure TTaskList.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TTaskList.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -2449,7 +2434,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTemplate.SetautomaticColumnNames(AIndex : Integer; AValue : TStringArray); 
+Procedure TTemplate.SetautomaticColumnNames(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FautomaticColumnNames=AValue) then exit;
@@ -2499,7 +2484,7 @@ end;
 
 
 
-Procedure TTemplate.SettemplateId(AIndex : Integer; AValue : integer); 
+Procedure TTemplate.SettemplateId(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtemplateId=AValue) then exit;
@@ -2529,7 +2514,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTemplateList.Setitems(AIndex : Integer; AValue : TTemplateListTypeitemsArray); 
+Procedure TTemplateList.Setitems(AIndex : Integer; const AValue : TTemplateListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2559,7 +2544,7 @@ end;
 
 
 
-Procedure TTemplateList.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TTemplateList.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -3368,7 +3353,7 @@ end;
 Class Function TFusiontablesAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160317';
 end;
 
 Class Function TFusiontablesAPI.APIID : String;
@@ -3422,7 +3407,7 @@ end;
 Class Function TFusiontablesAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TFusiontablesAPI.APIbasePath : string;
@@ -3434,7 +3419,7 @@ end;
 Class Function TFusiontablesAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/fusiontables/v2/';
+  Result:='https://www.googleapis.com/fusiontables/v2/';
 end;
 
 Class Function TFusiontablesAPI.APIProtocol : string;

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


+ 49 - 64
packages/googleapi/src/googlegamesConfiguration.pp → packages/googleapi/src/googlegamesconfiguration.pp

@@ -1,19 +1,4 @@
 unit googlegamesConfiguration;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:04
 {$MODE objfpc}
 {$H+}
 
@@ -69,12 +54,12 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure SetachievementType(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdraft(AIndex : Integer; AValue : TAchievementConfigurationDetail); virtual;
+    Procedure Setdraft(AIndex : Integer; const AValue : TAchievementConfigurationDetail); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure SetinitialState(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TAchievementConfigurationDetail); virtual;
-    Procedure SetstepsToUnlock(AIndex : Integer; AValue : integer); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TAchievementConfigurationDetail); virtual;
+    Procedure SetstepsToUnlock(AIndex : Integer; const AValue : integer); virtual;
     Procedure Settoken(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -103,12 +88,12 @@ type
     FsortRank : integer;
   Protected
     //Property setters
-    Procedure Setdescription(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
     Procedure SeticonUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setname(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure SetpointValue(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetsortRank(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure SetpointValue(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsortRank(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property description : TLocalizedStringBundle Index 0 Read Fdescription Write Setdescription;
@@ -131,7 +116,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TAchievementConfigurationListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAchievementConfigurationListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -160,12 +145,12 @@ type
     Fzero : TLocalizedStringBundle;
   Protected
     //Property setters
-    Procedure Setfew(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure Setmany(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure Setone(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure Setother(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure Settwo(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure Setzero(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
+    Procedure Setfew(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure Setmany(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure Setone(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure Setother(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure Settwo(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure Setzero(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
   Public
   Published
     Property few : TLocalizedStringBundle Index 0 Read Ffew Write Setfew;
@@ -190,9 +175,9 @@ type
   Protected
     //Property setters
     Procedure SetcurrencyCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnumDecimalPlaces(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetnumDecimalPlaces(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetnumberFormatType(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsuffix(AIndex : Integer; AValue : TGamesNumberAffixConfiguration); virtual;
+    Procedure Setsuffix(AIndex : Integer; const AValue : TGamesNumberAffixConfiguration); virtual;
   Public
   Published
     Property currencyCode : String Index 0 Read FcurrencyCode Write SetcurrencyCode;
@@ -244,10 +229,10 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setdraft(AIndex : Integer; AValue : TLeaderboardConfigurationDetail); virtual;
+    Procedure Setdraft(AIndex : Integer; const AValue : TLeaderboardConfigurationDetail); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Set_published(AIndex : Integer; AValue : TLeaderboardConfigurationDetail); virtual;
+    Procedure Set_published(AIndex : Integer; const AValue : TLeaderboardConfigurationDetail); virtual;
     Procedure SetscoreMax(AIndex : Integer; const AValue : String); virtual;
     Procedure SetscoreMin(AIndex : Integer; const AValue : String); virtual;
     Procedure SetscoreOrder(AIndex : Integer; const AValue : String); virtual;
@@ -280,9 +265,9 @@ type
     //Property setters
     Procedure SeticonUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setname(AIndex : Integer; AValue : TLocalizedStringBundle); virtual;
-    Procedure SetscoreFormat(AIndex : Integer; AValue : TGamesNumberFormatConfiguration); virtual;
-    Procedure SetsortRank(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TLocalizedStringBundle); virtual;
+    Procedure SetscoreFormat(AIndex : Integer; const AValue : TGamesNumberFormatConfiguration); virtual;
+    Procedure SetsortRank(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property iconUrl : String Index 0 Read FiconUrl Write SeticonUrl;
@@ -304,7 +289,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TLeaderboardConfigurationListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TLeaderboardConfigurationListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -352,7 +337,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settranslations(AIndex : Integer; AValue : TLocalizedStringBundleTypetranslationsArray); virtual;
+    Procedure Settranslations(AIndex : Integer; const AValue : TLocalizedStringBundleTypetranslationsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -493,7 +478,7 @@ end;
 
 
 
-Procedure TAchievementConfiguration.Setdraft(AIndex : Integer; AValue : TAchievementConfigurationDetail); 
+Procedure TAchievementConfiguration.Setdraft(AIndex : Integer; const AValue : TAchievementConfigurationDetail); 
 
 begin
   If (Fdraft=AValue) then exit;
@@ -533,7 +518,7 @@ end;
 
 
 
-Procedure TAchievementConfiguration.Set_published(AIndex : Integer; AValue : TAchievementConfigurationDetail); 
+Procedure TAchievementConfiguration.Set_published(AIndex : Integer; const AValue : TAchievementConfigurationDetail); 
 
 begin
   If (F_published=AValue) then exit;
@@ -543,7 +528,7 @@ end;
 
 
 
-Procedure TAchievementConfiguration.SetstepsToUnlock(AIndex : Integer; AValue : integer); 
+Procedure TAchievementConfiguration.SetstepsToUnlock(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FstepsToUnlock=AValue) then exit;
@@ -581,7 +566,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAchievementConfigurationDetail.Setdescription(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TAchievementConfigurationDetail.Setdescription(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fdescription=AValue) then exit;
@@ -611,7 +596,7 @@ end;
 
 
 
-Procedure TAchievementConfigurationDetail.Setname(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TAchievementConfigurationDetail.Setname(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fname=AValue) then exit;
@@ -621,7 +606,7 @@ end;
 
 
 
-Procedure TAchievementConfigurationDetail.SetpointValue(AIndex : Integer; AValue : integer); 
+Procedure TAchievementConfigurationDetail.SetpointValue(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FpointValue=AValue) then exit;
@@ -631,7 +616,7 @@ end;
 
 
 
-Procedure TAchievementConfigurationDetail.SetsortRank(AIndex : Integer; AValue : integer); 
+Procedure TAchievementConfigurationDetail.SetsortRank(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FsortRank=AValue) then exit;
@@ -648,7 +633,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAchievementConfigurationListResponse.Setitems(AIndex : Integer; AValue : TAchievementConfigurationListResponseTypeitemsArray); 
+Procedure TAchievementConfigurationListResponse.Setitems(AIndex : Integer; const AValue : TAchievementConfigurationListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -698,7 +683,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TGamesNumberAffixConfiguration.Setfew(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Setfew(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Ffew=AValue) then exit;
@@ -708,7 +693,7 @@ end;
 
 
 
-Procedure TGamesNumberAffixConfiguration.Setmany(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Setmany(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fmany=AValue) then exit;
@@ -718,7 +703,7 @@ end;
 
 
 
-Procedure TGamesNumberAffixConfiguration.Setone(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Setone(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fone=AValue) then exit;
@@ -728,7 +713,7 @@ end;
 
 
 
-Procedure TGamesNumberAffixConfiguration.Setother(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Setother(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fother=AValue) then exit;
@@ -738,7 +723,7 @@ end;
 
 
 
-Procedure TGamesNumberAffixConfiguration.Settwo(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Settwo(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Ftwo=AValue) then exit;
@@ -748,7 +733,7 @@ end;
 
 
 
-Procedure TGamesNumberAffixConfiguration.Setzero(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TGamesNumberAffixConfiguration.Setzero(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fzero=AValue) then exit;
@@ -775,7 +760,7 @@ end;
 
 
 
-Procedure TGamesNumberFormatConfiguration.SetnumDecimalPlaces(AIndex : Integer; AValue : integer); 
+Procedure TGamesNumberFormatConfiguration.SetnumDecimalPlaces(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumDecimalPlaces=AValue) then exit;
@@ -795,7 +780,7 @@ end;
 
 
 
-Procedure TGamesNumberFormatConfiguration.Setsuffix(AIndex : Integer; AValue : TGamesNumberAffixConfiguration); 
+Procedure TGamesNumberFormatConfiguration.Setsuffix(AIndex : Integer; const AValue : TGamesNumberAffixConfiguration); 
 
 begin
   If (Fsuffix=AValue) then exit;
@@ -859,7 +844,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLeaderboardConfiguration.Setdraft(AIndex : Integer; AValue : TLeaderboardConfigurationDetail); 
+Procedure TLeaderboardConfiguration.Setdraft(AIndex : Integer; const AValue : TLeaderboardConfigurationDetail); 
 
 begin
   If (Fdraft=AValue) then exit;
@@ -889,7 +874,7 @@ end;
 
 
 
-Procedure TLeaderboardConfiguration.Set_published(AIndex : Integer; AValue : TLeaderboardConfigurationDetail); 
+Procedure TLeaderboardConfiguration.Set_published(AIndex : Integer; const AValue : TLeaderboardConfigurationDetail); 
 
 begin
   If (F_published=AValue) then exit;
@@ -977,7 +962,7 @@ end;
 
 
 
-Procedure TLeaderboardConfigurationDetail.Setname(AIndex : Integer; AValue : TLocalizedStringBundle); 
+Procedure TLeaderboardConfigurationDetail.Setname(AIndex : Integer; const AValue : TLocalizedStringBundle); 
 
 begin
   If (Fname=AValue) then exit;
@@ -987,7 +972,7 @@ end;
 
 
 
-Procedure TLeaderboardConfigurationDetail.SetscoreFormat(AIndex : Integer; AValue : TGamesNumberFormatConfiguration); 
+Procedure TLeaderboardConfigurationDetail.SetscoreFormat(AIndex : Integer; const AValue : TGamesNumberFormatConfiguration); 
 
 begin
   If (FscoreFormat=AValue) then exit;
@@ -997,7 +982,7 @@ end;
 
 
 
-Procedure TLeaderboardConfigurationDetail.SetsortRank(AIndex : Integer; AValue : integer); 
+Procedure TLeaderboardConfigurationDetail.SetsortRank(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FsortRank=AValue) then exit;
@@ -1014,7 +999,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLeaderboardConfigurationListResponse.Setitems(AIndex : Integer; AValue : TLeaderboardConfigurationListResponseTypeitemsArray); 
+Procedure TLeaderboardConfigurationListResponse.Setitems(AIndex : Integer; const AValue : TLeaderboardConfigurationListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1111,7 +1096,7 @@ end;
 
 
 
-Procedure TLocalizedStringBundle.Settranslations(AIndex : Integer; AValue : TLocalizedStringBundleTypetranslationsArray); 
+Procedure TLocalizedStringBundle.Settranslations(AIndex : Integer; const AValue : TLocalizedStringBundleTypetranslationsArray); 
 
 begin
   If (Ftranslations=AValue) then exit;
@@ -1433,7 +1418,7 @@ end;
 Class Function TGamesConfigurationAPI.APIRevision : String;
 
 begin
-  Result:='20150511';
+  Result:='20160519';
 end;
 
 Class Function TGamesConfigurationAPI.APIID : String;
@@ -1487,7 +1472,7 @@ end;
 Class Function TGamesConfigurationAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TGamesConfigurationAPI.APIbasePath : string;
@@ -1499,7 +1484,7 @@ end;
 Class Function TGamesConfigurationAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/games/v1configuration/';
+  Result:='https://www.googleapis.com/games/v1configuration/';
 end;
 
 Class Function TGamesConfigurationAPI.APIProtocol : string;

+ 146 - 60
packages/googleapi/src/googlegamesManagement.pp → packages/googleapi/src/googlegamesmanagement.pp

@@ -1,19 +1,4 @@
 unit googlegamesManagement;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:04
 {$MODE objfpc}
 {$H+}
 
@@ -36,6 +21,7 @@ type
   TPlayer = Class;
   TPlayerScoreResetAllResponse = Class;
   TPlayerScoreResetResponse = Class;
+  TProfileSettings = Class;
   TQuestsResetMultipleForAllRequest = Class;
   TScoresResetMultipleForAllRequest = Class;
   TAchievementResetAllResponseArray = Array of TAchievementResetAllResponse;
@@ -50,6 +36,7 @@ type
   TPlayerArray = Array of TPlayer;
   TPlayerScoreResetAllResponseArray = Array of TPlayerScoreResetAllResponse;
   TPlayerScoreResetResponseArray = Array of TPlayerScoreResetResponse;
+  TProfileSettingsArray = Array of TProfileSettings;
   TQuestsResetMultipleForAllRequestArray = Array of TQuestsResetMultipleForAllRequest;
   TScoresResetMultipleForAllRequestArray = Array of TScoresResetMultipleForAllRequest;
   //Anonymous types, using auto-generated names
@@ -69,7 +56,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresults(AIndex : Integer; AValue : TAchievementResetAllResponseTyperesultsArray); virtual;
+    Procedure Setresults(AIndex : Integer; const AValue : TAchievementResetAllResponseTyperesultsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -91,7 +78,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setachievement_ids(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setachievement_ids(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -119,7 +106,7 @@ type
     Procedure SetcurrentState(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdefinitionId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetupdateOccurred(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetupdateOccurred(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property currentState : String Index 0 Read FcurrentState Write SetcurrentState;
@@ -139,7 +126,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setevent_ids(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setevent_ids(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -162,7 +149,7 @@ type
     FtimeMillis : String;
   Protected
     //Property setters
-    Procedure SetautoMatched(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetautoMatched(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SettimeMillis(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -184,9 +171,9 @@ type
   Protected
     //Property setters
     Procedure SetcurrentExperiencePoints(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcurrentLevel(AIndex : Integer; AValue : TGamesPlayerLevelResource); virtual;
+    Procedure SetcurrentLevel(AIndex : Integer; const AValue : TGamesPlayerLevelResource); virtual;
     Procedure SetlastLevelUpTimestampMillis(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnextLevel(AIndex : Integer; AValue : TGamesPlayerLevelResource); virtual;
+    Procedure SetnextLevel(AIndex : Integer; const AValue : TGamesPlayerLevelResource); virtual;
   Public
   Published
     Property currentExperiencePoints : String Index 0 Read FcurrentExperiencePoints Write SetcurrentExperiencePoints;
@@ -207,7 +194,7 @@ type
     FminExperiencePoints : String;
   Protected
     //Property setters
-    Procedure Setlevel(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setlevel(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetmaxExperiencePoints(AIndex : Integer; const AValue : String); virtual;
     Procedure SetminExperiencePoints(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -231,7 +218,7 @@ type
     //Property setters
     Procedure SethiddenTimeMillis(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setplayer(AIndex : Integer; AValue : TPlayer); virtual;
+    Procedure Setplayer(AIndex : Integer; const AValue : TPlayer); virtual;
   Public
   Published
     Property hiddenTimeMillis : String Index 0 Read FhiddenTimeMillis Write SethiddenTimeMillis;
@@ -251,7 +238,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : THiddenPlayerListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : THiddenPlayerListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -292,33 +279,45 @@ type
   TPlayer = Class(TGoogleBaseObject)
   Private
     FavatarImageUrl : String;
+    FbannerUrlLandscape : String;
+    FbannerUrlPortrait : String;
     FdisplayName : String;
     FexperienceInfo : TGamesPlayerExperienceInfoResource;
     Fkind : String;
     FlastPlayedWith : TGamesPlayedResource;
     Fname : TPlayerTypename;
+    ForiginalPlayerId : String;
     FplayerId : String;
+    FprofileSettings : TProfileSettings;
     Ftitle : String;
   Protected
     //Property setters
     Procedure SetavatarImageUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbannerUrlLandscape(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbannerUrlPortrait(AIndex : Integer; const AValue : String); virtual;
     Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetexperienceInfo(AIndex : Integer; AValue : TGamesPlayerExperienceInfoResource); virtual;
+    Procedure SetexperienceInfo(AIndex : Integer; const AValue : TGamesPlayerExperienceInfoResource); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlastPlayedWith(AIndex : Integer; AValue : TGamesPlayedResource); virtual;
-    Procedure Setname(AIndex : Integer; AValue : TPlayerTypename); virtual;
+    Procedure SetlastPlayedWith(AIndex : Integer; const AValue : TGamesPlayedResource); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : TPlayerTypename); virtual;
+    Procedure SetoriginalPlayerId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetplayerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprofileSettings(AIndex : Integer; const AValue : TProfileSettings); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
     Property avatarImageUrl : String Index 0 Read FavatarImageUrl Write SetavatarImageUrl;
-    Property displayName : String Index 8 Read FdisplayName Write SetdisplayName;
-    Property experienceInfo : TGamesPlayerExperienceInfoResource Index 16 Read FexperienceInfo Write SetexperienceInfo;
-    Property kind : String Index 24 Read Fkind Write Setkind;
-    Property lastPlayedWith : TGamesPlayedResource Index 32 Read FlastPlayedWith Write SetlastPlayedWith;
-    Property name : TPlayerTypename Index 40 Read Fname Write Setname;
-    Property playerId : String Index 48 Read FplayerId Write SetplayerId;
-    Property title : String Index 56 Read Ftitle Write Settitle;
+    Property bannerUrlLandscape : String Index 8 Read FbannerUrlLandscape Write SetbannerUrlLandscape;
+    Property bannerUrlPortrait : String Index 16 Read FbannerUrlPortrait Write SetbannerUrlPortrait;
+    Property displayName : String Index 24 Read FdisplayName Write SetdisplayName;
+    Property experienceInfo : TGamesPlayerExperienceInfoResource Index 32 Read FexperienceInfo Write SetexperienceInfo;
+    Property kind : String Index 40 Read Fkind Write Setkind;
+    Property lastPlayedWith : TGamesPlayedResource Index 48 Read FlastPlayedWith Write SetlastPlayedWith;
+    Property name : TPlayerTypename Index 56 Read Fname Write Setname;
+    Property originalPlayerId : String Index 64 Read ForiginalPlayerId Write SetoriginalPlayerId;
+    Property playerId : String Index 72 Read FplayerId Write SetplayerId;
+    Property profileSettings : TProfileSettings Index 80 Read FprofileSettings Write SetprofileSettings;
+    Property title : String Index 88 Read Ftitle Write Settitle;
   end;
   TPlayerClass = Class of TPlayer;
   
@@ -333,7 +332,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresults(AIndex : Integer; AValue : TPlayerScoreResetAllResponseTyperesultsArray); virtual;
+    Procedure Setresults(AIndex : Integer; const AValue : TPlayerScoreResetAllResponseTyperesultsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -358,7 +357,7 @@ type
     //Property setters
     Procedure SetdefinitionId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetresetScoreTimeSpans(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetresetScoreTimeSpans(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -371,6 +370,25 @@ type
   end;
   TPlayerScoreResetResponseClass = Class of TPlayerScoreResetResponse;
   
+  { --------------------------------------------------------------------
+    TProfileSettings
+    --------------------------------------------------------------------}
+  
+  TProfileSettings = Class(TGoogleBaseObject)
+  Private
+    Fkind : String;
+    FprofileVisible : boolean;
+  Protected
+    //Property setters
+    Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprofileVisible(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property kind : String Index 0 Read Fkind Write Setkind;
+    Property profileVisible : boolean Index 8 Read FprofileVisible Write SetprofileVisible;
+  end;
+  TProfileSettingsClass = Class of TProfileSettings;
+  
   { --------------------------------------------------------------------
     TQuestsResetMultipleForAllRequest
     --------------------------------------------------------------------}
@@ -382,7 +400,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setquest_ids(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setquest_ids(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -405,7 +423,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setleaderboard_ids(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setleaderboard_ids(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -631,7 +649,7 @@ end;
 
 
 
-Procedure TAchievementResetAllResponse.Setresults(AIndex : Integer; AValue : TAchievementResetAllResponseTyperesultsArray); 
+Procedure TAchievementResetAllResponse.Setresults(AIndex : Integer; const AValue : TAchievementResetAllResponseTyperesultsArray); 
 
 begin
   If (Fresults=AValue) then exit;
@@ -661,7 +679,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAchievementResetMultipleForAllRequest.Setachievement_ids(AIndex : Integer; AValue : TStringArray); 
+Procedure TAchievementResetMultipleForAllRequest.Setachievement_ids(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fachievement_ids=AValue) then exit;
@@ -731,7 +749,7 @@ end;
 
 
 
-Procedure TAchievementResetResponse.SetupdateOccurred(AIndex : Integer; AValue : boolean); 
+Procedure TAchievementResetResponse.SetupdateOccurred(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FupdateOccurred=AValue) then exit;
@@ -748,7 +766,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TEventsResetMultipleForAllRequest.Setevent_ids(AIndex : Integer; AValue : TStringArray); 
+Procedure TEventsResetMultipleForAllRequest.Setevent_ids(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fevent_ids=AValue) then exit;
@@ -788,7 +806,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TGamesPlayedResource.SetautoMatched(AIndex : Integer; AValue : boolean); 
+Procedure TGamesPlayedResource.SetautoMatched(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FautoMatched=AValue) then exit;
@@ -825,7 +843,7 @@ end;
 
 
 
-Procedure TGamesPlayerExperienceInfoResource.SetcurrentLevel(AIndex : Integer; AValue : TGamesPlayerLevelResource); 
+Procedure TGamesPlayerExperienceInfoResource.SetcurrentLevel(AIndex : Integer; const AValue : TGamesPlayerLevelResource); 
 
 begin
   If (FcurrentLevel=AValue) then exit;
@@ -845,7 +863,7 @@ end;
 
 
 
-Procedure TGamesPlayerExperienceInfoResource.SetnextLevel(AIndex : Integer; AValue : TGamesPlayerLevelResource); 
+Procedure TGamesPlayerExperienceInfoResource.SetnextLevel(AIndex : Integer; const AValue : TGamesPlayerLevelResource); 
 
 begin
   If (FnextLevel=AValue) then exit;
@@ -862,7 +880,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TGamesPlayerLevelResource.Setlevel(AIndex : Integer; AValue : integer); 
+Procedure TGamesPlayerLevelResource.Setlevel(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Flevel=AValue) then exit;
@@ -919,7 +937,7 @@ end;
 
 
 
-Procedure THiddenPlayer.Setplayer(AIndex : Integer; AValue : TPlayer); 
+Procedure THiddenPlayer.Setplayer(AIndex : Integer; const AValue : TPlayer); 
 
 begin
   If (Fplayer=AValue) then exit;
@@ -936,7 +954,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure THiddenPlayerList.Setitems(AIndex : Integer; AValue : THiddenPlayerListTypeitemsArray); 
+Procedure THiddenPlayerList.Setitems(AIndex : Integer; const AValue : THiddenPlayerListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1023,6 +1041,26 @@ end;
 
 
 
+Procedure TPlayer.SetbannerUrlLandscape(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbannerUrlLandscape=AValue) then exit;
+  FbannerUrlLandscape:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPlayer.SetbannerUrlPortrait(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbannerUrlPortrait=AValue) then exit;
+  FbannerUrlPortrait:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TPlayer.SetdisplayName(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1033,7 +1071,7 @@ end;
 
 
 
-Procedure TPlayer.SetexperienceInfo(AIndex : Integer; AValue : TGamesPlayerExperienceInfoResource); 
+Procedure TPlayer.SetexperienceInfo(AIndex : Integer; const AValue : TGamesPlayerExperienceInfoResource); 
 
 begin
   If (FexperienceInfo=AValue) then exit;
@@ -1053,7 +1091,7 @@ end;
 
 
 
-Procedure TPlayer.SetlastPlayedWith(AIndex : Integer; AValue : TGamesPlayedResource); 
+Procedure TPlayer.SetlastPlayedWith(AIndex : Integer; const AValue : TGamesPlayedResource); 
 
 begin
   If (FlastPlayedWith=AValue) then exit;
@@ -1063,7 +1101,7 @@ end;
 
 
 
-Procedure TPlayer.Setname(AIndex : Integer; AValue : TPlayerTypename); 
+Procedure TPlayer.Setname(AIndex : Integer; const AValue : TPlayerTypename); 
 
 begin
   If (Fname=AValue) then exit;
@@ -1073,6 +1111,16 @@ end;
 
 
 
+Procedure TPlayer.SetoriginalPlayerId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (ForiginalPlayerId=AValue) then exit;
+  ForiginalPlayerId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TPlayer.SetplayerId(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1083,6 +1131,16 @@ end;
 
 
 
+Procedure TPlayer.SetprofileSettings(AIndex : Integer; const AValue : TProfileSettings); 
+
+begin
+  If (FprofileSettings=AValue) then exit;
+  FprofileSettings:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TPlayer.Settitle(AIndex : Integer; const AValue : String); 
 
 begin
@@ -1110,7 +1168,7 @@ end;
 
 
 
-Procedure TPlayerScoreResetAllResponse.Setresults(AIndex : Integer; AValue : TPlayerScoreResetAllResponseTyperesultsArray); 
+Procedure TPlayerScoreResetAllResponse.Setresults(AIndex : Integer; const AValue : TPlayerScoreResetAllResponseTyperesultsArray); 
 
 begin
   If (Fresults=AValue) then exit;
@@ -1160,7 +1218,7 @@ end;
 
 
 
-Procedure TPlayerScoreResetResponse.SetresetScoreTimeSpans(AIndex : Integer; AValue : TStringArray); 
+Procedure TPlayerScoreResetResponse.SetresetScoreTimeSpans(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FresetScoreTimeSpans=AValue) then exit;
@@ -1185,6 +1243,33 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TProfileSettings
+  --------------------------------------------------------------------}
+
+
+Procedure TProfileSettings.Setkind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkind=AValue) then exit;
+  Fkind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProfileSettings.SetprofileVisible(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FprofileVisible=AValue) then exit;
+  FprofileVisible:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
 { --------------------------------------------------------------------
   TQuestsResetMultipleForAllRequest
   --------------------------------------------------------------------}
@@ -1200,7 +1285,7 @@ end;
 
 
 
-Procedure TQuestsResetMultipleForAllRequest.Setquest_ids(AIndex : Integer; AValue : TStringArray); 
+Procedure TQuestsResetMultipleForAllRequest.Setquest_ids(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fquest_ids=AValue) then exit;
@@ -1240,7 +1325,7 @@ end;
 
 
 
-Procedure TScoresResetMultipleForAllRequest.Setleaderboard_ids(AIndex : Integer; AValue : TStringArray); 
+Procedure TScoresResetMultipleForAllRequest.Setleaderboard_ids(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fleaderboard_ids=AValue) then exit;
@@ -1790,7 +1875,7 @@ end;
 Class Function TGamesManagementAPI.APIRevision : String;
 
 begin
-  Result:='20150511';
+  Result:='20160519';
 end;
 
 Class Function TGamesManagementAPI.APIID : String;
@@ -1844,7 +1929,7 @@ end;
 Class Function TGamesManagementAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TGamesManagementAPI.APIbasePath : string;
@@ -1856,7 +1941,7 @@ end;
 Class Function TGamesManagementAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/games/v1management/';
+  Result:='https://www.googleapis.com/games/v1management/';
 end;
 
 Class Function TGamesManagementAPI.APIProtocol : string;
@@ -1884,7 +1969,7 @@ begin
   Result[0].Name:='https://www.googleapis.com/auth/games';
   Result[0].Description:='Share your Google+ profile information and view and manage your game activity';
   Result[1].Name:='https://www.googleapis.com/auth/plus.login';
-  Result[1].Description:='Know your basic profile info and list of people in your circles.';
+  Result[1].Description:='Know the list of people in your circles, your age range, and language';
   
 end;
 
@@ -1910,6 +1995,7 @@ begin
   TPlayer.RegisterObject;
   TPlayerScoreResetAllResponse.RegisterObject;
   TPlayerScoreResetResponse.RegisterObject;
+  TProfileSettings.RegisterObject;
   TQuestsResetMultipleForAllRequest.RegisterObject;
   TScoresResetMultipleForAllRequest.RegisterObject;
 end;

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


+ 333 - 102
packages/googleapi/src/googlegmail.pp

@@ -1,19 +1,4 @@
 unit googlegmail;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:04
 {$MODE objfpc}
 {$H+}
 
@@ -24,6 +9,7 @@ uses sysutils, classes, googleservice, restbase, googlebase;
 type
   
   //Top-level schema types
+  TBatchDeleteMessagesRequest = Class;
   TDraft = Class;
   THistory = Class;
   THistoryLabelAdded = Class;
@@ -44,6 +30,9 @@ type
   TModifyThreadRequest = Class;
   TProfile = Class;
   TThread = Class;
+  TWatchRequest = Class;
+  TWatchResponse = Class;
+  TBatchDeleteMessagesRequestArray = Array of TBatchDeleteMessagesRequest;
   TDraftArray = Array of TDraft;
   THistoryArray = Array of THistory;
   THistoryLabelAddedArray = Array of THistoryLabelAdded;
@@ -64,6 +53,8 @@ type
   TModifyThreadRequestArray = Array of TModifyThreadRequest;
   TProfileArray = Array of TProfile;
   TThreadArray = Array of TThread;
+  TWatchRequestArray = Array of TWatchRequest;
+  TWatchResponseArray = Array of TWatchResponse;
   //Anonymous types, using auto-generated names
   THistoryTypelabelsAddedArray = Array of THistoryLabelAdded;
   THistoryTypelabelsRemovedArray = Array of THistoryLabelRemoved;
@@ -79,6 +70,26 @@ type
   TMessagePartTypepartsArray = Array of TMessagePart;
   TThreadTypemessagesArray = Array of TMessage;
   
+  { --------------------------------------------------------------------
+    TBatchDeleteMessagesRequest
+    --------------------------------------------------------------------}
+  
+  TBatchDeleteMessagesRequest = Class(TGoogleBaseObject)
+  Private
+    Fids : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setids(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 ids : TStringArray Index 0 Read Fids Write Setids;
+  end;
+  TBatchDeleteMessagesRequestClass = Class of TBatchDeleteMessagesRequest;
+  
   { --------------------------------------------------------------------
     TDraft
     --------------------------------------------------------------------}
@@ -90,7 +101,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmessage(AIndex : Integer; AValue : TMessage); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : TMessage); virtual;
   Public
   Published
     Property id : String Index 0 Read Fid Write Setid;
@@ -113,11 +124,11 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlabelsAdded(AIndex : Integer; AValue : THistoryTypelabelsAddedArray); virtual;
-    Procedure SetlabelsRemoved(AIndex : Integer; AValue : THistoryTypelabelsRemovedArray); virtual;
-    Procedure Setmessages(AIndex : Integer; AValue : THistoryTypemessagesArray); virtual;
-    Procedure SetmessagesAdded(AIndex : Integer; AValue : THistoryTypemessagesAddedArray); virtual;
-    Procedure SetmessagesDeleted(AIndex : Integer; AValue : THistoryTypemessagesDeletedArray); virtual;
+    Procedure SetlabelsAdded(AIndex : Integer; const AValue : THistoryTypelabelsAddedArray); virtual;
+    Procedure SetlabelsRemoved(AIndex : Integer; const AValue : THistoryTypelabelsRemovedArray); virtual;
+    Procedure Setmessages(AIndex : Integer; const AValue : THistoryTypemessagesArray); virtual;
+    Procedure SetmessagesAdded(AIndex : Integer; const AValue : THistoryTypemessagesAddedArray); virtual;
+    Procedure SetmessagesDeleted(AIndex : Integer; const AValue : THistoryTypemessagesDeletedArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -143,8 +154,8 @@ type
     Fmessage : TMessage;
   Protected
     //Property setters
-    Procedure SetlabelIds(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setmessage(AIndex : Integer; AValue : TMessage); virtual;
+    Procedure SetlabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : TMessage); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -166,8 +177,8 @@ type
     Fmessage : TMessage;
   Protected
     //Property setters
-    Procedure SetlabelIds(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setmessage(AIndex : Integer; AValue : TMessage); virtual;
+    Procedure SetlabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : TMessage); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -188,7 +199,7 @@ type
     Fmessage : TMessage;
   Protected
     //Property setters
-    Procedure Setmessage(AIndex : Integer; AValue : TMessage); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : TMessage); virtual;
   Public
   Published
     Property message : TMessage Index 0 Read Fmessage Write Setmessage;
@@ -204,7 +215,7 @@ type
     Fmessage : TMessage;
   Protected
     //Property setters
-    Procedure Setmessage(AIndex : Integer; AValue : TMessage); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : TMessage); virtual;
   Public
   Published
     Property message : TMessage Index 0 Read Fmessage Write Setmessage;
@@ -232,11 +243,11 @@ type
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure SetlabelListVisibility(AIndex : Integer; const AValue : String); virtual;
     Procedure SetmessageListVisibility(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmessagesTotal(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmessagesUnread(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetmessagesTotal(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmessagesUnread(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetthreadsTotal(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetthreadsUnread(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetthreadsTotal(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetthreadsUnread(AIndex : Integer; const AValue : integer); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -263,9 +274,9 @@ type
     FresultSizeEstimate : integer;
   Protected
     //Property setters
-    Procedure Setdrafts(AIndex : Integer; AValue : TListDraftsResponseTypedraftsArray); virtual;
+    Procedure Setdrafts(AIndex : Integer; const AValue : TListDraftsResponseTypedraftsArray); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetresultSizeEstimate(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetresultSizeEstimate(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -289,7 +300,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Sethistory(AIndex : Integer; AValue : TListHistoryResponseTypehistoryArray); virtual;
+    Procedure Sethistory(AIndex : Integer; const AValue : TListHistoryResponseTypehistoryArray); virtual;
     Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -313,7 +324,7 @@ type
     Flabels : TListLabelsResponseTypelabelsArray;
   Protected
     //Property setters
-    Procedure Setlabels(AIndex : Integer; AValue : TListLabelsResponseTypelabelsArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TListLabelsResponseTypelabelsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -335,9 +346,9 @@ type
     FresultSizeEstimate : integer;
   Protected
     //Property setters
-    Procedure Setmessages(AIndex : Integer; AValue : TListMessagesResponseTypemessagesArray); virtual;
+    Procedure Setmessages(AIndex : Integer; const AValue : TListMessagesResponseTypemessagesArray); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetresultSizeEstimate(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetresultSizeEstimate(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -362,8 +373,8 @@ type
   Protected
     //Property setters
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetresultSizeEstimate(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setthreads(AIndex : Integer; AValue : TListThreadsResponseTypethreadsArray); virtual;
+    Procedure SetresultSizeEstimate(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setthreads(AIndex : Integer; const AValue : TListThreadsResponseTypethreadsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -384,6 +395,7 @@ type
   Private
     FhistoryId : String;
     Fid : String;
+    FinternalDate : String;
     FlabelIds : TStringArray;
     Fpayload : TMessagePart;
     Fraw : String;
@@ -394,10 +406,11 @@ type
     //Property setters
     Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlabelIds(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setpayload(AIndex : Integer; AValue : TMessagePart); virtual;
+    Procedure SetinternalDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setpayload(AIndex : Integer; const AValue : TMessagePart); virtual;
     Procedure Setraw(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsizeEstimate(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetsizeEstimate(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setsnippet(AIndex : Integer; const AValue : String); virtual;
     Procedure SetthreadId(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -408,12 +421,13 @@ type
   Published
     Property historyId : String Index 0 Read FhistoryId Write SethistoryId;
     Property id : String Index 8 Read Fid Write Setid;
-    Property labelIds : TStringArray Index 16 Read FlabelIds Write SetlabelIds;
-    Property payload : TMessagePart Index 24 Read Fpayload Write Setpayload;
-    Property raw : String Index 32 Read Fraw Write Setraw;
-    Property sizeEstimate : integer Index 40 Read FsizeEstimate Write SetsizeEstimate;
-    Property snippet : String Index 48 Read Fsnippet Write Setsnippet;
-    Property threadId : String Index 56 Read FthreadId Write SetthreadId;
+    Property internalDate : String Index 16 Read FinternalDate Write SetinternalDate;
+    Property labelIds : TStringArray Index 24 Read FlabelIds Write SetlabelIds;
+    Property payload : TMessagePart Index 32 Read Fpayload Write Setpayload;
+    Property raw : String Index 40 Read Fraw Write Setraw;
+    Property sizeEstimate : integer Index 48 Read FsizeEstimate Write SetsizeEstimate;
+    Property snippet : String Index 56 Read Fsnippet Write Setsnippet;
+    Property threadId : String Index 64 Read FthreadId Write SetthreadId;
   end;
   TMessageClass = Class of TMessage;
   
@@ -431,12 +445,12 @@ type
     Fparts : TMessagePartTypepartsArray;
   Protected
     //Property setters
-    Procedure Setbody(AIndex : Integer; AValue : TMessagePartBody); virtual;
+    Procedure Setbody(AIndex : Integer; const AValue : TMessagePartBody); virtual;
     Procedure Setfilename(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setheaders(AIndex : Integer; AValue : TMessagePartTypeheadersArray); virtual;
+    Procedure Setheaders(AIndex : Integer; const AValue : TMessagePartTypeheadersArray); virtual;
     Procedure SetmimeType(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpartId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparts(AIndex : Integer; AValue : TMessagePartTypepartsArray); virtual;
+    Procedure Setparts(AIndex : Integer; const AValue : TMessagePartTypepartsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -465,7 +479,7 @@ type
     //Property setters
     Procedure SetattachmentId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsize(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setsize(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property attachmentId : String Index 0 Read FattachmentId Write SetattachmentId;
@@ -503,8 +517,8 @@ type
     FremoveLabelIds : TStringArray;
   Protected
     //Property setters
-    Procedure SetaddLabelIds(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetremoveLabelIds(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetaddLabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetremoveLabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -526,8 +540,8 @@ type
     FremoveLabelIds : TStringArray;
   Protected
     //Property setters
-    Procedure SetaddLabelIds(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetremoveLabelIds(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetaddLabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetremoveLabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -553,8 +567,8 @@ type
     //Property setters
     Procedure SetemailAddress(AIndex : Integer; const AValue : String); virtual;
     Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmessagesTotal(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetthreadsTotal(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetmessagesTotal(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetthreadsTotal(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property emailAddress : String Index 0 Read FemailAddress Write SetemailAddress;
@@ -578,7 +592,7 @@ type
     //Property setters
     Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmessages(AIndex : Integer; AValue : TThreadTypemessagesArray); virtual;
+    Procedure Setmessages(AIndex : Integer; const AValue : TThreadTypemessagesArray); virtual;
     Procedure Setsnippet(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -593,6 +607,51 @@ type
   end;
   TThreadClass = Class of TThread;
   
+  { --------------------------------------------------------------------
+    TWatchRequest
+    --------------------------------------------------------------------}
+  
+  TWatchRequest = Class(TGoogleBaseObject)
+  Private
+    FlabelFilterAction : String;
+    FlabelIds : TStringArray;
+    FtopicName : String;
+  Protected
+    //Property setters
+    Procedure SetlabelFilterAction(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlabelIds(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SettopicName(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 labelFilterAction : String Index 0 Read FlabelFilterAction Write SetlabelFilterAction;
+    Property labelIds : TStringArray Index 8 Read FlabelIds Write SetlabelIds;
+    Property topicName : String Index 16 Read FtopicName Write SettopicName;
+  end;
+  TWatchRequestClass = Class of TWatchRequest;
+  
+  { --------------------------------------------------------------------
+    TWatchResponse
+    --------------------------------------------------------------------}
+  
+  TWatchResponse = Class(TGoogleBaseObject)
+  Private
+    Fexpiration : String;
+    FhistoryId : String;
+  Protected
+    //Property setters
+    Procedure Setexpiration(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property expiration : String Index 0 Read Fexpiration Write Setexpiration;
+    Property historyId : String Index 8 Read FhistoryId Write SethistoryId;
+  end;
+  TWatchResponseClass = Class of TWatchResponse;
+  
   { --------------------------------------------------------------------
     TUsersDraftsResource
     --------------------------------------------------------------------}
@@ -608,6 +667,7 @@ type
   //Optional query Options for TUsersDraftsResource, method List
   
   TUsersDraftsListOptions = Record
+    includeSpamTrash : boolean;
     maxResults : integer;
     pageToken : String;
   end;
@@ -727,6 +787,7 @@ type
   Public
     Class Function ResourceName : String; override;
     Class Function DefaultAPI : TGoogleAPIClass; override;
+    Procedure BatchDelete(userId: string; aBatchDeleteMessagesRequest : TBatchDeleteMessagesRequest);
     Procedure Delete(id: string; userId: string);
     Function Get(id: string; userId: string; AQuery : string  = '') : TMessage;
     Function Get(id: string; userId: string; AQuery : TUsersMessagesgetOptions) : TMessage;
@@ -806,6 +867,8 @@ type
     Class Function ResourceName : String; override;
     Class Function DefaultAPI : TGoogleAPIClass; override;
     Function GetProfile(userId: string) : TProfile;
+    Procedure Stop(userId: string);
+    Function Watch(userId: string; aWatchRequest : TWatchRequest) : TWatchResponse;
     Function CreateDraftsResource(AOwner : TComponent) : TUsersDraftsResource;virtual;overload;
     Function CreateDraftsResource : TUsersDraftsResource;virtual;overload;
     Function CreateHistoryResource(AOwner : TComponent) : TUsersHistoryResource;virtual;overload;
@@ -897,6 +960,36 @@ type
 implementation
 
 
+{ --------------------------------------------------------------------
+  TBatchDeleteMessagesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchDeleteMessagesRequest.Setids(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fids=AValue) then exit;
+  Fids:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchDeleteMessagesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'ids' : SetLength(Fids,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
 { --------------------------------------------------------------------
   TDraft
   --------------------------------------------------------------------}
@@ -912,7 +1005,7 @@ end;
 
 
 
-Procedure TDraft.Setmessage(AIndex : Integer; AValue : TMessage); 
+Procedure TDraft.Setmessage(AIndex : Integer; const AValue : TMessage); 
 
 begin
   If (Fmessage=AValue) then exit;
@@ -939,7 +1032,7 @@ end;
 
 
 
-Procedure THistory.SetlabelsAdded(AIndex : Integer; AValue : THistoryTypelabelsAddedArray); 
+Procedure THistory.SetlabelsAdded(AIndex : Integer; const AValue : THistoryTypelabelsAddedArray); 
 
 begin
   If (FlabelsAdded=AValue) then exit;
@@ -949,7 +1042,7 @@ end;
 
 
 
-Procedure THistory.SetlabelsRemoved(AIndex : Integer; AValue : THistoryTypelabelsRemovedArray); 
+Procedure THistory.SetlabelsRemoved(AIndex : Integer; const AValue : THistoryTypelabelsRemovedArray); 
 
 begin
   If (FlabelsRemoved=AValue) then exit;
@@ -959,7 +1052,7 @@ end;
 
 
 
-Procedure THistory.Setmessages(AIndex : Integer; AValue : THistoryTypemessagesArray); 
+Procedure THistory.Setmessages(AIndex : Integer; const AValue : THistoryTypemessagesArray); 
 
 begin
   If (Fmessages=AValue) then exit;
@@ -969,7 +1062,7 @@ end;
 
 
 
-Procedure THistory.SetmessagesAdded(AIndex : Integer; AValue : THistoryTypemessagesAddedArray); 
+Procedure THistory.SetmessagesAdded(AIndex : Integer; const AValue : THistoryTypemessagesAddedArray); 
 
 begin
   If (FmessagesAdded=AValue) then exit;
@@ -979,7 +1072,7 @@ end;
 
 
 
-Procedure THistory.SetmessagesDeleted(AIndex : Integer; AValue : THistoryTypemessagesDeletedArray); 
+Procedure THistory.SetmessagesDeleted(AIndex : Integer; const AValue : THistoryTypemessagesDeletedArray); 
 
 begin
   If (FmessagesDeleted=AValue) then exit;
@@ -1013,7 +1106,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure THistoryLabelAdded.SetlabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure THistoryLabelAdded.SetlabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FlabelIds=AValue) then exit;
@@ -1023,7 +1116,7 @@ end;
 
 
 
-Procedure THistoryLabelAdded.Setmessage(AIndex : Integer; AValue : TMessage); 
+Procedure THistoryLabelAdded.Setmessage(AIndex : Integer; const AValue : TMessage); 
 
 begin
   If (Fmessage=AValue) then exit;
@@ -1053,7 +1146,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure THistoryLabelRemoved.SetlabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure THistoryLabelRemoved.SetlabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FlabelIds=AValue) then exit;
@@ -1063,7 +1156,7 @@ end;
 
 
 
-Procedure THistoryLabelRemoved.Setmessage(AIndex : Integer; AValue : TMessage); 
+Procedure THistoryLabelRemoved.Setmessage(AIndex : Integer; const AValue : TMessage); 
 
 begin
   If (Fmessage=AValue) then exit;
@@ -1093,7 +1186,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure THistoryMessageAdded.Setmessage(AIndex : Integer; AValue : TMessage); 
+Procedure THistoryMessageAdded.Setmessage(AIndex : Integer; const AValue : TMessage); 
 
 begin
   If (Fmessage=AValue) then exit;
@@ -1110,7 +1203,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure THistoryMessageDeleted.Setmessage(AIndex : Integer; AValue : TMessage); 
+Procedure THistoryMessageDeleted.Setmessage(AIndex : Integer; const AValue : TMessage); 
 
 begin
   If (Fmessage=AValue) then exit;
@@ -1157,7 +1250,7 @@ end;
 
 
 
-Procedure TLabel.SetmessagesTotal(AIndex : Integer; AValue : integer); 
+Procedure TLabel.SetmessagesTotal(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmessagesTotal=AValue) then exit;
@@ -1167,7 +1260,7 @@ end;
 
 
 
-Procedure TLabel.SetmessagesUnread(AIndex : Integer; AValue : integer); 
+Procedure TLabel.SetmessagesUnread(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmessagesUnread=AValue) then exit;
@@ -1187,7 +1280,7 @@ end;
 
 
 
-Procedure TLabel.SetthreadsTotal(AIndex : Integer; AValue : integer); 
+Procedure TLabel.SetthreadsTotal(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FthreadsTotal=AValue) then exit;
@@ -1197,7 +1290,7 @@ end;
 
 
 
-Procedure TLabel.SetthreadsUnread(AIndex : Integer; AValue : integer); 
+Procedure TLabel.SetthreadsUnread(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FthreadsUnread=AValue) then exit;
@@ -1235,7 +1328,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListDraftsResponse.Setdrafts(AIndex : Integer; AValue : TListDraftsResponseTypedraftsArray); 
+Procedure TListDraftsResponse.Setdrafts(AIndex : Integer; const AValue : TListDraftsResponseTypedraftsArray); 
 
 begin
   If (Fdrafts=AValue) then exit;
@@ -1255,7 +1348,7 @@ end;
 
 
 
-Procedure TListDraftsResponse.SetresultSizeEstimate(AIndex : Integer; AValue : integer); 
+Procedure TListDraftsResponse.SetresultSizeEstimate(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresultSizeEstimate=AValue) then exit;
@@ -1285,7 +1378,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListHistoryResponse.Sethistory(AIndex : Integer; AValue : TListHistoryResponseTypehistoryArray); 
+Procedure TListHistoryResponse.Sethistory(AIndex : Integer; const AValue : TListHistoryResponseTypehistoryArray); 
 
 begin
   If (Fhistory=AValue) then exit;
@@ -1335,7 +1428,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListLabelsResponse.Setlabels(AIndex : Integer; AValue : TListLabelsResponseTypelabelsArray); 
+Procedure TListLabelsResponse.Setlabels(AIndex : Integer; const AValue : TListLabelsResponseTypelabelsArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1365,7 +1458,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListMessagesResponse.Setmessages(AIndex : Integer; AValue : TListMessagesResponseTypemessagesArray); 
+Procedure TListMessagesResponse.Setmessages(AIndex : Integer; const AValue : TListMessagesResponseTypemessagesArray); 
 
 begin
   If (Fmessages=AValue) then exit;
@@ -1385,7 +1478,7 @@ end;
 
 
 
-Procedure TListMessagesResponse.SetresultSizeEstimate(AIndex : Integer; AValue : integer); 
+Procedure TListMessagesResponse.SetresultSizeEstimate(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresultSizeEstimate=AValue) then exit;
@@ -1425,7 +1518,7 @@ end;
 
 
 
-Procedure TListThreadsResponse.SetresultSizeEstimate(AIndex : Integer; AValue : integer); 
+Procedure TListThreadsResponse.SetresultSizeEstimate(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresultSizeEstimate=AValue) then exit;
@@ -1435,7 +1528,7 @@ end;
 
 
 
-Procedure TListThreadsResponse.Setthreads(AIndex : Integer; AValue : TListThreadsResponseTypethreadsArray); 
+Procedure TListThreadsResponse.Setthreads(AIndex : Integer; const AValue : TListThreadsResponseTypethreadsArray); 
 
 begin
   If (Fthreads=AValue) then exit;
@@ -1485,7 +1578,17 @@ end;
 
 
 
-Procedure TMessage.SetlabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TMessage.SetinternalDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinternalDate=AValue) then exit;
+  FinternalDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMessage.SetlabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FlabelIds=AValue) then exit;
@@ -1495,7 +1598,7 @@ end;
 
 
 
-Procedure TMessage.Setpayload(AIndex : Integer; AValue : TMessagePart); 
+Procedure TMessage.Setpayload(AIndex : Integer; const AValue : TMessagePart); 
 
 begin
   If (Fpayload=AValue) then exit;
@@ -1515,7 +1618,7 @@ end;
 
 
 
-Procedure TMessage.SetsizeEstimate(AIndex : Integer; AValue : integer); 
+Procedure TMessage.SetsizeEstimate(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FsizeEstimate=AValue) then exit;
@@ -1565,7 +1668,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TMessagePart.Setbody(AIndex : Integer; AValue : TMessagePartBody); 
+Procedure TMessagePart.Setbody(AIndex : Integer; const AValue : TMessagePartBody); 
 
 begin
   If (Fbody=AValue) then exit;
@@ -1585,7 +1688,7 @@ end;
 
 
 
-Procedure TMessagePart.Setheaders(AIndex : Integer; AValue : TMessagePartTypeheadersArray); 
+Procedure TMessagePart.Setheaders(AIndex : Integer; const AValue : TMessagePartTypeheadersArray); 
 
 begin
   If (Fheaders=AValue) then exit;
@@ -1615,7 +1718,7 @@ end;
 
 
 
-Procedure TMessagePart.Setparts(AIndex : Integer; AValue : TMessagePartTypepartsArray); 
+Procedure TMessagePart.Setparts(AIndex : Integer; const AValue : TMessagePartTypepartsArray); 
 
 begin
   If (Fparts=AValue) then exit;
@@ -1666,7 +1769,7 @@ end;
 
 
 
-Procedure TMessagePartBody.Setsize(AIndex : Integer; AValue : integer); 
+Procedure TMessagePartBody.Setsize(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fsize=AValue) then exit;
@@ -1710,7 +1813,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TModifyMessageRequest.SetaddLabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TModifyMessageRequest.SetaddLabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FaddLabelIds=AValue) then exit;
@@ -1720,7 +1823,7 @@ end;
 
 
 
-Procedure TModifyMessageRequest.SetremoveLabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TModifyMessageRequest.SetremoveLabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FremoveLabelIds=AValue) then exit;
@@ -1751,7 +1854,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TModifyThreadRequest.SetaddLabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TModifyThreadRequest.SetaddLabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FaddLabelIds=AValue) then exit;
@@ -1761,7 +1864,7 @@ end;
 
 
 
-Procedure TModifyThreadRequest.SetremoveLabelIds(AIndex : Integer; AValue : TStringArray); 
+Procedure TModifyThreadRequest.SetremoveLabelIds(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FremoveLabelIds=AValue) then exit;
@@ -1812,7 +1915,7 @@ end;
 
 
 
-Procedure TProfile.SetmessagesTotal(AIndex : Integer; AValue : integer); 
+Procedure TProfile.SetmessagesTotal(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmessagesTotal=AValue) then exit;
@@ -1822,7 +1925,7 @@ end;
 
 
 
-Procedure TProfile.SetthreadsTotal(AIndex : Integer; AValue : integer); 
+Procedure TProfile.SetthreadsTotal(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FthreadsTotal=AValue) then exit;
@@ -1859,7 +1962,7 @@ end;
 
 
 
-Procedure TThread.Setmessages(AIndex : Integer; AValue : TThreadTypemessagesArray); 
+Procedure TThread.Setmessages(AIndex : Integer; const AValue : TThreadTypemessagesArray); 
 
 begin
   If (Fmessages=AValue) then exit;
@@ -1894,6 +1997,83 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TWatchRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TWatchRequest.SetlabelFilterAction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlabelFilterAction=AValue) then exit;
+  FlabelFilterAction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWatchRequest.SetlabelIds(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FlabelIds=AValue) then exit;
+  FlabelIds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWatchRequest.SettopicName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtopicName=AValue) then exit;
+  FtopicName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TWatchRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'labelids' : SetLength(FlabelIds,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TWatchResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TWatchResponse.Setexpiration(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fexpiration=AValue) then exit;
+  Fexpiration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TWatchResponse.SethistoryId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhistoryId=AValue) then exit;
+  FhistoryId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
 { --------------------------------------------------------------------
   TUsersDraftsResource
   --------------------------------------------------------------------}
@@ -1991,6 +2171,7 @@ Var
 
 begin
   _Q:='';
+  AddToQuery(_Q,'includeSpamTrash',AQuery.includeSpamTrash);
   AddToQuery(_Q,'maxResults',AQuery.maxResults);
   AddToQuery(_Q,'pageToken',AQuery.pageToken);
   Result:=List(userId,_Q);
@@ -2237,6 +2418,21 @@ begin
   Result:=TgmailAPI;
 end;
 
+Procedure TUsersMessagesResource.BatchDelete(userId: string; aBatchDeleteMessagesRequest : TBatchDeleteMessagesRequest);
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{userId}/messages/batchDelete';
+  _Methodid   = 'gmail.users.messages.batchDelete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  ServiceCall(_HTTPMethod,_P,'',aBatchDeleteMessagesRequest,Nil);
+end;
+
 Procedure TUsersMessagesResource.Delete(id: string; userId: string);
 
 Const
@@ -2625,6 +2821,36 @@ begin
   Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProfile) as TProfile;
 end;
 
+Procedure TUsersResource.Stop(userId: string);
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{userId}/stop';
+  _Methodid   = 'gmail.users.stop';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
+end;
+
+Function TUsersResource.Watch(userId: string; aWatchRequest : TWatchRequest) : TWatchResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{userId}/watch';
+  _Methodid   = 'gmail.users.watch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['userId',userId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aWatchRequest,TWatchResponse) as TWatchResponse;
+end;
+
 
 
 Function TUsersResource.GetDraftsInstance : TUsersDraftsResource;
@@ -2790,7 +3016,7 @@ end;
 Class Function TGmailAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160316';
 end;
 
 Class Function TGmailAPI.APIID : String;
@@ -2808,7 +3034,7 @@ end;
 Class Function TGmailAPI.APIDescription : String;
 
 begin
-  Result:='The Gmail REST API.';
+  Result:='Access Gmail mailboxes including sending user email.';
 end;
 
 Class Function TGmailAPI.APIOwnerDomain : String;
@@ -2844,7 +3070,7 @@ end;
 Class Function TGmailAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TGmailAPI.APIbasePath : string;
@@ -2856,7 +3082,7 @@ end;
 Class Function TGmailAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/gmail/v1/users/';
+  Result:='https://www.googleapis.com/gmail/v1/users/';
 end;
 
 Class Function TGmailAPI.APIProtocol : string;
@@ -2880,7 +3106,7 @@ end;
 Class Function TGmailAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,6);
+  SetLength(Result,7);
   Result[0].Name:='https://mail.google.com/';
   Result[0].Description:='View and manage your mail';
   Result[1].Name:='https://www.googleapis.com/auth/gmail.compose';
@@ -2893,6 +3119,8 @@ begin
   Result[4].Description:='View and modify but not delete your email';
   Result[5].Name:='https://www.googleapis.com/auth/gmail.readonly';
   Result[5].Description:='View your emails messages and settings';
+  Result[6].Name:='https://www.googleapis.com/auth/gmail.send';
+  Result[6].Description:='Send email on your behalf';
   
 end;
 
@@ -2905,6 +3133,7 @@ end;
 Class Procedure TGmailAPI.RegisterAPIResources;
 
 begin
+  TBatchDeleteMessagesRequest.RegisterObject;
   TDraft.RegisterObject;
   THistory.RegisterObject;
   THistoryLabelAdded.RegisterObject;
@@ -2925,6 +3154,8 @@ begin
   TModifyThreadRequest.RegisterObject;
   TProfile.RegisterObject;
   TThread.RegisterObject;
+  TWatchRequest.RegisterObject;
+  TWatchResponse.RegisterObject;
 end;
 
 

+ 2 - 17
packages/googleapi/src/googlegroupsmigration.pp

@@ -1,19 +1,4 @@
 unit googlegroupsmigration;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:05
 {$MODE objfpc}
 {$H+}
 
@@ -233,7 +218,7 @@ end;
 Class Function TGroupsmigrationAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TGroupsmigrationAPI.APIbasePath : string;
@@ -245,7 +230,7 @@ end;
 Class Function TGroupsmigrationAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/groups/v1/groups/';
+  Result:='https://www.googleapis.com/groups/v1/groups/';
 end;
 
 Class Function TGroupsmigrationAPI.APIProtocol : string;

+ 25 - 27
packages/googleapi/src/googlegroupssettings.pp

@@ -1,19 +1,4 @@
 unit googlegroupssettings;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:05
 {$MODE objfpc}
 {$H+}
 
@@ -55,6 +40,7 @@ type
     FsendMessageDenyNotification : String;
     FshowInGroupDirectory : String;
     FspamModerationLevel : String;
+    FwhoCanAdd : String;
     FwhoCanContactOwner : String;
     FwhoCanInvite : String;
     FwhoCanJoin : String;
@@ -75,7 +61,7 @@ type
     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; AValue : integer); 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;
@@ -85,6 +71,7 @@ type
     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;
@@ -115,13 +102,14 @@ type
     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 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;
   
@@ -294,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;
@@ -394,6 +382,16 @@ end;
 
 
 
+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
@@ -549,7 +547,7 @@ end;
 Class Function TGroupssettingsAPI.APIRevision : String;
 
 begin
-  Result:='20140428';
+  Result:='20160323';
 end;
 
 Class Function TGroupssettingsAPI.APIID : String;
@@ -603,7 +601,7 @@ end;
 Class Function TGroupssettingsAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TGroupssettingsAPI.APIbasePath : string;
@@ -615,7 +613,7 @@ end;
 Class Function TGroupssettingsAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/groups/v1/groups/';
+  Result:='https://www.googleapis.com/groups/v1/groups/';
 end;
 
 Class Function TGroupssettingsAPI.APIProtocol : string;

+ 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
+ 512 - 90
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.

+ 5 - 20
packages/googleapi/src/googlelicensing.pp

@@ -1,19 +1,4 @@
 unit googlelicensing;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:05
 {$MODE objfpc}
 {$H+}
 
@@ -93,7 +78,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TLicenseAssignmentListTypeitemsArray); 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
@@ -286,7 +271,7 @@ end;
 
 
 
-Procedure TLicenseAssignmentList.Setitems(AIndex : Integer; AValue : TLicenseAssignmentListTypeitemsArray); 
+Procedure TLicenseAssignmentList.Setitems(AIndex : Integer; const AValue : TLicenseAssignmentListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -502,7 +487,7 @@ end;
 Class Function TLicensingAPI.APIRevision : String;
 
 begin
-  Result:='20140122';
+  Result:='20150901';
 end;
 
 Class Function TLicensingAPI.APIID : String;
@@ -556,7 +541,7 @@ end;
 Class Function TLicensingAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TLicensingAPI.APIbasePath : string;
@@ -568,7 +553,7 @@ end;
 Class Function TLicensingAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/apps/licensing/v1/product/';
+  Result:='https://www.googleapis.com/apps/licensing/v1/product/';
 end;
 
 Class Function TLicensingAPI.APIProtocol : string;

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


+ 79 - 94
packages/googleapi/src/googlemirror.pp

@@ -1,19 +1,4 @@
 unit googlemirror;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:06
 {$MODE objfpc}
 {$H+}
 
@@ -91,10 +76,10 @@ type
     FuserData : TAccountTypeuserDataArray;
   Protected
     //Property setters
-    Procedure SetauthTokens(AIndex : Integer; AValue : TAccountTypeauthTokensArray); virtual;
-    Procedure Setfeatures(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetauthTokens(AIndex : Integer; const AValue : TAccountTypeauthTokensArray); virtual;
+    Procedure Setfeatures(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setpassword(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetuserData(AIndex : Integer; AValue : TAccountTypeuserDataArray); virtual;
+    Procedure SetuserData(AIndex : Integer; const AValue : TAccountTypeuserDataArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -123,7 +108,7 @@ type
     Procedure SetcontentType(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcontentUrl(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisProcessingContent(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisProcessingContent(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property contentType : String Index 0 Read FcontentType Write SetcontentType;
@@ -143,7 +128,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TAttachmentsListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TAttachmentsListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -214,15 +199,15 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure SetacceptCommands(AIndex : Integer; AValue : TContactTypeacceptCommandsArray); virtual;
-    Procedure SetacceptTypes(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetacceptCommands(AIndex : Integer; const AValue : TContactTypeacceptCommandsArray); virtual;
+    Procedure SetacceptTypes(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetimageUrls(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetimageUrls(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetphoneNumber(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpriority(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetsharingFeatures(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setpriority(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsharingFeatures(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setsource(AIndex : Integer; const AValue : String); virtual;
     Procedure SetspeakableName(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
@@ -257,7 +242,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TContactsListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TContactsListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -286,14 +271,14 @@ type
     Ftimestamp : TDatetime;
   Protected
     //Property setters
-    Procedure Setaccuracy(AIndex : Integer; AValue : double); virtual;
+    Procedure Setaccuracy(AIndex : Integer; const AValue : double); virtual;
     Procedure Setaddress(AIndex : Integer; const AValue : String); 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 Setlatitude(AIndex : Integer; AValue : double); virtual;
-    Procedure Setlongitude(AIndex : Integer; AValue : double); virtual;
-    Procedure Settimestamp(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setlatitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setlongitude(AIndex : Integer; const AValue : double); virtual;
+    Procedure Settimestamp(AIndex : Integer; const AValue : TDatetime); virtual;
   Public
   Published
     Property accuracy : double Index 0 Read Faccuracy Write Setaccuracy;
@@ -317,7 +302,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TLocationsListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TLocationsListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -348,8 +333,8 @@ type
     Procedure Setcontextual_command(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setpayload(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetremoveWhenSelected(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setvalues(AIndex : Integer; AValue : TMenuItemTypevaluesArray); virtual;
+    Procedure SetremoveWhenSelected(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TMenuItemTypevaluesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -404,7 +389,7 @@ type
     Procedure Setcollection(AIndex : Integer; const AValue : String); virtual;
     Procedure SetitemId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setoperation(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetuserActions(AIndex : Integer; AValue : TNotificationTypeuserActionsArray); virtual;
+    Procedure SetuserActions(AIndex : Integer; const AValue : TNotificationTypeuserActionsArray); virtual;
     Procedure SetuserToken(AIndex : Integer; const AValue : String); virtual;
     Procedure SetverifyToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -432,7 +417,7 @@ type
     Flevel : String;
   Protected
     //Property setters
-    Procedure SetdeliveryTime(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetdeliveryTime(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setlevel(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -484,9 +469,9 @@ type
     Procedure Setcollection(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setnotification(AIndex : Integer; AValue : TNotification); virtual;
-    Procedure Setoperation(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setnotification(AIndex : Integer; const AValue : TNotification); virtual;
+    Procedure Setoperation(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetuserToken(AIndex : Integer; const AValue : String); virtual;
     Procedure SetverifyToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -517,7 +502,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TSubscriptionsListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSubscriptionsListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -564,32 +549,32 @@ type
     Fupdated : TDatetime;
   Protected
     //Property setters
-    Procedure Setattachments(AIndex : Integer; AValue : TTimelineItemTypeattachmentsArray); virtual;
+    Procedure Setattachments(AIndex : Integer; const AValue : TTimelineItemTypeattachmentsArray); virtual;
     Procedure SetbundleId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcanonicalUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setcreated(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setcreator(AIndex : Integer; AValue : TContact); virtual;
-    Procedure SetdisplayTime(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setcreated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setcreator(AIndex : Integer; const AValue : TContact); virtual;
+    Procedure SetdisplayTime(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
     Procedure Sethtml(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure SetinReplyTo(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisBundleCover(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetisDeleted(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetisPinned(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisBundleCover(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetisDeleted(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetisPinned(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlocation(AIndex : Integer; AValue : TLocation); virtual;
-    Procedure SetmenuItems(AIndex : Integer; AValue : TTimelineItemTypemenuItemsArray); virtual;
-    Procedure Setnotification(AIndex : Integer; AValue : TNotificationConfig); virtual;
-    Procedure SetpinScore(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setrecipients(AIndex : Integer; AValue : TTimelineItemTyperecipientsArray); virtual;
+    Procedure Setlocation(AIndex : Integer; const AValue : TLocation); virtual;
+    Procedure SetmenuItems(AIndex : Integer; const AValue : TTimelineItemTypemenuItemsArray); virtual;
+    Procedure Setnotification(AIndex : Integer; const AValue : TNotificationConfig); virtual;
+    Procedure SetpinScore(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setrecipients(AIndex : Integer; const AValue : TTimelineItemTyperecipientsArray); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SetsourceItemId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetspeakableText(AIndex : Integer; const AValue : String); virtual;
     Procedure SetspeakableType(AIndex : Integer; const AValue : String); virtual;
     Procedure Settext(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); 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;
@@ -636,7 +621,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTimelineListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTimelineListResponseTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -886,7 +871,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAccount.SetauthTokens(AIndex : Integer; AValue : TAccountTypeauthTokensArray); 
+Procedure TAccount.SetauthTokens(AIndex : Integer; const AValue : TAccountTypeauthTokensArray); 
 
 begin
   If (FauthTokens=AValue) then exit;
@@ -896,7 +881,7 @@ end;
 
 
 
-Procedure TAccount.Setfeatures(AIndex : Integer; AValue : TStringArray); 
+Procedure TAccount.Setfeatures(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Ffeatures=AValue) then exit;
@@ -916,7 +901,7 @@ end;
 
 
 
-Procedure TAccount.SetuserData(AIndex : Integer; AValue : TAccountTypeuserDataArray); 
+Procedure TAccount.SetuserData(AIndex : Integer; const AValue : TAccountTypeuserDataArray); 
 
 begin
   If (FuserData=AValue) then exit;
@@ -978,7 +963,7 @@ end;
 
 
 
-Procedure TAttachment.SetisProcessingContent(AIndex : Integer; AValue : boolean); 
+Procedure TAttachment.SetisProcessingContent(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisProcessingContent=AValue) then exit;
@@ -995,7 +980,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAttachmentsListResponse.Setitems(AIndex : Integer; AValue : TAttachmentsListResponseTypeitemsArray); 
+Procedure TAttachmentsListResponse.Setitems(AIndex : Integer; const AValue : TAttachmentsListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1101,7 +1086,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TContact.SetacceptCommands(AIndex : Integer; AValue : TContactTypeacceptCommandsArray); 
+Procedure TContact.SetacceptCommands(AIndex : Integer; const AValue : TContactTypeacceptCommandsArray); 
 
 begin
   If (FacceptCommands=AValue) then exit;
@@ -1111,7 +1096,7 @@ end;
 
 
 
-Procedure TContact.SetacceptTypes(AIndex : Integer; AValue : TStringArray); 
+Procedure TContact.SetacceptTypes(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FacceptTypes=AValue) then exit;
@@ -1141,7 +1126,7 @@ end;
 
 
 
-Procedure TContact.SetimageUrls(AIndex : Integer; AValue : TStringArray); 
+Procedure TContact.SetimageUrls(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FimageUrls=AValue) then exit;
@@ -1171,7 +1156,7 @@ end;
 
 
 
-Procedure TContact.Setpriority(AIndex : Integer; AValue : integer); 
+Procedure TContact.Setpriority(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fpriority=AValue) then exit;
@@ -1181,7 +1166,7 @@ end;
 
 
 
-Procedure TContact.SetsharingFeatures(AIndex : Integer; AValue : TStringArray); 
+Procedure TContact.SetsharingFeatures(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FsharingFeatures=AValue) then exit;
@@ -1255,7 +1240,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TContactsListResponse.Setitems(AIndex : Integer; AValue : TContactsListResponseTypeitemsArray); 
+Procedure TContactsListResponse.Setitems(AIndex : Integer; const AValue : TContactsListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1295,7 +1280,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLocation.Setaccuracy(AIndex : Integer; AValue : double); 
+Procedure TLocation.Setaccuracy(AIndex : Integer; const AValue : double); 
 
 begin
   If (Faccuracy=AValue) then exit;
@@ -1345,7 +1330,7 @@ end;
 
 
 
-Procedure TLocation.Setlatitude(AIndex : Integer; AValue : double); 
+Procedure TLocation.Setlatitude(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flatitude=AValue) then exit;
@@ -1355,7 +1340,7 @@ end;
 
 
 
-Procedure TLocation.Setlongitude(AIndex : Integer; AValue : double); 
+Procedure TLocation.Setlongitude(AIndex : Integer; const AValue : double); 
 
 begin
   If (Flongitude=AValue) then exit;
@@ -1365,7 +1350,7 @@ end;
 
 
 
-Procedure TLocation.Settimestamp(AIndex : Integer; AValue : TDatetime); 
+Procedure TLocation.Settimestamp(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Ftimestamp=AValue) then exit;
@@ -1382,7 +1367,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLocationsListResponse.Setitems(AIndex : Integer; AValue : TLocationsListResponseTypeitemsArray); 
+Procedure TLocationsListResponse.Setitems(AIndex : Integer; const AValue : TLocationsListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1462,7 +1447,7 @@ end;
 
 
 
-Procedure TMenuItem.SetremoveWhenSelected(AIndex : Integer; AValue : boolean); 
+Procedure TMenuItem.SetremoveWhenSelected(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FremoveWhenSelected=AValue) then exit;
@@ -1472,7 +1457,7 @@ end;
 
 
 
-Procedure TMenuItem.Setvalues(AIndex : Integer; AValue : TMenuItemTypevaluesArray); 
+Procedure TMenuItem.Setvalues(AIndex : Integer; const AValue : TMenuItemTypevaluesArray); 
 
 begin
   If (Fvalues=AValue) then exit;
@@ -1569,7 +1554,7 @@ end;
 
 
 
-Procedure TNotification.SetuserActions(AIndex : Integer; AValue : TNotificationTypeuserActionsArray); 
+Procedure TNotification.SetuserActions(AIndex : Integer; const AValue : TNotificationTypeuserActionsArray); 
 
 begin
   If (FuserActions=AValue) then exit;
@@ -1619,7 +1604,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TNotificationConfig.SetdeliveryTime(AIndex : Integer; AValue : TDatetime); 
+Procedure TNotificationConfig.SetdeliveryTime(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FdeliveryTime=AValue) then exit;
@@ -1723,7 +1708,7 @@ end;
 
 
 
-Procedure TSubscription.Setnotification(AIndex : Integer; AValue : TNotification); 
+Procedure TSubscription.Setnotification(AIndex : Integer; const AValue : TNotification); 
 
 begin
   If (Fnotification=AValue) then exit;
@@ -1733,7 +1718,7 @@ end;
 
 
 
-Procedure TSubscription.Setoperation(AIndex : Integer; AValue : TStringArray); 
+Procedure TSubscription.Setoperation(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Foperation=AValue) then exit;
@@ -1743,7 +1728,7 @@ end;
 
 
 
-Procedure TSubscription.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TSubscription.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -1793,7 +1778,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSubscriptionsListResponse.Setitems(AIndex : Integer; AValue : TSubscriptionsListResponseTypeitemsArray); 
+Procedure TSubscriptionsListResponse.Setitems(AIndex : Integer; const AValue : TSubscriptionsListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1833,7 +1818,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTimelineItem.Setattachments(AIndex : Integer; AValue : TTimelineItemTypeattachmentsArray); 
+Procedure TTimelineItem.Setattachments(AIndex : Integer; const AValue : TTimelineItemTypeattachmentsArray); 
 
 begin
   If (Fattachments=AValue) then exit;
@@ -1863,7 +1848,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setcreated(AIndex : Integer; AValue : TDatetime); 
+Procedure TTimelineItem.Setcreated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fcreated=AValue) then exit;
@@ -1873,7 +1858,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setcreator(AIndex : Integer; AValue : TContact); 
+Procedure TTimelineItem.Setcreator(AIndex : Integer; const AValue : TContact); 
 
 begin
   If (Fcreator=AValue) then exit;
@@ -1883,7 +1868,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetdisplayTime(AIndex : Integer; AValue : TDatetime); 
+Procedure TTimelineItem.SetdisplayTime(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FdisplayTime=AValue) then exit;
@@ -1933,7 +1918,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetisBundleCover(AIndex : Integer; AValue : boolean); 
+Procedure TTimelineItem.SetisBundleCover(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisBundleCover=AValue) then exit;
@@ -1943,7 +1928,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetisDeleted(AIndex : Integer; AValue : boolean); 
+Procedure TTimelineItem.SetisDeleted(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisDeleted=AValue) then exit;
@@ -1953,7 +1938,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetisPinned(AIndex : Integer; AValue : boolean); 
+Procedure TTimelineItem.SetisPinned(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisPinned=AValue) then exit;
@@ -1973,7 +1958,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setlocation(AIndex : Integer; AValue : TLocation); 
+Procedure TTimelineItem.Setlocation(AIndex : Integer; const AValue : TLocation); 
 
 begin
   If (Flocation=AValue) then exit;
@@ -1983,7 +1968,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetmenuItems(AIndex : Integer; AValue : TTimelineItemTypemenuItemsArray); 
+Procedure TTimelineItem.SetmenuItems(AIndex : Integer; const AValue : TTimelineItemTypemenuItemsArray); 
 
 begin
   If (FmenuItems=AValue) then exit;
@@ -1993,7 +1978,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setnotification(AIndex : Integer; AValue : TNotificationConfig); 
+Procedure TTimelineItem.Setnotification(AIndex : Integer; const AValue : TNotificationConfig); 
 
 begin
   If (Fnotification=AValue) then exit;
@@ -2003,7 +1988,7 @@ end;
 
 
 
-Procedure TTimelineItem.SetpinScore(AIndex : Integer; AValue : integer); 
+Procedure TTimelineItem.SetpinScore(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FpinScore=AValue) then exit;
@@ -2013,7 +1998,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setrecipients(AIndex : Integer; AValue : TTimelineItemTyperecipientsArray); 
+Procedure TTimelineItem.Setrecipients(AIndex : Integer; const AValue : TTimelineItemTyperecipientsArray); 
 
 begin
   If (Frecipients=AValue) then exit;
@@ -2083,7 +2068,7 @@ end;
 
 
 
-Procedure TTimelineItem.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TTimelineItem.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -2115,7 +2100,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTimelineListResponse.Setitems(AIndex : Integer; AValue : TTimelineListResponseTypeitemsArray); 
+Procedure TTimelineListResponse.Setitems(AIndex : Integer; const AValue : TTimelineListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2751,7 +2736,7 @@ end;
 Class Function TMirrorAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20151206';
 end;
 
 Class Function TMirrorAPI.APIID : String;
@@ -2805,7 +2790,7 @@ end;
 Class Function TMirrorAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TMirrorAPI.APIbasePath : string;
@@ -2817,7 +2802,7 @@ end;
 Class Function TMirrorAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/mirror/v1/';
+  Result:='https://www.googleapis.com/mirror/v1/';
 end;
 
 Class Function TMirrorAPI.APIProtocol : string;

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

+ 13 - 28
packages/googleapi/src/googleoauth2.pp

@@ -1,19 +1,4 @@
 unit googleoauth2;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:06
 {$MODE objfpc}
 {$H+}
 
@@ -74,7 +59,7 @@ type
     Fkeys : TJwkTypekeysArray;
   Protected
     //Property setters
-    Procedure Setkeys(AIndex : Integer; AValue : TJwkTypekeysArray); 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;
@@ -105,12 +90,12 @@ type
     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; AValue : integer); 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; AValue : boolean); virtual;
+    Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property access_type : String Index 0 Read Faccess_type Write Setaccess_type;
@@ -154,7 +139,7 @@ type
     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; AValue : boolean); virtual;
+    Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property email : String Index 0 Read Femail Write Setemail;
@@ -345,7 +330,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TJwk.Setkeys(AIndex : Integer; AValue : TJwkTypekeysArray); 
+Procedure TJwk.Setkeys(AIndex : Integer; const AValue : TJwkTypekeysArray); 
 
 begin
   If (Fkeys=AValue) then exit;
@@ -405,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;
@@ -455,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;
@@ -572,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;
@@ -754,7 +739,7 @@ end;
 Class Function TOauth2API.APIRevision : String;
 
 begin
-  Result:='20150416';
+  Result:='20160330';
 end;
 
 Class Function TOauth2API.APIID : String;
@@ -772,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;
@@ -808,7 +793,7 @@ end;
 Class Function TOauth2API.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TOauth2API.APIbasePath : string;
@@ -820,7 +805,7 @@ end;
 Class Function TOauth2API.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TOauth2API.APIProtocol : string;
@@ -846,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';

+ 70 - 85
packages/googleapi/src/googlepagespeedonline.pp

@@ -1,19 +1,4 @@
 unit googlepagespeedonline;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:06
 {$MODE objfpc}
 {$H+}
 
@@ -56,10 +41,10 @@ type
     Fwidth : integer;
   Protected
     //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setleft(AIndex : Integer; AValue : integer); virtual;
-    Procedure Settop(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setleft(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property height : integer Index 0 Read Fheight Write Setheight;
@@ -81,10 +66,10 @@ type
     Fwidth : integer;
   Protected
     //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setleft(AIndex : Integer; AValue : integer); virtual;
-    Procedure Settop(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setleft(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property height : integer Index 0 Read Fheight Write Setheight;
@@ -109,8 +94,8 @@ type
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
     Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrects(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); virtual;
-    Procedure Setsecondary_rects(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); virtual;
+    Procedure Setrects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); virtual;
+    Procedure Setsecondary_rects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -137,7 +122,7 @@ type
     Fformat : String;
   Protected
     //Property setters
-    Procedure Setargs(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsArray); virtual;
+    Procedure Setargs(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsArray); virtual;
     Procedure Setformat(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -162,10 +147,10 @@ type
     Fwidth : integer;
   Protected
     //Property setters
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setleft(AIndex : Integer; AValue : integer); virtual;
-    Procedure Settop(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setleft(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property height : integer Index 0 Read Fheight Write Setheight;
@@ -190,11 +175,11 @@ type
   Protected
     //Property setters
     Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setheight(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setheight(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setkey(AIndex : Integer; const AValue : String); virtual;
     Procedure Setmime_type(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpage_rect(AIndex : Integer; AValue : TPagespeedApiImageV2Typepage_rect); virtual;
-    Procedure Setwidth(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setpage_rect(AIndex : Integer; const AValue : TPagespeedApiImageV2Typepage_rect); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property data : String Index 0 Read Fdata Write Setdata;
@@ -231,7 +216,7 @@ type
   Protected
     //Property setters
     Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetruleResults(AIndex : Integer; AValue : TResultTypeformattedResultsTyperuleResults); virtual;
+    Procedure SetruleResults(AIndex : Integer; const AValue : TResultTypeformattedResultsTyperuleResults); virtual;
   Public
   Published
     Property locale : String Index 0 Read Flocale Write Setlocale;
@@ -265,11 +250,11 @@ type
     Procedure SethtmlResponseBytes(AIndex : Integer; const AValue : String); virtual;
     Procedure SetimageResponseBytes(AIndex : Integer; const AValue : String); virtual;
     Procedure SetjavascriptResponseBytes(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetnumberCssResources(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetnumberHosts(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetnumberJsResources(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetnumberResources(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetnumberStaticResources(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetnumberCssResources(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumberHosts(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumberJsResources(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumberResources(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumberStaticResources(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetotherResponseBytes(AIndex : Integer; const AValue : String); virtual;
     Procedure SettextResponseBytes(AIndex : Integer; const AValue : String); virtual;
     Procedure SettotalRequestBytes(AIndex : Integer; const AValue : String); virtual;
@@ -315,8 +300,8 @@ type
     Fminor : integer;
   Protected
     //Property setters
-    Procedure Setmajor(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setminor(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setmajor(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setminor(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property major : integer Index 0 Read Fmajor Write Setmajor;
@@ -342,16 +327,16 @@ type
     Fversion : TResultTypeversion;
   Protected
     //Property setters
-    Procedure SetformattedResults(AIndex : Integer; AValue : TResultTypeformattedResults); virtual;
+    Procedure SetformattedResults(AIndex : Integer; const AValue : TResultTypeformattedResults); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetinvalidRules(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetinvalidRules(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetpageStats(AIndex : Integer; AValue : TResultTypepageStats); virtual;
-    Procedure SetresponseCode(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetruleGroups(AIndex : Integer; AValue : TResultTyperuleGroups); virtual;
-    Procedure Setscreenshot(AIndex : Integer; AValue : TPagespeedApiImageV2); virtual;
+    Procedure SetpageStats(AIndex : Integer; const AValue : TResultTypepageStats); virtual;
+    Procedure SetresponseCode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetruleGroups(AIndex : Integer; const AValue : TResultTyperuleGroups); virtual;
+    Procedure Setscreenshot(AIndex : Integer; const AValue : TPagespeedApiImageV2); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setversion(AIndex : Integer; AValue : TResultTypeversion); virtual;
+    Procedure Setversion(AIndex : Integer; const AValue : TResultTypeversion); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -441,7 +426,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -451,7 +436,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setleft(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setleft(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fleft=AValue) then exit;
@@ -461,7 +446,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Settop(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Settop(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Ftop=AValue) then exit;
@@ -471,7 +456,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -488,7 +473,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -498,7 +483,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setleft(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setleft(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fleft=AValue) then exit;
@@ -508,7 +493,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Settop(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Settop(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Ftop=AValue) then exit;
@@ -518,7 +503,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -545,7 +530,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItem.Setrects(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); 
+Procedure TPagespeedApiFormatStringV2TypeargsItem.Setrects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); 
 
 begin
   If (Frects=AValue) then exit;
@@ -555,7 +540,7 @@ end;
 
 
 
-Procedure TPagespeedApiFormatStringV2TypeargsItem.Setsecondary_rects(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); 
+Procedure TPagespeedApiFormatStringV2TypeargsItem.Setsecondary_rects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); 
 
 begin
   If (Fsecondary_rects=AValue) then exit;
@@ -617,7 +602,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPagespeedApiFormatStringV2.Setargs(AIndex : Integer; AValue : TPagespeedApiFormatStringV2TypeargsArray); 
+Procedure TPagespeedApiFormatStringV2.Setargs(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsArray); 
 
 begin
   If (Fargs=AValue) then exit;
@@ -657,7 +642,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPagespeedApiImageV2Typepage_rect.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2Typepage_rect.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -667,7 +652,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2Typepage_rect.Setleft(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2Typepage_rect.Setleft(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fleft=AValue) then exit;
@@ -677,7 +662,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2Typepage_rect.Settop(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2Typepage_rect.Settop(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Ftop=AValue) then exit;
@@ -687,7 +672,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2Typepage_rect.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2Typepage_rect.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -714,7 +699,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2.Setheight(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2.Setheight(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fheight=AValue) then exit;
@@ -744,7 +729,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2.Setpage_rect(AIndex : Integer; AValue : TPagespeedApiImageV2Typepage_rect); 
+Procedure TPagespeedApiImageV2.Setpage_rect(AIndex : Integer; const AValue : TPagespeedApiImageV2Typepage_rect); 
 
 begin
   If (Fpage_rect=AValue) then exit;
@@ -754,7 +739,7 @@ end;
 
 
 
-Procedure TPagespeedApiImageV2.Setwidth(AIndex : Integer; AValue : integer); 
+Procedure TPagespeedApiImageV2.Setwidth(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fwidth=AValue) then exit;
@@ -794,7 +779,7 @@ end;
 
 
 
-Procedure TResultTypeformattedResults.SetruleResults(AIndex : Integer; AValue : TResultTypeformattedResultsTyperuleResults); 
+Procedure TResultTypeformattedResults.SetruleResults(AIndex : Integer; const AValue : TResultTypeformattedResultsTyperuleResults); 
 
 begin
   If (FruleResults=AValue) then exit;
@@ -861,7 +846,7 @@ end;
 
 
 
-Procedure TResultTypepageStats.SetnumberCssResources(AIndex : Integer; AValue : integer); 
+Procedure TResultTypepageStats.SetnumberCssResources(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberCssResources=AValue) then exit;
@@ -871,7 +856,7 @@ end;
 
 
 
-Procedure TResultTypepageStats.SetnumberHosts(AIndex : Integer; AValue : integer); 
+Procedure TResultTypepageStats.SetnumberHosts(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberHosts=AValue) then exit;
@@ -881,7 +866,7 @@ end;
 
 
 
-Procedure TResultTypepageStats.SetnumberJsResources(AIndex : Integer; AValue : integer); 
+Procedure TResultTypepageStats.SetnumberJsResources(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberJsResources=AValue) then exit;
@@ -891,7 +876,7 @@ end;
 
 
 
-Procedure TResultTypepageStats.SetnumberResources(AIndex : Integer; AValue : integer); 
+Procedure TResultTypepageStats.SetnumberResources(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberResources=AValue) then exit;
@@ -901,7 +886,7 @@ end;
 
 
 
-Procedure TResultTypepageStats.SetnumberStaticResources(AIndex : Integer; AValue : integer); 
+Procedure TResultTypepageStats.SetnumberStaticResources(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberStaticResources=AValue) then exit;
@@ -961,7 +946,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TResultTypeversion.Setmajor(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeversion.Setmajor(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fmajor=AValue) then exit;
@@ -971,7 +956,7 @@ end;
 
 
 
-Procedure TResultTypeversion.Setminor(AIndex : Integer; AValue : integer); 
+Procedure TResultTypeversion.Setminor(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fminor=AValue) then exit;
@@ -988,7 +973,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TResult.SetformattedResults(AIndex : Integer; AValue : TResultTypeformattedResults); 
+Procedure TResult.SetformattedResults(AIndex : Integer; const AValue : TResultTypeformattedResults); 
 
 begin
   If (FformattedResults=AValue) then exit;
@@ -1008,7 +993,7 @@ end;
 
 
 
-Procedure TResult.SetinvalidRules(AIndex : Integer; AValue : TStringArray); 
+Procedure TResult.SetinvalidRules(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FinvalidRules=AValue) then exit;
@@ -1028,7 +1013,7 @@ end;
 
 
 
-Procedure TResult.SetpageStats(AIndex : Integer; AValue : TResultTypepageStats); 
+Procedure TResult.SetpageStats(AIndex : Integer; const AValue : TResultTypepageStats); 
 
 begin
   If (FpageStats=AValue) then exit;
@@ -1038,7 +1023,7 @@ end;
 
 
 
-Procedure TResult.SetresponseCode(AIndex : Integer; AValue : integer); 
+Procedure TResult.SetresponseCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresponseCode=AValue) then exit;
@@ -1048,7 +1033,7 @@ end;
 
 
 
-Procedure TResult.SetruleGroups(AIndex : Integer; AValue : TResultTyperuleGroups); 
+Procedure TResult.SetruleGroups(AIndex : Integer; const AValue : TResultTyperuleGroups); 
 
 begin
   If (FruleGroups=AValue) then exit;
@@ -1058,7 +1043,7 @@ end;
 
 
 
-Procedure TResult.Setscreenshot(AIndex : Integer; AValue : TPagespeedApiImageV2); 
+Procedure TResult.Setscreenshot(AIndex : Integer; const AValue : TPagespeedApiImageV2); 
 
 begin
   If (Fscreenshot=AValue) then exit;
@@ -1078,7 +1063,7 @@ end;
 
 
 
-Procedure TResult.Setversion(AIndex : Integer; AValue : TResultTypeversion); 
+Procedure TResult.Setversion(AIndex : Integer; const AValue : TResultTypeversion); 
 
 begin
   If (Fversion=AValue) then exit;
@@ -1169,7 +1154,7 @@ end;
 Class Function TPagespeedonlineAPI.APIRevision : String;
 
 begin
-  Result:='20150317';
+  Result:='20160516';
 end;
 
 Class Function TPagespeedonlineAPI.APIID : String;
@@ -1187,7 +1172,7 @@ end;
 Class Function TPagespeedonlineAPI.APIDescription : String;
 
 begin
-  Result:='Lets you analyze the performance of a web page and get tailored suggestions to make that page faster.';
+  Result:='Analyzes the performance of a web page and provides tailored suggestions to make that page faster.';
 end;
 
 Class Function TPagespeedonlineAPI.APIOwnerDomain : String;
@@ -1223,7 +1208,7 @@ end;
 Class Function TPagespeedonlineAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TPagespeedonlineAPI.APIbasePath : string;
@@ -1235,7 +1220,7 @@ end;
 Class Function TPagespeedonlineAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/pagespeedonline/v2/';
+  Result:='https://www.googleapis.com/pagespeedonline/v2/';
 end;
 
 Class Function TPagespeedonlineAPI.APIProtocol : string;

+ 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
+ 255 - 370
packages/googleapi/src/googleplus.pp


File diff suppressed because it is too large
+ 389 - 128
packages/googleapi/src/googleplusdomains.pp


+ 66 - 79
packages/googleapi/src/googleprediction.pp

@@ -1,19 +1,4 @@
 unit googleprediction;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:06
 {$MODE objfpc}
 {$H+}
 
@@ -96,7 +81,7 @@ type
   Protected
     //Property setters
     Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setvalues(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategoricalTypevaluesArray); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategoricalTypevaluesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -158,10 +143,10 @@ type
     Ftext : TAnalyzeTypedataDescriptionTypefeaturesItemTypetext;
   Protected
     //Property setters
-    Procedure Setcategorical(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical); virtual;
+    Procedure Setcategorical(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical); virtual;
     Procedure Setindex(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setnumeric(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypenumeric); virtual;
-    Procedure Settext(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypetext); virtual;
+    Procedure Setnumeric(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypenumeric); virtual;
+    Procedure Settext(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypetext); virtual;
   Public
   Published
     Property categorical : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical Index 0 Read Fcategorical Write Setcategorical;
@@ -222,8 +207,8 @@ type
     Ftext : TAnalyzeTypedataDescriptionTypeoutputFeatureTypetextArray;
   Protected
     //Property setters
-    Procedure Setnumeric(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypenumeric); virtual;
-    Procedure Settext(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypetextArray); virtual;
+    Procedure Setnumeric(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypenumeric); virtual;
+    Procedure Settext(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypetextArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -245,8 +230,8 @@ type
     FoutputFeature : TAnalyzeTypedataDescriptionTypeoutputFeature;
   Protected
     //Property setters
-    Procedure Setfeatures(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesArray); virtual;
-    Procedure SetoutputFeature(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeature); virtual;
+    Procedure Setfeatures(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesArray); virtual;
+    Procedure SetoutputFeature(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeature); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -311,9 +296,9 @@ type
     Fmodelinfo : TInsert2;
   Protected
     //Property setters
-    Procedure SetconfusionMatrix(AIndex : Integer; AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrix); virtual;
-    Procedure SetconfusionMatrixRowTotals(AIndex : Integer; AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrixRowTotals); virtual;
-    Procedure Setmodelinfo(AIndex : Integer; AValue : TInsert2); virtual;
+    Procedure SetconfusionMatrix(AIndex : Integer; const AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrix); virtual;
+    Procedure SetconfusionMatrixRowTotals(AIndex : Integer; const AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrixRowTotals); virtual;
+    Procedure Setmodelinfo(AIndex : Integer; const AValue : TInsert2); virtual;
   Public
   Published
     Property confusionMatrix : TAnalyzeTypemodelDescriptionTypeconfusionMatrix Index 0 Read FconfusionMatrix Write SetconfusionMatrix;
@@ -336,11 +321,11 @@ type
     FselfLink : String;
   Protected
     //Property setters
-    Procedure SetdataDescription(AIndex : Integer; AValue : TAnalyzeTypedataDescription); virtual;
-    Procedure Seterrors(AIndex : Integer; AValue : TAnalyzeTypeerrorsArray); virtual;
+    Procedure SetdataDescription(AIndex : Integer; const AValue : TAnalyzeTypedataDescription); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TAnalyzeTypeerrorsArray); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmodelDescription(AIndex : Integer; AValue : TAnalyzeTypemodelDescription); virtual;
+    Procedure SetmodelDescription(AIndex : Integer; const AValue : TAnalyzeTypemodelDescription); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -366,7 +351,7 @@ type
     FcsvInstance : TTJSONSchemaArray;
   Protected
     //Property setters
-    Procedure SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
+    Procedure SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -386,7 +371,7 @@ type
     Finput : TInputTypeinput;
   Protected
     //Property setters
-    Procedure Setinput(AIndex : Integer; AValue : TInputTypeinput); virtual;
+    Procedure Setinput(AIndex : Integer; const AValue : TInputTypeinput); virtual;
   Public
   Published
     Property input : TInputTypeinput Index 0 Read Finput Write Setinput;
@@ -403,7 +388,7 @@ type
     Foutput : String;
   Protected
     //Property setters
-    Procedure SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
+    Procedure SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
     Procedure Setoutput(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -452,8 +437,8 @@ type
     Procedure SetstorageDataLocation(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstoragePMMLLocation(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstoragePMMLModelLocation(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettrainingInstances(AIndex : Integer; AValue : TInsertTypetrainingInstancesArray); virtual;
-    Procedure Setutility(AIndex : Integer; AValue : TInsertTypeutilityArray); virtual;
+    Procedure SettrainingInstances(AIndex : Integer; const AValue : TInsertTypetrainingInstancesArray); virtual;
+    Procedure Setutility(AIndex : Integer; const AValue : TInsertTypeutilityArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -521,16 +506,16 @@ type
     FtrainingStatus : String;
   Protected
     //Property setters
-    Procedure Setcreated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setcreated(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmodelInfo(AIndex : Integer; AValue : TInsert2TypemodelInfo); virtual;
+    Procedure SetmodelInfo(AIndex : Integer; const AValue : TInsert2TypemodelInfo); virtual;
     Procedure SetmodelType(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstorageDataLocation(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstoragePMMLLocation(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstoragePMMLModelLocation(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettrainingComplete(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SettrainingComplete(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SettrainingStatus(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -560,7 +545,7 @@ type
     FselfLink : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TListTypeitemsArray); 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;
@@ -614,7 +599,7 @@ type
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetoutputLabel(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetoutputMulti(AIndex : Integer; AValue : TOutputTypeoutputMultiArray); virtual;
+    Procedure SetoutputMulti(AIndex : Integer; const AValue : TOutputTypeoutputMultiArray); virtual;
     Procedure SetoutputValue(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -642,7 +627,7 @@ type
     Foutput : String;
   Protected
     //Property setters
-    Procedure SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
+    Procedure SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
     Procedure Setoutput(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -781,7 +766,7 @@ end;
 
 
 
-Procedure TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical.Setvalues(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategoricalTypevaluesArray); 
+Procedure TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical.Setvalues(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategoricalTypevaluesArray); 
 
 begin
   If (Fvalues=AValue) then exit;
@@ -865,7 +850,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Setcategorical(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical); 
+Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Setcategorical(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypecategorical); 
 
 begin
   If (Fcategorical=AValue) then exit;
@@ -885,7 +870,7 @@ end;
 
 
 
-Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Setnumeric(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypenumeric); 
+Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Setnumeric(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypenumeric); 
 
 begin
   If (Fnumeric=AValue) then exit;
@@ -895,7 +880,7 @@ end;
 
 
 
-Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Settext(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypetext); 
+Procedure TAnalyzeTypedataDescriptionTypefeaturesItem.Settext(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesItemTypetext); 
 
 begin
   If (Ftext=AValue) then exit;
@@ -976,7 +961,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyzeTypedataDescriptionTypeoutputFeature.Setnumeric(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypenumeric); 
+Procedure TAnalyzeTypedataDescriptionTypeoutputFeature.Setnumeric(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypenumeric); 
 
 begin
   If (Fnumeric=AValue) then exit;
@@ -986,7 +971,7 @@ end;
 
 
 
-Procedure TAnalyzeTypedataDescriptionTypeoutputFeature.Settext(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypetextArray); 
+Procedure TAnalyzeTypedataDescriptionTypeoutputFeature.Settext(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeatureTypetextArray); 
 
 begin
   If (Ftext=AValue) then exit;
@@ -1016,7 +1001,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyzeTypedataDescription.Setfeatures(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypefeaturesArray); 
+Procedure TAnalyzeTypedataDescription.Setfeatures(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypefeaturesArray); 
 
 begin
   If (Ffeatures=AValue) then exit;
@@ -1026,7 +1011,7 @@ end;
 
 
 
-Procedure TAnalyzeTypedataDescription.SetoutputFeature(AIndex : Integer; AValue : TAnalyzeTypedataDescriptionTypeoutputFeature); 
+Procedure TAnalyzeTypedataDescription.SetoutputFeature(AIndex : Integer; const AValue : TAnalyzeTypedataDescriptionTypeoutputFeature); 
 
 begin
   If (FoutputFeature=AValue) then exit;
@@ -1095,7 +1080,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyzeTypemodelDescription.SetconfusionMatrix(AIndex : Integer; AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrix); 
+Procedure TAnalyzeTypemodelDescription.SetconfusionMatrix(AIndex : Integer; const AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrix); 
 
 begin
   If (FconfusionMatrix=AValue) then exit;
@@ -1105,7 +1090,7 @@ end;
 
 
 
-Procedure TAnalyzeTypemodelDescription.SetconfusionMatrixRowTotals(AIndex : Integer; AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrixRowTotals); 
+Procedure TAnalyzeTypemodelDescription.SetconfusionMatrixRowTotals(AIndex : Integer; const AValue : TAnalyzeTypemodelDescriptionTypeconfusionMatrixRowTotals); 
 
 begin
   If (FconfusionMatrixRowTotals=AValue) then exit;
@@ -1115,7 +1100,7 @@ end;
 
 
 
-Procedure TAnalyzeTypemodelDescription.Setmodelinfo(AIndex : Integer; AValue : TInsert2); 
+Procedure TAnalyzeTypemodelDescription.Setmodelinfo(AIndex : Integer; const AValue : TInsert2); 
 
 begin
   If (Fmodelinfo=AValue) then exit;
@@ -1132,7 +1117,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyze.SetdataDescription(AIndex : Integer; AValue : TAnalyzeTypedataDescription); 
+Procedure TAnalyze.SetdataDescription(AIndex : Integer; const AValue : TAnalyzeTypedataDescription); 
 
 begin
   If (FdataDescription=AValue) then exit;
@@ -1142,7 +1127,7 @@ end;
 
 
 
-Procedure TAnalyze.Seterrors(AIndex : Integer; AValue : TAnalyzeTypeerrorsArray); 
+Procedure TAnalyze.Seterrors(AIndex : Integer; const AValue : TAnalyzeTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1172,7 +1157,7 @@ end;
 
 
 
-Procedure TAnalyze.SetmodelDescription(AIndex : Integer; AValue : TAnalyzeTypemodelDescription); 
+Procedure TAnalyze.SetmodelDescription(AIndex : Integer; const AValue : TAnalyzeTypemodelDescription); 
 
 begin
   If (FmodelDescription=AValue) then exit;
@@ -1212,7 +1197,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInputTypeinput.SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TInputTypeinput.SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (FcsvInstance=AValue) then exit;
@@ -1242,7 +1227,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInput.Setinput(AIndex : Integer; AValue : TInputTypeinput); 
+Procedure TInput.Setinput(AIndex : Integer; const AValue : TInputTypeinput); 
 
 begin
   If (Finput=AValue) then exit;
@@ -1259,7 +1244,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInsertTypetrainingInstancesItem.SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TInsertTypetrainingInstancesItem.SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (FcsvInstance=AValue) then exit;
@@ -1372,7 +1357,7 @@ end;
 
 
 
-Procedure TInsert.SettrainingInstances(AIndex : Integer; AValue : TInsertTypetrainingInstancesArray); 
+Procedure TInsert.SettrainingInstances(AIndex : Integer; const AValue : TInsertTypetrainingInstancesArray); 
 
 begin
   If (FtrainingInstances=AValue) then exit;
@@ -1382,7 +1367,7 @@ end;
 
 
 
-Procedure TInsert.Setutility(AIndex : Integer; AValue : TInsertTypeutilityArray); 
+Procedure TInsert.Setutility(AIndex : Integer; const AValue : TInsertTypeutilityArray); 
 
 begin
   If (Futility=AValue) then exit;
@@ -1480,7 +1465,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInsert2.Setcreated(AIndex : Integer; AValue : TDatetime); 
+Procedure TInsert2.Setcreated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fcreated=AValue) then exit;
@@ -1510,7 +1495,7 @@ end;
 
 
 
-Procedure TInsert2.SetmodelInfo(AIndex : Integer; AValue : TInsert2TypemodelInfo); 
+Procedure TInsert2.SetmodelInfo(AIndex : Integer; const AValue : TInsert2TypemodelInfo); 
 
 begin
   If (FmodelInfo=AValue) then exit;
@@ -1570,7 +1555,7 @@ end;
 
 
 
-Procedure TInsert2.SettrainingComplete(AIndex : Integer; AValue : TDatetime); 
+Procedure TInsert2.SettrainingComplete(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FtrainingComplete=AValue) then exit;
@@ -1597,7 +1582,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TList.Setitems(AIndex : Integer; AValue : TListTypeitemsArray); 
+Procedure TList.Setitems(AIndex : Integer; const AValue : TListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1725,7 +1710,7 @@ end;
 
 
 
-Procedure TOutput.SetoutputMulti(AIndex : Integer; AValue : TOutputTypeoutputMultiArray); 
+Procedure TOutput.SetoutputMulti(AIndex : Integer; const AValue : TOutputTypeoutputMultiArray); 
 
 begin
   If (FoutputMulti=AValue) then exit;
@@ -1775,7 +1760,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUpdate.SetcsvInstance(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TUpdate.SetcsvInstance(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (FcsvInstance=AValue) then exit;
@@ -2000,7 +1985,7 @@ end;
 Class Function TPredictionAPI.APIRevision : String;
 
 begin
-  Result:='20140522';
+  Result:='20160511';
 end;
 
 Class Function TPredictionAPI.APIID : String;
@@ -2036,13 +2021,13 @@ end;
 Class Function TPredictionAPI.APIIcon16 : String;
 
 begin
-  Result:='http://www.google.com/images/icons/feature/predictionapi-16.png';
+  Result:='https://www.google.com/images/icons/feature/predictionapi-16.png';
 end;
 
 Class Function TPredictionAPI.APIIcon32 : String;
 
 begin
-  Result:='http://www.google.com/images/icons/feature/predictionapi-32.png';
+  Result:='https://www.google.com/images/icons/feature/predictionapi-32.png';
 end;
 
 Class Function TPredictionAPI.APIdocumentationLink : String;
@@ -2054,7 +2039,7 @@ end;
 Class Function TPredictionAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TPredictionAPI.APIbasePath : string;
@@ -2066,7 +2051,7 @@ end;
 Class Function TPredictionAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/prediction/v1.6/projects/';
+  Result:='https://www.googleapis.com/prediction/v1.6/projects/';
 end;
 
 Class Function TPredictionAPI.APIProtocol : string;
@@ -2090,15 +2075,17 @@ end;
 Class Function TPredictionAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,4);
-  Result[0].Name:='https://www.googleapis.com/auth/devstorage.full_control';
-  Result[0].Description:='Manage your data and permissions in Google Cloud Storage';
-  Result[1].Name:='https://www.googleapis.com/auth/devstorage.read_only';
-  Result[1].Description:='View your data in Google Cloud Storage';
-  Result[2].Name:='https://www.googleapis.com/auth/devstorage.read_write';
-  Result[2].Description:='Manage your data in Google Cloud Storage';
-  Result[3].Name:='https://www.googleapis.com/auth/prediction';
-  Result[3].Description:='Manage your data in the Google Prediction API';
+  SetLength(Result,5);
+  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/devstorage.full_control';
+  Result[1].Description:='Manage your data and permissions in Google Cloud Storage';
+  Result[2].Name:='https://www.googleapis.com/auth/devstorage.read_only';
+  Result[2].Description:='View your data in Google Cloud Storage';
+  Result[3].Name:='https://www.googleapis.com/auth/devstorage.read_write';
+  Result[3].Description:='Manage your data in Google Cloud Storage';
+  Result[4].Name:='https://www.googleapis.com/auth/prediction';
+  Result[4].Description:='Manage your data in the Google Prediction API';
   
 end;
 

+ 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
+ 437 - 226
packages/googleapi/src/googlepubsub.pp


+ 110 - 125
packages/googleapi/src/googleqpxExpress.pp → packages/googleapi/src/googleqpxexpress.pp

@@ -1,19 +1,4 @@
 unit googleqpxExpress;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -151,8 +136,8 @@ type
   Protected
     //Property setters
     Procedure SetcommercialName(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setcount(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setdescription(AIndex : Integer; AValue : TStringArray); 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
@@ -230,12 +215,12 @@ type
     Ftax : TDataTypetaxArray;
   Protected
     //Property setters
-    Procedure Setaircraft(AIndex : Integer; AValue : TDataTypeaircraftArray); virtual;
-    Procedure Setairport(AIndex : Integer; AValue : TDataTypeairportArray); virtual;
-    Procedure Setcarrier(AIndex : Integer; AValue : TDataTypecarrierArray); virtual;
-    Procedure Setcity(AIndex : Integer; AValue : TDataTypecityArray); virtual;
+    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; AValue : TDataTypetaxArray); 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;
@@ -273,7 +258,7 @@ type
     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; AValue : boolean); virtual;
+    Procedure Set_private(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property basisCode : String Index 0 Read FbasisCode Write SetbasisCode;
@@ -319,12 +304,12 @@ type
     Fpounds : integer;
   Protected
     //Property setters
-    Procedure SetbagDescriptor(AIndex : Integer; AValue : TFreeBaggageAllowanceTypebagDescriptorArray); virtual;
-    Procedure Setkilos(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetkilosPerPiece(AIndex : Integer; AValue : integer); virtual;
+    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; AValue : integer); virtual;
-    Procedure Setpounds(AIndex : Integer; AValue : integer); 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;
@@ -367,21 +352,21 @@ type
     //Property setters
     Procedure Setaircraft(AIndex : Integer; const AValue : String); virtual;
     Procedure SetarrivalTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetchangePlane(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetconnectionDuration(AIndex : Integer; AValue : integer); 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; AValue : integer); 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; AValue : integer); virtual;
-    Procedure SetonTimePerformance(AIndex : Integer; AValue : integer); 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; AValue : boolean); virtual;
+    Procedure Setsecure(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property aircraft : String Index 0 Read Faircraft Write Setaircraft;
@@ -418,12 +403,12 @@ type
     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 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; AValue : integer); virtual;
+    Procedure SetseniorCount(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property adultCount : integer Index 0 Read FadultCount Write SetadultCount;
@@ -457,18 +442,18 @@ type
   Protected
     //Property setters
     Procedure SetbaseFareTotal(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfare(AIndex : Integer; AValue : TPricingInfoTypefareArray); 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; AValue : TPassengerCounts); virtual;
+    Procedure Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); virtual;
     Procedure Setptc(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setrefundable(AIndex : Integer; AValue : boolean); 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; AValue : TPricingInfoTypesegmentPricingArray); virtual;
-    Procedure Settax(AIndex : Integer; AValue : TPricingInfoTypetaxArray); 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;
@@ -511,16 +496,16 @@ type
   Protected
     //Property setters
     Procedure SetbookingCode(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetbookingCodeCount(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetbookingCodeCount(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setcabin(AIndex : Integer; const 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 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; AValue : TSegmentInfoTypelegArray); virtual;
+    Procedure Setleg(AIndex : Integer; const AValue : TSegmentInfoTypelegArray); virtual;
     Procedure SetmarriedSegmentGroup(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsubjectToGovernmentApproval(AIndex : Integer; AValue : boolean); 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;
@@ -554,7 +539,7 @@ type
   Protected
     //Property setters
     Procedure SetfareId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetfreeBaggageOption(AIndex : Integer; AValue : TSegmentPricingTypefreeBaggageOptionArray); 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
@@ -581,9 +566,9 @@ type
     Fsegment : TSliceInfoTypesegmentArray;
   Protected
     //Property setters
-    Procedure Setduration(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setduration(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsegment(AIndex : Integer; AValue : TSliceInfoTypesegmentArray); 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;
@@ -619,13 +604,13 @@ type
     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; AValue : integer); virtual;
-    Procedure SetmaxStops(AIndex : Integer; AValue : integer); 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; AValue : TStringArray); virtual;
-    Procedure SetpermittedDepartureTime(AIndex : Integer; AValue : TTimeOfDayRange); 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; AValue : TStringArray); 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;
@@ -736,9 +721,9 @@ type
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpricing(AIndex : Integer; AValue : TTripOptionTypepricingArray); virtual;
+    Procedure Setpricing(AIndex : Integer; const AValue : TTripOptionTypepricingArray); virtual;
     Procedure SetsaleTotal(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setslice(AIndex : Integer; AValue : TTripOptionTypesliceArray); 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;
@@ -768,11 +753,11 @@ type
   Protected
     //Property setters
     Procedure SetmaxPrice(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpassengers(AIndex : Integer; AValue : TPassengerCounts); virtual;
-    Procedure Setrefundable(AIndex : Integer; AValue : boolean); 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; AValue : TTripOptionsRequestTypesliceArray); virtual;
-    Procedure Setsolutions(AIndex : Integer; AValue : integer); 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;
@@ -800,10 +785,10 @@ type
     FtripOption : TTripOptionsResponseTypetripOptionArray;
   Protected
     //Property setters
-    Procedure Setdata(AIndex : Integer; AValue : TData); virtual;
+    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; AValue : TTripOptionsResponseTypetripOptionArray); 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;
@@ -826,7 +811,7 @@ type
     Frequest : TTripOptionsRequest;
   Protected
     //Property setters
-    Procedure Setrequest(AIndex : Integer; AValue : TTripOptionsRequest); virtual;
+    Procedure Setrequest(AIndex : Integer; const AValue : TTripOptionsRequest); virtual;
   Public
   Published
     Property request : TTripOptionsRequest Index 0 Read Frequest Write Setrequest;
@@ -844,7 +829,7 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settrips(AIndex : Integer; AValue : TTripOptionsResponse); virtual;
+    Procedure Settrips(AIndex : Integer; const AValue : TTripOptionsResponse); virtual;
   Public
   Published
     Property kind : String Index 0 Read Fkind Write Setkind;
@@ -1003,7 +988,7 @@ end;
 
 
 
-Procedure TBagDescriptor.Setcount(AIndex : Integer; AValue : integer); 
+Procedure TBagDescriptor.Setcount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fcount=AValue) then exit;
@@ -1013,7 +998,7 @@ end;
 
 
 
-Procedure TBagDescriptor.Setdescription(AIndex : Integer; AValue : TStringArray); 
+Procedure TBagDescriptor.Setdescription(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fdescription=AValue) then exit;
@@ -1147,7 +1132,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TData.Setaircraft(AIndex : Integer; AValue : TDataTypeaircraftArray); 
+Procedure TData.Setaircraft(AIndex : Integer; const AValue : TDataTypeaircraftArray); 
 
 begin
   If (Faircraft=AValue) then exit;
@@ -1157,7 +1142,7 @@ end;
 
 
 
-Procedure TData.Setairport(AIndex : Integer; AValue : TDataTypeairportArray); 
+Procedure TData.Setairport(AIndex : Integer; const AValue : TDataTypeairportArray); 
 
 begin
   If (Fairport=AValue) then exit;
@@ -1167,7 +1152,7 @@ end;
 
 
 
-Procedure TData.Setcarrier(AIndex : Integer; AValue : TDataTypecarrierArray); 
+Procedure TData.Setcarrier(AIndex : Integer; const AValue : TDataTypecarrierArray); 
 
 begin
   If (Fcarrier=AValue) then exit;
@@ -1177,7 +1162,7 @@ end;
 
 
 
-Procedure TData.Setcity(AIndex : Integer; AValue : TDataTypecityArray); 
+Procedure TData.Setcity(AIndex : Integer; const AValue : TDataTypecityArray); 
 
 begin
   If (Fcity=AValue) then exit;
@@ -1197,7 +1182,7 @@ end;
 
 
 
-Procedure TData.Settax(AIndex : Integer; AValue : TDataTypetaxArray); 
+Procedure TData.Settax(AIndex : Integer; const AValue : TDataTypetaxArray); 
 
 begin
   If (Ftax=AValue) then exit;
@@ -1291,7 +1276,7 @@ end;
 
 
 
-Procedure TFareInfo.Set_private(AIndex : Integer; AValue : boolean); 
+Procedure TFareInfo.Set_private(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (F_private=AValue) then exit;
@@ -1346,7 +1331,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TFreeBaggageAllowance.SetbagDescriptor(AIndex : Integer; AValue : TFreeBaggageAllowanceTypebagDescriptorArray); 
+Procedure TFreeBaggageAllowance.SetbagDescriptor(AIndex : Integer; const AValue : TFreeBaggageAllowanceTypebagDescriptorArray); 
 
 begin
   If (FbagDescriptor=AValue) then exit;
@@ -1356,7 +1341,7 @@ end;
 
 
 
-Procedure TFreeBaggageAllowance.Setkilos(AIndex : Integer; AValue : integer); 
+Procedure TFreeBaggageAllowance.Setkilos(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fkilos=AValue) then exit;
@@ -1366,7 +1351,7 @@ end;
 
 
 
-Procedure TFreeBaggageAllowance.SetkilosPerPiece(AIndex : Integer; AValue : integer); 
+Procedure TFreeBaggageAllowance.SetkilosPerPiece(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FkilosPerPiece=AValue) then exit;
@@ -1386,7 +1371,7 @@ end;
 
 
 
-Procedure TFreeBaggageAllowance.Setpieces(AIndex : Integer; AValue : integer); 
+Procedure TFreeBaggageAllowance.Setpieces(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fpieces=AValue) then exit;
@@ -1396,7 +1381,7 @@ end;
 
 
 
-Procedure TFreeBaggageAllowance.Setpounds(AIndex : Integer; AValue : integer); 
+Procedure TFreeBaggageAllowance.Setpounds(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fpounds=AValue) then exit;
@@ -1446,7 +1431,7 @@ end;
 
 
 
-Procedure TLegInfo.SetchangePlane(AIndex : Integer; AValue : boolean); 
+Procedure TLegInfo.SetchangePlane(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FchangePlane=AValue) then exit;
@@ -1456,7 +1441,7 @@ end;
 
 
 
-Procedure TLegInfo.SetconnectionDuration(AIndex : Integer; AValue : integer); 
+Procedure TLegInfo.SetconnectionDuration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FconnectionDuration=AValue) then exit;
@@ -1496,7 +1481,7 @@ end;
 
 
 
-Procedure TLegInfo.Setduration(AIndex : Integer; AValue : integer); 
+Procedure TLegInfo.Setduration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fduration=AValue) then exit;
@@ -1536,7 +1521,7 @@ end;
 
 
 
-Procedure TLegInfo.Setmileage(AIndex : Integer; AValue : integer); 
+Procedure TLegInfo.Setmileage(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fmileage=AValue) then exit;
@@ -1546,7 +1531,7 @@ end;
 
 
 
-Procedure TLegInfo.SetonTimePerformance(AIndex : Integer; AValue : integer); 
+Procedure TLegInfo.SetonTimePerformance(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FonTimePerformance=AValue) then exit;
@@ -1586,7 +1571,7 @@ end;
 
 
 
-Procedure TLegInfo.Setsecure(AIndex : Integer; AValue : boolean); 
+Procedure TLegInfo.Setsecure(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fsecure=AValue) then exit;
@@ -1603,7 +1588,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TPassengerCounts.SetadultCount(AIndex : Integer; AValue : integer); 
+Procedure TPassengerCounts.SetadultCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FadultCount=AValue) then exit;
@@ -1613,7 +1598,7 @@ end;
 
 
 
-Procedure TPassengerCounts.SetchildCount(AIndex : Integer; AValue : integer); 
+Procedure TPassengerCounts.SetchildCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FchildCount=AValue) then exit;
@@ -1623,7 +1608,7 @@ end;
 
 
 
-Procedure TPassengerCounts.SetinfantInLapCount(AIndex : Integer; AValue : integer); 
+Procedure TPassengerCounts.SetinfantInLapCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FinfantInLapCount=AValue) then exit;
@@ -1633,7 +1618,7 @@ end;
 
 
 
-Procedure TPassengerCounts.SetinfantInSeatCount(AIndex : Integer; AValue : integer); 
+Procedure TPassengerCounts.SetinfantInSeatCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FinfantInSeatCount=AValue) then exit;
@@ -1653,7 +1638,7 @@ end;
 
 
 
-Procedure TPassengerCounts.SetseniorCount(AIndex : Integer; AValue : integer); 
+Procedure TPassengerCounts.SetseniorCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FseniorCount=AValue) then exit;
@@ -1680,7 +1665,7 @@ end;
 
 
 
-Procedure TPricingInfo.Setfare(AIndex : Integer; AValue : TPricingInfoTypefareArray); 
+Procedure TPricingInfo.Setfare(AIndex : Integer; const AValue : TPricingInfoTypefareArray); 
 
 begin
   If (Ffare=AValue) then exit;
@@ -1720,7 +1705,7 @@ end;
 
 
 
-Procedure TPricingInfo.Setpassengers(AIndex : Integer; AValue : TPassengerCounts); 
+Procedure TPricingInfo.Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); 
 
 begin
   If (Fpassengers=AValue) then exit;
@@ -1740,7 +1725,7 @@ end;
 
 
 
-Procedure TPricingInfo.Setrefundable(AIndex : Integer; AValue : boolean); 
+Procedure TPricingInfo.Setrefundable(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Frefundable=AValue) then exit;
@@ -1780,7 +1765,7 @@ end;
 
 
 
-Procedure TPricingInfo.SetsegmentPricing(AIndex : Integer; AValue : TPricingInfoTypesegmentPricingArray); 
+Procedure TPricingInfo.SetsegmentPricing(AIndex : Integer; const AValue : TPricingInfoTypesegmentPricingArray); 
 
 begin
   If (FsegmentPricing=AValue) then exit;
@@ -1790,7 +1775,7 @@ end;
 
 
 
-Procedure TPricingInfo.Settax(AIndex : Integer; AValue : TPricingInfoTypetaxArray); 
+Procedure TPricingInfo.Settax(AIndex : Integer; const AValue : TPricingInfoTypetaxArray); 
 
 begin
   If (Ftax=AValue) then exit;
@@ -1832,7 +1817,7 @@ end;
 
 
 
-Procedure TSegmentInfo.SetbookingCodeCount(AIndex : Integer; AValue : integer); 
+Procedure TSegmentInfo.SetbookingCodeCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FbookingCodeCount=AValue) then exit;
@@ -1852,7 +1837,7 @@ end;
 
 
 
-Procedure TSegmentInfo.SetconnectionDuration(AIndex : Integer; AValue : integer); 
+Procedure TSegmentInfo.SetconnectionDuration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FconnectionDuration=AValue) then exit;
@@ -1862,7 +1847,7 @@ end;
 
 
 
-Procedure TSegmentInfo.Setduration(AIndex : Integer; AValue : integer); 
+Procedure TSegmentInfo.Setduration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fduration=AValue) then exit;
@@ -1872,7 +1857,7 @@ end;
 
 
 
-Procedure TSegmentInfo.Setflight(AIndex : Integer; AValue : TFlightInfo); 
+Procedure TSegmentInfo.Setflight(AIndex : Integer; const AValue : TFlightInfo); 
 
 begin
   If (Fflight=AValue) then exit;
@@ -1902,7 +1887,7 @@ end;
 
 
 
-Procedure TSegmentInfo.Setleg(AIndex : Integer; AValue : TSegmentInfoTypelegArray); 
+Procedure TSegmentInfo.Setleg(AIndex : Integer; const AValue : TSegmentInfoTypelegArray); 
 
 begin
   If (Fleg=AValue) then exit;
@@ -1922,7 +1907,7 @@ end;
 
 
 
-Procedure TSegmentInfo.SetsubjectToGovernmentApproval(AIndex : Integer; AValue : boolean); 
+Procedure TSegmentInfo.SetsubjectToGovernmentApproval(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FsubjectToGovernmentApproval=AValue) then exit;
@@ -1962,7 +1947,7 @@ end;
 
 
 
-Procedure TSegmentPricing.SetfreeBaggageOption(AIndex : Integer; AValue : TSegmentPricingTypefreeBaggageOptionArray); 
+Procedure TSegmentPricing.SetfreeBaggageOption(AIndex : Integer; const AValue : TSegmentPricingTypefreeBaggageOptionArray); 
 
 begin
   If (FfreeBaggageOption=AValue) then exit;
@@ -2012,7 +1997,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSliceInfo.Setduration(AIndex : Integer; AValue : integer); 
+Procedure TSliceInfo.Setduration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fduration=AValue) then exit;
@@ -2032,7 +2017,7 @@ end;
 
 
 
-Procedure TSliceInfo.Setsegment(AIndex : Integer; AValue : TSliceInfoTypesegmentArray); 
+Procedure TSliceInfo.Setsegment(AIndex : Integer; const AValue : TSliceInfoTypesegmentArray); 
 
 begin
   If (Fsegment=AValue) then exit;
@@ -2102,7 +2087,7 @@ end;
 
 
 
-Procedure TSliceInput.SetmaxConnectionDuration(AIndex : Integer; AValue : integer); 
+Procedure TSliceInput.SetmaxConnectionDuration(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxConnectionDuration=AValue) then exit;
@@ -2112,7 +2097,7 @@ end;
 
 
 
-Procedure TSliceInput.SetmaxStops(AIndex : Integer; AValue : integer); 
+Procedure TSliceInput.SetmaxStops(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxStops=AValue) then exit;
@@ -2132,7 +2117,7 @@ end;
 
 
 
-Procedure TSliceInput.SetpermittedCarrier(AIndex : Integer; AValue : TStringArray); 
+Procedure TSliceInput.SetpermittedCarrier(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FpermittedCarrier=AValue) then exit;
@@ -2142,7 +2127,7 @@ end;
 
 
 
-Procedure TSliceInput.SetpermittedDepartureTime(AIndex : Integer; AValue : TTimeOfDayRange); 
+Procedure TSliceInput.SetpermittedDepartureTime(AIndex : Integer; const AValue : TTimeOfDayRange); 
 
 begin
   If (FpermittedDepartureTime=AValue) then exit;
@@ -2162,7 +2147,7 @@ end;
 
 
 
-Procedure TSliceInput.SetprohibitedCarrier(AIndex : Integer; AValue : TStringArray); 
+Procedure TSliceInput.SetprohibitedCarrier(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FprohibitedCarrier=AValue) then exit;
@@ -2354,7 +2339,7 @@ end;
 
 
 
-Procedure TTripOption.Setpricing(AIndex : Integer; AValue : TTripOptionTypepricingArray); 
+Procedure TTripOption.Setpricing(AIndex : Integer; const AValue : TTripOptionTypepricingArray); 
 
 begin
   If (Fpricing=AValue) then exit;
@@ -2374,7 +2359,7 @@ end;
 
 
 
-Procedure TTripOption.Setslice(AIndex : Integer; AValue : TTripOptionTypesliceArray); 
+Procedure TTripOption.Setslice(AIndex : Integer; const AValue : TTripOptionTypesliceArray); 
 
 begin
   If (Fslice=AValue) then exit;
@@ -2415,7 +2400,7 @@ end;
 
 
 
-Procedure TTripOptionsRequest.Setpassengers(AIndex : Integer; AValue : TPassengerCounts); 
+Procedure TTripOptionsRequest.Setpassengers(AIndex : Integer; const AValue : TPassengerCounts); 
 
 begin
   If (Fpassengers=AValue) then exit;
@@ -2425,7 +2410,7 @@ end;
 
 
 
-Procedure TTripOptionsRequest.Setrefundable(AIndex : Integer; AValue : boolean); 
+Procedure TTripOptionsRequest.Setrefundable(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Frefundable=AValue) then exit;
@@ -2445,7 +2430,7 @@ end;
 
 
 
-Procedure TTripOptionsRequest.Setslice(AIndex : Integer; AValue : TTripOptionsRequestTypesliceArray); 
+Procedure TTripOptionsRequest.Setslice(AIndex : Integer; const AValue : TTripOptionsRequestTypesliceArray); 
 
 begin
   If (Fslice=AValue) then exit;
@@ -2455,7 +2440,7 @@ end;
 
 
 
-Procedure TTripOptionsRequest.Setsolutions(AIndex : Integer; AValue : integer); 
+Procedure TTripOptionsRequest.Setsolutions(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fsolutions=AValue) then exit;
@@ -2485,7 +2470,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTripOptionsResponse.Setdata(AIndex : Integer; AValue : TData); 
+Procedure TTripOptionsResponse.Setdata(AIndex : Integer; const AValue : TData); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -2515,7 +2500,7 @@ end;
 
 
 
-Procedure TTripOptionsResponse.SettripOption(AIndex : Integer; AValue : TTripOptionsResponseTypetripOptionArray); 
+Procedure TTripOptionsResponse.SettripOption(AIndex : Integer; const AValue : TTripOptionsResponseTypetripOptionArray); 
 
 begin
   If (FtripOption=AValue) then exit;
@@ -2545,7 +2530,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTripsSearchRequest.Setrequest(AIndex : Integer; AValue : TTripOptionsRequest); 
+Procedure TTripsSearchRequest.Setrequest(AIndex : Integer; const AValue : TTripOptionsRequest); 
 
 begin
   If (Frequest=AValue) then exit;
@@ -2572,7 +2557,7 @@ end;
 
 
 
-Procedure TTripsSearchResponse.Settrips(AIndex : Integer; AValue : TTripOptionsResponse); 
+Procedure TTripsSearchResponse.Settrips(AIndex : Integer; const AValue : TTripOptionsResponse); 
 
 begin
   If (Ftrips=AValue) then exit;
@@ -2633,7 +2618,7 @@ end;
 Class Function TQpxExpressAPI.APIRevision : String;
 
 begin
-  Result:='20140321';
+  Result:='20160307';
 end;
 
 Class Function TQpxExpressAPI.APIID : String;
@@ -2651,7 +2636,7 @@ end;
 Class Function TQpxExpressAPI.APIDescription : String;
 
 begin
-  Result:='Lets you find the least expensive flights between an origin and a destination.';
+  Result:='Finds the least expensive flights between an origin and a destination.';
 end;
 
 Class Function TQpxExpressAPI.APIOwnerDomain : String;
@@ -2687,7 +2672,7 @@ end;
 Class Function TQpxExpressAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TQpxExpressAPI.APIbasePath : string;
@@ -2699,7 +2684,7 @@ end;
 Class Function TQpxExpressAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/qpxExpress/v1/trips/';
+  Result:='https://www.googleapis.com/qpxExpress/v1/trips/';
 end;
 
 Class Function TQpxExpressAPI.APIProtocol : string;

+ 118 - 67
packages/googleapi/src/googlereplicapool.pp

@@ -1,19 +1,4 @@
 unit googlereplicapool;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -33,6 +18,7 @@ type
   TInstanceGroupManagersSetTargetPoolsRequest = Class;
   TOperation = Class;
   TOperationList = Class;
+  TReplicaPoolAutoHealingPolicy = Class;
   TInstanceGroupManagerArray = Array of TInstanceGroupManager;
   TInstanceGroupManagerListArray = Array of TInstanceGroupManagerList;
   TInstanceGroupManagersAbandonInstancesRequestArray = Array of TInstanceGroupManagersAbandonInstancesRequest;
@@ -42,11 +28,13 @@ type
   TInstanceGroupManagersSetTargetPoolsRequestArray = Array of TInstanceGroupManagersSetTargetPoolsRequest;
   TOperationArray = Array of TOperation;
   TOperationListArray = Array of TOperationList;
+  TReplicaPoolAutoHealingPolicyArray = Array of TReplicaPoolAutoHealingPolicy;
   //Anonymous types, using auto-generated names
   TOperationTypeerrorTypeerrorsItem = Class;
   TOperationTypeerror = Class;
   TOperationTypewarningsItemTypedataItem = Class;
   TOperationTypewarningsItem = Class;
+  TInstanceGroupManagerTypeautoHealingPoliciesArray = Array of TReplicaPoolAutoHealingPolicy;
   TInstanceGroupManagerListTypeitemsArray = Array of TInstanceGroupManager;
   TOperationTypeerrorTypeerrorsArray = Array of TOperationTypeerrorTypeerrorsItem;
   TOperationTypewarningsItemTypedataArray = Array of TOperationTypewarningsItemTypedataItem;
@@ -59,6 +47,7 @@ type
   
   TInstanceGroupManager = Class(TGoogleBaseObject)
   Private
+    FautoHealingPolicies : TInstanceGroupManagerTypeautoHealingPoliciesArray;
     FbaseInstanceName : String;
     FcreationTimestamp : String;
     FcurrentSize : integer;
@@ -74,9 +63,10 @@ type
     FtargetSize : integer;
   Protected
     //Property setters
+    Procedure SetautoHealingPolicies(AIndex : Integer; const AValue : TInstanceGroupManagerTypeautoHealingPoliciesArray); virtual;
     Procedure SetbaseInstanceName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcurrentSize(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcurrentSize(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
     Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
     Procedure Setgroup(AIndex : Integer; const AValue : String); virtual;
@@ -85,27 +75,28 @@ type
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettargetPools(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SettargetSize(AIndex : Integer; AValue : integer); virtual;
+    Procedure SettargetPools(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SettargetSize(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 baseInstanceName : String Index 0 Read FbaseInstanceName Write SetbaseInstanceName;
-    Property creationTimestamp : String Index 8 Read FcreationTimestamp Write SetcreationTimestamp;
-    Property currentSize : integer Index 16 Read FcurrentSize Write SetcurrentSize;
-    Property description : String Index 24 Read Fdescription Write Setdescription;
-    Property fingerprint : String Index 32 Read Ffingerprint Write Setfingerprint;
-    Property group : String Index 40 Read Fgroup Write Setgroup;
-    Property id : String Index 48 Read Fid Write Setid;
-    Property instanceTemplate : String Index 56 Read FinstanceTemplate Write SetinstanceTemplate;
-    Property kind : String Index 64 Read Fkind Write Setkind;
-    Property name : String Index 72 Read Fname Write Setname;
-    Property selfLink : String Index 80 Read FselfLink Write SetselfLink;
-    Property targetPools : TStringArray Index 88 Read FtargetPools Write SettargetPools;
-    Property targetSize : integer Index 96 Read FtargetSize Write SettargetSize;
+    Property autoHealingPolicies : TInstanceGroupManagerTypeautoHealingPoliciesArray Index 0 Read FautoHealingPolicies Write SetautoHealingPolicies;
+    Property baseInstanceName : String Index 8 Read FbaseInstanceName Write SetbaseInstanceName;
+    Property creationTimestamp : String Index 16 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property currentSize : integer Index 24 Read FcurrentSize Write SetcurrentSize;
+    Property description : String Index 32 Read Fdescription Write Setdescription;
+    Property fingerprint : String Index 40 Read Ffingerprint Write Setfingerprint;
+    Property group : String Index 48 Read Fgroup Write Setgroup;
+    Property id : String Index 56 Read Fid Write Setid;
+    Property instanceTemplate : String Index 64 Read FinstanceTemplate Write SetinstanceTemplate;
+    Property kind : String Index 72 Read Fkind Write Setkind;
+    Property name : String Index 80 Read Fname Write Setname;
+    Property selfLink : String Index 88 Read FselfLink Write SetselfLink;
+    Property targetPools : TStringArray Index 96 Read FtargetPools Write SettargetPools;
+    Property targetSize : integer Index 104 Read FtargetSize Write SettargetSize;
   end;
   TInstanceGroupManagerClass = Class of TInstanceGroupManager;
   
@@ -123,7 +114,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TInstanceGroupManagerListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TInstanceGroupManagerListTypeitemsArray); 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;
@@ -150,7 +141,7 @@ type
     Finstances : TStringArray;
   Protected
     //Property setters
-    Procedure Setinstances(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setinstances(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -170,7 +161,7 @@ type
     Finstances : TStringArray;
   Protected
     //Property setters
-    Procedure Setinstances(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setinstances(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -190,7 +181,7 @@ type
     Finstances : TStringArray;
   Protected
     //Property setters
-    Procedure Setinstances(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setinstances(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -228,7 +219,7 @@ type
   Protected
     //Property setters
     Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettargetPools(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SettargetPools(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -271,7 +262,7 @@ type
     Ferrors : TOperationTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -313,7 +304,7 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 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}
@@ -360,15 +351,15 @@ type
     Procedure SetclientOperationId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seterror(AIndex : Integer; AValue : TOperationTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TOperationTypeerror); virtual;
     Procedure SethttpErrorMessage(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 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; AValue : integer); 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;
@@ -377,7 +368,7 @@ type
     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; AValue : TOperationTypewarningsArray); 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}
@@ -424,7 +415,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 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;
@@ -442,6 +433,25 @@ type
   end;
   TOperationListClass = Class of TOperationList;
   
+  { --------------------------------------------------------------------
+    TReplicaPoolAutoHealingPolicy
+    --------------------------------------------------------------------}
+  
+  TReplicaPoolAutoHealingPolicy = Class(TGoogleBaseObject)
+  Private
+    FactionType : String;
+    FhealthCheck : String;
+  Protected
+    //Property setters
+    Procedure SetactionType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethealthCheck(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property actionType : String Index 0 Read FactionType Write SetactionType;
+    Property healthCheck : String Index 8 Read FhealthCheck Write SethealthCheck;
+  end;
+  TReplicaPoolAutoHealingPolicyClass = Class of TReplicaPoolAutoHealingPolicy;
+  
   { --------------------------------------------------------------------
     TInstanceGroupManagersResource
     --------------------------------------------------------------------}
@@ -562,6 +572,16 @@ implementation
   --------------------------------------------------------------------}
 
 
+Procedure TInstanceGroupManager.SetautoHealingPolicies(AIndex : Integer; const AValue : TInstanceGroupManagerTypeautoHealingPoliciesArray); 
+
+begin
+  If (FautoHealingPolicies=AValue) then exit;
+  FautoHealingPolicies:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TInstanceGroupManager.SetbaseInstanceName(AIndex : Integer; const AValue : String); 
 
 begin
@@ -582,7 +602,7 @@ end;
 
 
 
-Procedure TInstanceGroupManager.SetcurrentSize(AIndex : Integer; AValue : integer); 
+Procedure TInstanceGroupManager.SetcurrentSize(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FcurrentSize=AValue) then exit;
@@ -672,7 +692,7 @@ end;
 
 
 
-Procedure TInstanceGroupManager.SettargetPools(AIndex : Integer; AValue : TStringArray); 
+Procedure TInstanceGroupManager.SettargetPools(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FtargetPools=AValue) then exit;
@@ -682,7 +702,7 @@ end;
 
 
 
-Procedure TInstanceGroupManager.SettargetSize(AIndex : Integer; AValue : integer); 
+Procedure TInstanceGroupManager.SettargetSize(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtargetSize=AValue) then exit;
@@ -697,6 +717,7 @@ Procedure TInstanceGroupManager.SetArrayLength(Const AName : String; ALength : L
 
 begin
   Case AName of
+  'autohealingpolicies' : SetLength(FautoHealingPolicies,ALength);
   'targetpools' : SetLength(FtargetPools,ALength);
   else
     Inherited SetArrayLength(AName,ALength);
@@ -722,7 +743,7 @@ end;
 
 
 
-Procedure TInstanceGroupManagerList.Setitems(AIndex : Integer; AValue : TInstanceGroupManagerListTypeitemsArray); 
+Procedure TInstanceGroupManagerList.Setitems(AIndex : Integer; const AValue : TInstanceGroupManagerListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -782,7 +803,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceGroupManagersAbandonInstancesRequest.Setinstances(AIndex : Integer; AValue : TStringArray); 
+Procedure TInstanceGroupManagersAbandonInstancesRequest.Setinstances(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Finstances=AValue) then exit;
@@ -812,7 +833,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceGroupManagersDeleteInstancesRequest.Setinstances(AIndex : Integer; AValue : TStringArray); 
+Procedure TInstanceGroupManagersDeleteInstancesRequest.Setinstances(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Finstances=AValue) then exit;
@@ -842,7 +863,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceGroupManagersRecreateInstancesRequest.Setinstances(AIndex : Integer; AValue : TStringArray); 
+Procedure TInstanceGroupManagersRecreateInstancesRequest.Setinstances(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Finstances=AValue) then exit;
@@ -899,7 +920,7 @@ end;
 
 
 
-Procedure TInstanceGroupManagersSetTargetPoolsRequest.SettargetPools(AIndex : Integer; AValue : TStringArray); 
+Procedure TInstanceGroupManagersSetTargetPoolsRequest.SettargetPools(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FtargetPools=AValue) then exit;
@@ -966,7 +987,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TOperationTypeerror.Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); 
+Procedure TOperationTypeerror.Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1033,7 +1054,7 @@ end;
 
 
 
-Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 
+Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -1103,7 +1124,7 @@ end;
 
 
 
-Procedure TOperation.Seterror(AIndex : Integer; AValue : TOperationTypeerror); 
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TOperationTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -1123,7 +1144,7 @@ end;
 
 
 
-Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 
+Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FhttpErrorStatusCode=AValue) then exit;
@@ -1183,7 +1204,7 @@ end;
 
 
 
-Procedure TOperation.Setprogress(AIndex : Integer; AValue : integer); 
+Procedure TOperation.Setprogress(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fprogress=AValue) then exit;
@@ -1273,7 +1294,7 @@ end;
 
 
 
-Procedure TOperation.Setwarnings(AIndex : Integer; AValue : TOperationTypewarningsArray); 
+Procedure TOperation.Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1323,7 +1344,7 @@ end;
 
 
 
-Procedure TOperationList.Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 
+Procedure TOperationList.Setitems(AIndex : Integer; const AValue : TOperationListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1378,6 +1399,33 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TReplicaPoolAutoHealingPolicy
+  --------------------------------------------------------------------}
+
+
+Procedure TReplicaPoolAutoHealingPolicy.SetactionType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FactionType=AValue) then exit;
+  FactionType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TReplicaPoolAutoHealingPolicy.SethealthCheck(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhealthCheck=AValue) then exit;
+  FhealthCheck:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
 { --------------------------------------------------------------------
   TInstanceGroupManagersResource
   --------------------------------------------------------------------}
@@ -1667,7 +1715,7 @@ end;
 Class Function TReplicapoolAPI.APIRevision : String;
 
 begin
-  Result:='20150223';
+  Result:='20160509';
 end;
 
 Class Function TReplicapoolAPI.APIID : String;
@@ -1685,7 +1733,7 @@ end;
 Class Function TReplicapoolAPI.APIDescription : String;
 
 begin
-  Result:='The Google Compute Engine Instance Group Manager API provides groups of homogenous Compute Engine Instances.';
+  Result:='[Deprecated. Please use Instance Group Manager in Compute API] Provides groups of homogenous Compute Engine instances.';
 end;
 
 Class Function TReplicapoolAPI.APIOwnerDomain : String;
@@ -1721,7 +1769,7 @@ end;
 Class Function TReplicapoolAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TReplicapoolAPI.APIbasePath : string;
@@ -1733,7 +1781,7 @@ end;
 Class Function TReplicapoolAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/replicapool/v1beta2/projects/';
+  Result:='https://www.googleapis.com/replicapool/v1beta2/projects/';
 end;
 
 Class Function TReplicapoolAPI.APIProtocol : string;
@@ -1757,13 +1805,15 @@ end;
 Class Function TReplicapoolAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,3);
+  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/compute';
-  Result[1].Description:='View and manage your Google Compute Engine resources';
-  Result[2].Name:='https://www.googleapis.com/auth/compute.readonly';
-  Result[2].Description:='View your Google Compute Engine resources';
+  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/compute';
+  Result[2].Description:='View and manage your Google Compute Engine resources';
+  Result[3].Name:='https://www.googleapis.com/auth/compute.readonly';
+  Result[3].Description:='View your Google Compute Engine resources';
   
 end;
 
@@ -1789,6 +1839,7 @@ begin
   TOperationTypewarningsItem.RegisterObject;
   TOperation.RegisterObject;
   TOperationList.RegisterObject;
+  TReplicaPoolAutoHealingPolicy.RegisterObject;
 end;
 
 

+ 214 - 70
packages/googleapi/src/googlereplicapoolupdater.pp

@@ -1,19 +1,4 @@
 unit googlereplicapoolupdater;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -27,11 +12,13 @@ type
   TInstanceUpdate = Class;
   TInstanceUpdateList = Class;
   TOperation = Class;
+  TOperationList = Class;
   TRollingUpdate = Class;
   TRollingUpdateList = Class;
   TInstanceUpdateArray = Array of TInstanceUpdate;
   TInstanceUpdateListArray = Array of TInstanceUpdateList;
   TOperationArray = Array of TOperation;
+  TOperationListArray = Array of TOperationList;
   TRollingUpdateArray = Array of TRollingUpdate;
   TRollingUpdateListArray = Array of TRollingUpdateList;
   //Anonymous types, using auto-generated names
@@ -49,6 +36,7 @@ type
   TOperationTypeerrorTypeerrorsArray = Array of TOperationTypeerrorTypeerrorsItem;
   TOperationTypewarningsItemTypedataArray = Array of TOperationTypewarningsItemTypedataItem;
   TOperationTypewarningsArray = Array of TOperationTypewarningsItem;
+  TOperationListTypeitemsArray = Array of TOperation;
   TRollingUpdateTypeerrorTypeerrorsArray = Array of TRollingUpdateTypeerrorTypeerrorsItem;
   TRollingUpdateListTypeitemsArray = Array of TRollingUpdate;
   
@@ -83,7 +71,7 @@ type
     Ferrors : TInstanceUpdateTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TInstanceUpdateTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TInstanceUpdateTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -105,7 +93,7 @@ type
     Fstatus : String;
   Protected
     //Property setters
-    Procedure Seterror(AIndex : Integer; AValue : TInstanceUpdateTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TInstanceUpdateTypeerror); virtual;
     Procedure Setinstance(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -128,7 +116,7 @@ type
     FselfLink : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TInstanceUpdateListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TInstanceUpdateListTypeitemsArray); 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;
@@ -176,7 +164,7 @@ type
     Ferrors : TOperationTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -218,7 +206,7 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 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}
@@ -265,15 +253,15 @@ type
     Procedure SetclientOperationId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seterror(AIndex : Integer; AValue : TOperationTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TOperationTypeerror); virtual;
     Procedure SethttpErrorMessage(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 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; AValue : integer); 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;
@@ -282,7 +270,7 @@ type
     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; AValue : TOperationTypewarningsArray); 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}
@@ -315,6 +303,38 @@ type
   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;
+  
   { --------------------------------------------------------------------
     TRollingUpdateTypeerrorTypeerrorsItem
     --------------------------------------------------------------------}
@@ -346,7 +366,7 @@ type
     Ferrors : TRollingUpdateTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TRollingUpdateTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TRollingUpdateTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -370,11 +390,11 @@ type
     FminInstanceUpdateTimeSec : integer;
   Protected
     //Property setters
-    Procedure SetautoPauseAfterInstances(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetinstanceStartupTimeoutSec(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmaxNumConcurrentInstances(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmaxNumFailedInstances(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetminInstanceUpdateTimeSec(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetautoPauseAfterInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinstanceStartupTimeoutSec(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxNumConcurrentInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaxNumFailedInstances(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetminInstanceUpdateTimeSec(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property autoPauseAfterInstances : integer Index 0 Read FautoPauseAfterInstances Write SetautoPauseAfterInstances;
@@ -400,6 +420,7 @@ type
     FinstanceGroupManager : String;
     FinstanceTemplate : String;
     Fkind : String;
+    FoldInstanceTemplate : String;
     Fpolicy : TRollingUpdateTypepolicy;
     Fprogress : integer;
     FselfLink : String;
@@ -411,14 +432,15 @@ type
     Procedure SetactionType(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seterror(AIndex : Integer; AValue : TRollingUpdateTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TRollingUpdateTypeerror); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure SetinstanceGroup(AIndex : Integer; const AValue : String); virtual;
     Procedure SetinstanceGroupManager(AIndex : Integer; const AValue : String); virtual;
     Procedure SetinstanceTemplate(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setpolicy(AIndex : Integer; AValue : TRollingUpdateTypepolicy); virtual;
-    Procedure Setprogress(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetoldInstanceTemplate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setpolicy(AIndex : Integer; const AValue : TRollingUpdateTypepolicy); virtual;
+    Procedure Setprogress(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstatusMessage(AIndex : Integer; const AValue : String); virtual;
@@ -434,12 +456,13 @@ type
     Property instanceGroupManager : String Index 48 Read FinstanceGroupManager Write SetinstanceGroupManager;
     Property instanceTemplate : String Index 56 Read FinstanceTemplate Write SetinstanceTemplate;
     Property kind : String Index 64 Read Fkind Write Setkind;
-    Property policy : TRollingUpdateTypepolicy Index 72 Read Fpolicy Write Setpolicy;
-    Property progress : integer Index 80 Read Fprogress Write Setprogress;
-    Property selfLink : String Index 88 Read FselfLink Write SetselfLink;
-    Property status : String Index 96 Read Fstatus Write Setstatus;
-    Property statusMessage : String Index 104 Read FstatusMessage Write SetstatusMessage;
-    Property user : String Index 112 Read Fuser Write Setuser;
+    Property oldInstanceTemplate : String Index 72 Read FoldInstanceTemplate Write SetoldInstanceTemplate;
+    Property policy : TRollingUpdateTypepolicy Index 80 Read Fpolicy Write Setpolicy;
+    Property progress : integer Index 88 Read Fprogress Write Setprogress;
+    Property selfLink : String Index 96 Read FselfLink Write SetselfLink;
+    Property status : String Index 104 Read Fstatus Write Setstatus;
+    Property statusMessage : String Index 112 Read FstatusMessage Write SetstatusMessage;
+    Property user : String Index 120 Read Fuser Write Setuser;
   end;
   TRollingUpdateClass = Class of TRollingUpdate;
   
@@ -455,7 +478,7 @@ type
     FselfLink : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TRollingUpdateListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TRollingUpdateListTypeitemsArray); 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;
@@ -481,7 +504,6 @@ type
   
   TRollingUpdatesListOptions = Record
     filter : String;
-    instanceGroupManager : String;
     maxResults : integer;
     pageToken : String;
   end;
@@ -516,11 +538,22 @@ type
     TZoneOperationsResource
     --------------------------------------------------------------------}
   
+  
+  //Optional query Options for TZoneOperationsResource, method List
+  
+  TZoneOperationsListOptions = Record
+    filter : String;
+    maxResults : integer;
+    pageToken : String;
+  end;
+  
   TZoneOperationsResource = Class(TGoogleResource)
   Public
     Class Function ResourceName : String; override;
     Class Function DefaultAPI : TGoogleAPIClass; override;
     Function Get(operation: string; project: string; zone: string) : TOperation;
+    Function List(project: string; zone: string; AQuery : string  = '') : TOperationList;
+    Function List(project: string; zone: string; AQuery : TZoneOperationslistOptions) : TOperationList;
   end;
   
   
@@ -611,7 +644,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceUpdateTypeerror.Seterrors(AIndex : Integer; AValue : TInstanceUpdateTypeerrorTypeerrorsArray); 
+Procedure TInstanceUpdateTypeerror.Seterrors(AIndex : Integer; const AValue : TInstanceUpdateTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -641,7 +674,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceUpdate.Seterror(AIndex : Integer; AValue : TInstanceUpdateTypeerror); 
+Procedure TInstanceUpdate.Seterror(AIndex : Integer; const AValue : TInstanceUpdateTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -678,7 +711,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TInstanceUpdateList.Setitems(AIndex : Integer; AValue : TInstanceUpdateListTypeitemsArray); 
+Procedure TInstanceUpdateList.Setitems(AIndex : Integer; const AValue : TInstanceUpdateListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -775,7 +808,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TOperationTypeerror.Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); 
+Procedure TOperationTypeerror.Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -842,7 +875,7 @@ end;
 
 
 
-Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 
+Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -912,7 +945,7 @@ end;
 
 
 
-Procedure TOperation.Seterror(AIndex : Integer; AValue : TOperationTypeerror); 
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TOperationTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -932,7 +965,7 @@ end;
 
 
 
-Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 
+Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FhttpErrorStatusCode=AValue) then exit;
@@ -992,7 +1025,7 @@ end;
 
 
 
-Procedure TOperation.Setprogress(AIndex : Integer; AValue : integer); 
+Procedure TOperation.Setprogress(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fprogress=AValue) then exit;
@@ -1082,7 +1115,7 @@ end;
 
 
 
-Procedure TOperation.Setwarnings(AIndex : Integer; AValue : TOperationTypewarningsArray); 
+Procedure TOperation.Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1117,6 +1150,76 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  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}
+
+
+
+
 { --------------------------------------------------------------------
   TRollingUpdateTypeerrorTypeerrorsItem
   --------------------------------------------------------------------}
@@ -1159,7 +1262,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRollingUpdateTypeerror.Seterrors(AIndex : Integer; AValue : TRollingUpdateTypeerrorTypeerrorsArray); 
+Procedure TRollingUpdateTypeerror.Seterrors(AIndex : Integer; const AValue : TRollingUpdateTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -1189,7 +1292,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRollingUpdateTypepolicy.SetautoPauseAfterInstances(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdateTypepolicy.SetautoPauseAfterInstances(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FautoPauseAfterInstances=AValue) then exit;
@@ -1199,7 +1302,7 @@ end;
 
 
 
-Procedure TRollingUpdateTypepolicy.SetinstanceStartupTimeoutSec(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdateTypepolicy.SetinstanceStartupTimeoutSec(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FinstanceStartupTimeoutSec=AValue) then exit;
@@ -1209,7 +1312,7 @@ end;
 
 
 
-Procedure TRollingUpdateTypepolicy.SetmaxNumConcurrentInstances(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdateTypepolicy.SetmaxNumConcurrentInstances(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxNumConcurrentInstances=AValue) then exit;
@@ -1219,7 +1322,7 @@ end;
 
 
 
-Procedure TRollingUpdateTypepolicy.SetmaxNumFailedInstances(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdateTypepolicy.SetmaxNumFailedInstances(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxNumFailedInstances=AValue) then exit;
@@ -1229,7 +1332,7 @@ end;
 
 
 
-Procedure TRollingUpdateTypepolicy.SetminInstanceUpdateTimeSec(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdateTypepolicy.SetminInstanceUpdateTimeSec(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FminInstanceUpdateTimeSec=AValue) then exit;
@@ -1276,7 +1379,7 @@ end;
 
 
 
-Procedure TRollingUpdate.Seterror(AIndex : Integer; AValue : TRollingUpdateTypeerror); 
+Procedure TRollingUpdate.Seterror(AIndex : Integer; const AValue : TRollingUpdateTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -1336,7 +1439,17 @@ end;
 
 
 
-Procedure TRollingUpdate.Setpolicy(AIndex : Integer; AValue : TRollingUpdateTypepolicy); 
+Procedure TRollingUpdate.SetoldInstanceTemplate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FoldInstanceTemplate=AValue) then exit;
+  FoldInstanceTemplate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRollingUpdate.Setpolicy(AIndex : Integer; const AValue : TRollingUpdateTypepolicy); 
 
 begin
   If (Fpolicy=AValue) then exit;
@@ -1346,7 +1459,7 @@ end;
 
 
 
-Procedure TRollingUpdate.Setprogress(AIndex : Integer; AValue : integer); 
+Procedure TRollingUpdate.Setprogress(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fprogress=AValue) then exit;
@@ -1403,7 +1516,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRollingUpdateList.Setitems(AIndex : Integer; AValue : TRollingUpdateListTypeitemsArray); 
+Procedure TRollingUpdateList.Setitems(AIndex : Integer; const AValue : TRollingUpdateListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1544,7 +1657,6 @@ Var
 begin
   _Q:='';
   AddToQuery(_Q,'filter',AQuery.filter);
-  AddToQuery(_Q,'instanceGroupManager',AQuery.instanceGroupManager);
   AddToQuery(_Q,'maxResults',AQuery.maxResults);
   AddToQuery(_Q,'pageToken',AQuery.pageToken);
   Result:=List(project,zone,_Q);
@@ -1658,6 +1770,35 @@ begin
   Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
 end;
 
+Function TZoneOperationsResource.List(project: string; zone: string; AQuery : string = '') : TOperationList;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/zones/{zone}/operations';
+  _Methodid   = 'replicapoolupdater.zoneOperations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project,'zone',zone]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TOperationList) as TOperationList;
+end;
+
+
+Function TZoneOperationsResource.List(project: string; zone: string; AQuery : TZoneOperationslistOptions) : TOperationList;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'maxResults',AQuery.maxResults);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(project,zone,_Q);
+end;
+
 
 
 { --------------------------------------------------------------------
@@ -1679,7 +1820,7 @@ end;
 Class Function TReplicapoolupdaterAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160229';
 end;
 
 Class Function TReplicapoolupdaterAPI.APIID : String;
@@ -1697,7 +1838,7 @@ end;
 Class Function TReplicapoolupdaterAPI.APIDescription : String;
 
 begin
-  Result:='The Google Compute Engine Instance Group Updater API provides services for updating groups of Compute Engine Instances.';
+  Result:='Updates groups of Compute Engine instances.';
 end;
 
 Class Function TReplicapoolupdaterAPI.APIOwnerDomain : String;
@@ -1733,7 +1874,7 @@ end;
 Class Function TReplicapoolupdaterAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TReplicapoolupdaterAPI.APIbasePath : string;
@@ -1745,7 +1886,7 @@ end;
 Class Function TReplicapoolupdaterAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/replicapoolupdater/v1beta1/projects/';
+  Result:='https://www.googleapis.com/replicapoolupdater/v1beta1/projects/';
 end;
 
 Class Function TReplicapoolupdaterAPI.APIProtocol : string;
@@ -1769,13 +1910,15 @@ end;
 Class Function TReplicapoolupdaterAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,3);
+  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/replicapool';
-  Result[1].Description:='View and manage replica pools';
-  Result[2].Name:='https://www.googleapis.com/auth/replicapool.readonly';
-  Result[2].Description:='View replica pools';
+  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/replicapool';
+  Result[2].Description:='View and manage replica pools';
+  Result[3].Name:='https://www.googleapis.com/auth/replicapool.readonly';
+  Result[3].Description:='View replica pools';
   
 end;
 
@@ -1797,6 +1940,7 @@ begin
   TOperationTypewarningsItemTypedataItem.RegisterObject;
   TOperationTypewarningsItem.RegisterObject;
   TOperation.RegisterObject;
+  TOperationList.RegisterObject;
   TRollingUpdateTypeerrorTypeerrorsItem.RegisterObject;
   TRollingUpdateTypeerror.RegisterObject;
   TRollingUpdateTypepolicy.RegisterObject;

+ 137 - 70
packages/googleapi/src/googlereseller.pp

@@ -1,19 +1,4 @@
 unit googlereseller;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -94,22 +79,25 @@ type
   
   TChangePlanRequest = Class(TGoogleBaseObject)
   Private
+    FdealCode : String;
     Fkind : String;
     FplanName : String;
     FpurchaseOrderId : String;
     Fseats : TSeats;
   Protected
     //Property setters
+    Procedure SetdealCode(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetplanName(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpurchaseOrderId(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setseats(AIndex : Integer; AValue : TSeats); virtual;
+    Procedure Setseats(AIndex : Integer; const AValue : TSeats); virtual;
   Public
   Published
-    Property kind : String Index 0 Read Fkind Write Setkind;
-    Property planName : String Index 8 Read FplanName Write SetplanName;
-    Property purchaseOrderId : String Index 16 Read FpurchaseOrderId Write SetpurchaseOrderId;
-    Property seats : TSeats Index 24 Read Fseats Write Setseats;
+    Property dealCode : String Index 0 Read FdealCode Write SetdealCode;
+    Property kind : String Index 8 Read Fkind Write Setkind;
+    Property planName : String Index 16 Read FplanName Write SetplanName;
+    Property purchaseOrderId : String Index 24 Read FpurchaseOrderId Write SetpurchaseOrderId;
+    Property seats : TSeats Index 32 Read Fseats Write Setseats;
   end;
   TChangePlanRequestClass = Class of TChangePlanRequest;
   
@@ -121,6 +109,7 @@ type
   Private
     FalternateEmail : String;
     FcustomerDomain : String;
+    FcustomerDomainVerified : boolean;
     FcustomerId : String;
     Fkind : String;
     FphoneNumber : String;
@@ -130,20 +119,22 @@ type
     //Property setters
     Procedure SetalternateEmail(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomerDomain(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomerDomainVerified(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetcustomerId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetphoneNumber(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetpostalAddress(AIndex : Integer; AValue : TAddress); virtual;
+    Procedure SetpostalAddress(AIndex : Integer; const AValue : TAddress); virtual;
     Procedure SetresourceUiUrl(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
     Property alternateEmail : String Index 0 Read FalternateEmail Write SetalternateEmail;
     Property customerDomain : String Index 8 Read FcustomerDomain Write SetcustomerDomain;
-    Property customerId : String Index 16 Read FcustomerId Write SetcustomerId;
-    Property kind : String Index 24 Read Fkind Write Setkind;
-    Property phoneNumber : String Index 32 Read FphoneNumber Write SetphoneNumber;
-    Property postalAddress : TAddress Index 40 Read FpostalAddress Write SetpostalAddress;
-    Property resourceUiUrl : String Index 48 Read FresourceUiUrl Write SetresourceUiUrl;
+    Property customerDomainVerified : boolean Index 16 Read FcustomerDomainVerified Write SetcustomerDomainVerified;
+    Property customerId : String Index 24 Read FcustomerId Write SetcustomerId;
+    Property kind : String Index 32 Read Fkind Write Setkind;
+    Property phoneNumber : String Index 40 Read FphoneNumber Write SetphoneNumber;
+    Property postalAddress : TAddress Index 48 Read FpostalAddress Write SetpostalAddress;
+    Property resourceUiUrl : String Index 56 Read FresourceUiUrl Write SetresourceUiUrl;
   end;
   TCustomerClass = Class of TCustomer;
   
@@ -179,9 +170,9 @@ type
   Protected
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlicensedNumberOfSeats(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetmaximumNumberOfSeats(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetnumberOfSeats(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetlicensedNumberOfSeats(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetmaximumNumberOfSeats(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnumberOfSeats(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property kind : String Index 0 Read Fkind Write Setkind;
@@ -221,8 +212,8 @@ type
     FplanName : String;
   Protected
     //Property setters
-    Procedure SetcommitmentInterval(AIndex : Integer; AValue : TSubscriptionTypeplanTypecommitmentInterval); virtual;
-    Procedure SetisCommitmentPlan(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetcommitmentInterval(AIndex : Integer; const AValue : TSubscriptionTypeplanTypecommitmentInterval); virtual;
+    Procedure SetisCommitmentPlan(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetplanName(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -242,7 +233,7 @@ type
     FtransferabilityExpirationTime : String;
   Protected
     //Property setters
-    Procedure SetminimumTransferableSeats(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetminimumTransferableSeats(AIndex : Integer; const AValue : integer); virtual;
     Procedure SettransferabilityExpirationTime(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -261,7 +252,7 @@ type
     FtrialEndTime : String;
   Protected
     //Property setters
-    Procedure SetisInTrial(AIndex : Integer; AValue : boolean); virtual;
+    Procedure SetisInTrial(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SettrialEndTime(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -278,7 +269,9 @@ type
   Private
     FbillingMethod : String;
     FcreationTime : String;
+    FcustomerDomain : String;
     FcustomerId : String;
+    FdealCode : String;
     Fkind : String;
     Fplan : TSubscriptionTypeplan;
     FpurchaseOrderId : String;
@@ -288,40 +281,51 @@ type
     FskuId : String;
     Fstatus : String;
     FsubscriptionId : String;
+    FsuspensionReasons : TStringArray;
     FtransferInfo : TSubscriptionTypetransferInfo;
     FtrialSettings : TSubscriptionTypetrialSettings;
   Protected
     //Property setters
     Procedure SetbillingMethod(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomerDomain(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcustomerId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdealCode(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setplan(AIndex : Integer; AValue : TSubscriptionTypeplan); virtual;
+    Procedure Setplan(AIndex : Integer; const AValue : TSubscriptionTypeplan); virtual;
     Procedure SetpurchaseOrderId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetrenewalSettings(AIndex : Integer; AValue : TRenewalSettings); virtual;
+    Procedure SetrenewalSettings(AIndex : Integer; const AValue : TRenewalSettings); virtual;
     Procedure SetresourceUiUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setseats(AIndex : Integer; AValue : TSeats); virtual;
+    Procedure Setseats(AIndex : Integer; const AValue : TSeats); virtual;
     Procedure SetskuId(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure SetsubscriptionId(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettransferInfo(AIndex : Integer; AValue : TSubscriptionTypetransferInfo); virtual;
-    Procedure SettrialSettings(AIndex : Integer; AValue : TSubscriptionTypetrialSettings); virtual;
+    Procedure SetsuspensionReasons(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SettransferInfo(AIndex : Integer; const AValue : TSubscriptionTypetransferInfo); virtual;
+    Procedure SettrialSettings(AIndex : Integer; const AValue : TSubscriptionTypetrialSettings); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
   Public
   Published
     Property billingMethod : String Index 0 Read FbillingMethod Write SetbillingMethod;
     Property creationTime : String Index 8 Read FcreationTime Write SetcreationTime;
-    Property customerId : String Index 16 Read FcustomerId Write SetcustomerId;
-    Property kind : String Index 24 Read Fkind Write Setkind;
-    Property plan : TSubscriptionTypeplan Index 32 Read Fplan Write Setplan;
-    Property purchaseOrderId : String Index 40 Read FpurchaseOrderId Write SetpurchaseOrderId;
-    Property renewalSettings : TRenewalSettings Index 48 Read FrenewalSettings Write SetrenewalSettings;
-    Property resourceUiUrl : String Index 56 Read FresourceUiUrl Write SetresourceUiUrl;
-    Property seats : TSeats Index 64 Read Fseats Write Setseats;
-    Property skuId : String Index 72 Read FskuId Write SetskuId;
-    Property status : String Index 80 Read Fstatus Write Setstatus;
-    Property subscriptionId : String Index 88 Read FsubscriptionId Write SetsubscriptionId;
-    Property transferInfo : TSubscriptionTypetransferInfo Index 96 Read FtransferInfo Write SettransferInfo;
-    Property trialSettings : TSubscriptionTypetrialSettings Index 104 Read FtrialSettings Write SettrialSettings;
+    Property customerDomain : String Index 16 Read FcustomerDomain Write SetcustomerDomain;
+    Property customerId : String Index 24 Read FcustomerId Write SetcustomerId;
+    Property dealCode : String Index 32 Read FdealCode Write SetdealCode;
+    Property kind : String Index 40 Read Fkind Write Setkind;
+    Property plan : TSubscriptionTypeplan Index 48 Read Fplan Write Setplan;
+    Property purchaseOrderId : String Index 56 Read FpurchaseOrderId Write SetpurchaseOrderId;
+    Property renewalSettings : TRenewalSettings Index 64 Read FrenewalSettings Write SetrenewalSettings;
+    Property resourceUiUrl : String Index 72 Read FresourceUiUrl Write SetresourceUiUrl;
+    Property seats : TSeats Index 80 Read Fseats Write Setseats;
+    Property skuId : String Index 88 Read FskuId Write SetskuId;
+    Property status : String Index 96 Read Fstatus Write Setstatus;
+    Property subscriptionId : String Index 104 Read FsubscriptionId Write SetsubscriptionId;
+    Property suspensionReasons : TStringArray Index 112 Read FsuspensionReasons Write SetsuspensionReasons;
+    Property transferInfo : TSubscriptionTypetransferInfo Index 120 Read FtransferInfo Write SettransferInfo;
+    Property trialSettings : TSubscriptionTypetrialSettings Index 128 Read FtrialSettings Write SettrialSettings;
   end;
   TSubscriptionClass = Class of TSubscription;
   
@@ -338,7 +342,7 @@ type
     //Property setters
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsubscriptions(AIndex : Integer; AValue : TSubscriptionsTypesubscriptionsArray); virtual;
+    Procedure Setsubscriptions(AIndex : Integer; const AValue : TSubscriptionsTypesubscriptionsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -580,6 +584,16 @@ end;
   --------------------------------------------------------------------}
 
 
+Procedure TChangePlanRequest.SetdealCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdealCode=AValue) then exit;
+  FdealCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TChangePlanRequest.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
@@ -610,7 +624,7 @@ end;
 
 
 
-Procedure TChangePlanRequest.Setseats(AIndex : Integer; AValue : TSeats); 
+Procedure TChangePlanRequest.Setseats(AIndex : Integer; const AValue : TSeats); 
 
 begin
   If (Fseats=AValue) then exit;
@@ -647,6 +661,16 @@ end;
 
 
 
+Procedure TCustomer.SetcustomerDomainVerified(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FcustomerDomainVerified=AValue) then exit;
+  FcustomerDomainVerified:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TCustomer.SetcustomerId(AIndex : Integer; const AValue : String); 
 
 begin
@@ -677,7 +701,7 @@ end;
 
 
 
-Procedure TCustomer.SetpostalAddress(AIndex : Integer; AValue : TAddress); 
+Procedure TCustomer.SetpostalAddress(AIndex : Integer; const AValue : TAddress); 
 
 begin
   If (FpostalAddress=AValue) then exit;
@@ -741,7 +765,7 @@ end;
 
 
 
-Procedure TSeats.SetlicensedNumberOfSeats(AIndex : Integer; AValue : integer); 
+Procedure TSeats.SetlicensedNumberOfSeats(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FlicensedNumberOfSeats=AValue) then exit;
@@ -751,7 +775,7 @@ end;
 
 
 
-Procedure TSeats.SetmaximumNumberOfSeats(AIndex : Integer; AValue : integer); 
+Procedure TSeats.SetmaximumNumberOfSeats(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaximumNumberOfSeats=AValue) then exit;
@@ -761,7 +785,7 @@ end;
 
 
 
-Procedure TSeats.SetnumberOfSeats(AIndex : Integer; AValue : integer); 
+Procedure TSeats.SetnumberOfSeats(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumberOfSeats=AValue) then exit;
@@ -805,7 +829,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSubscriptionTypeplan.SetcommitmentInterval(AIndex : Integer; AValue : TSubscriptionTypeplanTypecommitmentInterval); 
+Procedure TSubscriptionTypeplan.SetcommitmentInterval(AIndex : Integer; const AValue : TSubscriptionTypeplanTypecommitmentInterval); 
 
 begin
   If (FcommitmentInterval=AValue) then exit;
@@ -815,7 +839,7 @@ end;
 
 
 
-Procedure TSubscriptionTypeplan.SetisCommitmentPlan(AIndex : Integer; AValue : boolean); 
+Procedure TSubscriptionTypeplan.SetisCommitmentPlan(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisCommitmentPlan=AValue) then exit;
@@ -842,7 +866,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSubscriptionTypetransferInfo.SetminimumTransferableSeats(AIndex : Integer; AValue : integer); 
+Procedure TSubscriptionTypetransferInfo.SetminimumTransferableSeats(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FminimumTransferableSeats=AValue) then exit;
@@ -869,7 +893,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSubscriptionTypetrialSettings.SetisInTrial(AIndex : Integer; AValue : boolean); 
+Procedure TSubscriptionTypetrialSettings.SetisInTrial(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisInTrial=AValue) then exit;
@@ -916,6 +940,16 @@ end;
 
 
 
+Procedure TSubscription.SetcustomerDomain(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcustomerDomain=AValue) then exit;
+  FcustomerDomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TSubscription.SetcustomerId(AIndex : Integer; const AValue : String); 
 
 begin
@@ -926,6 +960,16 @@ end;
 
 
 
+Procedure TSubscription.SetdealCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdealCode=AValue) then exit;
+  FdealCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TSubscription.Setkind(AIndex : Integer; const AValue : String); 
 
 begin
@@ -936,7 +980,7 @@ end;
 
 
 
-Procedure TSubscription.Setplan(AIndex : Integer; AValue : TSubscriptionTypeplan); 
+Procedure TSubscription.Setplan(AIndex : Integer; const AValue : TSubscriptionTypeplan); 
 
 begin
   If (Fplan=AValue) then exit;
@@ -956,7 +1000,7 @@ end;
 
 
 
-Procedure TSubscription.SetrenewalSettings(AIndex : Integer; AValue : TRenewalSettings); 
+Procedure TSubscription.SetrenewalSettings(AIndex : Integer; const AValue : TRenewalSettings); 
 
 begin
   If (FrenewalSettings=AValue) then exit;
@@ -976,7 +1020,7 @@ end;
 
 
 
-Procedure TSubscription.Setseats(AIndex : Integer; AValue : TSeats); 
+Procedure TSubscription.Setseats(AIndex : Integer; const AValue : TSeats); 
 
 begin
   If (Fseats=AValue) then exit;
@@ -1016,7 +1060,17 @@ end;
 
 
 
-Procedure TSubscription.SettransferInfo(AIndex : Integer; AValue : TSubscriptionTypetransferInfo); 
+Procedure TSubscription.SetsuspensionReasons(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FsuspensionReasons=AValue) then exit;
+  FsuspensionReasons:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSubscription.SettransferInfo(AIndex : Integer; const AValue : TSubscriptionTypetransferInfo); 
 
 begin
   If (FtransferInfo=AValue) then exit;
@@ -1026,7 +1080,7 @@ end;
 
 
 
-Procedure TSubscription.SettrialSettings(AIndex : Integer; AValue : TSubscriptionTypetrialSettings); 
+Procedure TSubscription.SettrialSettings(AIndex : Integer; const AValue : TSubscriptionTypetrialSettings); 
 
 begin
   If (FtrialSettings=AValue) then exit;
@@ -1035,6 +1089,19 @@ begin
 end;
 
 
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSubscription.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'suspensionreasons' : SetLength(FsuspensionReasons,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
 
 
 
@@ -1063,7 +1130,7 @@ end;
 
 
 
-Procedure TSubscriptions.Setsubscriptions(AIndex : Integer; AValue : TSubscriptionsTypesubscriptionsArray); 
+Procedure TSubscriptions.Setsubscriptions(AIndex : Integer; const AValue : TSubscriptionsTypesubscriptionsArray); 
 
 begin
   If (Fsubscriptions=AValue) then exit;
@@ -1399,7 +1466,7 @@ end;
 Class Function TResellerAPI.APIRevision : String;
 
 begin
-  Result:='20141112';
+  Result:='20160329';
 end;
 
 Class Function TResellerAPI.APIID : String;
@@ -1417,7 +1484,7 @@ end;
 Class Function TResellerAPI.APIDescription : String;
 
 begin
-  Result:='Lets you create and manage your customers and their subscriptions.';
+  Result:='Creates and manages your customers and their subscriptions.';
 end;
 
 Class Function TResellerAPI.APIOwnerDomain : String;
@@ -1453,7 +1520,7 @@ end;
 Class Function TResellerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TResellerAPI.APIbasePath : string;
@@ -1465,7 +1532,7 @@ end;
 Class Function TResellerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/apps/reseller/v1/';
+  Result:='https://www.googleapis.com/apps/reseller/v1/';
 end;
 
 Class Function TResellerAPI.APIProtocol : string;

+ 52 - 65
packages/googleapi/src/googleresourceviews.pp

@@ -1,19 +1,4 @@
 unit googleresourceviews;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -108,7 +93,7 @@ type
     Fresource : String;
   Protected
     //Property setters
-    Procedure Setendpoints(AIndex : Integer; AValue : TListResourceResponseItemTypeendpoints); virtual;
+    Procedure Setendpoints(AIndex : Integer; const AValue : TListResourceResponseItemTypeendpoints); virtual;
     Procedure Setresource(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -148,7 +133,7 @@ type
     Ferrors : TOperationTypeerrorTypeerrorsArray;
   Protected
     //Property setters
-    Procedure Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); virtual;
+    Procedure Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -190,7 +175,7 @@ type
   Protected
     //Property setters
     Procedure Setcode(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 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}
@@ -237,15 +222,15 @@ type
     Procedure SetclientOperationId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
-    Procedure Seterror(AIndex : Integer; AValue : TOperationTypeerror); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TOperationTypeerror); virtual;
     Procedure SethttpErrorMessage(AIndex : Integer; const AValue : String); virtual;
-    Procedure SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 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; AValue : integer); 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;
@@ -254,7 +239,7 @@ type
     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; AValue : TOperationTypewarningsArray); 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}
@@ -301,7 +286,7 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 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;
@@ -341,16 +326,16 @@ type
     //Property setters
     Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setendpoints(AIndex : Integer; AValue : TResourceViewTypeendpointsArray); virtual;
+    Procedure Setendpoints(AIndex : Integer; const AValue : TResourceViewTypeendpointsArray); virtual;
     Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlabels(AIndex : Integer; AValue : TResourceViewTypelabelsArray); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TResourceViewTypelabelsArray); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
     Procedure Setnetwork(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresources(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setsize(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setsize(AIndex : Integer; const AValue : integer); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -383,7 +368,7 @@ type
   Protected
     //Property setters
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setport(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setport(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property name : String Index 0 Read Fname Write Setname;
@@ -400,7 +385,7 @@ type
     Fresources : TStringArray;
   Protected
     //Property setters
-    Procedure Setresources(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -421,7 +406,7 @@ type
     Ffingerprint : String;
   Protected
     //Property setters
-    Procedure Setendpoints(AIndex : Integer; AValue : TZoneViewsGetServiceResponseTypeendpointsArray); virtual;
+    Procedure Setendpoints(AIndex : Integer; const AValue : TZoneViewsGetServiceResponseTypeendpointsArray); virtual;
     Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -446,7 +431,7 @@ type
     FselfLink : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TZoneViewsListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TZoneViewsListTypeitemsArray); 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;
@@ -474,7 +459,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TZoneViewsListResourcesResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TZoneViewsListResourcesResponseTypeitemsArray); virtual;
     Procedure Setnetwork(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -498,7 +483,7 @@ type
     Fresources : TStringArray;
   Protected
     //Property setters
-    Procedure Setresources(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setresources(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -520,7 +505,7 @@ type
     FresourceName : String;
   Protected
     //Property setters
-    Procedure Setendpoints(AIndex : Integer; AValue : TZoneViewsSetServiceRequestTypeendpointsArray); virtual;
+    Procedure Setendpoints(AIndex : Integer; const AValue : TZoneViewsSetServiceRequestTypeendpointsArray); virtual;
     Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
     Procedure SetresourceName(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -697,7 +682,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TListResourceResponseItem.Setendpoints(AIndex : Integer; AValue : TListResourceResponseItemTypeendpoints); 
+Procedure TListResourceResponseItem.Setendpoints(AIndex : Integer; const AValue : TListResourceResponseItemTypeendpoints); 
 
 begin
   If (Fendpoints=AValue) then exit;
@@ -761,7 +746,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TOperationTypeerror.Seterrors(AIndex : Integer; AValue : TOperationTypeerrorTypeerrorsArray); 
+Procedure TOperationTypeerror.Seterrors(AIndex : Integer; const AValue : TOperationTypeerrorTypeerrorsArray); 
 
 begin
   If (Ferrors=AValue) then exit;
@@ -828,7 +813,7 @@ end;
 
 
 
-Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; AValue : TOperationTypewarningsItemTypedataArray); 
+Procedure TOperationTypewarningsItem.Setdata(AIndex : Integer; const AValue : TOperationTypewarningsItemTypedataArray); 
 
 begin
   If (Fdata=AValue) then exit;
@@ -898,7 +883,7 @@ end;
 
 
 
-Procedure TOperation.Seterror(AIndex : Integer; AValue : TOperationTypeerror); 
+Procedure TOperation.Seterror(AIndex : Integer; const AValue : TOperationTypeerror); 
 
 begin
   If (Ferror=AValue) then exit;
@@ -918,7 +903,7 @@ end;
 
 
 
-Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; AValue : integer); 
+Procedure TOperation.SethttpErrorStatusCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FhttpErrorStatusCode=AValue) then exit;
@@ -978,7 +963,7 @@ end;
 
 
 
-Procedure TOperation.Setprogress(AIndex : Integer; AValue : integer); 
+Procedure TOperation.Setprogress(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fprogress=AValue) then exit;
@@ -1068,7 +1053,7 @@ end;
 
 
 
-Procedure TOperation.Setwarnings(AIndex : Integer; AValue : TOperationTypewarningsArray); 
+Procedure TOperation.Setwarnings(AIndex : Integer; const AValue : TOperationTypewarningsArray); 
 
 begin
   If (Fwarnings=AValue) then exit;
@@ -1118,7 +1103,7 @@ end;
 
 
 
-Procedure TOperationList.Setitems(AIndex : Integer; AValue : TOperationListTypeitemsArray); 
+Procedure TOperationList.Setitems(AIndex : Integer; const AValue : TOperationListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1198,7 +1183,7 @@ end;
 
 
 
-Procedure TResourceView.Setendpoints(AIndex : Integer; AValue : TResourceViewTypeendpointsArray); 
+Procedure TResourceView.Setendpoints(AIndex : Integer; const AValue : TResourceViewTypeendpointsArray); 
 
 begin
   If (Fendpoints=AValue) then exit;
@@ -1238,7 +1223,7 @@ end;
 
 
 
-Procedure TResourceView.Setlabels(AIndex : Integer; AValue : TResourceViewTypelabelsArray); 
+Procedure TResourceView.Setlabels(AIndex : Integer; const AValue : TResourceViewTypelabelsArray); 
 
 begin
   If (Flabels=AValue) then exit;
@@ -1268,7 +1253,7 @@ end;
 
 
 
-Procedure TResourceView.Setresources(AIndex : Integer; AValue : TStringArray); 
+Procedure TResourceView.Setresources(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fresources=AValue) then exit;
@@ -1288,7 +1273,7 @@ end;
 
 
 
-Procedure TResourceView.Setsize(AIndex : Integer; AValue : integer); 
+Procedure TResourceView.Setsize(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fsize=AValue) then exit;
@@ -1330,7 +1315,7 @@ end;
 
 
 
-Procedure TServiceEndpoint.Setport(AIndex : Integer; AValue : integer); 
+Procedure TServiceEndpoint.Setport(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fport=AValue) then exit;
@@ -1347,7 +1332,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsAddResourcesRequest.Setresources(AIndex : Integer; AValue : TStringArray); 
+Procedure TZoneViewsAddResourcesRequest.Setresources(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fresources=AValue) then exit;
@@ -1377,7 +1362,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsGetServiceResponse.Setendpoints(AIndex : Integer; AValue : TZoneViewsGetServiceResponseTypeendpointsArray); 
+Procedure TZoneViewsGetServiceResponse.Setendpoints(AIndex : Integer; const AValue : TZoneViewsGetServiceResponseTypeendpointsArray); 
 
 begin
   If (Fendpoints=AValue) then exit;
@@ -1417,7 +1402,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsList.Setitems(AIndex : Integer; AValue : TZoneViewsListTypeitemsArray); 
+Procedure TZoneViewsList.Setitems(AIndex : Integer; const AValue : TZoneViewsListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1477,7 +1462,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsListResourcesResponse.Setitems(AIndex : Integer; AValue : TZoneViewsListResourcesResponseTypeitemsArray); 
+Procedure TZoneViewsListResourcesResponse.Setitems(AIndex : Integer; const AValue : TZoneViewsListResourcesResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1527,7 +1512,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsRemoveResourcesRequest.Setresources(AIndex : Integer; AValue : TStringArray); 
+Procedure TZoneViewsRemoveResourcesRequest.Setresources(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fresources=AValue) then exit;
@@ -1557,7 +1542,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TZoneViewsSetServiceRequest.Setendpoints(AIndex : Integer; AValue : TZoneViewsSetServiceRequestTypeendpointsArray); 
+Procedure TZoneViewsSetServiceRequest.Setendpoints(AIndex : Integer; const AValue : TZoneViewsSetServiceRequestTypeendpointsArray); 
 
 begin
   If (Fendpoints=AValue) then exit;
@@ -1879,7 +1864,7 @@ end;
 Class Function TResourceviewsAPI.APIRevision : String;
 
 begin
-  Result:='20150302';
+  Result:='20160512';
 end;
 
 Class Function TResourceviewsAPI.APIID : String;
@@ -1933,7 +1918,7 @@ end;
 Class Function TResourceviewsAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TResourceviewsAPI.APIbasePath : string;
@@ -1945,7 +1930,7 @@ end;
 Class Function TResourceviewsAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/resourceviews/v1beta2/projects/';
+  Result:='https://www.googleapis.com/resourceviews/v1beta2/projects/';
 end;
 
 Class Function TResourceviewsAPI.APIProtocol : string;
@@ -1969,17 +1954,19 @@ end;
 Class Function TResourceviewsAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,5);
+  SetLength(Result,6);
   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/compute';
-  Result[1].Description:='View and manage your Google Compute Engine resources';
-  Result[2].Name:='https://www.googleapis.com/auth/compute.readonly';
-  Result[2].Description:='View your Google Compute Engine resources';
-  Result[3].Name:='https://www.googleapis.com/auth/ndev.cloudman';
-  Result[3].Description:='View and manage your Google Cloud Platform management resources and deployment status information';
-  Result[4].Name:='https://www.googleapis.com/auth/ndev.cloudman.readonly';
-  Result[4].Description:='View your Google Cloud Platform management resources and deployment status information';
+  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/compute';
+  Result[2].Description:='View and manage your Google Compute Engine resources';
+  Result[3].Name:='https://www.googleapis.com/auth/compute.readonly';
+  Result[3].Description:='View your Google Compute Engine resources';
+  Result[4].Name:='https://www.googleapis.com/auth/ndev.cloudman';
+  Result[4].Description:='View and manage your Google Cloud Platform management resources and deployment status information';
+  Result[5].Name:='https://www.googleapis.com/auth/ndev.cloudman.readonly';
+  Result[5].Description:='View your Google Cloud Platform management resources and deployment status information';
   
 end;
 

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

+ 1416 - 0
packages/googleapi/src/googleserviceregistry.pp

@@ -0,0 +1,1416 @@
+unit googleserviceregistry;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TEndpoint = Class;
+  TEndpointEndpointVisibility = Class;
+  TEndpointsListResponse = Class;
+  TOperation = Class;
+  TOperationsListResponse = Class;
+  TEndpointArray = Array of TEndpoint;
+  TEndpointEndpointVisibilityArray = Array of TEndpointEndpointVisibility;
+  TEndpointsListResponseArray = Array of TEndpointsListResponse;
+  TOperationArray = Array of TOperation;
+  TOperationsListResponseArray = Array of TOperationsListResponse;
+  //Anonymous types, using auto-generated names
+  TOperationTypeerrorTypeerrorsItem = Class;
+  TOperationTypeerror = Class;
+  TOperationTypewarningsItemTypedataItem = Class;
+  TOperationTypewarningsItem = Class;
+  TEndpointsListResponseTypeendpointsArray = Array of TEndpoint;
+  TOperationTypeerrorTypeerrorsArray = Array of TOperationTypeerrorTypeerrorsItem;
+  TOperationTypewarningsItemTypedataArray = Array of TOperationTypewarningsItemTypedataItem;
+  TOperationTypewarningsArray = Array of TOperationTypewarningsItem;
+  TOperationsListResponseTypeoperationsArray = Array of TOperation;
+  
+  { --------------------------------------------------------------------
+    TEndpoint
+    --------------------------------------------------------------------}
+  
+  TEndpoint = Class(TGoogleBaseObject)
+  Private
+    Faddress : String;
+    FcreationTimestamp : String;
+    Fdescription : String;
+    Ffingerprint : String;
+    Fid : String;
+    Fname : String;
+    Fport : integer;
+    FselfLink : String;
+    Fstate : String;
+    Fvisibility : TEndpointEndpointVisibility;
+  Protected
+    //Property setters
+    Procedure Setaddress(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTimestamp(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setfingerprint(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setport(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvisibility(AIndex : Integer; const AValue : TEndpointEndpointVisibility); virtual;
+  Public
+  Published
+    Property address : String Index 0 Read Faddress Write Setaddress;
+    Property creationTimestamp : String Index 8 Read FcreationTimestamp Write SetcreationTimestamp;
+    Property description : String Index 16 Read Fdescription Write Setdescription;
+    Property fingerprint : String Index 24 Read Ffingerprint Write Setfingerprint;
+    Property id : String Index 32 Read Fid Write Setid;
+    Property name : String Index 40 Read Fname Write Setname;
+    Property port : integer Index 48 Read Fport Write Setport;
+    Property selfLink : String Index 56 Read FselfLink Write SetselfLink;
+    Property state : String Index 64 Read Fstate Write Setstate;
+    Property visibility : TEndpointEndpointVisibility Index 72 Read Fvisibility Write Setvisibility;
+  end;
+  TEndpointClass = Class of TEndpoint;
+  
+  { --------------------------------------------------------------------
+    TEndpointEndpointVisibility
+    --------------------------------------------------------------------}
+  
+  TEndpointEndpointVisibility = Class(TGoogleBaseObject)
+  Private
+    FinternalDnsName : String;
+    Fnetworks : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetinternalDnsName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setnetworks(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 internalDnsName : String Index 0 Read FinternalDnsName Write SetinternalDnsName;
+    Property networks : TStringArray Index 8 Read Fnetworks Write Setnetworks;
+  end;
+  TEndpointEndpointVisibilityClass = Class of TEndpointEndpointVisibility;
+  
+  { --------------------------------------------------------------------
+    TEndpointsListResponse
+    --------------------------------------------------------------------}
+  
+  TEndpointsListResponse = Class(TGoogleBaseObject)
+  Private
+    Fendpoints : TEndpointsListResponseTypeendpointsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setendpoints(AIndex : Integer; const AValue : TEndpointsListResponseTypeendpointsArray); 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 endpoints : TEndpointsListResponseTypeendpointsArray Index 0 Read Fendpoints Write Setendpoints;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TEndpointsListResponseClass = Class of TEndpointsListResponse;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TOperationsListResponse
+    --------------------------------------------------------------------}
+  
+  TOperationsListResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Foperations : TOperationsListResponseTypeoperationsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoperations(AIndex : Integer; const AValue : TOperationsListResponseTypeoperationsArray); 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 : TOperationsListResponseTypeoperationsArray Index 8 Read Foperations Write Setoperations;
+  end;
+  TOperationsListResponseClass = Class of TOperationsListResponse;
+  
+  { --------------------------------------------------------------------
+    TEndpointsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TEndpointsResource, method List
+  
+  TEndpointsListOptions = Record
+    filter : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  TEndpointsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Delete(endpoint: string; project: string) : TOperation;
+    Function Get(endpoint: string; project: string) : TEndpoint;
+    Function Insert(project: string; aEndpoint : TEndpoint) : TOperation;
+    Function List(project: string; AQuery : string  = '') : TEndpointsListResponse;
+    Function List(project: string; AQuery : TEndpointslistOptions) : TEndpointsListResponse;
+    Function Patch(endpoint: string; project: string; aEndpoint : TEndpoint) : TOperation;
+    Function Update(endpoint: string; project: string; aEndpoint : TEndpoint) : TOperation;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TOperationsResource, method List
+  
+  TOperationsListOptions = Record
+    filter : String;
+    maxResults : integer;
+    orderBy : String;
+    pageToken : String;
+  end;
+  
+  TOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(operation: string; project: string) : TOperation;
+    Function List(project: string; AQuery : string  = '') : TOperationsListResponse;
+    Function List(project: string; AQuery : TOperationslistOptions) : TOperationsListResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TServiceregistryAPI
+    --------------------------------------------------------------------}
+  
+  TServiceregistryAPI = Class(TGoogleAPI)
+  Private
+    FEndpointsInstance : TEndpointsResource;
+    FOperationsInstance : TOperationsResource;
+    Function GetEndpointsInstance : TEndpointsResource;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 CreateEndpointsResource(AOwner : TComponent) : TEndpointsResource;virtual;overload;
+    Function CreateEndpointsResource : TEndpointsResource;virtual;overload;
+    Function CreateOperationsResource(AOwner : TComponent) : TOperationsResource;virtual;overload;
+    Function CreateOperationsResource : TOperationsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property EndpointsResource : TEndpointsResource Read GetEndpointsInstance;
+    Property OperationsResource : TOperationsResource Read GetOperationsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TEndpoint
+  --------------------------------------------------------------------}
+
+
+Procedure TEndpoint.Setaddress(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Faddress=AValue) then exit;
+  Faddress:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.SetcreationTimestamp(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTimestamp=AValue) then exit;
+  FcreationTimestamp:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setfingerprint(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffingerprint=AValue) then exit;
+  Ffingerprint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fid=AValue) then exit;
+  Fid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setport(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fport=AValue) then exit;
+  Fport:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.SetselfLink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FselfLink=AValue) then exit;
+  FselfLink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpoint.Setvisibility(AIndex : Integer; const AValue : TEndpointEndpointVisibility); 
+
+begin
+  If (Fvisibility=AValue) then exit;
+  Fvisibility:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEndpointEndpointVisibility
+  --------------------------------------------------------------------}
+
+
+Procedure TEndpointEndpointVisibility.SetinternalDnsName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinternalDnsName=AValue) then exit;
+  FinternalDnsName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpointEndpointVisibility.Setnetworks(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fnetworks=AValue) then exit;
+  Fnetworks:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TEndpointEndpointVisibility.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'networks' : SetLength(Fnetworks,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEndpointsListResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TEndpointsListResponse.Setendpoints(AIndex : Integer; const AValue : TEndpointsListResponseTypeendpointsArray); 
+
+begin
+  If (Fendpoints=AValue) then exit;
+  Fendpoints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEndpointsListResponse.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 TEndpointsListResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'endpoints' : SetLength(Fendpoints,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  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}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOperationsListResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TOperationsListResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOperationsListResponse.Setoperations(AIndex : Integer; const AValue : TOperationsListResponseTypeoperationsArray); 
+
+begin
+  If (Foperations=AValue) then exit;
+  Foperations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TOperationsListResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'operations' : SetLength(Foperations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEndpointsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TEndpointsResource.ResourceName : String;
+
+begin
+  Result:='endpoints';
+end;
+
+Class Function TEndpointsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TserviceregistryAPI;
+end;
+
+Function TEndpointsResource.Delete(endpoint: string; project: string) : TOperation;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = '{project}/global/endpoints/{endpoint}';
+  _Methodid   = 'serviceregistry.endpoints.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['endpoint',endpoint,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TEndpointsResource.Get(endpoint: string; project: string) : TEndpoint;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/endpoints/{endpoint}';
+  _Methodid   = 'serviceregistry.endpoints.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['endpoint',endpoint,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEndpoint) as TEndpoint;
+end;
+
+Function TEndpointsResource.Insert(project: string; aEndpoint : TEndpoint) : TOperation;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{project}/global/endpoints';
+  _Methodid   = 'serviceregistry.endpoints.insert';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aEndpoint,TOperation) as TOperation;
+end;
+
+Function TEndpointsResource.List(project: string; AQuery : string = '') : TEndpointsListResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/endpoints';
+  _Methodid   = 'serviceregistry.endpoints.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TEndpointsListResponse) as TEndpointsListResponse;
+end;
+
+
+Function TEndpointsResource.List(project: string; AQuery : TEndpointslistOptions) : TEndpointsListResponse;
+
+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 TEndpointsResource.Patch(endpoint: string; project: string; aEndpoint : TEndpoint) : TOperation;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = '{project}/global/endpoints/{endpoint}';
+  _Methodid   = 'serviceregistry.endpoints.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['endpoint',endpoint,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aEndpoint,TOperation) as TOperation;
+end;
+
+Function TEndpointsResource.Update(endpoint: string; project: string; aEndpoint : TEndpoint) : TOperation;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = '{project}/global/endpoints/{endpoint}';
+  _Methodid   = 'serviceregistry.endpoints.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['endpoint',endpoint,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aEndpoint,TOperation) as TOperation;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TOperationsResource.ResourceName : String;
+
+begin
+  Result:='operations';
+end;
+
+Class Function TOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TserviceregistryAPI;
+end;
+
+Function TOperationsResource.Get(operation: string; project: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/operations/{operation}';
+  _Methodid   = 'serviceregistry.operations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['operation',operation,'project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TOperationsResource.List(project: string; AQuery : string = '') : TOperationsListResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{project}/global/operations';
+  _Methodid   = 'serviceregistry.operations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['project',project]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TOperationsListResponse) as TOperationsListResponse;
+end;
+
+
+Function TOperationsResource.List(project: string; AQuery : TOperationslistOptions) : TOperationsListResponse;
+
+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;
+
+
+
+{ --------------------------------------------------------------------
+  TServiceregistryAPI
+  --------------------------------------------------------------------}
+
+Class Function TServiceregistryAPI.APIName : String;
+
+begin
+  Result:='serviceregistry';
+end;
+
+Class Function TServiceregistryAPI.APIVersion : String;
+
+begin
+  Result:='alpha';
+end;
+
+Class Function TServiceregistryAPI.APIRevision : String;
+
+begin
+  Result:='20160516';
+end;
+
+Class Function TServiceregistryAPI.APIID : String;
+
+begin
+  Result:='serviceregistry:alpha';
+end;
+
+Class Function TServiceregistryAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Service Registry API';
+end;
+
+Class Function TServiceregistryAPI.APIDescription : String;
+
+begin
+  Result:='Manages service endpoints in Service Registry and provides integration with DNS for service discovery and name resolution.';
+end;
+
+Class Function TServiceregistryAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TServiceregistryAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TServiceregistryAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TServiceregistryAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TServiceregistryAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/service-registry/';
+end;
+
+Class Function TServiceregistryAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TServiceregistryAPI.APIbasePath : string;
+
+begin
+  Result:='/serviceregistry/alpha/projects/';
+end;
+
+Class Function TServiceregistryAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/serviceregistry/alpha/projects/';
+end;
+
+Class Function TServiceregistryAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TServiceregistryAPI.APIservicePath : string;
+
+begin
+  Result:='serviceregistry/alpha/projects/';
+end;
+
+Class Function TServiceregistryAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TServiceregistryAPI.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/ndev.cloudman';
+  Result[2].Description:='View and manage your Google Cloud Platform management resources and deployment status information';
+  Result[3].Name:='https://www.googleapis.com/auth/ndev.cloudman.readonly';
+  Result[3].Description:='View your Google Cloud Platform management resources and deployment status information';
+  
+end;
+
+Class Function TServiceregistryAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TServiceregistryAPI.RegisterAPIResources;
+
+begin
+  TEndpoint.RegisterObject;
+  TEndpointEndpointVisibility.RegisterObject;
+  TEndpointsListResponse.RegisterObject;
+  TOperationTypeerrorTypeerrorsItem.RegisterObject;
+  TOperationTypeerror.RegisterObject;
+  TOperationTypewarningsItemTypedataItem.RegisterObject;
+  TOperationTypewarningsItem.RegisterObject;
+  TOperation.RegisterObject;
+  TOperationsListResponse.RegisterObject;
+end;
+
+
+Function TServiceregistryAPI.GetEndpointsInstance : TEndpointsResource;
+
+begin
+  if (FEndpointsInstance=Nil) then
+    FEndpointsInstance:=CreateEndpointsResource;
+  Result:=FEndpointsInstance;
+end;
+
+Function TServiceregistryAPI.CreateEndpointsResource : TEndpointsResource;
+
+begin
+  Result:=CreateEndpointsResource(Self);
+end;
+
+
+Function TServiceregistryAPI.CreateEndpointsResource(AOwner : TComponent) : TEndpointsResource;
+
+begin
+  Result:=TEndpointsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TServiceregistryAPI.GetOperationsInstance : TOperationsResource;
+
+begin
+  if (FOperationsInstance=Nil) then
+    FOperationsInstance:=CreateOperationsResource;
+  Result:=FOperationsInstance;
+end;
+
+Function TServiceregistryAPI.CreateOperationsResource : TOperationsResource;
+
+begin
+  Result:=CreateOperationsResource(Self);
+end;
+
+
+Function TServiceregistryAPI.CreateOperationsResource(AOwner : TComponent) : TOperationsResource;
+
+begin
+  Result:=TOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TServiceregistryAPI.RegisterAPI;
+end.

+ 9330 - 0
packages/googleapi/src/googlesheets.pp

@@ -0,0 +1,9330 @@
+unit googlesheets;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAddNamedRangeResponse = Class;
+  TUpdateProtectedRangeRequest = Class;
+  TPadding = Class;
+  TMergeCellsRequest = Class;
+  TAddSheetResponse = Class;
+  TPivotGroupValueMetadata = Class;
+  TUpdateEmbeddedObjectPositionResponse = Class;
+  TUpdateConditionalFormatRuleRequest = Class;
+  TTextFormat = Class;
+  TUpdateChartSpecRequest = Class;
+  TGridCoordinate = Class;
+  TDeleteFilterViewRequest = Class;
+  TBatchUpdateValuesResponse = Class;
+  TUpdateNamedRangeRequest = Class;
+  TUpdateValuesResponse = Class;
+  TSpreadsheetProperties = Class;
+  TCellData = Class;
+  TUnmergeCellsRequest = Class;
+  TTextToColumnsRequest = Class;
+  TAddProtectedRangeResponse = Class;
+  TBooleanCondition = Class;
+  TDeleteProtectedRangeRequest = Class;
+  TBasicChartDomain = Class;
+  TDimensionRange = Class;
+  TResponse = Class;
+  TAddConditionalFormatRuleRequest = Class;
+  TFilterView = Class;
+  TSortRangeRequest = Class;
+  TTextFormatRun = Class;
+  TUpdateFilterViewRequest = Class;
+  TUpdateConditionalFormatRuleResponse = Class;
+  TFilterCriteria = Class;
+  TDeleteDimensionRequest = Class;
+  TPivotTable = Class;
+  TDataValidationRule = Class;
+  TUpdateSpreadsheetPropertiesRequest = Class;
+  TChartSourceRange = Class;
+  TBatchUpdateValuesRequest = Class;
+  TClearBasicFilterRequest = Class;
+  TConditionalFormatRule = Class;
+  TUpdateBordersRequest = Class;
+  TPivotFilterCriteria = Class;
+  TBorders = Class;
+  TEmbeddedChart = Class;
+  TColor = Class;
+  TAddSheetRequest = Class;
+  TAddProtectedRangeRequest = Class;
+  TValueRange = Class;
+  TFindReplaceResponse = Class;
+  TCellFormat = Class;
+  TMoveDimensionRequest = Class;
+  TBasicChartAxis = Class;
+  TPivotGroupSortValueBucket = Class;
+  TDimensionProperties = Class;
+  TEmbeddedObjectPosition = Class;
+  TInterpolationPoint = Class;
+  TErrorValue = Class;
+  TDuplicateFilterViewRequest = Class;
+  TBatchUpdateSpreadsheetRequest = Class;
+  TSheetProperties = Class;
+  TProtectedRange = Class;
+  TDeleteConditionalFormatRuleRequest = Class;
+  TChartSpec = Class;
+  TSourceAndDestination = Class;
+  TConditionValue = Class;
+  TPasteDataRequest = Class;
+  TFindReplaceRequest = Class;
+  TSortSpec = Class;
+  TCopySheetToAnotherSpreadsheetRequest = Class;
+  TNumberFormat = Class;
+  TUpdateDimensionPropertiesRequest = Class;
+  TEditors = Class;
+  TSpreadsheet = Class;
+  TGridData = Class;
+  TPivotValue = Class;
+  TBasicFilter = Class;
+  TDuplicateSheetRequest = Class;
+  TAddFilterViewResponse = Class;
+  TDuplicateSheetResponse = Class;
+  TBorder = Class;
+  TAddNamedRangeRequest = Class;
+  TAddChartResponse = Class;
+  TAppendCellsRequest = Class;
+  TRowData = Class;
+  TBasicChartSeries = Class;
+  TRepeatCellRequest = Class;
+  TBasicChartSpec = Class;
+  TNamedRange = Class;
+  TSetBasicFilterRequest = Class;
+  TUpdateEmbeddedObjectPositionRequest = Class;
+  TAutoResizeDimensionsRequest = Class;
+  TDuplicateFilterViewResponse = Class;
+  TPivotGroup = Class;
+  TGridRange = Class;
+  TDeleteSheetRequest = Class;
+  TChartData = Class;
+  TSheet = Class;
+  TCopyPasteRequest = Class;
+  TUpdateCellsRequest = Class;
+  TExtendedValue = Class;
+  TBatchUpdateSpreadsheetResponse = Class;
+  TGradientRule = Class;
+  TCutPasteRequest = Class;
+  TOverlayPosition = Class;
+  TAutoFillRequest = Class;
+  TPieChartSpec = Class;
+  TUpdateSheetPropertiesRequest = Class;
+  TBooleanRule = Class;
+  TAppendDimensionRequest = Class;
+  TAddFilterViewRequest = Class;
+  TGridProperties = Class;
+  TDeleteNamedRangeRequest = Class;
+  TAddChartRequest = Class;
+  TSetDataValidationRequest = Class;
+  TRequest = Class;
+  TBatchGetValuesResponse = Class;
+  TInsertDimensionRequest = Class;
+  TDeleteEmbeddedObjectRequest = Class;
+  TDeleteConditionalFormatRuleResponse = Class;
+  TAddNamedRangeResponseArray = Array of TAddNamedRangeResponse;
+  TUpdateProtectedRangeRequestArray = Array of TUpdateProtectedRangeRequest;
+  TPaddingArray = Array of TPadding;
+  TMergeCellsRequestArray = Array of TMergeCellsRequest;
+  TAddSheetResponseArray = Array of TAddSheetResponse;
+  TPivotGroupValueMetadataArray = Array of TPivotGroupValueMetadata;
+  TUpdateEmbeddedObjectPositionResponseArray = Array of TUpdateEmbeddedObjectPositionResponse;
+  TUpdateConditionalFormatRuleRequestArray = Array of TUpdateConditionalFormatRuleRequest;
+  TTextFormatArray = Array of TTextFormat;
+  TUpdateChartSpecRequestArray = Array of TUpdateChartSpecRequest;
+  TGridCoordinateArray = Array of TGridCoordinate;
+  TDeleteFilterViewRequestArray = Array of TDeleteFilterViewRequest;
+  TBatchUpdateValuesResponseArray = Array of TBatchUpdateValuesResponse;
+  TUpdateNamedRangeRequestArray = Array of TUpdateNamedRangeRequest;
+  TUpdateValuesResponseArray = Array of TUpdateValuesResponse;
+  TSpreadsheetPropertiesArray = Array of TSpreadsheetProperties;
+  TCellDataArray = Array of TCellData;
+  TUnmergeCellsRequestArray = Array of TUnmergeCellsRequest;
+  TTextToColumnsRequestArray = Array of TTextToColumnsRequest;
+  TAddProtectedRangeResponseArray = Array of TAddProtectedRangeResponse;
+  TBooleanConditionArray = Array of TBooleanCondition;
+  TDeleteProtectedRangeRequestArray = Array of TDeleteProtectedRangeRequest;
+  TBasicChartDomainArray = Array of TBasicChartDomain;
+  TDimensionRangeArray = Array of TDimensionRange;
+  TResponseArray = Array of TResponse;
+  TAddConditionalFormatRuleRequestArray = Array of TAddConditionalFormatRuleRequest;
+  TFilterViewArray = Array of TFilterView;
+  TSortRangeRequestArray = Array of TSortRangeRequest;
+  TTextFormatRunArray = Array of TTextFormatRun;
+  TUpdateFilterViewRequestArray = Array of TUpdateFilterViewRequest;
+  TUpdateConditionalFormatRuleResponseArray = Array of TUpdateConditionalFormatRuleResponse;
+  TFilterCriteriaArray = Array of TFilterCriteria;
+  TDeleteDimensionRequestArray = Array of TDeleteDimensionRequest;
+  TPivotTableArray = Array of TPivotTable;
+  TDataValidationRuleArray = Array of TDataValidationRule;
+  TUpdateSpreadsheetPropertiesRequestArray = Array of TUpdateSpreadsheetPropertiesRequest;
+  TChartSourceRangeArray = Array of TChartSourceRange;
+  TBatchUpdateValuesRequestArray = Array of TBatchUpdateValuesRequest;
+  TClearBasicFilterRequestArray = Array of TClearBasicFilterRequest;
+  TConditionalFormatRuleArray = Array of TConditionalFormatRule;
+  TUpdateBordersRequestArray = Array of TUpdateBordersRequest;
+  TPivotFilterCriteriaArray = Array of TPivotFilterCriteria;
+  TBordersArray = Array of TBorders;
+  TEmbeddedChartArray = Array of TEmbeddedChart;
+  TColorArray = Array of TColor;
+  TAddSheetRequestArray = Array of TAddSheetRequest;
+  TAddProtectedRangeRequestArray = Array of TAddProtectedRangeRequest;
+  TValueRangeArray = Array of TValueRange;
+  TFindReplaceResponseArray = Array of TFindReplaceResponse;
+  TCellFormatArray = Array of TCellFormat;
+  TMoveDimensionRequestArray = Array of TMoveDimensionRequest;
+  TBasicChartAxisArray = Array of TBasicChartAxis;
+  TPivotGroupSortValueBucketArray = Array of TPivotGroupSortValueBucket;
+  TDimensionPropertiesArray = Array of TDimensionProperties;
+  TEmbeddedObjectPositionArray = Array of TEmbeddedObjectPosition;
+  TInterpolationPointArray = Array of TInterpolationPoint;
+  TErrorValueArray = Array of TErrorValue;
+  TDuplicateFilterViewRequestArray = Array of TDuplicateFilterViewRequest;
+  TBatchUpdateSpreadsheetRequestArray = Array of TBatchUpdateSpreadsheetRequest;
+  TSheetPropertiesArray = Array of TSheetProperties;
+  TProtectedRangeArray = Array of TProtectedRange;
+  TDeleteConditionalFormatRuleRequestArray = Array of TDeleteConditionalFormatRuleRequest;
+  TChartSpecArray = Array of TChartSpec;
+  TSourceAndDestinationArray = Array of TSourceAndDestination;
+  TConditionValueArray = Array of TConditionValue;
+  TPasteDataRequestArray = Array of TPasteDataRequest;
+  TFindReplaceRequestArray = Array of TFindReplaceRequest;
+  TSortSpecArray = Array of TSortSpec;
+  TCopySheetToAnotherSpreadsheetRequestArray = Array of TCopySheetToAnotherSpreadsheetRequest;
+  TNumberFormatArray = Array of TNumberFormat;
+  TUpdateDimensionPropertiesRequestArray = Array of TUpdateDimensionPropertiesRequest;
+  TEditorsArray = Array of TEditors;
+  TSpreadsheetArray = Array of TSpreadsheet;
+  TGridDataArray = Array of TGridData;
+  TPivotValueArray = Array of TPivotValue;
+  TBasicFilterArray = Array of TBasicFilter;
+  TDuplicateSheetRequestArray = Array of TDuplicateSheetRequest;
+  TAddFilterViewResponseArray = Array of TAddFilterViewResponse;
+  TDuplicateSheetResponseArray = Array of TDuplicateSheetResponse;
+  TBorderArray = Array of TBorder;
+  TAddNamedRangeRequestArray = Array of TAddNamedRangeRequest;
+  TAddChartResponseArray = Array of TAddChartResponse;
+  TAppendCellsRequestArray = Array of TAppendCellsRequest;
+  TRowDataArray = Array of TRowData;
+  TBasicChartSeriesArray = Array of TBasicChartSeries;
+  TRepeatCellRequestArray = Array of TRepeatCellRequest;
+  TBasicChartSpecArray = Array of TBasicChartSpec;
+  TNamedRangeArray = Array of TNamedRange;
+  TSetBasicFilterRequestArray = Array of TSetBasicFilterRequest;
+  TUpdateEmbeddedObjectPositionRequestArray = Array of TUpdateEmbeddedObjectPositionRequest;
+  TAutoResizeDimensionsRequestArray = Array of TAutoResizeDimensionsRequest;
+  TDuplicateFilterViewResponseArray = Array of TDuplicateFilterViewResponse;
+  TPivotGroupArray = Array of TPivotGroup;
+  TGridRangeArray = Array of TGridRange;
+  TDeleteSheetRequestArray = Array of TDeleteSheetRequest;
+  TChartDataArray = Array of TChartData;
+  TSheetArray = Array of TSheet;
+  TCopyPasteRequestArray = Array of TCopyPasteRequest;
+  TUpdateCellsRequestArray = Array of TUpdateCellsRequest;
+  TExtendedValueArray = Array of TExtendedValue;
+  TBatchUpdateSpreadsheetResponseArray = Array of TBatchUpdateSpreadsheetResponse;
+  TGradientRuleArray = Array of TGradientRule;
+  TCutPasteRequestArray = Array of TCutPasteRequest;
+  TOverlayPositionArray = Array of TOverlayPosition;
+  TAutoFillRequestArray = Array of TAutoFillRequest;
+  TPieChartSpecArray = Array of TPieChartSpec;
+  TUpdateSheetPropertiesRequestArray = Array of TUpdateSheetPropertiesRequest;
+  TBooleanRuleArray = Array of TBooleanRule;
+  TAppendDimensionRequestArray = Array of TAppendDimensionRequest;
+  TAddFilterViewRequestArray = Array of TAddFilterViewRequest;
+  TGridPropertiesArray = Array of TGridProperties;
+  TDeleteNamedRangeRequestArray = Array of TDeleteNamedRangeRequest;
+  TAddChartRequestArray = Array of TAddChartRequest;
+  TSetDataValidationRequestArray = Array of TSetDataValidationRequest;
+  TRequestArray = Array of TRequest;
+  TBatchGetValuesResponseArray = Array of TBatchGetValuesResponse;
+  TInsertDimensionRequestArray = Array of TInsertDimensionRequest;
+  TDeleteEmbeddedObjectRequestArray = Array of TDeleteEmbeddedObjectRequest;
+  TDeleteConditionalFormatRuleResponseArray = Array of TDeleteConditionalFormatRuleResponse;
+  //Anonymous types, using auto-generated names
+  TFilterViewTypecriteria = Class;
+  TPivotTableTypecriteria = Class;
+  TBasicFilterTypecriteria = Class;
+  TBatchUpdateValuesResponseTyperesponsesArray = Array of TUpdateValuesResponse;
+  TCellDataTypetextFormatRunsArray = Array of TTextFormatRun;
+  TBooleanConditionTypevaluesArray = Array of TConditionValue;
+  TFilterViewTypesortSpecsArray = Array of TSortSpec;
+  TSortRangeRequestTypesortSpecsArray = Array of TSortSpec;
+  TPivotTableTypecolumnsArray = Array of TPivotGroup;
+  TPivotTableTyperowsArray = Array of TPivotGroup;
+  TPivotTableTypevaluesArray = Array of TPivotValue;
+  TChartSourceRangeTypesourcesArray = Array of TGridRange;
+  TBatchUpdateValuesRequestTypedataArray = Array of TValueRange;
+  TConditionalFormatRuleTyperangesArray = Array of TGridRange;
+  TValueRangeTypevaluesArray = Array of TTJSONSchemaArray;
+  TPivotGroupSortValueBucketTypebucketsArray = Array of TExtendedValue;
+  TBatchUpdateSpreadsheetRequestTyperequestsArray = Array of TRequest;
+  TProtectedRangeTypeunprotectedRangesArray = Array of TGridRange;
+  TSpreadsheetTypesheetsArray = Array of TSheet;
+  TSpreadsheetTypenamedRangesArray = Array of TNamedRange;
+  TGridDataTypecolumnMetadataArray = Array of TDimensionProperties;
+  TGridDataTyperowDataArray = Array of TRowData;
+  TGridDataTyperowMetadataArray = Array of TDimensionProperties;
+  TBasicFilterTypesortSpecsArray = Array of TSortSpec;
+  TAppendCellsRequestTyperowsArray = Array of TRowData;
+  TRowDataTypevaluesArray = Array of TCellData;
+  TBasicChartSpecTypedomainsArray = Array of TBasicChartDomain;
+  TBasicChartSpecTypeseriesArray = Array of TBasicChartSeries;
+  TBasicChartSpecTypeaxisArray = Array of TBasicChartAxis;
+  TPivotGroupTypevalueMetadataArray = Array of TPivotGroupValueMetadata;
+  TSheetTypechartsArray = Array of TEmbeddedChart;
+  TSheetTypefilterViewsArray = Array of TFilterView;
+  TSheetTypeconditionalFormatsArray = Array of TConditionalFormatRule;
+  TSheetTypeprotectedRangesArray = Array of TProtectedRange;
+  TSheetTypemergesArray = Array of TGridRange;
+  TSheetTypedataArray = Array of TGridData;
+  TUpdateCellsRequestTyperowsArray = Array of TRowData;
+  TBatchUpdateSpreadsheetResponseTyperepliesArray = Array of TResponse;
+  TBatchGetValuesResponseTypevalueRangesArray = Array of TValueRange;
+  
+  { --------------------------------------------------------------------
+    TAddNamedRangeResponse
+    --------------------------------------------------------------------}
+  
+  TAddNamedRangeResponse = Class(TGoogleBaseObject)
+  Private
+    FnamedRange : TNamedRange;
+  Protected
+    //Property setters
+    Procedure SetnamedRange(AIndex : Integer; const AValue : TNamedRange); virtual;
+  Public
+  Published
+    Property namedRange : TNamedRange Index 0 Read FnamedRange Write SetnamedRange;
+  end;
+  TAddNamedRangeResponseClass = Class of TAddNamedRangeResponse;
+  
+  { --------------------------------------------------------------------
+    TUpdateProtectedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateProtectedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    FprotectedRange : TProtectedRange;
+    Ffields : String;
+  Protected
+    //Property setters
+    Procedure SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property protectedRange : TProtectedRange Index 0 Read FprotectedRange Write SetprotectedRange;
+    Property fields : String Index 8 Read Ffields Write Setfields;
+  end;
+  TUpdateProtectedRangeRequestClass = Class of TUpdateProtectedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TPadding
+    --------------------------------------------------------------------}
+  
+  TPadding = Class(TGoogleBaseObject)
+  Private
+    Fright : integer;
+    Fleft : integer;
+    Ftop : integer;
+    Fbottom : integer;
+  Protected
+    //Property setters
+    Procedure Setright(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setleft(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setbottom(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property right : integer Index 0 Read Fright Write Setright;
+    Property left : integer Index 8 Read Fleft Write Setleft;
+    Property top : integer Index 16 Read Ftop Write Settop;
+    Property bottom : integer Index 24 Read Fbottom Write Setbottom;
+  end;
+  TPaddingClass = Class of TPadding;
+  
+  { --------------------------------------------------------------------
+    TMergeCellsRequest
+    --------------------------------------------------------------------}
+  
+  TMergeCellsRequest = Class(TGoogleBaseObject)
+  Private
+    FmergeType : String;
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure SetmergeType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+  Public
+  Published
+    Property mergeType : String Index 0 Read FmergeType Write SetmergeType;
+    Property range : TGridRange Index 8 Read Frange Write Setrange;
+  end;
+  TMergeCellsRequestClass = Class of TMergeCellsRequest;
+  
+  { --------------------------------------------------------------------
+    TAddSheetResponse
+    --------------------------------------------------------------------}
+  
+  TAddSheetResponse = Class(TGoogleBaseObject)
+  Private
+    Fproperties : TSheetProperties;
+  Protected
+    //Property setters
+    Procedure Setproperties(AIndex : Integer; const AValue : TSheetProperties); virtual;
+  Public
+  Published
+    Property properties : TSheetProperties Index 0 Read Fproperties Write Setproperties;
+  end;
+  TAddSheetResponseClass = Class of TAddSheetResponse;
+  
+  { --------------------------------------------------------------------
+    TPivotGroupValueMetadata
+    --------------------------------------------------------------------}
+  
+  TPivotGroupValueMetadata = Class(TGoogleBaseObject)
+  Private
+    Fvalue : TExtendedValue;
+    Fcollapsed : boolean;
+  Protected
+    //Property setters
+    Procedure Setvalue(AIndex : Integer; const AValue : TExtendedValue); virtual;
+    Procedure Setcollapsed(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property value : TExtendedValue Index 0 Read Fvalue Write Setvalue;
+    Property collapsed : boolean Index 8 Read Fcollapsed Write Setcollapsed;
+  end;
+  TPivotGroupValueMetadataClass = Class of TPivotGroupValueMetadata;
+  
+  { --------------------------------------------------------------------
+    TUpdateEmbeddedObjectPositionResponse
+    --------------------------------------------------------------------}
+  
+  TUpdateEmbeddedObjectPositionResponse = Class(TGoogleBaseObject)
+  Private
+    Fposition : TEmbeddedObjectPosition;
+  Protected
+    //Property setters
+    Procedure Setposition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); virtual;
+  Public
+  Published
+    Property position : TEmbeddedObjectPosition Index 0 Read Fposition Write Setposition;
+  end;
+  TUpdateEmbeddedObjectPositionResponseClass = Class of TUpdateEmbeddedObjectPositionResponse;
+  
+  { --------------------------------------------------------------------
+    TUpdateConditionalFormatRuleRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateConditionalFormatRuleRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    Frule : TConditionalFormatRule;
+    Findex : integer;
+    FnewIndex : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); virtual;
+    Procedure Setindex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnewIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property rule : TConditionalFormatRule Index 8 Read Frule Write Setrule;
+    Property index : integer Index 16 Read Findex Write Setindex;
+    Property newIndex : integer Index 24 Read FnewIndex Write SetnewIndex;
+  end;
+  TUpdateConditionalFormatRuleRequestClass = Class of TUpdateConditionalFormatRuleRequest;
+  
+  { --------------------------------------------------------------------
+    TTextFormat
+    --------------------------------------------------------------------}
+  
+  TTextFormat = Class(TGoogleBaseObject)
+  Private
+    Fbold : boolean;
+    Fitalic : boolean;
+    FforegroundColor : TColor;
+    FfontFamily : String;
+    Fstrikethrough : boolean;
+    FfontSize : integer;
+    Funderline : boolean;
+  Protected
+    //Property setters
+    Procedure Setbold(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setitalic(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetforegroundColor(AIndex : Integer; const AValue : TColor); virtual;
+    Procedure SetfontFamily(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstrikethrough(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetfontSize(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setunderline(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property bold : boolean Index 0 Read Fbold Write Setbold;
+    Property italic : boolean Index 8 Read Fitalic Write Setitalic;
+    Property foregroundColor : TColor Index 16 Read FforegroundColor Write SetforegroundColor;
+    Property fontFamily : String Index 24 Read FfontFamily Write SetfontFamily;
+    Property strikethrough : boolean Index 32 Read Fstrikethrough Write Setstrikethrough;
+    Property fontSize : integer Index 40 Read FfontSize Write SetfontSize;
+    Property underline : boolean Index 48 Read Funderline Write Setunderline;
+  end;
+  TTextFormatClass = Class of TTextFormat;
+  
+  { --------------------------------------------------------------------
+    TUpdateChartSpecRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateChartSpecRequest = Class(TGoogleBaseObject)
+  Private
+    FchartId : integer;
+    Fspec : TChartSpec;
+  Protected
+    //Property setters
+    Procedure SetchartId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setspec(AIndex : Integer; const AValue : TChartSpec); virtual;
+  Public
+  Published
+    Property chartId : integer Index 0 Read FchartId Write SetchartId;
+    Property spec : TChartSpec Index 8 Read Fspec Write Setspec;
+  end;
+  TUpdateChartSpecRequestClass = Class of TUpdateChartSpecRequest;
+  
+  { --------------------------------------------------------------------
+    TGridCoordinate
+    --------------------------------------------------------------------}
+  
+  TGridCoordinate = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    FrowIndex : integer;
+    FcolumnIndex : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrowIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetcolumnIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property rowIndex : integer Index 8 Read FrowIndex Write SetrowIndex;
+    Property columnIndex : integer Index 16 Read FcolumnIndex Write SetcolumnIndex;
+  end;
+  TGridCoordinateClass = Class of TGridCoordinate;
+  
+  { --------------------------------------------------------------------
+    TDeleteFilterViewRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteFilterViewRequest = Class(TGoogleBaseObject)
+  Private
+    FfilterId : integer;
+  Protected
+    //Property setters
+    Procedure SetfilterId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property filterId : integer Index 0 Read FfilterId Write SetfilterId;
+  end;
+  TDeleteFilterViewRequestClass = Class of TDeleteFilterViewRequest;
+  
+  { --------------------------------------------------------------------
+    TBatchUpdateValuesResponse
+    --------------------------------------------------------------------}
+  
+  TBatchUpdateValuesResponse = Class(TGoogleBaseObject)
+  Private
+    FtotalUpdatedSheets : integer;
+    FtotalUpdatedColumns : integer;
+    Fresponses : TBatchUpdateValuesResponseTyperesponsesArray;
+    FtotalUpdatedCells : integer;
+    FspreadsheetId : String;
+    FtotalUpdatedRows : integer;
+  Protected
+    //Property setters
+    Procedure SettotalUpdatedSheets(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettotalUpdatedColumns(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setresponses(AIndex : Integer; const AValue : TBatchUpdateValuesResponseTyperesponsesArray); virtual;
+    Procedure SettotalUpdatedCells(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetspreadsheetId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettotalUpdatedRows(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 totalUpdatedSheets : integer Index 0 Read FtotalUpdatedSheets Write SettotalUpdatedSheets;
+    Property totalUpdatedColumns : integer Index 8 Read FtotalUpdatedColumns Write SettotalUpdatedColumns;
+    Property responses : TBatchUpdateValuesResponseTyperesponsesArray Index 16 Read Fresponses Write Setresponses;
+    Property totalUpdatedCells : integer Index 24 Read FtotalUpdatedCells Write SettotalUpdatedCells;
+    Property spreadsheetId : String Index 32 Read FspreadsheetId Write SetspreadsheetId;
+    Property totalUpdatedRows : integer Index 40 Read FtotalUpdatedRows Write SettotalUpdatedRows;
+  end;
+  TBatchUpdateValuesResponseClass = Class of TBatchUpdateValuesResponse;
+  
+  { --------------------------------------------------------------------
+    TUpdateNamedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateNamedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    Ffields : String;
+    FnamedRange : TNamedRange;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnamedRange(AIndex : Integer; const AValue : TNamedRange); virtual;
+  Public
+  Published
+    Property fields : String Index 0 Read Ffields Write Setfields;
+    Property namedRange : TNamedRange Index 8 Read FnamedRange Write SetnamedRange;
+  end;
+  TUpdateNamedRangeRequestClass = Class of TUpdateNamedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TUpdateValuesResponse
+    --------------------------------------------------------------------}
+  
+  TUpdateValuesResponse = Class(TGoogleBaseObject)
+  Private
+    FupdatedRange : String;
+    FupdatedColumns : integer;
+    FspreadsheetId : String;
+    FupdatedRows : integer;
+    FupdatedCells : integer;
+  Protected
+    //Property setters
+    Procedure SetupdatedRange(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdatedColumns(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetspreadsheetId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetupdatedRows(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetupdatedCells(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property updatedRange : String Index 0 Read FupdatedRange Write SetupdatedRange;
+    Property updatedColumns : integer Index 8 Read FupdatedColumns Write SetupdatedColumns;
+    Property spreadsheetId : String Index 16 Read FspreadsheetId Write SetspreadsheetId;
+    Property updatedRows : integer Index 24 Read FupdatedRows Write SetupdatedRows;
+    Property updatedCells : integer Index 32 Read FupdatedCells Write SetupdatedCells;
+  end;
+  TUpdateValuesResponseClass = Class of TUpdateValuesResponse;
+  
+  { --------------------------------------------------------------------
+    TSpreadsheetProperties
+    --------------------------------------------------------------------}
+  
+  TSpreadsheetProperties = Class(TGoogleBaseObject)
+  Private
+    FtimeZone : String;
+    FautoRecalc : String;
+    Flocale : String;
+    Ftitle : String;
+    FdefaultFormat : TCellFormat;
+  Protected
+    //Property setters
+    Procedure SettimeZone(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetautoRecalc(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdefaultFormat(AIndex : Integer; const AValue : TCellFormat); virtual;
+  Public
+  Published
+    Property timeZone : String Index 0 Read FtimeZone Write SettimeZone;
+    Property autoRecalc : String Index 8 Read FautoRecalc Write SetautoRecalc;
+    Property locale : String Index 16 Read Flocale Write Setlocale;
+    Property title : String Index 24 Read Ftitle Write Settitle;
+    Property defaultFormat : TCellFormat Index 32 Read FdefaultFormat Write SetdefaultFormat;
+  end;
+  TSpreadsheetPropertiesClass = Class of TSpreadsheetProperties;
+  
+  { --------------------------------------------------------------------
+    TCellData
+    --------------------------------------------------------------------}
+  
+  TCellData = Class(TGoogleBaseObject)
+  Private
+    Fhyperlink : String;
+    FeffectiveFormat : TCellFormat;
+    Fnote : String;
+    FformattedValue : String;
+    FuserEnteredValue : TExtendedValue;
+    FdataValidation : TDataValidationRule;
+    FuserEnteredFormat : TCellFormat;
+    FpivotTable : TPivotTable;
+    FtextFormatRuns : TCellDataTypetextFormatRunsArray;
+    FeffectiveValue : TExtendedValue;
+  Protected
+    //Property setters
+    Procedure Sethyperlink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeteffectiveFormat(AIndex : Integer; const AValue : TCellFormat); virtual;
+    Procedure Setnote(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetformattedValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserEnteredValue(AIndex : Integer; const AValue : TExtendedValue); virtual;
+    Procedure SetdataValidation(AIndex : Integer; const AValue : TDataValidationRule); virtual;
+    Procedure SetuserEnteredFormat(AIndex : Integer; const AValue : TCellFormat); virtual;
+    Procedure SetpivotTable(AIndex : Integer; const AValue : TPivotTable); virtual;
+    Procedure SettextFormatRuns(AIndex : Integer; const AValue : TCellDataTypetextFormatRunsArray); virtual;
+    Procedure SeteffectiveValue(AIndex : Integer; const AValue : TExtendedValue); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property hyperlink : String Index 0 Read Fhyperlink Write Sethyperlink;
+    Property effectiveFormat : TCellFormat Index 8 Read FeffectiveFormat Write SeteffectiveFormat;
+    Property note : String Index 16 Read Fnote Write Setnote;
+    Property formattedValue : String Index 24 Read FformattedValue Write SetformattedValue;
+    Property userEnteredValue : TExtendedValue Index 32 Read FuserEnteredValue Write SetuserEnteredValue;
+    Property dataValidation : TDataValidationRule Index 40 Read FdataValidation Write SetdataValidation;
+    Property userEnteredFormat : TCellFormat Index 48 Read FuserEnteredFormat Write SetuserEnteredFormat;
+    Property pivotTable : TPivotTable Index 56 Read FpivotTable Write SetpivotTable;
+    Property textFormatRuns : TCellDataTypetextFormatRunsArray Index 64 Read FtextFormatRuns Write SettextFormatRuns;
+    Property effectiveValue : TExtendedValue Index 72 Read FeffectiveValue Write SeteffectiveValue;
+  end;
+  TCellDataClass = Class of TCellData;
+  
+  { --------------------------------------------------------------------
+    TUnmergeCellsRequest
+    --------------------------------------------------------------------}
+  
+  TUnmergeCellsRequest = Class(TGoogleBaseObject)
+  Private
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+  Public
+  Published
+    Property range : TGridRange Index 0 Read Frange Write Setrange;
+  end;
+  TUnmergeCellsRequestClass = Class of TUnmergeCellsRequest;
+  
+  { --------------------------------------------------------------------
+    TTextToColumnsRequest
+    --------------------------------------------------------------------}
+  
+  TTextToColumnsRequest = Class(TGoogleBaseObject)
+  Private
+    Fsource : TGridRange;
+    Fdelimiter : String;
+    FdelimiterType : String;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setdelimiter(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdelimiterType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property source : TGridRange Index 0 Read Fsource Write Setsource;
+    Property delimiter : String Index 8 Read Fdelimiter Write Setdelimiter;
+    Property delimiterType : String Index 16 Read FdelimiterType Write SetdelimiterType;
+  end;
+  TTextToColumnsRequestClass = Class of TTextToColumnsRequest;
+  
+  { --------------------------------------------------------------------
+    TAddProtectedRangeResponse
+    --------------------------------------------------------------------}
+  
+  TAddProtectedRangeResponse = Class(TGoogleBaseObject)
+  Private
+    FprotectedRange : TProtectedRange;
+  Protected
+    //Property setters
+    Procedure SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); virtual;
+  Public
+  Published
+    Property protectedRange : TProtectedRange Index 0 Read FprotectedRange Write SetprotectedRange;
+  end;
+  TAddProtectedRangeResponseClass = Class of TAddProtectedRangeResponse;
+  
+  { --------------------------------------------------------------------
+    TBooleanCondition
+    --------------------------------------------------------------------}
+  
+  TBooleanCondition = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TBooleanConditionTypevaluesArray;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TBooleanConditionTypevaluesArray); virtual;
+    Procedure Set_type(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 values : TBooleanConditionTypevaluesArray Index 0 Read Fvalues Write Setvalues;
+    Property _type : String Index 8 Read F_type Write Set_type;
+  end;
+  TBooleanConditionClass = Class of TBooleanCondition;
+  
+  { --------------------------------------------------------------------
+    TDeleteProtectedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteProtectedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    FprotectedRangeId : integer;
+  Protected
+    //Property setters
+    Procedure SetprotectedRangeId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property protectedRangeId : integer Index 0 Read FprotectedRangeId Write SetprotectedRangeId;
+  end;
+  TDeleteProtectedRangeRequestClass = Class of TDeleteProtectedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TBasicChartDomain
+    --------------------------------------------------------------------}
+  
+  TBasicChartDomain = Class(TGoogleBaseObject)
+  Private
+    Fdomain : TChartData;
+  Protected
+    //Property setters
+    Procedure Setdomain(AIndex : Integer; const AValue : TChartData); virtual;
+  Public
+  Published
+    Property domain : TChartData Index 0 Read Fdomain Write Setdomain;
+  end;
+  TBasicChartDomainClass = Class of TBasicChartDomain;
+  
+  { --------------------------------------------------------------------
+    TDimensionRange
+    --------------------------------------------------------------------}
+  
+  TDimensionRange = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    FendIndex : integer;
+    FstartIndex : integer;
+    Fdimension : String;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetendIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdimension(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property endIndex : integer Index 8 Read FendIndex Write SetendIndex;
+    Property startIndex : integer Index 16 Read FstartIndex Write SetstartIndex;
+    Property dimension : String Index 24 Read Fdimension Write Setdimension;
+  end;
+  TDimensionRangeClass = Class of TDimensionRange;
+  
+  { --------------------------------------------------------------------
+    TResponse
+    --------------------------------------------------------------------}
+  
+  TResponse = Class(TGoogleBaseObject)
+  Private
+    FupdateEmbeddedObjectPosition : TUpdateEmbeddedObjectPositionResponse;
+    FaddFilterView : TAddFilterViewResponse;
+    FaddSheet : TAddSheetResponse;
+    FfindReplace : TFindReplaceResponse;
+    FaddProtectedRange : TAddProtectedRangeResponse;
+    FupdateConditionalFormatRule : TUpdateConditionalFormatRuleResponse;
+    FaddChart : TAddChartResponse;
+    FdeleteConditionalFormatRule : TDeleteConditionalFormatRuleResponse;
+    FduplicateSheet : TDuplicateSheetResponse;
+    FduplicateFilterView : TDuplicateFilterViewResponse;
+    FaddNamedRange : TAddNamedRangeResponse;
+  Protected
+    //Property setters
+    Procedure SetupdateEmbeddedObjectPosition(AIndex : Integer; const AValue : TUpdateEmbeddedObjectPositionResponse); virtual;
+    Procedure SetaddFilterView(AIndex : Integer; const AValue : TAddFilterViewResponse); virtual;
+    Procedure SetaddSheet(AIndex : Integer; const AValue : TAddSheetResponse); virtual;
+    Procedure SetfindReplace(AIndex : Integer; const AValue : TFindReplaceResponse); virtual;
+    Procedure SetaddProtectedRange(AIndex : Integer; const AValue : TAddProtectedRangeResponse); virtual;
+    Procedure SetupdateConditionalFormatRule(AIndex : Integer; const AValue : TUpdateConditionalFormatRuleResponse); virtual;
+    Procedure SetaddChart(AIndex : Integer; const AValue : TAddChartResponse); virtual;
+    Procedure SetdeleteConditionalFormatRule(AIndex : Integer; const AValue : TDeleteConditionalFormatRuleResponse); virtual;
+    Procedure SetduplicateSheet(AIndex : Integer; const AValue : TDuplicateSheetResponse); virtual;
+    Procedure SetduplicateFilterView(AIndex : Integer; const AValue : TDuplicateFilterViewResponse); virtual;
+    Procedure SetaddNamedRange(AIndex : Integer; const AValue : TAddNamedRangeResponse); virtual;
+  Public
+  Published
+    Property updateEmbeddedObjectPosition : TUpdateEmbeddedObjectPositionResponse Index 0 Read FupdateEmbeddedObjectPosition Write SetupdateEmbeddedObjectPosition;
+    Property addFilterView : TAddFilterViewResponse Index 8 Read FaddFilterView Write SetaddFilterView;
+    Property addSheet : TAddSheetResponse Index 16 Read FaddSheet Write SetaddSheet;
+    Property findReplace : TFindReplaceResponse Index 24 Read FfindReplace Write SetfindReplace;
+    Property addProtectedRange : TAddProtectedRangeResponse Index 32 Read FaddProtectedRange Write SetaddProtectedRange;
+    Property updateConditionalFormatRule : TUpdateConditionalFormatRuleResponse Index 40 Read FupdateConditionalFormatRule Write SetupdateConditionalFormatRule;
+    Property addChart : TAddChartResponse Index 48 Read FaddChart Write SetaddChart;
+    Property deleteConditionalFormatRule : TDeleteConditionalFormatRuleResponse Index 56 Read FdeleteConditionalFormatRule Write SetdeleteConditionalFormatRule;
+    Property duplicateSheet : TDuplicateSheetResponse Index 64 Read FduplicateSheet Write SetduplicateSheet;
+    Property duplicateFilterView : TDuplicateFilterViewResponse Index 72 Read FduplicateFilterView Write SetduplicateFilterView;
+    Property addNamedRange : TAddNamedRangeResponse Index 80 Read FaddNamedRange Write SetaddNamedRange;
+  end;
+  TResponseClass = Class of TResponse;
+  
+  { --------------------------------------------------------------------
+    TAddConditionalFormatRuleRequest
+    --------------------------------------------------------------------}
+  
+  TAddConditionalFormatRuleRequest = Class(TGoogleBaseObject)
+  Private
+    Frule : TConditionalFormatRule;
+    Findex : integer;
+  Protected
+    //Property setters
+    Procedure Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); virtual;
+    Procedure Setindex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property rule : TConditionalFormatRule Index 0 Read Frule Write Setrule;
+    Property index : integer Index 8 Read Findex Write Setindex;
+  end;
+  TAddConditionalFormatRuleRequestClass = Class of TAddConditionalFormatRuleRequest;
+  
+  { --------------------------------------------------------------------
+    TFilterViewTypecriteria
+    --------------------------------------------------------------------}
+  
+  TFilterViewTypecriteria = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TFilterViewTypecriteriaClass = Class of TFilterViewTypecriteria;
+  
+  { --------------------------------------------------------------------
+    TFilterView
+    --------------------------------------------------------------------}
+  
+  TFilterView = Class(TGoogleBaseObject)
+  Private
+    Ftitle : String;
+    FnamedRangeId : String;
+    FsortSpecs : TFilterViewTypesortSpecsArray;
+    Frange : TGridRange;
+    Fcriteria : TFilterViewTypecriteria;
+    FfilterViewId : integer;
+  Protected
+    //Property setters
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnamedRangeId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsortSpecs(AIndex : Integer; const AValue : TFilterViewTypesortSpecsArray); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setcriteria(AIndex : Integer; const AValue : TFilterViewTypecriteria); virtual;
+    Procedure SetfilterViewId(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 title : String Index 0 Read Ftitle Write Settitle;
+    Property namedRangeId : String Index 8 Read FnamedRangeId Write SetnamedRangeId;
+    Property sortSpecs : TFilterViewTypesortSpecsArray Index 16 Read FsortSpecs Write SetsortSpecs;
+    Property range : TGridRange Index 24 Read Frange Write Setrange;
+    Property criteria : TFilterViewTypecriteria Index 32 Read Fcriteria Write Setcriteria;
+    Property filterViewId : integer Index 40 Read FfilterViewId Write SetfilterViewId;
+  end;
+  TFilterViewClass = Class of TFilterView;
+  
+  { --------------------------------------------------------------------
+    TSortRangeRequest
+    --------------------------------------------------------------------}
+  
+  TSortRangeRequest = Class(TGoogleBaseObject)
+  Private
+    Frange : TGridRange;
+    FsortSpecs : TSortRangeRequestTypesortSpecsArray;
+  Protected
+    //Property setters
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure SetsortSpecs(AIndex : Integer; const AValue : TSortRangeRequestTypesortSpecsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property range : TGridRange Index 0 Read Frange Write Setrange;
+    Property sortSpecs : TSortRangeRequestTypesortSpecsArray Index 8 Read FsortSpecs Write SetsortSpecs;
+  end;
+  TSortRangeRequestClass = Class of TSortRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TTextFormatRun
+    --------------------------------------------------------------------}
+  
+  TTextFormatRun = Class(TGoogleBaseObject)
+  Private
+    FstartIndex : integer;
+    Fformat : TTextFormat;
+  Protected
+    //Property setters
+    Procedure SetstartIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setformat(AIndex : Integer; const AValue : TTextFormat); virtual;
+  Public
+  Published
+    Property startIndex : integer Index 0 Read FstartIndex Write SetstartIndex;
+    Property format : TTextFormat Index 8 Read Fformat Write Setformat;
+  end;
+  TTextFormatRunClass = Class of TTextFormatRun;
+  
+  { --------------------------------------------------------------------
+    TUpdateFilterViewRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateFilterViewRequest = Class(TGoogleBaseObject)
+  Private
+    Ffilter : TFilterView;
+    Ffields : String;
+  Protected
+    //Property setters
+    Procedure Setfilter(AIndex : Integer; const AValue : TFilterView); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property filter : TFilterView Index 0 Read Ffilter Write Setfilter;
+    Property fields : String Index 8 Read Ffields Write Setfields;
+  end;
+  TUpdateFilterViewRequestClass = Class of TUpdateFilterViewRequest;
+  
+  { --------------------------------------------------------------------
+    TUpdateConditionalFormatRuleResponse
+    --------------------------------------------------------------------}
+  
+  TUpdateConditionalFormatRuleResponse = Class(TGoogleBaseObject)
+  Private
+    FoldIndex : integer;
+    FnewRule : TConditionalFormatRule;
+    FoldRule : TConditionalFormatRule;
+    FnewIndex : integer;
+  Protected
+    //Property setters
+    Procedure SetoldIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnewRule(AIndex : Integer; const AValue : TConditionalFormatRule); virtual;
+    Procedure SetoldRule(AIndex : Integer; const AValue : TConditionalFormatRule); virtual;
+    Procedure SetnewIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property oldIndex : integer Index 0 Read FoldIndex Write SetoldIndex;
+    Property newRule : TConditionalFormatRule Index 8 Read FnewRule Write SetnewRule;
+    Property oldRule : TConditionalFormatRule Index 16 Read FoldRule Write SetoldRule;
+    Property newIndex : integer Index 24 Read FnewIndex Write SetnewIndex;
+  end;
+  TUpdateConditionalFormatRuleResponseClass = Class of TUpdateConditionalFormatRuleResponse;
+  
+  { --------------------------------------------------------------------
+    TFilterCriteria
+    --------------------------------------------------------------------}
+  
+  TFilterCriteria = Class(TGoogleBaseObject)
+  Private
+    Fcondition : TBooleanCondition;
+    FhiddenValues : TStringArray;
+  Protected
+    //Property setters
+    Procedure Setcondition(AIndex : Integer; const AValue : TBooleanCondition); virtual;
+    Procedure SethiddenValues(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 condition : TBooleanCondition Index 0 Read Fcondition Write Setcondition;
+    Property hiddenValues : TStringArray Index 8 Read FhiddenValues Write SethiddenValues;
+  end;
+  TFilterCriteriaClass = Class of TFilterCriteria;
+  
+  { --------------------------------------------------------------------
+    TDeleteDimensionRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteDimensionRequest = Class(TGoogleBaseObject)
+  Private
+    Frange : TDimensionRange;
+  Protected
+    //Property setters
+    Procedure Setrange(AIndex : Integer; const AValue : TDimensionRange); virtual;
+  Public
+  Published
+    Property range : TDimensionRange Index 0 Read Frange Write Setrange;
+  end;
+  TDeleteDimensionRequestClass = Class of TDeleteDimensionRequest;
+  
+  { --------------------------------------------------------------------
+    TPivotTableTypecriteria
+    --------------------------------------------------------------------}
+  
+  TPivotTableTypecriteria = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TPivotTableTypecriteriaClass = Class of TPivotTableTypecriteria;
+  
+  { --------------------------------------------------------------------
+    TPivotTable
+    --------------------------------------------------------------------}
+  
+  TPivotTable = Class(TGoogleBaseObject)
+  Private
+    FvalueLayout : String;
+    Fcolumns : TPivotTableTypecolumnsArray;
+    Fsource : TGridRange;
+    Frows : TPivotTableTyperowsArray;
+    Fvalues : TPivotTableTypevaluesArray;
+    Fcriteria : TPivotTableTypecriteria;
+  Protected
+    //Property setters
+    Procedure SetvalueLayout(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcolumns(AIndex : Integer; const AValue : TPivotTableTypecolumnsArray); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TPivotTableTyperowsArray); virtual;
+    Procedure Setvalues(AIndex : Integer; const AValue : TPivotTableTypevaluesArray); virtual;
+    Procedure Setcriteria(AIndex : Integer; const AValue : TPivotTableTypecriteria); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property valueLayout : String Index 0 Read FvalueLayout Write SetvalueLayout;
+    Property columns : TPivotTableTypecolumnsArray Index 8 Read Fcolumns Write Setcolumns;
+    Property source : TGridRange Index 16 Read Fsource Write Setsource;
+    Property rows : TPivotTableTyperowsArray Index 24 Read Frows Write Setrows;
+    Property values : TPivotTableTypevaluesArray Index 32 Read Fvalues Write Setvalues;
+    Property criteria : TPivotTableTypecriteria Index 40 Read Fcriteria Write Setcriteria;
+  end;
+  TPivotTableClass = Class of TPivotTable;
+  
+  { --------------------------------------------------------------------
+    TDataValidationRule
+    --------------------------------------------------------------------}
+  
+  TDataValidationRule = Class(TGoogleBaseObject)
+  Private
+    Fcondition : TBooleanCondition;
+    FinputMessage : String;
+    FshowCustomUi : boolean;
+    Fstrict : boolean;
+  Protected
+    //Property setters
+    Procedure Setcondition(AIndex : Integer; const AValue : TBooleanCondition); virtual;
+    Procedure SetinputMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetshowCustomUi(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setstrict(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property condition : TBooleanCondition Index 0 Read Fcondition Write Setcondition;
+    Property inputMessage : String Index 8 Read FinputMessage Write SetinputMessage;
+    Property showCustomUi : boolean Index 16 Read FshowCustomUi Write SetshowCustomUi;
+    Property strict : boolean Index 24 Read Fstrict Write Setstrict;
+  end;
+  TDataValidationRuleClass = Class of TDataValidationRule;
+  
+  { --------------------------------------------------------------------
+    TUpdateSpreadsheetPropertiesRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateSpreadsheetPropertiesRequest = Class(TGoogleBaseObject)
+  Private
+    Ffields : String;
+    Fproperties : TSpreadsheetProperties;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSpreadsheetProperties); virtual;
+  Public
+  Published
+    Property fields : String Index 0 Read Ffields Write Setfields;
+    Property properties : TSpreadsheetProperties Index 8 Read Fproperties Write Setproperties;
+  end;
+  TUpdateSpreadsheetPropertiesRequestClass = Class of TUpdateSpreadsheetPropertiesRequest;
+  
+  { --------------------------------------------------------------------
+    TChartSourceRange
+    --------------------------------------------------------------------}
+  
+  TChartSourceRange = Class(TGoogleBaseObject)
+  Private
+    Fsources : TChartSourceRangeTypesourcesArray;
+  Protected
+    //Property setters
+    Procedure Setsources(AIndex : Integer; const AValue : TChartSourceRangeTypesourcesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property sources : TChartSourceRangeTypesourcesArray Index 0 Read Fsources Write Setsources;
+  end;
+  TChartSourceRangeClass = Class of TChartSourceRange;
+  
+  { --------------------------------------------------------------------
+    TBatchUpdateValuesRequest
+    --------------------------------------------------------------------}
+  
+  TBatchUpdateValuesRequest = Class(TGoogleBaseObject)
+  Private
+    FvalueInputOption : String;
+    Fdata : TBatchUpdateValuesRequestTypedataArray;
+  Protected
+    //Property setters
+    Procedure SetvalueInputOption(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : TBatchUpdateValuesRequestTypedataArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property valueInputOption : String Index 0 Read FvalueInputOption Write SetvalueInputOption;
+    Property data : TBatchUpdateValuesRequestTypedataArray Index 8 Read Fdata Write Setdata;
+  end;
+  TBatchUpdateValuesRequestClass = Class of TBatchUpdateValuesRequest;
+  
+  { --------------------------------------------------------------------
+    TClearBasicFilterRequest
+    --------------------------------------------------------------------}
+  
+  TClearBasicFilterRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+  end;
+  TClearBasicFilterRequestClass = Class of TClearBasicFilterRequest;
+  
+  { --------------------------------------------------------------------
+    TConditionalFormatRule
+    --------------------------------------------------------------------}
+  
+  TConditionalFormatRule = Class(TGoogleBaseObject)
+  Private
+    FgradientRule : TGradientRule;
+    FbooleanRule : TBooleanRule;
+    Franges : TConditionalFormatRuleTyperangesArray;
+  Protected
+    //Property setters
+    Procedure SetgradientRule(AIndex : Integer; const AValue : TGradientRule); virtual;
+    Procedure SetbooleanRule(AIndex : Integer; const AValue : TBooleanRule); virtual;
+    Procedure Setranges(AIndex : Integer; const AValue : TConditionalFormatRuleTyperangesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property gradientRule : TGradientRule Index 0 Read FgradientRule Write SetgradientRule;
+    Property booleanRule : TBooleanRule Index 8 Read FbooleanRule Write SetbooleanRule;
+    Property ranges : TConditionalFormatRuleTyperangesArray Index 16 Read Franges Write Setranges;
+  end;
+  TConditionalFormatRuleClass = Class of TConditionalFormatRule;
+  
+  { --------------------------------------------------------------------
+    TUpdateBordersRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateBordersRequest = Class(TGoogleBaseObject)
+  Private
+    Fright : TBorder;
+    FinnerVertical : TBorder;
+    Ftop : TBorder;
+    FinnerHorizontal : TBorder;
+    Frange : TGridRange;
+    Fbottom : TBorder;
+    Fleft : TBorder;
+  Protected
+    //Property setters
+    Procedure Setright(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure SetinnerVertical(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure SetinnerHorizontal(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setbottom(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Setleft(AIndex : Integer; const AValue : TBorder); virtual;
+  Public
+  Published
+    Property right : TBorder Index 0 Read Fright Write Setright;
+    Property innerVertical : TBorder Index 8 Read FinnerVertical Write SetinnerVertical;
+    Property top : TBorder Index 16 Read Ftop Write Settop;
+    Property innerHorizontal : TBorder Index 24 Read FinnerHorizontal Write SetinnerHorizontal;
+    Property range : TGridRange Index 32 Read Frange Write Setrange;
+    Property bottom : TBorder Index 40 Read Fbottom Write Setbottom;
+    Property left : TBorder Index 48 Read Fleft Write Setleft;
+  end;
+  TUpdateBordersRequestClass = Class of TUpdateBordersRequest;
+  
+  { --------------------------------------------------------------------
+    TPivotFilterCriteria
+    --------------------------------------------------------------------}
+  
+  TPivotFilterCriteria = Class(TGoogleBaseObject)
+  Private
+    FvisibleValues : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetvisibleValues(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 visibleValues : TStringArray Index 0 Read FvisibleValues Write SetvisibleValues;
+  end;
+  TPivotFilterCriteriaClass = Class of TPivotFilterCriteria;
+  
+  { --------------------------------------------------------------------
+    TBorders
+    --------------------------------------------------------------------}
+  
+  TBorders = Class(TGoogleBaseObject)
+  Private
+    Fleft : TBorder;
+    Fright : TBorder;
+    Ftop : TBorder;
+    Fbottom : TBorder;
+  Protected
+    //Property setters
+    Procedure Setleft(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Setright(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Settop(AIndex : Integer; const AValue : TBorder); virtual;
+    Procedure Setbottom(AIndex : Integer; const AValue : TBorder); virtual;
+  Public
+  Published
+    Property left : TBorder Index 0 Read Fleft Write Setleft;
+    Property right : TBorder Index 8 Read Fright Write Setright;
+    Property top : TBorder Index 16 Read Ftop Write Settop;
+    Property bottom : TBorder Index 24 Read Fbottom Write Setbottom;
+  end;
+  TBordersClass = Class of TBorders;
+  
+  { --------------------------------------------------------------------
+    TEmbeddedChart
+    --------------------------------------------------------------------}
+  
+  TEmbeddedChart = Class(TGoogleBaseObject)
+  Private
+    FchartId : integer;
+    Fposition : TEmbeddedObjectPosition;
+    Fspec : TChartSpec;
+  Protected
+    //Property setters
+    Procedure SetchartId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setposition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); virtual;
+    Procedure Setspec(AIndex : Integer; const AValue : TChartSpec); virtual;
+  Public
+  Published
+    Property chartId : integer Index 0 Read FchartId Write SetchartId;
+    Property position : TEmbeddedObjectPosition Index 8 Read Fposition Write Setposition;
+    Property spec : TChartSpec Index 16 Read Fspec Write Setspec;
+  end;
+  TEmbeddedChartClass = Class of TEmbeddedChart;
+  
+  { --------------------------------------------------------------------
+    TColor
+    --------------------------------------------------------------------}
+  
+  TColor = Class(TGoogleBaseObject)
+  Private
+    Fgreen : integer;
+    Fblue : integer;
+    Fred : integer;
+    Falpha : integer;
+  Protected
+    //Property setters
+    Procedure Setgreen(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setblue(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setred(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setalpha(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property green : integer Index 0 Read Fgreen Write Setgreen;
+    Property blue : integer Index 8 Read Fblue Write Setblue;
+    Property red : integer Index 16 Read Fred Write Setred;
+    Property alpha : integer Index 24 Read Falpha Write Setalpha;
+  end;
+  TColorClass = Class of TColor;
+  
+  { --------------------------------------------------------------------
+    TAddSheetRequest
+    --------------------------------------------------------------------}
+  
+  TAddSheetRequest = Class(TGoogleBaseObject)
+  Private
+    Fproperties : TSheetProperties;
+  Protected
+    //Property setters
+    Procedure Setproperties(AIndex : Integer; const AValue : TSheetProperties); virtual;
+  Public
+  Published
+    Property properties : TSheetProperties Index 0 Read Fproperties Write Setproperties;
+  end;
+  TAddSheetRequestClass = Class of TAddSheetRequest;
+  
+  { --------------------------------------------------------------------
+    TAddProtectedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TAddProtectedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    FprotectedRange : TProtectedRange;
+  Protected
+    //Property setters
+    Procedure SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); virtual;
+  Public
+  Published
+    Property protectedRange : TProtectedRange Index 0 Read FprotectedRange Write SetprotectedRange;
+  end;
+  TAddProtectedRangeRequestClass = Class of TAddProtectedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TValueRange
+    --------------------------------------------------------------------}
+  
+  TValueRange = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TValueRangeTypevaluesArray;
+    Frange : String;
+    FmajorDimension : String;
+  Protected
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TValueRangeTypevaluesArray); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmajorDimension(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 values : TValueRangeTypevaluesArray Index 0 Read Fvalues Write Setvalues;
+    Property range : String Index 8 Read Frange Write Setrange;
+    Property majorDimension : String Index 16 Read FmajorDimension Write SetmajorDimension;
+  end;
+  TValueRangeClass = Class of TValueRange;
+  
+  { --------------------------------------------------------------------
+    TFindReplaceResponse
+    --------------------------------------------------------------------}
+  
+  TFindReplaceResponse = Class(TGoogleBaseObject)
+  Private
+    FvaluesChanged : integer;
+    FrowsChanged : integer;
+    FoccurrencesChanged : integer;
+    FformulasChanged : integer;
+    FsheetsChanged : integer;
+  Protected
+    //Property setters
+    Procedure SetvaluesChanged(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrowsChanged(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetoccurrencesChanged(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetformulasChanged(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsheetsChanged(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property valuesChanged : integer Index 0 Read FvaluesChanged Write SetvaluesChanged;
+    Property rowsChanged : integer Index 8 Read FrowsChanged Write SetrowsChanged;
+    Property occurrencesChanged : integer Index 16 Read FoccurrencesChanged Write SetoccurrencesChanged;
+    Property formulasChanged : integer Index 24 Read FformulasChanged Write SetformulasChanged;
+    Property sheetsChanged : integer Index 32 Read FsheetsChanged Write SetsheetsChanged;
+  end;
+  TFindReplaceResponseClass = Class of TFindReplaceResponse;
+  
+  { --------------------------------------------------------------------
+    TCellFormat
+    --------------------------------------------------------------------}
+  
+  TCellFormat = Class(TGoogleBaseObject)
+  Private
+    FhorizontalAlignment : String;
+    FhyperlinkDisplayType : String;
+    Fborders : TBorders;
+    FtextDirection : String;
+    FtextFormat : TTextFormat;
+    Fpadding : TPadding;
+    FnumberFormat : TNumberFormat;
+    FwrapStrategy : String;
+    FbackgroundColor : TColor;
+    FverticalAlignment : String;
+  Protected
+    //Property setters
+    Procedure SethorizontalAlignment(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethyperlinkDisplayType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setborders(AIndex : Integer; const AValue : TBorders); virtual;
+    Procedure SettextDirection(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettextFormat(AIndex : Integer; const AValue : TTextFormat); virtual;
+    Procedure Setpadding(AIndex : Integer; const AValue : TPadding); virtual;
+    Procedure SetnumberFormat(AIndex : Integer; const AValue : TNumberFormat); virtual;
+    Procedure SetwrapStrategy(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbackgroundColor(AIndex : Integer; const AValue : TColor); virtual;
+    Procedure SetverticalAlignment(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property horizontalAlignment : String Index 0 Read FhorizontalAlignment Write SethorizontalAlignment;
+    Property hyperlinkDisplayType : String Index 8 Read FhyperlinkDisplayType Write SethyperlinkDisplayType;
+    Property borders : TBorders Index 16 Read Fborders Write Setborders;
+    Property textDirection : String Index 24 Read FtextDirection Write SettextDirection;
+    Property textFormat : TTextFormat Index 32 Read FtextFormat Write SettextFormat;
+    Property padding : TPadding Index 40 Read Fpadding Write Setpadding;
+    Property numberFormat : TNumberFormat Index 48 Read FnumberFormat Write SetnumberFormat;
+    Property wrapStrategy : String Index 56 Read FwrapStrategy Write SetwrapStrategy;
+    Property backgroundColor : TColor Index 64 Read FbackgroundColor Write SetbackgroundColor;
+    Property verticalAlignment : String Index 72 Read FverticalAlignment Write SetverticalAlignment;
+  end;
+  TCellFormatClass = Class of TCellFormat;
+  
+  { --------------------------------------------------------------------
+    TMoveDimensionRequest
+    --------------------------------------------------------------------}
+  
+  TMoveDimensionRequest = Class(TGoogleBaseObject)
+  Private
+    Fsource : TDimensionRange;
+    FdestinationIndex : integer;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TDimensionRange); virtual;
+    Procedure SetdestinationIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property source : TDimensionRange Index 0 Read Fsource Write Setsource;
+    Property destinationIndex : integer Index 8 Read FdestinationIndex Write SetdestinationIndex;
+  end;
+  TMoveDimensionRequestClass = Class of TMoveDimensionRequest;
+  
+  { --------------------------------------------------------------------
+    TBasicChartAxis
+    --------------------------------------------------------------------}
+  
+  TBasicChartAxis = Class(TGoogleBaseObject)
+  Private
+    Fposition : String;
+    Ftitle : String;
+    Fformat : TTextFormat;
+  Protected
+    //Property setters
+    Procedure Setposition(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setformat(AIndex : Integer; const AValue : TTextFormat); virtual;
+  Public
+  Published
+    Property position : String Index 0 Read Fposition Write Setposition;
+    Property title : String Index 8 Read Ftitle Write Settitle;
+    Property format : TTextFormat Index 16 Read Fformat Write Setformat;
+  end;
+  TBasicChartAxisClass = Class of TBasicChartAxis;
+  
+  { --------------------------------------------------------------------
+    TPivotGroupSortValueBucket
+    --------------------------------------------------------------------}
+  
+  TPivotGroupSortValueBucket = Class(TGoogleBaseObject)
+  Private
+    Fbuckets : TPivotGroupSortValueBucketTypebucketsArray;
+    FvaluesIndex : integer;
+  Protected
+    //Property setters
+    Procedure Setbuckets(AIndex : Integer; const AValue : TPivotGroupSortValueBucketTypebucketsArray); virtual;
+    Procedure SetvaluesIndex(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 buckets : TPivotGroupSortValueBucketTypebucketsArray Index 0 Read Fbuckets Write Setbuckets;
+    Property valuesIndex : integer Index 8 Read FvaluesIndex Write SetvaluesIndex;
+  end;
+  TPivotGroupSortValueBucketClass = Class of TPivotGroupSortValueBucket;
+  
+  { --------------------------------------------------------------------
+    TDimensionProperties
+    --------------------------------------------------------------------}
+  
+  TDimensionProperties = Class(TGoogleBaseObject)
+  Private
+    FhiddenByUser : boolean;
+    FpixelSize : integer;
+    FhiddenByFilter : boolean;
+  Protected
+    //Property setters
+    Procedure SethiddenByUser(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetpixelSize(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SethiddenByFilter(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property hiddenByUser : boolean Index 0 Read FhiddenByUser Write SethiddenByUser;
+    Property pixelSize : integer Index 8 Read FpixelSize Write SetpixelSize;
+    Property hiddenByFilter : boolean Index 16 Read FhiddenByFilter Write SethiddenByFilter;
+  end;
+  TDimensionPropertiesClass = Class of TDimensionProperties;
+  
+  { --------------------------------------------------------------------
+    TEmbeddedObjectPosition
+    --------------------------------------------------------------------}
+  
+  TEmbeddedObjectPosition = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    FoverlayPosition : TOverlayPosition;
+    FnewSheet : boolean;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetoverlayPosition(AIndex : Integer; const AValue : TOverlayPosition); virtual;
+    Procedure SetnewSheet(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property overlayPosition : TOverlayPosition Index 8 Read FoverlayPosition Write SetoverlayPosition;
+    Property newSheet : boolean Index 16 Read FnewSheet Write SetnewSheet;
+  end;
+  TEmbeddedObjectPositionClass = Class of TEmbeddedObjectPosition;
+  
+  { --------------------------------------------------------------------
+    TInterpolationPoint
+    --------------------------------------------------------------------}
+  
+  TInterpolationPoint = Class(TGoogleBaseObject)
+  Private
+    Fvalue : String;
+    Fcolor : TColor;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcolor(AIndex : Integer; const AValue : TColor); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property value : String Index 0 Read Fvalue Write Setvalue;
+    Property color : TColor Index 8 Read Fcolor Write Setcolor;
+    Property _type : String Index 16 Read F_type Write Set_type;
+  end;
+  TInterpolationPointClass = Class of TInterpolationPoint;
+  
+  { --------------------------------------------------------------------
+    TErrorValue
+    --------------------------------------------------------------------}
+  
+  TErrorValue = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    Fmessage : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property message : String Index 8 Read Fmessage Write Setmessage;
+  end;
+  TErrorValueClass = Class of TErrorValue;
+  
+  { --------------------------------------------------------------------
+    TDuplicateFilterViewRequest
+    --------------------------------------------------------------------}
+  
+  TDuplicateFilterViewRequest = Class(TGoogleBaseObject)
+  Private
+    FfilterId : integer;
+  Protected
+    //Property setters
+    Procedure SetfilterId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property filterId : integer Index 0 Read FfilterId Write SetfilterId;
+  end;
+  TDuplicateFilterViewRequestClass = Class of TDuplicateFilterViewRequest;
+  
+  { --------------------------------------------------------------------
+    TBatchUpdateSpreadsheetRequest
+    --------------------------------------------------------------------}
+  
+  TBatchUpdateSpreadsheetRequest = Class(TGoogleBaseObject)
+  Private
+    Frequests : TBatchUpdateSpreadsheetRequestTyperequestsArray;
+  Protected
+    //Property setters
+    Procedure Setrequests(AIndex : Integer; const AValue : TBatchUpdateSpreadsheetRequestTyperequestsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property requests : TBatchUpdateSpreadsheetRequestTyperequestsArray Index 0 Read Frequests Write Setrequests;
+  end;
+  TBatchUpdateSpreadsheetRequestClass = Class of TBatchUpdateSpreadsheetRequest;
+  
+  { --------------------------------------------------------------------
+    TSheetProperties
+    --------------------------------------------------------------------}
+  
+  TSheetProperties = Class(TGoogleBaseObject)
+  Private
+    Ftitle : String;
+    Findex : integer;
+    Fhidden : boolean;
+    FgridProperties : TGridProperties;
+    FsheetId : integer;
+    FrightToLeft : boolean;
+    FtabColor : TColor;
+    FsheetType : String;
+  Protected
+    //Property setters
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setindex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Sethidden(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetgridProperties(AIndex : Integer; const AValue : TGridProperties); virtual;
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrightToLeft(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SettabColor(AIndex : Integer; const AValue : TColor); virtual;
+    Procedure SetsheetType(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property title : String Index 0 Read Ftitle Write Settitle;
+    Property index : integer Index 8 Read Findex Write Setindex;
+    Property hidden : boolean Index 16 Read Fhidden Write Sethidden;
+    Property gridProperties : TGridProperties Index 24 Read FgridProperties Write SetgridProperties;
+    Property sheetId : integer Index 32 Read FsheetId Write SetsheetId;
+    Property rightToLeft : boolean Index 40 Read FrightToLeft Write SetrightToLeft;
+    Property tabColor : TColor Index 48 Read FtabColor Write SettabColor;
+    Property sheetType : String Index 56 Read FsheetType Write SetsheetType;
+  end;
+  TSheetPropertiesClass = Class of TSheetProperties;
+  
+  { --------------------------------------------------------------------
+    TProtectedRange
+    --------------------------------------------------------------------}
+  
+  TProtectedRange = Class(TGoogleBaseObject)
+  Private
+    FunprotectedRanges : TProtectedRangeTypeunprotectedRangesArray;
+    Fdescription : String;
+    FnamedRangeId : String;
+    FrequestingUserCanEdit : boolean;
+    Feditors : TEditors;
+    FprotectedRangeId : integer;
+    FwarningOnly : boolean;
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure SetunprotectedRanges(AIndex : Integer; const AValue : TProtectedRangeTypeunprotectedRangesArray); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetnamedRangeId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrequestingUserCanEdit(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Seteditors(AIndex : Integer; const AValue : TEditors); virtual;
+    Procedure SetprotectedRangeId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetwarningOnly(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property unprotectedRanges : TProtectedRangeTypeunprotectedRangesArray Index 0 Read FunprotectedRanges Write SetunprotectedRanges;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property namedRangeId : String Index 16 Read FnamedRangeId Write SetnamedRangeId;
+    Property requestingUserCanEdit : boolean Index 24 Read FrequestingUserCanEdit Write SetrequestingUserCanEdit;
+    Property editors : TEditors Index 32 Read Feditors Write Seteditors;
+    Property protectedRangeId : integer Index 40 Read FprotectedRangeId Write SetprotectedRangeId;
+    Property warningOnly : boolean Index 48 Read FwarningOnly Write SetwarningOnly;
+    Property range : TGridRange Index 56 Read Frange Write Setrange;
+  end;
+  TProtectedRangeClass = Class of TProtectedRange;
+  
+  { --------------------------------------------------------------------
+    TDeleteConditionalFormatRuleRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteConditionalFormatRuleRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    Findex : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setindex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property index : integer Index 8 Read Findex Write Setindex;
+  end;
+  TDeleteConditionalFormatRuleRequestClass = Class of TDeleteConditionalFormatRuleRequest;
+  
+  { --------------------------------------------------------------------
+    TChartSpec
+    --------------------------------------------------------------------}
+  
+  TChartSpec = Class(TGoogleBaseObject)
+  Private
+    FhiddenDimensionStrategy : String;
+    FbasicChart : TBasicChartSpec;
+    Ftitle : String;
+    FpieChart : TPieChartSpec;
+  Protected
+    //Property setters
+    Procedure SethiddenDimensionStrategy(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbasicChart(AIndex : Integer; const AValue : TBasicChartSpec); virtual;
+    Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpieChart(AIndex : Integer; const AValue : TPieChartSpec); virtual;
+  Public
+  Published
+    Property hiddenDimensionStrategy : String Index 0 Read FhiddenDimensionStrategy Write SethiddenDimensionStrategy;
+    Property basicChart : TBasicChartSpec Index 8 Read FbasicChart Write SetbasicChart;
+    Property title : String Index 16 Read Ftitle Write Settitle;
+    Property pieChart : TPieChartSpec Index 24 Read FpieChart Write SetpieChart;
+  end;
+  TChartSpecClass = Class of TChartSpec;
+  
+  { --------------------------------------------------------------------
+    TSourceAndDestination
+    --------------------------------------------------------------------}
+  
+  TSourceAndDestination = Class(TGoogleBaseObject)
+  Private
+    Fsource : TGridRange;
+    FfillLength : integer;
+    Fdimension : String;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure SetfillLength(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdimension(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property source : TGridRange Index 0 Read Fsource Write Setsource;
+    Property fillLength : integer Index 8 Read FfillLength Write SetfillLength;
+    Property dimension : String Index 16 Read Fdimension Write Setdimension;
+  end;
+  TSourceAndDestinationClass = Class of TSourceAndDestination;
+  
+  { --------------------------------------------------------------------
+    TConditionValue
+    --------------------------------------------------------------------}
+  
+  TConditionValue = Class(TGoogleBaseObject)
+  Private
+    FrelativeDate : String;
+    FuserEnteredValue : String;
+  Protected
+    //Property setters
+    Procedure SetrelativeDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetuserEnteredValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property relativeDate : String Index 0 Read FrelativeDate Write SetrelativeDate;
+    Property userEnteredValue : String Index 8 Read FuserEnteredValue Write SetuserEnteredValue;
+  end;
+  TConditionValueClass = Class of TConditionValue;
+  
+  { --------------------------------------------------------------------
+    TPasteDataRequest
+    --------------------------------------------------------------------}
+  
+  TPasteDataRequest = Class(TGoogleBaseObject)
+  Private
+    Fdata : String;
+    Fcoordinate : TGridCoordinate;
+    Fdelimiter : String;
+    F_type : String;
+    Fhtml : boolean;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcoordinate(AIndex : Integer; const AValue : TGridCoordinate); virtual;
+    Procedure Setdelimiter(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure Sethtml(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property data : String Index 0 Read Fdata Write Setdata;
+    Property coordinate : TGridCoordinate Index 8 Read Fcoordinate Write Setcoordinate;
+    Property delimiter : String Index 16 Read Fdelimiter Write Setdelimiter;
+    Property _type : String Index 24 Read F_type Write Set_type;
+    Property html : boolean Index 32 Read Fhtml Write Sethtml;
+  end;
+  TPasteDataRequestClass = Class of TPasteDataRequest;
+  
+  { --------------------------------------------------------------------
+    TFindReplaceRequest
+    --------------------------------------------------------------------}
+  
+  TFindReplaceRequest = Class(TGoogleBaseObject)
+  Private
+    Ffind : String;
+    Freplacement : String;
+    FsearchByRegex : boolean;
+    FsheetId : integer;
+    FallSheets : boolean;
+    FmatchCase : boolean;
+    FincludeFormulas : boolean;
+    Frange : TGridRange;
+    FmatchEntireCell : boolean;
+  Protected
+    //Property setters
+    Procedure Setfind(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setreplacement(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsearchByRegex(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetallSheets(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetmatchCase(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetincludeFormulas(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure SetmatchEntireCell(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property find : String Index 0 Read Ffind Write Setfind;
+    Property replacement : String Index 8 Read Freplacement Write Setreplacement;
+    Property searchByRegex : boolean Index 16 Read FsearchByRegex Write SetsearchByRegex;
+    Property sheetId : integer Index 24 Read FsheetId Write SetsheetId;
+    Property allSheets : boolean Index 32 Read FallSheets Write SetallSheets;
+    Property matchCase : boolean Index 40 Read FmatchCase Write SetmatchCase;
+    Property includeFormulas : boolean Index 48 Read FincludeFormulas Write SetincludeFormulas;
+    Property range : TGridRange Index 56 Read Frange Write Setrange;
+    Property matchEntireCell : boolean Index 64 Read FmatchEntireCell Write SetmatchEntireCell;
+  end;
+  TFindReplaceRequestClass = Class of TFindReplaceRequest;
+  
+  { --------------------------------------------------------------------
+    TSortSpec
+    --------------------------------------------------------------------}
+  
+  TSortSpec = Class(TGoogleBaseObject)
+  Private
+    FsortOrder : String;
+    FdimensionIndex : integer;
+  Protected
+    //Property setters
+    Procedure SetsortOrder(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdimensionIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sortOrder : String Index 0 Read FsortOrder Write SetsortOrder;
+    Property dimensionIndex : integer Index 8 Read FdimensionIndex Write SetdimensionIndex;
+  end;
+  TSortSpecClass = Class of TSortSpec;
+  
+  { --------------------------------------------------------------------
+    TCopySheetToAnotherSpreadsheetRequest
+    --------------------------------------------------------------------}
+  
+  TCopySheetToAnotherSpreadsheetRequest = Class(TGoogleBaseObject)
+  Private
+    FdestinationSpreadsheetId : String;
+  Protected
+    //Property setters
+    Procedure SetdestinationSpreadsheetId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property destinationSpreadsheetId : String Index 0 Read FdestinationSpreadsheetId Write SetdestinationSpreadsheetId;
+  end;
+  TCopySheetToAnotherSpreadsheetRequestClass = Class of TCopySheetToAnotherSpreadsheetRequest;
+  
+  { --------------------------------------------------------------------
+    TNumberFormat
+    --------------------------------------------------------------------}
+  
+  TNumberFormat = Class(TGoogleBaseObject)
+  Private
+    Fpattern : String;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setpattern(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property pattern : String Index 0 Read Fpattern Write Setpattern;
+    Property _type : String Index 8 Read F_type Write Set_type;
+  end;
+  TNumberFormatClass = Class of TNumberFormat;
+  
+  { --------------------------------------------------------------------
+    TUpdateDimensionPropertiesRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateDimensionPropertiesRequest = Class(TGoogleBaseObject)
+  Private
+    Ffields : String;
+    Frange : TDimensionRange;
+    Fproperties : TDimensionProperties;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TDimensionRange); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TDimensionProperties); virtual;
+  Public
+  Published
+    Property fields : String Index 0 Read Ffields Write Setfields;
+    Property range : TDimensionRange Index 8 Read Frange Write Setrange;
+    Property properties : TDimensionProperties Index 16 Read Fproperties Write Setproperties;
+  end;
+  TUpdateDimensionPropertiesRequestClass = Class of TUpdateDimensionPropertiesRequest;
+  
+  { --------------------------------------------------------------------
+    TEditors
+    --------------------------------------------------------------------}
+  
+  TEditors = Class(TGoogleBaseObject)
+  Private
+    Fusers : TStringArray;
+    Fgroups : TStringArray;
+    FdomainUsersCanEdit : boolean;
+  Protected
+    //Property setters
+    Procedure Setusers(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setgroups(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetdomainUsersCanEdit(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 users : TStringArray Index 0 Read Fusers Write Setusers;
+    Property groups : TStringArray Index 8 Read Fgroups Write Setgroups;
+    Property domainUsersCanEdit : boolean Index 16 Read FdomainUsersCanEdit Write SetdomainUsersCanEdit;
+  end;
+  TEditorsClass = Class of TEditors;
+  
+  { --------------------------------------------------------------------
+    TSpreadsheet
+    --------------------------------------------------------------------}
+  
+  TSpreadsheet = Class(TGoogleBaseObject)
+  Private
+    FspreadsheetId : String;
+    Fproperties : TSpreadsheetProperties;
+    Fsheets : TSpreadsheetTypesheetsArray;
+    FnamedRanges : TSpreadsheetTypenamedRangesArray;
+  Protected
+    //Property setters
+    Procedure SetspreadsheetId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSpreadsheetProperties); virtual;
+    Procedure Setsheets(AIndex : Integer; const AValue : TSpreadsheetTypesheetsArray); virtual;
+    Procedure SetnamedRanges(AIndex : Integer; const AValue : TSpreadsheetTypenamedRangesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property spreadsheetId : String Index 0 Read FspreadsheetId Write SetspreadsheetId;
+    Property properties : TSpreadsheetProperties Index 8 Read Fproperties Write Setproperties;
+    Property sheets : TSpreadsheetTypesheetsArray Index 16 Read Fsheets Write Setsheets;
+    Property namedRanges : TSpreadsheetTypenamedRangesArray Index 24 Read FnamedRanges Write SetnamedRanges;
+  end;
+  TSpreadsheetClass = Class of TSpreadsheet;
+  
+  { --------------------------------------------------------------------
+    TGridData
+    --------------------------------------------------------------------}
+  
+  TGridData = Class(TGoogleBaseObject)
+  Private
+    FcolumnMetadata : TGridDataTypecolumnMetadataArray;
+    FrowData : TGridDataTyperowDataArray;
+    FstartRow : integer;
+    FrowMetadata : TGridDataTyperowMetadataArray;
+    FstartColumn : integer;
+  Protected
+    //Property setters
+    Procedure SetcolumnMetadata(AIndex : Integer; const AValue : TGridDataTypecolumnMetadataArray); virtual;
+    Procedure SetrowData(AIndex : Integer; const AValue : TGridDataTyperowDataArray); virtual;
+    Procedure SetstartRow(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetrowMetadata(AIndex : Integer; const AValue : TGridDataTyperowMetadataArray); virtual;
+    Procedure SetstartColumn(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 columnMetadata : TGridDataTypecolumnMetadataArray Index 0 Read FcolumnMetadata Write SetcolumnMetadata;
+    Property rowData : TGridDataTyperowDataArray Index 8 Read FrowData Write SetrowData;
+    Property startRow : integer Index 16 Read FstartRow Write SetstartRow;
+    Property rowMetadata : TGridDataTyperowMetadataArray Index 24 Read FrowMetadata Write SetrowMetadata;
+    Property startColumn : integer Index 32 Read FstartColumn Write SetstartColumn;
+  end;
+  TGridDataClass = Class of TGridData;
+  
+  { --------------------------------------------------------------------
+    TPivotValue
+    --------------------------------------------------------------------}
+  
+  TPivotValue = Class(TGoogleBaseObject)
+  Private
+    Fformula : String;
+    FsourceColumnOffset : integer;
+    FsummarizeFunction : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setformula(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsourceColumnOffset(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsummarizeFunction(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property formula : String Index 0 Read Fformula Write Setformula;
+    Property sourceColumnOffset : integer Index 8 Read FsourceColumnOffset Write SetsourceColumnOffset;
+    Property summarizeFunction : String Index 16 Read FsummarizeFunction Write SetsummarizeFunction;
+    Property name : String Index 24 Read Fname Write Setname;
+  end;
+  TPivotValueClass = Class of TPivotValue;
+  
+  { --------------------------------------------------------------------
+    TBasicFilterTypecriteria
+    --------------------------------------------------------------------}
+  
+  TBasicFilterTypecriteria = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+    Class Function AllowAdditionalProperties : Boolean; override;
+  Published
+  end;
+  TBasicFilterTypecriteriaClass = Class of TBasicFilterTypecriteria;
+  
+  { --------------------------------------------------------------------
+    TBasicFilter
+    --------------------------------------------------------------------}
+  
+  TBasicFilter = Class(TGoogleBaseObject)
+  Private
+    Fcriteria : TBasicFilterTypecriteria;
+    Frange : TGridRange;
+    FsortSpecs : TBasicFilterTypesortSpecsArray;
+  Protected
+    //Property setters
+    Procedure Setcriteria(AIndex : Integer; const AValue : TBasicFilterTypecriteria); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure SetsortSpecs(AIndex : Integer; const AValue : TBasicFilterTypesortSpecsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property criteria : TBasicFilterTypecriteria Index 0 Read Fcriteria Write Setcriteria;
+    Property range : TGridRange Index 8 Read Frange Write Setrange;
+    Property sortSpecs : TBasicFilterTypesortSpecsArray Index 16 Read FsortSpecs Write SetsortSpecs;
+  end;
+  TBasicFilterClass = Class of TBasicFilter;
+  
+  { --------------------------------------------------------------------
+    TDuplicateSheetRequest
+    --------------------------------------------------------------------}
+  
+  TDuplicateSheetRequest = Class(TGoogleBaseObject)
+  Private
+    FsourceSheetId : integer;
+    FnewSheetId : integer;
+    FinsertSheetIndex : integer;
+    FnewSheetName : String;
+  Protected
+    //Property setters
+    Procedure SetsourceSheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnewSheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetinsertSheetIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetnewSheetName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sourceSheetId : integer Index 0 Read FsourceSheetId Write SetsourceSheetId;
+    Property newSheetId : integer Index 8 Read FnewSheetId Write SetnewSheetId;
+    Property insertSheetIndex : integer Index 16 Read FinsertSheetIndex Write SetinsertSheetIndex;
+    Property newSheetName : String Index 24 Read FnewSheetName Write SetnewSheetName;
+  end;
+  TDuplicateSheetRequestClass = Class of TDuplicateSheetRequest;
+  
+  { --------------------------------------------------------------------
+    TAddFilterViewResponse
+    --------------------------------------------------------------------}
+  
+  TAddFilterViewResponse = Class(TGoogleBaseObject)
+  Private
+    Ffilter : TFilterView;
+  Protected
+    //Property setters
+    Procedure Setfilter(AIndex : Integer; const AValue : TFilterView); virtual;
+  Public
+  Published
+    Property filter : TFilterView Index 0 Read Ffilter Write Setfilter;
+  end;
+  TAddFilterViewResponseClass = Class of TAddFilterViewResponse;
+  
+  { --------------------------------------------------------------------
+    TDuplicateSheetResponse
+    --------------------------------------------------------------------}
+  
+  TDuplicateSheetResponse = Class(TGoogleBaseObject)
+  Private
+    Fproperties : TSheetProperties;
+  Protected
+    //Property setters
+    Procedure Setproperties(AIndex : Integer; const AValue : TSheetProperties); virtual;
+  Public
+  Published
+    Property properties : TSheetProperties Index 0 Read Fproperties Write Setproperties;
+  end;
+  TDuplicateSheetResponseClass = Class of TDuplicateSheetResponse;
+  
+  { --------------------------------------------------------------------
+    TBorder
+    --------------------------------------------------------------------}
+  
+  TBorder = Class(TGoogleBaseObject)
+  Private
+    Fstyle : String;
+    Fwidth : integer;
+    Fcolor : TColor;
+  Protected
+    //Property setters
+    Procedure Setstyle(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setcolor(AIndex : Integer; const AValue : TColor); virtual;
+  Public
+  Published
+    Property style : String Index 0 Read Fstyle Write Setstyle;
+    Property width : integer Index 8 Read Fwidth Write Setwidth;
+    Property color : TColor Index 16 Read Fcolor Write Setcolor;
+  end;
+  TBorderClass = Class of TBorder;
+  
+  { --------------------------------------------------------------------
+    TAddNamedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TAddNamedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    FnamedRange : TNamedRange;
+  Protected
+    //Property setters
+    Procedure SetnamedRange(AIndex : Integer; const AValue : TNamedRange); virtual;
+  Public
+  Published
+    Property namedRange : TNamedRange Index 0 Read FnamedRange Write SetnamedRange;
+  end;
+  TAddNamedRangeRequestClass = Class of TAddNamedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TAddChartResponse
+    --------------------------------------------------------------------}
+  
+  TAddChartResponse = Class(TGoogleBaseObject)
+  Private
+    Fchart : TEmbeddedChart;
+  Protected
+    //Property setters
+    Procedure Setchart(AIndex : Integer; const AValue : TEmbeddedChart); virtual;
+  Public
+  Published
+    Property chart : TEmbeddedChart Index 0 Read Fchart Write Setchart;
+  end;
+  TAddChartResponseClass = Class of TAddChartResponse;
+  
+  { --------------------------------------------------------------------
+    TAppendCellsRequest
+    --------------------------------------------------------------------}
+  
+  TAppendCellsRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    Frows : TAppendCellsRequestTyperowsArray;
+    Ffields : String;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TAppendCellsRequestTyperowsArray); virtual;
+    Procedure Setfields(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 sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property rows : TAppendCellsRequestTyperowsArray Index 8 Read Frows Write Setrows;
+    Property fields : String Index 16 Read Ffields Write Setfields;
+  end;
+  TAppendCellsRequestClass = Class of TAppendCellsRequest;
+  
+  { --------------------------------------------------------------------
+    TRowData
+    --------------------------------------------------------------------}
+  
+  TRowData = Class(TGoogleBaseObject)
+  Private
+    Fvalues : TRowDataTypevaluesArray;
+  Protected
+    //Property setters
+    Procedure Setvalues(AIndex : Integer; const AValue : TRowDataTypevaluesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property values : TRowDataTypevaluesArray Index 0 Read Fvalues Write Setvalues;
+  end;
+  TRowDataClass = Class of TRowData;
+  
+  { --------------------------------------------------------------------
+    TBasicChartSeries
+    --------------------------------------------------------------------}
+  
+  TBasicChartSeries = Class(TGoogleBaseObject)
+  Private
+    Fseries : TChartData;
+    FtargetAxis : String;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setseries(AIndex : Integer; const AValue : TChartData); virtual;
+    Procedure SettargetAxis(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property series : TChartData Index 0 Read Fseries Write Setseries;
+    Property targetAxis : String Index 8 Read FtargetAxis Write SettargetAxis;
+    Property _type : String Index 16 Read F_type Write Set_type;
+  end;
+  TBasicChartSeriesClass = Class of TBasicChartSeries;
+  
+  { --------------------------------------------------------------------
+    TRepeatCellRequest
+    --------------------------------------------------------------------}
+  
+  TRepeatCellRequest = Class(TGoogleBaseObject)
+  Private
+    Fcell : TCellData;
+    Ffields : String;
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure Setcell(AIndex : Integer; const AValue : TCellData); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+  Public
+  Published
+    Property cell : TCellData Index 0 Read Fcell Write Setcell;
+    Property fields : String Index 8 Read Ffields Write Setfields;
+    Property range : TGridRange Index 16 Read Frange Write Setrange;
+  end;
+  TRepeatCellRequestClass = Class of TRepeatCellRequest;
+  
+  { --------------------------------------------------------------------
+    TBasicChartSpec
+    --------------------------------------------------------------------}
+  
+  TBasicChartSpec = Class(TGoogleBaseObject)
+  Private
+    FchartType : String;
+    Fdomains : TBasicChartSpecTypedomainsArray;
+    FheaderCount : integer;
+    Fseries : TBasicChartSpecTypeseriesArray;
+    FlegendPosition : String;
+    Faxis : TBasicChartSpecTypeaxisArray;
+  Protected
+    //Property setters
+    Procedure SetchartType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdomains(AIndex : Integer; const AValue : TBasicChartSpecTypedomainsArray); virtual;
+    Procedure SetheaderCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setseries(AIndex : Integer; const AValue : TBasicChartSpecTypeseriesArray); virtual;
+    Procedure SetlegendPosition(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setaxis(AIndex : Integer; const AValue : TBasicChartSpecTypeaxisArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property chartType : String Index 0 Read FchartType Write SetchartType;
+    Property domains : TBasicChartSpecTypedomainsArray Index 8 Read Fdomains Write Setdomains;
+    Property headerCount : integer Index 16 Read FheaderCount Write SetheaderCount;
+    Property series : TBasicChartSpecTypeseriesArray Index 24 Read Fseries Write Setseries;
+    Property legendPosition : String Index 32 Read FlegendPosition Write SetlegendPosition;
+    Property axis : TBasicChartSpecTypeaxisArray Index 40 Read Faxis Write Setaxis;
+  end;
+  TBasicChartSpecClass = Class of TBasicChartSpec;
+  
+  { --------------------------------------------------------------------
+    TNamedRange
+    --------------------------------------------------------------------}
+  
+  TNamedRange = Class(TGoogleBaseObject)
+  Private
+    FnamedRangeId : String;
+    Frange : TGridRange;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SetnamedRangeId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property namedRangeId : String Index 0 Read FnamedRangeId Write SetnamedRangeId;
+    Property range : TGridRange Index 8 Read Frange Write Setrange;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  TNamedRangeClass = Class of TNamedRange;
+  
+  { --------------------------------------------------------------------
+    TSetBasicFilterRequest
+    --------------------------------------------------------------------}
+  
+  TSetBasicFilterRequest = Class(TGoogleBaseObject)
+  Private
+    Ffilter : TBasicFilter;
+  Protected
+    //Property setters
+    Procedure Setfilter(AIndex : Integer; const AValue : TBasicFilter); virtual;
+  Public
+  Published
+    Property filter : TBasicFilter Index 0 Read Ffilter Write Setfilter;
+  end;
+  TSetBasicFilterRequestClass = Class of TSetBasicFilterRequest;
+  
+  { --------------------------------------------------------------------
+    TUpdateEmbeddedObjectPositionRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateEmbeddedObjectPositionRequest = Class(TGoogleBaseObject)
+  Private
+    FnewPosition : TEmbeddedObjectPosition;
+    FobjectId : integer;
+    Ffields : String;
+  Protected
+    //Property setters
+    Procedure SetnewPosition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); virtual;
+    Procedure SetobjectId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property newPosition : TEmbeddedObjectPosition Index 0 Read FnewPosition Write SetnewPosition;
+    Property objectId : integer Index 8 Read FobjectId Write SetobjectId;
+    Property fields : String Index 16 Read Ffields Write Setfields;
+  end;
+  TUpdateEmbeddedObjectPositionRequestClass = Class of TUpdateEmbeddedObjectPositionRequest;
+  
+  { --------------------------------------------------------------------
+    TAutoResizeDimensionsRequest
+    --------------------------------------------------------------------}
+  
+  TAutoResizeDimensionsRequest = Class(TGoogleBaseObject)
+  Private
+    Fdimensions : TDimensionRange;
+  Protected
+    //Property setters
+    Procedure Setdimensions(AIndex : Integer; const AValue : TDimensionRange); virtual;
+  Public
+  Published
+    Property dimensions : TDimensionRange Index 0 Read Fdimensions Write Setdimensions;
+  end;
+  TAutoResizeDimensionsRequestClass = Class of TAutoResizeDimensionsRequest;
+  
+  { --------------------------------------------------------------------
+    TDuplicateFilterViewResponse
+    --------------------------------------------------------------------}
+  
+  TDuplicateFilterViewResponse = Class(TGoogleBaseObject)
+  Private
+    Ffilter : TFilterView;
+  Protected
+    //Property setters
+    Procedure Setfilter(AIndex : Integer; const AValue : TFilterView); virtual;
+  Public
+  Published
+    Property filter : TFilterView Index 0 Read Ffilter Write Setfilter;
+  end;
+  TDuplicateFilterViewResponseClass = Class of TDuplicateFilterViewResponse;
+  
+  { --------------------------------------------------------------------
+    TPivotGroup
+    --------------------------------------------------------------------}
+  
+  TPivotGroup = Class(TGoogleBaseObject)
+  Private
+    FsortOrder : String;
+    FsourceColumnOffset : integer;
+    FshowTotals : boolean;
+    FvalueBucket : TPivotGroupSortValueBucket;
+    FvalueMetadata : TPivotGroupTypevalueMetadataArray;
+  Protected
+    //Property setters
+    Procedure SetsortOrder(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsourceColumnOffset(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetshowTotals(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetvalueBucket(AIndex : Integer; const AValue : TPivotGroupSortValueBucket); virtual;
+    Procedure SetvalueMetadata(AIndex : Integer; const AValue : TPivotGroupTypevalueMetadataArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property sortOrder : String Index 0 Read FsortOrder Write SetsortOrder;
+    Property sourceColumnOffset : integer Index 8 Read FsourceColumnOffset Write SetsourceColumnOffset;
+    Property showTotals : boolean Index 16 Read FshowTotals Write SetshowTotals;
+    Property valueBucket : TPivotGroupSortValueBucket Index 24 Read FvalueBucket Write SetvalueBucket;
+    Property valueMetadata : TPivotGroupTypevalueMetadataArray Index 32 Read FvalueMetadata Write SetvalueMetadata;
+  end;
+  TPivotGroupClass = Class of TPivotGroup;
+  
+  { --------------------------------------------------------------------
+    TGridRange
+    --------------------------------------------------------------------}
+  
+  TGridRange = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    FstartColumnIndex : integer;
+    FstartRowIndex : integer;
+    FendRowIndex : integer;
+    FendColumnIndex : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartColumnIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetstartRowIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetendRowIndex(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetendColumnIndex(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property startColumnIndex : integer Index 8 Read FstartColumnIndex Write SetstartColumnIndex;
+    Property startRowIndex : integer Index 16 Read FstartRowIndex Write SetstartRowIndex;
+    Property endRowIndex : integer Index 24 Read FendRowIndex Write SetendRowIndex;
+    Property endColumnIndex : integer Index 32 Read FendColumnIndex Write SetendColumnIndex;
+  end;
+  TGridRangeClass = Class of TGridRange;
+  
+  { --------------------------------------------------------------------
+    TDeleteSheetRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteSheetRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+  Protected
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+  end;
+  TDeleteSheetRequestClass = Class of TDeleteSheetRequest;
+  
+  { --------------------------------------------------------------------
+    TChartData
+    --------------------------------------------------------------------}
+  
+  TChartData = Class(TGoogleBaseObject)
+  Private
+    FsourceRange : TChartSourceRange;
+  Protected
+    //Property setters
+    Procedure SetsourceRange(AIndex : Integer; const AValue : TChartSourceRange); virtual;
+  Public
+  Published
+    Property sourceRange : TChartSourceRange Index 0 Read FsourceRange Write SetsourceRange;
+  end;
+  TChartDataClass = Class of TChartData;
+  
+  { --------------------------------------------------------------------
+    TSheet
+    --------------------------------------------------------------------}
+  
+  TSheet = Class(TGoogleBaseObject)
+  Private
+    Fproperties : TSheetProperties;
+    Fcharts : TSheetTypechartsArray;
+    FfilterViews : TSheetTypefilterViewsArray;
+    FconditionalFormats : TSheetTypeconditionalFormatsArray;
+    FprotectedRanges : TSheetTypeprotectedRangesArray;
+    FbasicFilter : TBasicFilter;
+    Fmerges : TSheetTypemergesArray;
+    Fdata : TSheetTypedataArray;
+  Protected
+    //Property setters
+    Procedure Setproperties(AIndex : Integer; const AValue : TSheetProperties); virtual;
+    Procedure Setcharts(AIndex : Integer; const AValue : TSheetTypechartsArray); virtual;
+    Procedure SetfilterViews(AIndex : Integer; const AValue : TSheetTypefilterViewsArray); virtual;
+    Procedure SetconditionalFormats(AIndex : Integer; const AValue : TSheetTypeconditionalFormatsArray); virtual;
+    Procedure SetprotectedRanges(AIndex : Integer; const AValue : TSheetTypeprotectedRangesArray); virtual;
+    Procedure SetbasicFilter(AIndex : Integer; const AValue : TBasicFilter); virtual;
+    Procedure Setmerges(AIndex : Integer; const AValue : TSheetTypemergesArray); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : TSheetTypedataArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property properties : TSheetProperties Index 0 Read Fproperties Write Setproperties;
+    Property charts : TSheetTypechartsArray Index 8 Read Fcharts Write Setcharts;
+    Property filterViews : TSheetTypefilterViewsArray Index 16 Read FfilterViews Write SetfilterViews;
+    Property conditionalFormats : TSheetTypeconditionalFormatsArray Index 24 Read FconditionalFormats Write SetconditionalFormats;
+    Property protectedRanges : TSheetTypeprotectedRangesArray Index 32 Read FprotectedRanges Write SetprotectedRanges;
+    Property basicFilter : TBasicFilter Index 40 Read FbasicFilter Write SetbasicFilter;
+    Property merges : TSheetTypemergesArray Index 48 Read Fmerges Write Setmerges;
+    Property data : TSheetTypedataArray Index 56 Read Fdata Write Setdata;
+  end;
+  TSheetClass = Class of TSheet;
+  
+  { --------------------------------------------------------------------
+    TCopyPasteRequest
+    --------------------------------------------------------------------}
+  
+  TCopyPasteRequest = Class(TGoogleBaseObject)
+  Private
+    FpasteType : String;
+    FpasteOrientation : String;
+    Fsource : TGridRange;
+    Fdestination : TGridRange;
+  Protected
+    //Property setters
+    Procedure SetpasteType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpasteOrientation(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : TGridRange); virtual;
+  Public
+  Published
+    Property pasteType : String Index 0 Read FpasteType Write SetpasteType;
+    Property pasteOrientation : String Index 8 Read FpasteOrientation Write SetpasteOrientation;
+    Property source : TGridRange Index 16 Read Fsource Write Setsource;
+    Property destination : TGridRange Index 24 Read Fdestination Write Setdestination;
+  end;
+  TCopyPasteRequestClass = Class of TCopyPasteRequest;
+  
+  { --------------------------------------------------------------------
+    TUpdateCellsRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateCellsRequest = Class(TGoogleBaseObject)
+  Private
+    Frows : TUpdateCellsRequestTyperowsArray;
+    Ffields : String;
+    Fstart : TGridCoordinate;
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure Setrows(AIndex : Integer; const AValue : TUpdateCellsRequestTyperowsArray); virtual;
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstart(AIndex : Integer; const AValue : TGridCoordinate); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property rows : TUpdateCellsRequestTyperowsArray Index 0 Read Frows Write Setrows;
+    Property fields : String Index 8 Read Ffields Write Setfields;
+    Property start : TGridCoordinate Index 16 Read Fstart Write Setstart;
+    Property range : TGridRange Index 24 Read Frange Write Setrange;
+  end;
+  TUpdateCellsRequestClass = Class of TUpdateCellsRequest;
+  
+  { --------------------------------------------------------------------
+    TExtendedValue
+    --------------------------------------------------------------------}
+  
+  TExtendedValue = Class(TGoogleBaseObject)
+  Private
+    FformulaValue : String;
+    FerrorValue : TErrorValue;
+    FboolValue : boolean;
+    FnumberValue : double;
+    FstringValue : String;
+  Protected
+    //Property setters
+    Procedure SetformulaValue(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorValue(AIndex : Integer; const AValue : TErrorValue); virtual;
+    Procedure SetboolValue(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnumberValue(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetstringValue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property formulaValue : String Index 0 Read FformulaValue Write SetformulaValue;
+    Property errorValue : TErrorValue Index 8 Read FerrorValue Write SeterrorValue;
+    Property boolValue : boolean Index 16 Read FboolValue Write SetboolValue;
+    Property numberValue : double Index 24 Read FnumberValue Write SetnumberValue;
+    Property stringValue : String Index 32 Read FstringValue Write SetstringValue;
+  end;
+  TExtendedValueClass = Class of TExtendedValue;
+  
+  { --------------------------------------------------------------------
+    TBatchUpdateSpreadsheetResponse
+    --------------------------------------------------------------------}
+  
+  TBatchUpdateSpreadsheetResponse = Class(TGoogleBaseObject)
+  Private
+    FspreadsheetId : String;
+    Freplies : TBatchUpdateSpreadsheetResponseTyperepliesArray;
+  Protected
+    //Property setters
+    Procedure SetspreadsheetId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setreplies(AIndex : Integer; const AValue : TBatchUpdateSpreadsheetResponseTyperepliesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property spreadsheetId : String Index 0 Read FspreadsheetId Write SetspreadsheetId;
+    Property replies : TBatchUpdateSpreadsheetResponseTyperepliesArray Index 8 Read Freplies Write Setreplies;
+  end;
+  TBatchUpdateSpreadsheetResponseClass = Class of TBatchUpdateSpreadsheetResponse;
+  
+  { --------------------------------------------------------------------
+    TGradientRule
+    --------------------------------------------------------------------}
+  
+  TGradientRule = Class(TGoogleBaseObject)
+  Private
+    Fmaxpoint : TInterpolationPoint;
+    Fmidpoint : TInterpolationPoint;
+    Fminpoint : TInterpolationPoint;
+  Protected
+    //Property setters
+    Procedure Setmaxpoint(AIndex : Integer; const AValue : TInterpolationPoint); virtual;
+    Procedure Setmidpoint(AIndex : Integer; const AValue : TInterpolationPoint); virtual;
+    Procedure Setminpoint(AIndex : Integer; const AValue : TInterpolationPoint); virtual;
+  Public
+  Published
+    Property maxpoint : TInterpolationPoint Index 0 Read Fmaxpoint Write Setmaxpoint;
+    Property midpoint : TInterpolationPoint Index 8 Read Fmidpoint Write Setmidpoint;
+    Property minpoint : TInterpolationPoint Index 16 Read Fminpoint Write Setminpoint;
+  end;
+  TGradientRuleClass = Class of TGradientRule;
+  
+  { --------------------------------------------------------------------
+    TCutPasteRequest
+    --------------------------------------------------------------------}
+  
+  TCutPasteRequest = Class(TGoogleBaseObject)
+  Private
+    FpasteType : String;
+    Fsource : TGridRange;
+    Fdestination : TGridCoordinate;
+  Protected
+    //Property setters
+    Procedure SetpasteType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsource(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : TGridCoordinate); virtual;
+  Public
+  Published
+    Property pasteType : String Index 0 Read FpasteType Write SetpasteType;
+    Property source : TGridRange Index 8 Read Fsource Write Setsource;
+    Property destination : TGridCoordinate Index 16 Read Fdestination Write Setdestination;
+  end;
+  TCutPasteRequestClass = Class of TCutPasteRequest;
+  
+  { --------------------------------------------------------------------
+    TOverlayPosition
+    --------------------------------------------------------------------}
+  
+  TOverlayPosition = Class(TGoogleBaseObject)
+  Private
+    FwidthPixels : integer;
+    FanchorCell : TGridCoordinate;
+    FoffsetXPixels : integer;
+    FheightPixels : integer;
+    FoffsetYPixels : integer;
+  Protected
+    //Property setters
+    Procedure SetwidthPixels(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetanchorCell(AIndex : Integer; const AValue : TGridCoordinate); virtual;
+    Procedure SetoffsetXPixels(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetheightPixels(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetoffsetYPixels(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property widthPixels : integer Index 0 Read FwidthPixels Write SetwidthPixels;
+    Property anchorCell : TGridCoordinate Index 8 Read FanchorCell Write SetanchorCell;
+    Property offsetXPixels : integer Index 16 Read FoffsetXPixels Write SetoffsetXPixels;
+    Property heightPixels : integer Index 24 Read FheightPixels Write SetheightPixels;
+    Property offsetYPixels : integer Index 32 Read FoffsetYPixels Write SetoffsetYPixels;
+  end;
+  TOverlayPositionClass = Class of TOverlayPosition;
+  
+  { --------------------------------------------------------------------
+    TAutoFillRequest
+    --------------------------------------------------------------------}
+  
+  TAutoFillRequest = Class(TGoogleBaseObject)
+  Private
+    FuseAlternateSeries : boolean;
+    Frange : TGridRange;
+    FsourceAndDestination : TSourceAndDestination;
+  Protected
+    //Property setters
+    Procedure SetuseAlternateSeries(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+    Procedure SetsourceAndDestination(AIndex : Integer; const AValue : TSourceAndDestination); virtual;
+  Public
+  Published
+    Property useAlternateSeries : boolean Index 0 Read FuseAlternateSeries Write SetuseAlternateSeries;
+    Property range : TGridRange Index 8 Read Frange Write Setrange;
+    Property sourceAndDestination : TSourceAndDestination Index 16 Read FsourceAndDestination Write SetsourceAndDestination;
+  end;
+  TAutoFillRequestClass = Class of TAutoFillRequest;
+  
+  { --------------------------------------------------------------------
+    TPieChartSpec
+    --------------------------------------------------------------------}
+  
+  TPieChartSpec = Class(TGoogleBaseObject)
+  Private
+    FlegendPosition : String;
+    Fseries : TChartData;
+    FpieHole : double;
+    FthreeDimensional : boolean;
+    Fdomain : TChartData;
+  Protected
+    //Property setters
+    Procedure SetlegendPosition(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setseries(AIndex : Integer; const AValue : TChartData); virtual;
+    Procedure SetpieHole(AIndex : Integer; const AValue : double); virtual;
+    Procedure SetthreeDimensional(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setdomain(AIndex : Integer; const AValue : TChartData); virtual;
+  Public
+  Published
+    Property legendPosition : String Index 0 Read FlegendPosition Write SetlegendPosition;
+    Property series : TChartData Index 8 Read Fseries Write Setseries;
+    Property pieHole : double Index 16 Read FpieHole Write SetpieHole;
+    Property threeDimensional : boolean Index 24 Read FthreeDimensional Write SetthreeDimensional;
+    Property domain : TChartData Index 32 Read Fdomain Write Setdomain;
+  end;
+  TPieChartSpecClass = Class of TPieChartSpec;
+  
+  { --------------------------------------------------------------------
+    TUpdateSheetPropertiesRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateSheetPropertiesRequest = Class(TGoogleBaseObject)
+  Private
+    Ffields : String;
+    Fproperties : TSheetProperties;
+  Protected
+    //Property setters
+    Procedure Setfields(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TSheetProperties); virtual;
+  Public
+  Published
+    Property fields : String Index 0 Read Ffields Write Setfields;
+    Property properties : TSheetProperties Index 8 Read Fproperties Write Setproperties;
+  end;
+  TUpdateSheetPropertiesRequestClass = Class of TUpdateSheetPropertiesRequest;
+  
+  { --------------------------------------------------------------------
+    TBooleanRule
+    --------------------------------------------------------------------}
+  
+  TBooleanRule = Class(TGoogleBaseObject)
+  Private
+    Fcondition : TBooleanCondition;
+    Fformat : TCellFormat;
+  Protected
+    //Property setters
+    Procedure Setcondition(AIndex : Integer; const AValue : TBooleanCondition); virtual;
+    Procedure Setformat(AIndex : Integer; const AValue : TCellFormat); virtual;
+  Public
+  Published
+    Property condition : TBooleanCondition Index 0 Read Fcondition Write Setcondition;
+    Property format : TCellFormat Index 8 Read Fformat Write Setformat;
+  end;
+  TBooleanRuleClass = Class of TBooleanRule;
+  
+  { --------------------------------------------------------------------
+    TAppendDimensionRequest
+    --------------------------------------------------------------------}
+  
+  TAppendDimensionRequest = Class(TGoogleBaseObject)
+  Private
+    FsheetId : integer;
+    F_length : integer;
+    Fdimension : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure SetsheetId(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Set_length(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setdimension(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property sheetId : integer Index 0 Read FsheetId Write SetsheetId;
+    Property _length : integer Index 8 Read F_length Write Set_length;
+    Property dimension : String Index 16 Read Fdimension Write Setdimension;
+  end;
+  TAppendDimensionRequestClass = Class of TAppendDimensionRequest;
+  
+  { --------------------------------------------------------------------
+    TAddFilterViewRequest
+    --------------------------------------------------------------------}
+  
+  TAddFilterViewRequest = Class(TGoogleBaseObject)
+  Private
+    Ffilter : TFilterView;
+  Protected
+    //Property setters
+    Procedure Setfilter(AIndex : Integer; const AValue : TFilterView); virtual;
+  Public
+  Published
+    Property filter : TFilterView Index 0 Read Ffilter Write Setfilter;
+  end;
+  TAddFilterViewRequestClass = Class of TAddFilterViewRequest;
+  
+  { --------------------------------------------------------------------
+    TGridProperties
+    --------------------------------------------------------------------}
+  
+  TGridProperties = Class(TGoogleBaseObject)
+  Private
+    FrowCount : integer;
+    FcolumnCount : integer;
+    FfrozenRowCount : integer;
+    FfrozenColumnCount : integer;
+    FhideGridlines : boolean;
+  Protected
+    //Property setters
+    Procedure SetrowCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetcolumnCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetfrozenRowCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetfrozenColumnCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SethideGridlines(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property rowCount : integer Index 0 Read FrowCount Write SetrowCount;
+    Property columnCount : integer Index 8 Read FcolumnCount Write SetcolumnCount;
+    Property frozenRowCount : integer Index 16 Read FfrozenRowCount Write SetfrozenRowCount;
+    Property frozenColumnCount : integer Index 24 Read FfrozenColumnCount Write SetfrozenColumnCount;
+    Property hideGridlines : boolean Index 32 Read FhideGridlines Write SethideGridlines;
+  end;
+  TGridPropertiesClass = Class of TGridProperties;
+  
+  { --------------------------------------------------------------------
+    TDeleteNamedRangeRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteNamedRangeRequest = Class(TGoogleBaseObject)
+  Private
+    FnamedRangeId : String;
+  Protected
+    //Property setters
+    Procedure SetnamedRangeId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property namedRangeId : String Index 0 Read FnamedRangeId Write SetnamedRangeId;
+  end;
+  TDeleteNamedRangeRequestClass = Class of TDeleteNamedRangeRequest;
+  
+  { --------------------------------------------------------------------
+    TAddChartRequest
+    --------------------------------------------------------------------}
+  
+  TAddChartRequest = Class(TGoogleBaseObject)
+  Private
+    Fchart : TEmbeddedChart;
+  Protected
+    //Property setters
+    Procedure Setchart(AIndex : Integer; const AValue : TEmbeddedChart); virtual;
+  Public
+  Published
+    Property chart : TEmbeddedChart Index 0 Read Fchart Write Setchart;
+  end;
+  TAddChartRequestClass = Class of TAddChartRequest;
+  
+  { --------------------------------------------------------------------
+    TSetDataValidationRequest
+    --------------------------------------------------------------------}
+  
+  TSetDataValidationRequest = Class(TGoogleBaseObject)
+  Private
+    Frule : TDataValidationRule;
+    Frange : TGridRange;
+  Protected
+    //Property setters
+    Procedure Setrule(AIndex : Integer; const AValue : TDataValidationRule); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TGridRange); virtual;
+  Public
+  Published
+    Property rule : TDataValidationRule Index 0 Read Frule Write Setrule;
+    Property range : TGridRange Index 8 Read Frange Write Setrange;
+  end;
+  TSetDataValidationRequestClass = Class of TSetDataValidationRequest;
+  
+  { --------------------------------------------------------------------
+    TRequest
+    --------------------------------------------------------------------}
+  
+  TRequest = Class(TGoogleBaseObject)
+  Private
+    FupdateEmbeddedObjectPosition : TUpdateEmbeddedObjectPositionRequest;
+    FdeleteNamedRange : TDeleteNamedRangeRequest;
+    FupdateNamedRange : TUpdateNamedRangeRequest;
+    FaddFilterView : TAddFilterViewRequest;
+    FupdateSpreadsheetProperties : TUpdateSpreadsheetPropertiesRequest;
+    FappendDimension : TAppendDimensionRequest;
+    FunmergeCells : TUnmergeCellsRequest;
+    FupdateProtectedRange : TUpdateProtectedRangeRequest;
+    FdeleteFilterView : TDeleteFilterViewRequest;
+    FclearBasicFilter : TClearBasicFilterRequest;
+    FsortRange : TSortRangeRequest;
+    FrepeatCell : TRepeatCellRequest;
+    FsetDataValidation : TSetDataValidationRequest;
+    FupdateCells : TUpdateCellsRequest;
+    FaddSheet : TAddSheetRequest;
+    FupdateFilterView : TUpdateFilterViewRequest;
+    FupdateSheetProperties : TUpdateSheetPropertiesRequest;
+    FupdateDimensionProperties : TUpdateDimensionPropertiesRequest;
+    FdeleteSheet : TDeleteSheetRequest;
+    FfindReplace : TFindReplaceRequest;
+    FaddProtectedRange : TAddProtectedRangeRequest;
+    FdeleteProtectedRange : TDeleteProtectedRangeRequest;
+    FupdateConditionalFormatRule : TUpdateConditionalFormatRuleRequest;
+    FsetBasicFilter : TSetBasicFilterRequest;
+    FmergeCells : TMergeCellsRequest;
+    FaddChart : TAddChartRequest;
+    FdeleteConditionalFormatRule : TDeleteConditionalFormatRuleRequest;
+    FupdateChartSpec : TUpdateChartSpecRequest;
+    FdeleteDimension : TDeleteDimensionRequest;
+    FdeleteEmbeddedObject : TDeleteEmbeddedObjectRequest;
+    FpasteData : TPasteDataRequest;
+    FaddConditionalFormatRule : TAddConditionalFormatRuleRequest;
+    FupdateBorders : TUpdateBordersRequest;
+    FautoResizeDimensions : TAutoResizeDimensionsRequest;
+    FduplicateSheet : TDuplicateSheetRequest;
+    FduplicateFilterView : TDuplicateFilterViewRequest;
+    FcutPaste : TCutPasteRequest;
+    FappendCells : TAppendCellsRequest;
+    FaddNamedRange : TAddNamedRangeRequest;
+    FautoFill : TAutoFillRequest;
+    FmoveDimension : TMoveDimensionRequest;
+    FtextToColumns : TTextToColumnsRequest;
+    FinsertDimension : TInsertDimensionRequest;
+    FcopyPaste : TCopyPasteRequest;
+  Protected
+    //Property setters
+    Procedure SetupdateEmbeddedObjectPosition(AIndex : Integer; const AValue : TUpdateEmbeddedObjectPositionRequest); virtual;
+    Procedure SetdeleteNamedRange(AIndex : Integer; const AValue : TDeleteNamedRangeRequest); virtual;
+    Procedure SetupdateNamedRange(AIndex : Integer; const AValue : TUpdateNamedRangeRequest); virtual;
+    Procedure SetaddFilterView(AIndex : Integer; const AValue : TAddFilterViewRequest); virtual;
+    Procedure SetupdateSpreadsheetProperties(AIndex : Integer; const AValue : TUpdateSpreadsheetPropertiesRequest); virtual;
+    Procedure SetappendDimension(AIndex : Integer; const AValue : TAppendDimensionRequest); virtual;
+    Procedure SetunmergeCells(AIndex : Integer; const AValue : TUnmergeCellsRequest); virtual;
+    Procedure SetupdateProtectedRange(AIndex : Integer; const AValue : TUpdateProtectedRangeRequest); virtual;
+    Procedure SetdeleteFilterView(AIndex : Integer; const AValue : TDeleteFilterViewRequest); virtual;
+    Procedure SetclearBasicFilter(AIndex : Integer; const AValue : TClearBasicFilterRequest); virtual;
+    Procedure SetsortRange(AIndex : Integer; const AValue : TSortRangeRequest); virtual;
+    Procedure SetrepeatCell(AIndex : Integer; const AValue : TRepeatCellRequest); virtual;
+    Procedure SetsetDataValidation(AIndex : Integer; const AValue : TSetDataValidationRequest); virtual;
+    Procedure SetupdateCells(AIndex : Integer; const AValue : TUpdateCellsRequest); virtual;
+    Procedure SetaddSheet(AIndex : Integer; const AValue : TAddSheetRequest); virtual;
+    Procedure SetupdateFilterView(AIndex : Integer; const AValue : TUpdateFilterViewRequest); virtual;
+    Procedure SetupdateSheetProperties(AIndex : Integer; const AValue : TUpdateSheetPropertiesRequest); virtual;
+    Procedure SetupdateDimensionProperties(AIndex : Integer; const AValue : TUpdateDimensionPropertiesRequest); virtual;
+    Procedure SetdeleteSheet(AIndex : Integer; const AValue : TDeleteSheetRequest); virtual;
+    Procedure SetfindReplace(AIndex : Integer; const AValue : TFindReplaceRequest); virtual;
+    Procedure SetaddProtectedRange(AIndex : Integer; const AValue : TAddProtectedRangeRequest); virtual;
+    Procedure SetdeleteProtectedRange(AIndex : Integer; const AValue : TDeleteProtectedRangeRequest); virtual;
+    Procedure SetupdateConditionalFormatRule(AIndex : Integer; const AValue : TUpdateConditionalFormatRuleRequest); virtual;
+    Procedure SetsetBasicFilter(AIndex : Integer; const AValue : TSetBasicFilterRequest); virtual;
+    Procedure SetmergeCells(AIndex : Integer; const AValue : TMergeCellsRequest); virtual;
+    Procedure SetaddChart(AIndex : Integer; const AValue : TAddChartRequest); virtual;
+    Procedure SetdeleteConditionalFormatRule(AIndex : Integer; const AValue : TDeleteConditionalFormatRuleRequest); virtual;
+    Procedure SetupdateChartSpec(AIndex : Integer; const AValue : TUpdateChartSpecRequest); virtual;
+    Procedure SetdeleteDimension(AIndex : Integer; const AValue : TDeleteDimensionRequest); virtual;
+    Procedure SetdeleteEmbeddedObject(AIndex : Integer; const AValue : TDeleteEmbeddedObjectRequest); virtual;
+    Procedure SetpasteData(AIndex : Integer; const AValue : TPasteDataRequest); virtual;
+    Procedure SetaddConditionalFormatRule(AIndex : Integer; const AValue : TAddConditionalFormatRuleRequest); virtual;
+    Procedure SetupdateBorders(AIndex : Integer; const AValue : TUpdateBordersRequest); virtual;
+    Procedure SetautoResizeDimensions(AIndex : Integer; const AValue : TAutoResizeDimensionsRequest); virtual;
+    Procedure SetduplicateSheet(AIndex : Integer; const AValue : TDuplicateSheetRequest); virtual;
+    Procedure SetduplicateFilterView(AIndex : Integer; const AValue : TDuplicateFilterViewRequest); virtual;
+    Procedure SetcutPaste(AIndex : Integer; const AValue : TCutPasteRequest); virtual;
+    Procedure SetappendCells(AIndex : Integer; const AValue : TAppendCellsRequest); virtual;
+    Procedure SetaddNamedRange(AIndex : Integer; const AValue : TAddNamedRangeRequest); virtual;
+    Procedure SetautoFill(AIndex : Integer; const AValue : TAutoFillRequest); virtual;
+    Procedure SetmoveDimension(AIndex : Integer; const AValue : TMoveDimensionRequest); virtual;
+    Procedure SettextToColumns(AIndex : Integer; const AValue : TTextToColumnsRequest); virtual;
+    Procedure SetinsertDimension(AIndex : Integer; const AValue : TInsertDimensionRequest); virtual;
+    Procedure SetcopyPaste(AIndex : Integer; const AValue : TCopyPasteRequest); virtual;
+  Public
+  Published
+    Property updateEmbeddedObjectPosition : TUpdateEmbeddedObjectPositionRequest Index 0 Read FupdateEmbeddedObjectPosition Write SetupdateEmbeddedObjectPosition;
+    Property deleteNamedRange : TDeleteNamedRangeRequest Index 8 Read FdeleteNamedRange Write SetdeleteNamedRange;
+    Property updateNamedRange : TUpdateNamedRangeRequest Index 16 Read FupdateNamedRange Write SetupdateNamedRange;
+    Property addFilterView : TAddFilterViewRequest Index 24 Read FaddFilterView Write SetaddFilterView;
+    Property updateSpreadsheetProperties : TUpdateSpreadsheetPropertiesRequest Index 32 Read FupdateSpreadsheetProperties Write SetupdateSpreadsheetProperties;
+    Property appendDimension : TAppendDimensionRequest Index 40 Read FappendDimension Write SetappendDimension;
+    Property unmergeCells : TUnmergeCellsRequest Index 48 Read FunmergeCells Write SetunmergeCells;
+    Property updateProtectedRange : TUpdateProtectedRangeRequest Index 56 Read FupdateProtectedRange Write SetupdateProtectedRange;
+    Property deleteFilterView : TDeleteFilterViewRequest Index 64 Read FdeleteFilterView Write SetdeleteFilterView;
+    Property clearBasicFilter : TClearBasicFilterRequest Index 72 Read FclearBasicFilter Write SetclearBasicFilter;
+    Property sortRange : TSortRangeRequest Index 80 Read FsortRange Write SetsortRange;
+    Property repeatCell : TRepeatCellRequest Index 88 Read FrepeatCell Write SetrepeatCell;
+    Property setDataValidation : TSetDataValidationRequest Index 96 Read FsetDataValidation Write SetsetDataValidation;
+    Property updateCells : TUpdateCellsRequest Index 104 Read FupdateCells Write SetupdateCells;
+    Property addSheet : TAddSheetRequest Index 112 Read FaddSheet Write SetaddSheet;
+    Property updateFilterView : TUpdateFilterViewRequest Index 120 Read FupdateFilterView Write SetupdateFilterView;
+    Property updateSheetProperties : TUpdateSheetPropertiesRequest Index 128 Read FupdateSheetProperties Write SetupdateSheetProperties;
+    Property updateDimensionProperties : TUpdateDimensionPropertiesRequest Index 136 Read FupdateDimensionProperties Write SetupdateDimensionProperties;
+    Property deleteSheet : TDeleteSheetRequest Index 144 Read FdeleteSheet Write SetdeleteSheet;
+    Property findReplace : TFindReplaceRequest Index 152 Read FfindReplace Write SetfindReplace;
+    Property addProtectedRange : TAddProtectedRangeRequest Index 160 Read FaddProtectedRange Write SetaddProtectedRange;
+    Property deleteProtectedRange : TDeleteProtectedRangeRequest Index 168 Read FdeleteProtectedRange Write SetdeleteProtectedRange;
+    Property updateConditionalFormatRule : TUpdateConditionalFormatRuleRequest Index 176 Read FupdateConditionalFormatRule Write SetupdateConditionalFormatRule;
+    Property setBasicFilter : TSetBasicFilterRequest Index 184 Read FsetBasicFilter Write SetsetBasicFilter;
+    Property mergeCells : TMergeCellsRequest Index 192 Read FmergeCells Write SetmergeCells;
+    Property addChart : TAddChartRequest Index 200 Read FaddChart Write SetaddChart;
+    Property deleteConditionalFormatRule : TDeleteConditionalFormatRuleRequest Index 208 Read FdeleteConditionalFormatRule Write SetdeleteConditionalFormatRule;
+    Property updateChartSpec : TUpdateChartSpecRequest Index 216 Read FupdateChartSpec Write SetupdateChartSpec;
+    Property deleteDimension : TDeleteDimensionRequest Index 224 Read FdeleteDimension Write SetdeleteDimension;
+    Property deleteEmbeddedObject : TDeleteEmbeddedObjectRequest Index 232 Read FdeleteEmbeddedObject Write SetdeleteEmbeddedObject;
+    Property pasteData : TPasteDataRequest Index 240 Read FpasteData Write SetpasteData;
+    Property addConditionalFormatRule : TAddConditionalFormatRuleRequest Index 248 Read FaddConditionalFormatRule Write SetaddConditionalFormatRule;
+    Property updateBorders : TUpdateBordersRequest Index 256 Read FupdateBorders Write SetupdateBorders;
+    Property autoResizeDimensions : TAutoResizeDimensionsRequest Index 264 Read FautoResizeDimensions Write SetautoResizeDimensions;
+    Property duplicateSheet : TDuplicateSheetRequest Index 272 Read FduplicateSheet Write SetduplicateSheet;
+    Property duplicateFilterView : TDuplicateFilterViewRequest Index 280 Read FduplicateFilterView Write SetduplicateFilterView;
+    Property cutPaste : TCutPasteRequest Index 288 Read FcutPaste Write SetcutPaste;
+    Property appendCells : TAppendCellsRequest Index 296 Read FappendCells Write SetappendCells;
+    Property addNamedRange : TAddNamedRangeRequest Index 304 Read FaddNamedRange Write SetaddNamedRange;
+    Property autoFill : TAutoFillRequest Index 312 Read FautoFill Write SetautoFill;
+    Property moveDimension : TMoveDimensionRequest Index 320 Read FmoveDimension Write SetmoveDimension;
+    Property textToColumns : TTextToColumnsRequest Index 328 Read FtextToColumns Write SettextToColumns;
+    Property insertDimension : TInsertDimensionRequest Index 336 Read FinsertDimension Write SetinsertDimension;
+    Property copyPaste : TCopyPasteRequest Index 344 Read FcopyPaste Write SetcopyPaste;
+  end;
+  TRequestClass = Class of TRequest;
+  
+  { --------------------------------------------------------------------
+    TBatchGetValuesResponse
+    --------------------------------------------------------------------}
+  
+  TBatchGetValuesResponse = Class(TGoogleBaseObject)
+  Private
+    FvalueRanges : TBatchGetValuesResponseTypevalueRangesArray;
+    FspreadsheetId : String;
+  Protected
+    //Property setters
+    Procedure SetvalueRanges(AIndex : Integer; const AValue : TBatchGetValuesResponseTypevalueRangesArray); virtual;
+    Procedure SetspreadsheetId(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 valueRanges : TBatchGetValuesResponseTypevalueRangesArray Index 0 Read FvalueRanges Write SetvalueRanges;
+    Property spreadsheetId : String Index 8 Read FspreadsheetId Write SetspreadsheetId;
+  end;
+  TBatchGetValuesResponseClass = Class of TBatchGetValuesResponse;
+  
+  { --------------------------------------------------------------------
+    TInsertDimensionRequest
+    --------------------------------------------------------------------}
+  
+  TInsertDimensionRequest = Class(TGoogleBaseObject)
+  Private
+    FinheritFromBefore : boolean;
+    Frange : TDimensionRange;
+  Protected
+    //Property setters
+    Procedure SetinheritFromBefore(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setrange(AIndex : Integer; const AValue : TDimensionRange); virtual;
+  Public
+  Published
+    Property inheritFromBefore : boolean Index 0 Read FinheritFromBefore Write SetinheritFromBefore;
+    Property range : TDimensionRange Index 8 Read Frange Write Setrange;
+  end;
+  TInsertDimensionRequestClass = Class of TInsertDimensionRequest;
+  
+  { --------------------------------------------------------------------
+    TDeleteEmbeddedObjectRequest
+    --------------------------------------------------------------------}
+  
+  TDeleteEmbeddedObjectRequest = Class(TGoogleBaseObject)
+  Private
+    FobjectId : integer;
+  Protected
+    //Property setters
+    Procedure SetobjectId(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property objectId : integer Index 0 Read FobjectId Write SetobjectId;
+  end;
+  TDeleteEmbeddedObjectRequestClass = Class of TDeleteEmbeddedObjectRequest;
+  
+  { --------------------------------------------------------------------
+    TDeleteConditionalFormatRuleResponse
+    --------------------------------------------------------------------}
+  
+  TDeleteConditionalFormatRuleResponse = Class(TGoogleBaseObject)
+  Private
+    Frule : TConditionalFormatRule;
+  Protected
+    //Property setters
+    Procedure Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); virtual;
+  Public
+  Published
+    Property rule : TConditionalFormatRule Index 0 Read Frule Write Setrule;
+  end;
+  TDeleteConditionalFormatRuleResponseClass = Class of TDeleteConditionalFormatRuleResponse;
+  
+  { --------------------------------------------------------------------
+    TSpreadsheetsValuesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TSpreadsheetsValuesResource, method Update
+  
+  TSpreadsheetsValuesUpdateOptions = Record
+    valueInputOption : String;
+  end;
+  
+  
+  //Optional query Options for TSpreadsheetsValuesResource, method Get
+  
+  TSpreadsheetsValuesGetOptions = Record
+    valueRenderOption : String;
+    dateTimeRenderOption : String;
+    majorDimension : String;
+  end;
+  
+  
+  //Optional query Options for TSpreadsheetsValuesResource, method BatchGet
+  
+  TSpreadsheetsValuesBatchGetOptions = Record
+    ranges : String;
+    valueRenderOption : String;
+    dateTimeRenderOption : String;
+    majorDimension : String;
+  end;
+  
+  TSpreadsheetsValuesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Update(spreadsheetId: string; range: string; aValueRange : TValueRange; AQuery : string  = '') : TUpdateValuesResponse;
+    Function Update(spreadsheetId: string; range: string; aValueRange : TValueRange; AQuery : TSpreadsheetsValuesupdateOptions) : TUpdateValuesResponse;
+    Function Get(spreadsheetId: string; range: string; AQuery : string  = '') : TValueRange;
+    Function Get(spreadsheetId: string; range: string; AQuery : TSpreadsheetsValuesgetOptions) : TValueRange;
+    Function BatchGet(spreadsheetId: string; AQuery : string  = '') : TBatchGetValuesResponse;
+    Function BatchGet(spreadsheetId: string; AQuery : TSpreadsheetsValuesbatchGetOptions) : TBatchGetValuesResponse;
+    Function BatchUpdate(spreadsheetId: string; aBatchUpdateValuesRequest : TBatchUpdateValuesRequest) : TBatchUpdateValuesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TSpreadsheetsSheetsResource
+    --------------------------------------------------------------------}
+  
+  TSpreadsheetsSheetsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function CopyTo(sheetId: integer; spreadsheetId: string; aCopySheetToAnotherSpreadsheetRequest : TCopySheetToAnotherSpreadsheetRequest) : TSheetProperties;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TSpreadsheetsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TSpreadsheetsResource, method Get
+  
+  TSpreadsheetsGetOptions = Record
+    ranges : String;
+    includeGridData : boolean;
+  end;
+  
+  TSpreadsheetsResource = Class(TGoogleResource)
+  Private
+    FValuesInstance : TSpreadsheetsValuesResource;
+    FSheetsInstance : TSpreadsheetsSheetsResource;
+    Function GetValuesInstance : TSpreadsheetsValuesResource;virtual;
+    Function GetSheetsInstance : TSpreadsheetsSheetsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(aSpreadsheet : TSpreadsheet) : TSpreadsheet;overload;
+    Function Get(spreadsheetId: string; AQuery : string  = '') : TSpreadsheet;
+    Function Get(spreadsheetId: string; AQuery : TSpreadsheetsgetOptions) : TSpreadsheet;
+    Function BatchUpdate(spreadsheetId: string; aBatchUpdateSpreadsheetRequest : TBatchUpdateSpreadsheetRequest) : TBatchUpdateSpreadsheetResponse;
+    Function CreateValuesResource(AOwner : TComponent) : TSpreadsheetsValuesResource;virtual;overload;
+    Function CreateValuesResource : TSpreadsheetsValuesResource;virtual;overload;
+    Function CreateSheetsResource(AOwner : TComponent) : TSpreadsheetsSheetsResource;virtual;overload;
+    Function CreateSheetsResource : TSpreadsheetsSheetsResource;virtual;overload;
+    Property ValuesResource : TSpreadsheetsValuesResource Read GetValuesInstance;
+    Property SheetsResource : TSpreadsheetsSheetsResource Read GetSheetsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TSheetsAPI
+    --------------------------------------------------------------------}
+  
+  TSheetsAPI = Class(TGoogleAPI)
+  Private
+    FSpreadsheetsValuesInstance : TSpreadsheetsValuesResource;
+    FSpreadsheetsSheetsInstance : TSpreadsheetsSheetsResource;
+    FSpreadsheetsInstance : TSpreadsheetsResource;
+    Function GetSpreadsheetsValuesInstance : TSpreadsheetsValuesResource;virtual;
+    Function GetSpreadsheetsSheetsInstance : TSpreadsheetsSheetsResource;virtual;
+    Function GetSpreadsheetsInstance : TSpreadsheetsResource;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 CreateSpreadsheetsValuesResource(AOwner : TComponent) : TSpreadsheetsValuesResource;virtual;overload;
+    Function CreateSpreadsheetsValuesResource : TSpreadsheetsValuesResource;virtual;overload;
+    Function CreateSpreadsheetsSheetsResource(AOwner : TComponent) : TSpreadsheetsSheetsResource;virtual;overload;
+    Function CreateSpreadsheetsSheetsResource : TSpreadsheetsSheetsResource;virtual;overload;
+    Function CreateSpreadsheetsResource(AOwner : TComponent) : TSpreadsheetsResource;virtual;overload;
+    Function CreateSpreadsheetsResource : TSpreadsheetsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property SpreadsheetsValuesResource : TSpreadsheetsValuesResource Read GetSpreadsheetsValuesInstance;
+    Property SpreadsheetsSheetsResource : TSpreadsheetsSheetsResource Read GetSpreadsheetsSheetsInstance;
+    Property SpreadsheetsResource : TSpreadsheetsResource Read GetSpreadsheetsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAddNamedRangeResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAddNamedRangeResponse.SetnamedRange(AIndex : Integer; const AValue : TNamedRange); 
+
+begin
+  If (FnamedRange=AValue) then exit;
+  FnamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateProtectedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateProtectedRangeRequest.SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); 
+
+begin
+  If (FprotectedRange=AValue) then exit;
+  FprotectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateProtectedRangeRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPadding
+  --------------------------------------------------------------------}
+
+
+Procedure TPadding.Setright(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fright=AValue) then exit;
+  Fright:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPadding.Setleft(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fleft=AValue) then exit;
+  Fleft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPadding.Settop(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Ftop=AValue) then exit;
+  Ftop:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPadding.Setbottom(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fbottom=AValue) then exit;
+  Fbottom:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMergeCellsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TMergeCellsRequest.SetmergeType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmergeType=AValue) then exit;
+  FmergeType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMergeCellsRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddSheetResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAddSheetResponse.Setproperties(AIndex : Integer; const AValue : TSheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotGroupValueMetadata
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotGroupValueMetadata.Setvalue(AIndex : Integer; const AValue : TExtendedValue); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroupValueMetadata.Setcollapsed(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fcollapsed=AValue) then exit;
+  Fcollapsed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateEmbeddedObjectPositionResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateEmbeddedObjectPositionResponse.Setposition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateConditionalFormatRuleRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateConditionalFormatRuleRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleRequest.Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); 
+
+begin
+  If (Frule=AValue) then exit;
+  Frule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleRequest.Setindex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Findex=AValue) then exit;
+  Findex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleRequest.SetnewIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnewIndex=AValue) then exit;
+  FnewIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTextFormat
+  --------------------------------------------------------------------}
+
+
+Procedure TTextFormat.Setbold(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fbold=AValue) then exit;
+  Fbold:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.Setitalic(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fitalic=AValue) then exit;
+  Fitalic:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.SetforegroundColor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (FforegroundColor=AValue) then exit;
+  FforegroundColor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.SetfontFamily(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfontFamily=AValue) then exit;
+  FfontFamily:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.Setstrikethrough(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fstrikethrough=AValue) then exit;
+  Fstrikethrough:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.SetfontSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfontSize=AValue) then exit;
+  FfontSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormat.Setunderline(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Funderline=AValue) then exit;
+  Funderline:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateChartSpecRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateChartSpecRequest.SetchartId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FchartId=AValue) then exit;
+  FchartId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateChartSpecRequest.Setspec(AIndex : Integer; const AValue : TChartSpec); 
+
+begin
+  If (Fspec=AValue) then exit;
+  Fspec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGridCoordinate
+  --------------------------------------------------------------------}
+
+
+Procedure TGridCoordinate.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridCoordinate.SetrowIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrowIndex=AValue) then exit;
+  FrowIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridCoordinate.SetcolumnIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FcolumnIndex=AValue) then exit;
+  FcolumnIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteFilterViewRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteFilterViewRequest.SetfilterId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfilterId=AValue) then exit;
+  FfilterId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchUpdateValuesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchUpdateValuesResponse.SettotalUpdatedSheets(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalUpdatedSheets=AValue) then exit;
+  FtotalUpdatedSheets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesResponse.SettotalUpdatedColumns(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalUpdatedColumns=AValue) then exit;
+  FtotalUpdatedColumns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesResponse.Setresponses(AIndex : Integer; const AValue : TBatchUpdateValuesResponseTyperesponsesArray); 
+
+begin
+  If (Fresponses=AValue) then exit;
+  Fresponses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesResponse.SettotalUpdatedCells(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalUpdatedCells=AValue) then exit;
+  FtotalUpdatedCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesResponse.SetspreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspreadsheetId=AValue) then exit;
+  FspreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesResponse.SettotalUpdatedRows(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalUpdatedRows=AValue) then exit;
+  FtotalUpdatedRows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchUpdateValuesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'responses' : SetLength(Fresponses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateNamedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateNamedRangeRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateNamedRangeRequest.SetnamedRange(AIndex : Integer; const AValue : TNamedRange); 
+
+begin
+  If (FnamedRange=AValue) then exit;
+  FnamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateValuesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateValuesResponse.SetupdatedRange(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdatedRange=AValue) then exit;
+  FupdatedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateValuesResponse.SetupdatedColumns(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FupdatedColumns=AValue) then exit;
+  FupdatedColumns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateValuesResponse.SetspreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspreadsheetId=AValue) then exit;
+  FspreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateValuesResponse.SetupdatedRows(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FupdatedRows=AValue) then exit;
+  FupdatedRows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateValuesResponse.SetupdatedCells(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FupdatedCells=AValue) then exit;
+  FupdatedCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSpreadsheetProperties
+  --------------------------------------------------------------------}
+
+
+Procedure TSpreadsheetProperties.SettimeZone(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtimeZone=AValue) then exit;
+  FtimeZone:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheetProperties.SetautoRecalc(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FautoRecalc=AValue) then exit;
+  FautoRecalc:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheetProperties.Setlocale(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocale=AValue) then exit;
+  Flocale:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheetProperties.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheetProperties.SetdefaultFormat(AIndex : Integer; const AValue : TCellFormat); 
+
+begin
+  If (FdefaultFormat=AValue) then exit;
+  FdefaultFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCellData
+  --------------------------------------------------------------------}
+
+
+Procedure TCellData.Sethyperlink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fhyperlink=AValue) then exit;
+  Fhyperlink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SeteffectiveFormat(AIndex : Integer; const AValue : TCellFormat); 
+
+begin
+  If (FeffectiveFormat=AValue) then exit;
+  FeffectiveFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.Setnote(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fnote=AValue) then exit;
+  Fnote:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SetformattedValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformattedValue=AValue) then exit;
+  FformattedValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SetuserEnteredValue(AIndex : Integer; const AValue : TExtendedValue); 
+
+begin
+  If (FuserEnteredValue=AValue) then exit;
+  FuserEnteredValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SetdataValidation(AIndex : Integer; const AValue : TDataValidationRule); 
+
+begin
+  If (FdataValidation=AValue) then exit;
+  FdataValidation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SetuserEnteredFormat(AIndex : Integer; const AValue : TCellFormat); 
+
+begin
+  If (FuserEnteredFormat=AValue) then exit;
+  FuserEnteredFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SetpivotTable(AIndex : Integer; const AValue : TPivotTable); 
+
+begin
+  If (FpivotTable=AValue) then exit;
+  FpivotTable:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SettextFormatRuns(AIndex : Integer; const AValue : TCellDataTypetextFormatRunsArray); 
+
+begin
+  If (FtextFormatRuns=AValue) then exit;
+  FtextFormatRuns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellData.SeteffectiveValue(AIndex : Integer; const AValue : TExtendedValue); 
+
+begin
+  If (FeffectiveValue=AValue) then exit;
+  FeffectiveValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TCellData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'textformatruns' : SetLength(FtextFormatRuns,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUnmergeCellsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUnmergeCellsRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTextToColumnsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TTextToColumnsRequest.Setsource(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextToColumnsRequest.Setdelimiter(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdelimiter=AValue) then exit;
+  Fdelimiter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextToColumnsRequest.SetdelimiterType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdelimiterType=AValue) then exit;
+  FdelimiterType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddProtectedRangeResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAddProtectedRangeResponse.SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); 
+
+begin
+  If (FprotectedRange=AValue) then exit;
+  FprotectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBooleanCondition
+  --------------------------------------------------------------------}
+
+
+Procedure TBooleanCondition.Setvalues(AIndex : Integer; const AValue : TBooleanConditionTypevaluesArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBooleanCondition.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TBooleanCondition.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 TBooleanCondition.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteProtectedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteProtectedRangeRequest.SetprotectedRangeId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FprotectedRangeId=AValue) then exit;
+  FprotectedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicChartDomain
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicChartDomain.Setdomain(AIndex : Integer; const AValue : TChartData); 
+
+begin
+  If (Fdomain=AValue) then exit;
+  Fdomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDimensionRange
+  --------------------------------------------------------------------}
+
+
+Procedure TDimensionRange.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionRange.SetendIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FendIndex=AValue) then exit;
+  FendIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionRange.SetstartIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartIndex=AValue) then exit;
+  FstartIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionRange.Setdimension(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdimension=AValue) then exit;
+  Fdimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TResponse.SetupdateEmbeddedObjectPosition(AIndex : Integer; const AValue : TUpdateEmbeddedObjectPositionResponse); 
+
+begin
+  If (FupdateEmbeddedObjectPosition=AValue) then exit;
+  FupdateEmbeddedObjectPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetaddFilterView(AIndex : Integer; const AValue : TAddFilterViewResponse); 
+
+begin
+  If (FaddFilterView=AValue) then exit;
+  FaddFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetaddSheet(AIndex : Integer; const AValue : TAddSheetResponse); 
+
+begin
+  If (FaddSheet=AValue) then exit;
+  FaddSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetfindReplace(AIndex : Integer; const AValue : TFindReplaceResponse); 
+
+begin
+  If (FfindReplace=AValue) then exit;
+  FfindReplace:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetaddProtectedRange(AIndex : Integer; const AValue : TAddProtectedRangeResponse); 
+
+begin
+  If (FaddProtectedRange=AValue) then exit;
+  FaddProtectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetupdateConditionalFormatRule(AIndex : Integer; const AValue : TUpdateConditionalFormatRuleResponse); 
+
+begin
+  If (FupdateConditionalFormatRule=AValue) then exit;
+  FupdateConditionalFormatRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetaddChart(AIndex : Integer; const AValue : TAddChartResponse); 
+
+begin
+  If (FaddChart=AValue) then exit;
+  FaddChart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetdeleteConditionalFormatRule(AIndex : Integer; const AValue : TDeleteConditionalFormatRuleResponse); 
+
+begin
+  If (FdeleteConditionalFormatRule=AValue) then exit;
+  FdeleteConditionalFormatRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetduplicateSheet(AIndex : Integer; const AValue : TDuplicateSheetResponse); 
+
+begin
+  If (FduplicateSheet=AValue) then exit;
+  FduplicateSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetduplicateFilterView(AIndex : Integer; const AValue : TDuplicateFilterViewResponse); 
+
+begin
+  If (FduplicateFilterView=AValue) then exit;
+  FduplicateFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TResponse.SetaddNamedRange(AIndex : Integer; const AValue : TAddNamedRangeResponse); 
+
+begin
+  If (FaddNamedRange=AValue) then exit;
+  FaddNamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddConditionalFormatRuleRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddConditionalFormatRuleRequest.Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); 
+
+begin
+  If (Frule=AValue) then exit;
+  Frule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAddConditionalFormatRuleRequest.Setindex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Findex=AValue) then exit;
+  Findex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFilterViewTypecriteria
+  --------------------------------------------------------------------}
+
+
+Class Function TFilterViewTypecriteria.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TFilterView
+  --------------------------------------------------------------------}
+
+
+Procedure TFilterView.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterView.SetnamedRangeId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamedRangeId=AValue) then exit;
+  FnamedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterView.SetsortSpecs(AIndex : Integer; const AValue : TFilterViewTypesortSpecsArray); 
+
+begin
+  If (FsortSpecs=AValue) then exit;
+  FsortSpecs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterView.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterView.Setcriteria(AIndex : Integer; const AValue : TFilterViewTypecriteria); 
+
+begin
+  If (Fcriteria=AValue) then exit;
+  Fcriteria:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterView.SetfilterViewId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfilterViewId=AValue) then exit;
+  FfilterViewId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFilterView.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sortspecs' : SetLength(FsortSpecs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSortRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSortRangeRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSortRangeRequest.SetsortSpecs(AIndex : Integer; const AValue : TSortRangeRequestTypesortSpecsArray); 
+
+begin
+  If (FsortSpecs=AValue) then exit;
+  FsortSpecs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSortRangeRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sortspecs' : SetLength(FsortSpecs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTextFormatRun
+  --------------------------------------------------------------------}
+
+
+Procedure TTextFormatRun.SetstartIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartIndex=AValue) then exit;
+  FstartIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTextFormatRun.Setformat(AIndex : Integer; const AValue : TTextFormat); 
+
+begin
+  If (Fformat=AValue) then exit;
+  Fformat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateFilterViewRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateFilterViewRequest.Setfilter(AIndex : Integer; const AValue : TFilterView); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateFilterViewRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateConditionalFormatRuleResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateConditionalFormatRuleResponse.SetoldIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FoldIndex=AValue) then exit;
+  FoldIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleResponse.SetnewRule(AIndex : Integer; const AValue : TConditionalFormatRule); 
+
+begin
+  If (FnewRule=AValue) then exit;
+  FnewRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleResponse.SetoldRule(AIndex : Integer; const AValue : TConditionalFormatRule); 
+
+begin
+  If (FoldRule=AValue) then exit;
+  FoldRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateConditionalFormatRuleResponse.SetnewIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnewIndex=AValue) then exit;
+  FnewIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFilterCriteria
+  --------------------------------------------------------------------}
+
+
+Procedure TFilterCriteria.Setcondition(AIndex : Integer; const AValue : TBooleanCondition); 
+
+begin
+  If (Fcondition=AValue) then exit;
+  Fcondition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFilterCriteria.SethiddenValues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FhiddenValues=AValue) then exit;
+  FhiddenValues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFilterCriteria.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'hiddenvalues' : SetLength(FhiddenValues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteDimensionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteDimensionRequest.Setrange(AIndex : Integer; const AValue : TDimensionRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotTableTypecriteria
+  --------------------------------------------------------------------}
+
+
+Class Function TPivotTableTypecriteria.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TPivotTable
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotTable.SetvalueLayout(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalueLayout=AValue) then exit;
+  FvalueLayout:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotTable.Setcolumns(AIndex : Integer; const AValue : TPivotTableTypecolumnsArray); 
+
+begin
+  If (Fcolumns=AValue) then exit;
+  Fcolumns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotTable.Setsource(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotTable.Setrows(AIndex : Integer; const AValue : TPivotTableTyperowsArray); 
+
+begin
+  If (Frows=AValue) then exit;
+  Frows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotTable.Setvalues(AIndex : Integer; const AValue : TPivotTableTypevaluesArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotTable.Setcriteria(AIndex : Integer; const AValue : TPivotTableTypecriteria); 
+
+begin
+  If (Fcriteria=AValue) then exit;
+  Fcriteria:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotTable.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'columns' : SetLength(Fcolumns,ALength);
+  'rows' : SetLength(Frows,ALength);
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDataValidationRule
+  --------------------------------------------------------------------}
+
+
+Procedure TDataValidationRule.Setcondition(AIndex : Integer; const AValue : TBooleanCondition); 
+
+begin
+  If (Fcondition=AValue) then exit;
+  Fcondition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDataValidationRule.SetinputMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FinputMessage=AValue) then exit;
+  FinputMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDataValidationRule.SetshowCustomUi(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FshowCustomUi=AValue) then exit;
+  FshowCustomUi:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDataValidationRule.Setstrict(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fstrict=AValue) then exit;
+  Fstrict:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateSpreadsheetPropertiesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateSpreadsheetPropertiesRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateSpreadsheetPropertiesRequest.Setproperties(AIndex : Integer; const AValue : TSpreadsheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TChartSourceRange
+  --------------------------------------------------------------------}
+
+
+Procedure TChartSourceRange.Setsources(AIndex : Integer; const AValue : TChartSourceRangeTypesourcesArray); 
+
+begin
+  If (Fsources=AValue) then exit;
+  Fsources:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TChartSourceRange.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sources' : SetLength(Fsources,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchUpdateValuesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchUpdateValuesRequest.SetvalueInputOption(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FvalueInputOption=AValue) then exit;
+  FvalueInputOption:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateValuesRequest.Setdata(AIndex : Integer; const AValue : TBatchUpdateValuesRequestTypedataArray); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchUpdateValuesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'data' : SetLength(Fdata,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TClearBasicFilterRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TClearBasicFilterRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TConditionalFormatRule
+  --------------------------------------------------------------------}
+
+
+Procedure TConditionalFormatRule.SetgradientRule(AIndex : Integer; const AValue : TGradientRule); 
+
+begin
+  If (FgradientRule=AValue) then exit;
+  FgradientRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConditionalFormatRule.SetbooleanRule(AIndex : Integer; const AValue : TBooleanRule); 
+
+begin
+  If (FbooleanRule=AValue) then exit;
+  FbooleanRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConditionalFormatRule.Setranges(AIndex : Integer; const AValue : TConditionalFormatRuleTyperangesArray); 
+
+begin
+  If (Franges=AValue) then exit;
+  Franges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TConditionalFormatRule.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'ranges' : SetLength(Franges,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateBordersRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateBordersRequest.Setright(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fright=AValue) then exit;
+  Fright:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.SetinnerVertical(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (FinnerVertical=AValue) then exit;
+  FinnerVertical:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.Settop(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Ftop=AValue) then exit;
+  Ftop:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.SetinnerHorizontal(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (FinnerHorizontal=AValue) then exit;
+  FinnerHorizontal:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.Setbottom(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fbottom=AValue) then exit;
+  Fbottom:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateBordersRequest.Setleft(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fleft=AValue) then exit;
+  Fleft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotFilterCriteria
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotFilterCriteria.SetvisibleValues(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FvisibleValues=AValue) then exit;
+  FvisibleValues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotFilterCriteria.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'visiblevalues' : SetLength(FvisibleValues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBorders
+  --------------------------------------------------------------------}
+
+
+Procedure TBorders.Setleft(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fleft=AValue) then exit;
+  Fleft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBorders.Setright(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fright=AValue) then exit;
+  Fright:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBorders.Settop(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Ftop=AValue) then exit;
+  Ftop:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBorders.Setbottom(AIndex : Integer; const AValue : TBorder); 
+
+begin
+  If (Fbottom=AValue) then exit;
+  Fbottom:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmbeddedChart
+  --------------------------------------------------------------------}
+
+
+Procedure TEmbeddedChart.SetchartId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FchartId=AValue) then exit;
+  FchartId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmbeddedChart.Setposition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmbeddedChart.Setspec(AIndex : Integer; const AValue : TChartSpec); 
+
+begin
+  If (Fspec=AValue) then exit;
+  Fspec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TColor
+  --------------------------------------------------------------------}
+
+
+Procedure TColor.Setgreen(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fgreen=AValue) then exit;
+  Fgreen:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setblue(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fblue=AValue) then exit;
+  Fblue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setred(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fred=AValue) then exit;
+  Fred:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setalpha(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Falpha=AValue) then exit;
+  Falpha:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddSheetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddSheetRequest.Setproperties(AIndex : Integer; const AValue : TSheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddProtectedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddProtectedRangeRequest.SetprotectedRange(AIndex : Integer; const AValue : TProtectedRange); 
+
+begin
+  If (FprotectedRange=AValue) then exit;
+  FprotectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TValueRange
+  --------------------------------------------------------------------}
+
+
+Procedure TValueRange.Setvalues(AIndex : Integer; const AValue : TValueRangeTypevaluesArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TValueRange.Setrange(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TValueRange.SetmajorDimension(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmajorDimension=AValue) then exit;
+  FmajorDimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TValueRange.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFindReplaceResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TFindReplaceResponse.SetvaluesChanged(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FvaluesChanged=AValue) then exit;
+  FvaluesChanged:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceResponse.SetrowsChanged(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrowsChanged=AValue) then exit;
+  FrowsChanged:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceResponse.SetoccurrencesChanged(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FoccurrencesChanged=AValue) then exit;
+  FoccurrencesChanged:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceResponse.SetformulasChanged(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FformulasChanged=AValue) then exit;
+  FformulasChanged:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceResponse.SetsheetsChanged(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetsChanged=AValue) then exit;
+  FsheetsChanged:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCellFormat
+  --------------------------------------------------------------------}
+
+
+Procedure TCellFormat.SethorizontalAlignment(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhorizontalAlignment=AValue) then exit;
+  FhorizontalAlignment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SethyperlinkDisplayType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhyperlinkDisplayType=AValue) then exit;
+  FhyperlinkDisplayType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.Setborders(AIndex : Integer; const AValue : TBorders); 
+
+begin
+  If (Fborders=AValue) then exit;
+  Fborders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SettextDirection(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtextDirection=AValue) then exit;
+  FtextDirection:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SettextFormat(AIndex : Integer; const AValue : TTextFormat); 
+
+begin
+  If (FtextFormat=AValue) then exit;
+  FtextFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.Setpadding(AIndex : Integer; const AValue : TPadding); 
+
+begin
+  If (Fpadding=AValue) then exit;
+  Fpadding:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SetnumberFormat(AIndex : Integer; const AValue : TNumberFormat); 
+
+begin
+  If (FnumberFormat=AValue) then exit;
+  FnumberFormat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SetwrapStrategy(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FwrapStrategy=AValue) then exit;
+  FwrapStrategy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SetbackgroundColor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (FbackgroundColor=AValue) then exit;
+  FbackgroundColor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCellFormat.SetverticalAlignment(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FverticalAlignment=AValue) then exit;
+  FverticalAlignment:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TMoveDimensionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TMoveDimensionRequest.Setsource(AIndex : Integer; const AValue : TDimensionRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TMoveDimensionRequest.SetdestinationIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FdestinationIndex=AValue) then exit;
+  FdestinationIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicChartAxis
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicChartAxis.Setposition(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartAxis.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartAxis.Setformat(AIndex : Integer; const AValue : TTextFormat); 
+
+begin
+  If (Fformat=AValue) then exit;
+  Fformat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotGroupSortValueBucket
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotGroupSortValueBucket.Setbuckets(AIndex : Integer; const AValue : TPivotGroupSortValueBucketTypebucketsArray); 
+
+begin
+  If (Fbuckets=AValue) then exit;
+  Fbuckets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroupSortValueBucket.SetvaluesIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FvaluesIndex=AValue) then exit;
+  FvaluesIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotGroupSortValueBucket.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'buckets' : SetLength(Fbuckets,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDimensionProperties
+  --------------------------------------------------------------------}
+
+
+Procedure TDimensionProperties.SethiddenByUser(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhiddenByUser=AValue) then exit;
+  FhiddenByUser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionProperties.SetpixelSize(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FpixelSize=AValue) then exit;
+  FpixelSize:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDimensionProperties.SethiddenByFilter(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhiddenByFilter=AValue) then exit;
+  FhiddenByFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmbeddedObjectPosition
+  --------------------------------------------------------------------}
+
+
+Procedure TEmbeddedObjectPosition.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmbeddedObjectPosition.SetoverlayPosition(AIndex : Integer; const AValue : TOverlayPosition); 
+
+begin
+  If (FoverlayPosition=AValue) then exit;
+  FoverlayPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEmbeddedObjectPosition.SetnewSheet(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FnewSheet=AValue) then exit;
+  FnewSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TInterpolationPoint
+  --------------------------------------------------------------------}
+
+
+Procedure TInterpolationPoint.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInterpolationPoint.Setcolor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (Fcolor=AValue) then exit;
+  Fcolor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInterpolationPoint.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TInterpolationPoint.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorValue
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorValue.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorValue.Setmessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmessage=AValue) then exit;
+  Fmessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TErrorValue.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TDuplicateFilterViewRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDuplicateFilterViewRequest.SetfilterId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfilterId=AValue) then exit;
+  FfilterId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchUpdateSpreadsheetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchUpdateSpreadsheetRequest.Setrequests(AIndex : Integer; const AValue : TBatchUpdateSpreadsheetRequestTyperequestsArray); 
+
+begin
+  If (Frequests=AValue) then exit;
+  Frequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchUpdateSpreadsheetRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'requests' : SetLength(Frequests,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSheetProperties
+  --------------------------------------------------------------------}
+
+
+Procedure TSheetProperties.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.Setindex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Findex=AValue) then exit;
+  Findex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.Sethidden(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fhidden=AValue) then exit;
+  Fhidden:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.SetgridProperties(AIndex : Integer; const AValue : TGridProperties); 
+
+begin
+  If (FgridProperties=AValue) then exit;
+  FgridProperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.SetrightToLeft(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FrightToLeft=AValue) then exit;
+  FrightToLeft:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.SettabColor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (FtabColor=AValue) then exit;
+  FtabColor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheetProperties.SetsheetType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsheetType=AValue) then exit;
+  FsheetType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProtectedRange
+  --------------------------------------------------------------------}
+
+
+Procedure TProtectedRange.SetunprotectedRanges(AIndex : Integer; const AValue : TProtectedRangeTypeunprotectedRangesArray); 
+
+begin
+  If (FunprotectedRanges=AValue) then exit;
+  FunprotectedRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.SetnamedRangeId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamedRangeId=AValue) then exit;
+  FnamedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.SetrequestingUserCanEdit(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FrequestingUserCanEdit=AValue) then exit;
+  FrequestingUserCanEdit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.Seteditors(AIndex : Integer; const AValue : TEditors); 
+
+begin
+  If (Feditors=AValue) then exit;
+  Feditors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.SetprotectedRangeId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FprotectedRangeId=AValue) then exit;
+  FprotectedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.SetwarningOnly(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FwarningOnly=AValue) then exit;
+  FwarningOnly:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProtectedRange.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TProtectedRange.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'unprotectedranges' : SetLength(FunprotectedRanges,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteConditionalFormatRuleRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteConditionalFormatRuleRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDeleteConditionalFormatRuleRequest.Setindex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Findex=AValue) then exit;
+  Findex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TChartSpec
+  --------------------------------------------------------------------}
+
+
+Procedure TChartSpec.SethiddenDimensionStrategy(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhiddenDimensionStrategy=AValue) then exit;
+  FhiddenDimensionStrategy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TChartSpec.SetbasicChart(AIndex : Integer; const AValue : TBasicChartSpec); 
+
+begin
+  If (FbasicChart=AValue) then exit;
+  FbasicChart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TChartSpec.Settitle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ftitle=AValue) then exit;
+  Ftitle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TChartSpec.SetpieChart(AIndex : Integer; const AValue : TPieChartSpec); 
+
+begin
+  If (FpieChart=AValue) then exit;
+  FpieChart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSourceAndDestination
+  --------------------------------------------------------------------}
+
+
+Procedure TSourceAndDestination.Setsource(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceAndDestination.SetfillLength(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfillLength=AValue) then exit;
+  FfillLength:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSourceAndDestination.Setdimension(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdimension=AValue) then exit;
+  Fdimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TConditionValue
+  --------------------------------------------------------------------}
+
+
+Procedure TConditionValue.SetrelativeDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FrelativeDate=AValue) then exit;
+  FrelativeDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TConditionValue.SetuserEnteredValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FuserEnteredValue=AValue) then exit;
+  FuserEnteredValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPasteDataRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TPasteDataRequest.Setdata(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPasteDataRequest.Setcoordinate(AIndex : Integer; const AValue : TGridCoordinate); 
+
+begin
+  If (Fcoordinate=AValue) then exit;
+  Fcoordinate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPasteDataRequest.Setdelimiter(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdelimiter=AValue) then exit;
+  Fdelimiter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPasteDataRequest.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPasteDataRequest.Sethtml(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fhtml=AValue) then exit;
+  Fhtml:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TPasteDataRequest.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TFindReplaceRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TFindReplaceRequest.Setfind(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffind=AValue) then exit;
+  Ffind:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.Setreplacement(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Freplacement=AValue) then exit;
+  Freplacement:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetsearchByRegex(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FsearchByRegex=AValue) then exit;
+  FsearchByRegex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetallSheets(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FallSheets=AValue) then exit;
+  FallSheets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetmatchCase(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FmatchCase=AValue) then exit;
+  FmatchCase:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetincludeFormulas(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FincludeFormulas=AValue) then exit;
+  FincludeFormulas:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFindReplaceRequest.SetmatchEntireCell(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FmatchEntireCell=AValue) then exit;
+  FmatchEntireCell:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSortSpec
+  --------------------------------------------------------------------}
+
+
+Procedure TSortSpec.SetsortOrder(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsortOrder=AValue) then exit;
+  FsortOrder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSortSpec.SetdimensionIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FdimensionIndex=AValue) then exit;
+  FdimensionIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCopySheetToAnotherSpreadsheetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCopySheetToAnotherSpreadsheetRequest.SetdestinationSpreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdestinationSpreadsheetId=AValue) then exit;
+  FdestinationSpreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TNumberFormat
+  --------------------------------------------------------------------}
+
+
+Procedure TNumberFormat.Setpattern(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fpattern=AValue) then exit;
+  Fpattern:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNumberFormat.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TNumberFormat.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateDimensionPropertiesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateDimensionPropertiesRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateDimensionPropertiesRequest.Setrange(AIndex : Integer; const AValue : TDimensionRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateDimensionPropertiesRequest.Setproperties(AIndex : Integer; const AValue : TDimensionProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TEditors
+  --------------------------------------------------------------------}
+
+
+Procedure TEditors.Setusers(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fusers=AValue) then exit;
+  Fusers:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEditors.Setgroups(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fgroups=AValue) then exit;
+  Fgroups:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEditors.SetdomainUsersCanEdit(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdomainUsersCanEdit=AValue) then exit;
+  FdomainUsersCanEdit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TEditors.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'users' : SetLength(Fusers,ALength);
+  'groups' : SetLength(Fgroups,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSpreadsheet
+  --------------------------------------------------------------------}
+
+
+Procedure TSpreadsheet.SetspreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspreadsheetId=AValue) then exit;
+  FspreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheet.Setproperties(AIndex : Integer; const AValue : TSpreadsheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheet.Setsheets(AIndex : Integer; const AValue : TSpreadsheetTypesheetsArray); 
+
+begin
+  If (Fsheets=AValue) then exit;
+  Fsheets:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSpreadsheet.SetnamedRanges(AIndex : Integer; const AValue : TSpreadsheetTypenamedRangesArray); 
+
+begin
+  If (FnamedRanges=AValue) then exit;
+  FnamedRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSpreadsheet.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sheets' : SetLength(Fsheets,ALength);
+  'namedranges' : SetLength(FnamedRanges,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGridData
+  --------------------------------------------------------------------}
+
+
+Procedure TGridData.SetcolumnMetadata(AIndex : Integer; const AValue : TGridDataTypecolumnMetadataArray); 
+
+begin
+  If (FcolumnMetadata=AValue) then exit;
+  FcolumnMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridData.SetrowData(AIndex : Integer; const AValue : TGridDataTyperowDataArray); 
+
+begin
+  If (FrowData=AValue) then exit;
+  FrowData:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridData.SetstartRow(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartRow=AValue) then exit;
+  FstartRow:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridData.SetrowMetadata(AIndex : Integer; const AValue : TGridDataTyperowMetadataArray); 
+
+begin
+  If (FrowMetadata=AValue) then exit;
+  FrowMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridData.SetstartColumn(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartColumn=AValue) then exit;
+  FstartColumn:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TGridData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'columnmetadata' : SetLength(FcolumnMetadata,ALength);
+  'rowdata' : SetLength(FrowData,ALength);
+  'rowmetadata' : SetLength(FrowMetadata,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotValue
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotValue.Setformula(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fformula=AValue) then exit;
+  Fformula:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotValue.SetsourceColumnOffset(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsourceColumnOffset=AValue) then exit;
+  FsourceColumnOffset:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotValue.SetsummarizeFunction(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsummarizeFunction=AValue) then exit;
+  FsummarizeFunction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotValue.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicFilterTypecriteria
+  --------------------------------------------------------------------}
+
+
+Class Function TBasicFilterTypecriteria.AllowAdditionalProperties : Boolean;
+
+begin
+  Result:=True;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TBasicFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicFilter.Setcriteria(AIndex : Integer; const AValue : TBasicFilterTypecriteria); 
+
+begin
+  If (Fcriteria=AValue) then exit;
+  Fcriteria:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicFilter.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicFilter.SetsortSpecs(AIndex : Integer; const AValue : TBasicFilterTypesortSpecsArray); 
+
+begin
+  If (FsortSpecs=AValue) then exit;
+  FsortSpecs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBasicFilter.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'sortspecs' : SetLength(FsortSpecs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TDuplicateSheetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDuplicateSheetRequest.SetsourceSheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsourceSheetId=AValue) then exit;
+  FsourceSheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDuplicateSheetRequest.SetnewSheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FnewSheetId=AValue) then exit;
+  FnewSheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDuplicateSheetRequest.SetinsertSheetIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FinsertSheetIndex=AValue) then exit;
+  FinsertSheetIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDuplicateSheetRequest.SetnewSheetName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnewSheetName=AValue) then exit;
+  FnewSheetName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddFilterViewResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAddFilterViewResponse.Setfilter(AIndex : Integer; const AValue : TFilterView); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDuplicateSheetResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TDuplicateSheetResponse.Setproperties(AIndex : Integer; const AValue : TSheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBorder
+  --------------------------------------------------------------------}
+
+
+Procedure TBorder.Setstyle(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstyle=AValue) then exit;
+  Fstyle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBorder.Setwidth(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fwidth=AValue) then exit;
+  Fwidth:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBorder.Setcolor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (Fcolor=AValue) then exit;
+  Fcolor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddNamedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddNamedRangeRequest.SetnamedRange(AIndex : Integer; const AValue : TNamedRange); 
+
+begin
+  If (FnamedRange=AValue) then exit;
+  FnamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddChartResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAddChartResponse.Setchart(AIndex : Integer; const AValue : TEmbeddedChart); 
+
+begin
+  If (Fchart=AValue) then exit;
+  Fchart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAppendCellsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAppendCellsRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAppendCellsRequest.Setrows(AIndex : Integer; const AValue : TAppendCellsRequestTyperowsArray); 
+
+begin
+  If (Frows=AValue) then exit;
+  Frows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAppendCellsRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAppendCellsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'rows' : SetLength(Frows,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TRowData
+  --------------------------------------------------------------------}
+
+
+Procedure TRowData.Setvalues(AIndex : Integer; const AValue : TRowDataTypevaluesArray); 
+
+begin
+  If (Fvalues=AValue) then exit;
+  Fvalues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TRowData.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'values' : SetLength(Fvalues,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicChartSeries
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicChartSeries.Setseries(AIndex : Integer; const AValue : TChartData); 
+
+begin
+  If (Fseries=AValue) then exit;
+  Fseries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSeries.SettargetAxis(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtargetAxis=AValue) then exit;
+  FtargetAxis:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSeries.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TBasicChartSeries.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TRepeatCellRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TRepeatCellRequest.Setcell(AIndex : Integer; const AValue : TCellData); 
+
+begin
+  If (Fcell=AValue) then exit;
+  Fcell:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRepeatCellRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRepeatCellRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBasicChartSpec
+  --------------------------------------------------------------------}
+
+
+Procedure TBasicChartSpec.SetchartType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FchartType=AValue) then exit;
+  FchartType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSpec.Setdomains(AIndex : Integer; const AValue : TBasicChartSpecTypedomainsArray); 
+
+begin
+  If (Fdomains=AValue) then exit;
+  Fdomains:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSpec.SetheaderCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FheaderCount=AValue) then exit;
+  FheaderCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSpec.Setseries(AIndex : Integer; const AValue : TBasicChartSpecTypeseriesArray); 
+
+begin
+  If (Fseries=AValue) then exit;
+  Fseries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSpec.SetlegendPosition(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlegendPosition=AValue) then exit;
+  FlegendPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBasicChartSpec.Setaxis(AIndex : Integer; const AValue : TBasicChartSpecTypeaxisArray); 
+
+begin
+  If (Faxis=AValue) then exit;
+  Faxis:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBasicChartSpec.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'domains' : SetLength(Fdomains,ALength);
+  'series' : SetLength(Fseries,ALength);
+  'axis' : SetLength(Faxis,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TNamedRange
+  --------------------------------------------------------------------}
+
+
+Procedure TNamedRange.SetnamedRangeId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamedRangeId=AValue) then exit;
+  FnamedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNamedRange.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TNamedRange.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSetBasicFilterRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSetBasicFilterRequest.Setfilter(AIndex : Integer; const AValue : TBasicFilter); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateEmbeddedObjectPositionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateEmbeddedObjectPositionRequest.SetnewPosition(AIndex : Integer; const AValue : TEmbeddedObjectPosition); 
+
+begin
+  If (FnewPosition=AValue) then exit;
+  FnewPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateEmbeddedObjectPositionRequest.SetobjectId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FobjectId=AValue) then exit;
+  FobjectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateEmbeddedObjectPositionRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAutoResizeDimensionsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAutoResizeDimensionsRequest.Setdimensions(AIndex : Integer; const AValue : TDimensionRange); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDuplicateFilterViewResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TDuplicateFilterViewResponse.Setfilter(AIndex : Integer; const AValue : TFilterView); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPivotGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TPivotGroup.SetsortOrder(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsortOrder=AValue) then exit;
+  FsortOrder:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroup.SetsourceColumnOffset(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsourceColumnOffset=AValue) then exit;
+  FsourceColumnOffset:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroup.SetshowTotals(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FshowTotals=AValue) then exit;
+  FshowTotals:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroup.SetvalueBucket(AIndex : Integer; const AValue : TPivotGroupSortValueBucket); 
+
+begin
+  If (FvalueBucket=AValue) then exit;
+  FvalueBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPivotGroup.SetvalueMetadata(AIndex : Integer; const AValue : TPivotGroupTypevalueMetadataArray); 
+
+begin
+  If (FvalueMetadata=AValue) then exit;
+  FvalueMetadata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPivotGroup.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'valuemetadata' : SetLength(FvalueMetadata,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGridRange
+  --------------------------------------------------------------------}
+
+
+Procedure TGridRange.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridRange.SetstartColumnIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartColumnIndex=AValue) then exit;
+  FstartColumnIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridRange.SetstartRowIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartRowIndex=AValue) then exit;
+  FstartRowIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridRange.SetendRowIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FendRowIndex=AValue) then exit;
+  FendRowIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridRange.SetendColumnIndex(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FendColumnIndex=AValue) then exit;
+  FendColumnIndex:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteSheetRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteSheetRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TChartData
+  --------------------------------------------------------------------}
+
+
+Procedure TChartData.SetsourceRange(AIndex : Integer; const AValue : TChartSourceRange); 
+
+begin
+  If (FsourceRange=AValue) then exit;
+  FsourceRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSheet
+  --------------------------------------------------------------------}
+
+
+Procedure TSheet.Setproperties(AIndex : Integer; const AValue : TSheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.Setcharts(AIndex : Integer; const AValue : TSheetTypechartsArray); 
+
+begin
+  If (Fcharts=AValue) then exit;
+  Fcharts:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.SetfilterViews(AIndex : Integer; const AValue : TSheetTypefilterViewsArray); 
+
+begin
+  If (FfilterViews=AValue) then exit;
+  FfilterViews:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.SetconditionalFormats(AIndex : Integer; const AValue : TSheetTypeconditionalFormatsArray); 
+
+begin
+  If (FconditionalFormats=AValue) then exit;
+  FconditionalFormats:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.SetprotectedRanges(AIndex : Integer; const AValue : TSheetTypeprotectedRangesArray); 
+
+begin
+  If (FprotectedRanges=AValue) then exit;
+  FprotectedRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.SetbasicFilter(AIndex : Integer; const AValue : TBasicFilter); 
+
+begin
+  If (FbasicFilter=AValue) then exit;
+  FbasicFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.Setmerges(AIndex : Integer; const AValue : TSheetTypemergesArray); 
+
+begin
+  If (Fmerges=AValue) then exit;
+  Fmerges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSheet.Setdata(AIndex : Integer; const AValue : TSheetTypedataArray); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSheet.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'charts' : SetLength(Fcharts,ALength);
+  'filterviews' : SetLength(FfilterViews,ALength);
+  'conditionalformats' : SetLength(FconditionalFormats,ALength);
+  'protectedranges' : SetLength(FprotectedRanges,ALength);
+  'merges' : SetLength(Fmerges,ALength);
+  'data' : SetLength(Fdata,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TCopyPasteRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCopyPasteRequest.SetpasteType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpasteType=AValue) then exit;
+  FpasteType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCopyPasteRequest.SetpasteOrientation(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpasteOrientation=AValue) then exit;
+  FpasteOrientation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCopyPasteRequest.Setsource(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCopyPasteRequest.Setdestination(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fdestination=AValue) then exit;
+  Fdestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateCellsRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateCellsRequest.Setrows(AIndex : Integer; const AValue : TUpdateCellsRequestTyperowsArray); 
+
+begin
+  If (Frows=AValue) then exit;
+  Frows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateCellsRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateCellsRequest.Setstart(AIndex : Integer; const AValue : TGridCoordinate); 
+
+begin
+  If (Fstart=AValue) then exit;
+  Fstart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateCellsRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TUpdateCellsRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'rows' : SetLength(Frows,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TExtendedValue
+  --------------------------------------------------------------------}
+
+
+Procedure TExtendedValue.SetformulaValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FformulaValue=AValue) then exit;
+  FformulaValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExtendedValue.SeterrorValue(AIndex : Integer; const AValue : TErrorValue); 
+
+begin
+  If (FerrorValue=AValue) then exit;
+  FerrorValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExtendedValue.SetboolValue(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FboolValue=AValue) then exit;
+  FboolValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExtendedValue.SetnumberValue(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FnumberValue=AValue) then exit;
+  FnumberValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExtendedValue.SetstringValue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstringValue=AValue) then exit;
+  FstringValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchUpdateSpreadsheetResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchUpdateSpreadsheetResponse.SetspreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspreadsheetId=AValue) then exit;
+  FspreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchUpdateSpreadsheetResponse.Setreplies(AIndex : Integer; const AValue : TBatchUpdateSpreadsheetResponseTyperepliesArray); 
+
+begin
+  If (Freplies=AValue) then exit;
+  Freplies:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchUpdateSpreadsheetResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'replies' : SetLength(Freplies,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGradientRule
+  --------------------------------------------------------------------}
+
+
+Procedure TGradientRule.Setmaxpoint(AIndex : Integer; const AValue : TInterpolationPoint); 
+
+begin
+  If (Fmaxpoint=AValue) then exit;
+  Fmaxpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGradientRule.Setmidpoint(AIndex : Integer; const AValue : TInterpolationPoint); 
+
+begin
+  If (Fmidpoint=AValue) then exit;
+  Fmidpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGradientRule.Setminpoint(AIndex : Integer; const AValue : TInterpolationPoint); 
+
+begin
+  If (Fminpoint=AValue) then exit;
+  Fminpoint:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TCutPasteRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TCutPasteRequest.SetpasteType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FpasteType=AValue) then exit;
+  FpasteType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCutPasteRequest.Setsource(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TCutPasteRequest.Setdestination(AIndex : Integer; const AValue : TGridCoordinate); 
+
+begin
+  If (Fdestination=AValue) then exit;
+  Fdestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TOverlayPosition
+  --------------------------------------------------------------------}
+
+
+Procedure TOverlayPosition.SetwidthPixels(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FwidthPixels=AValue) then exit;
+  FwidthPixels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOverlayPosition.SetanchorCell(AIndex : Integer; const AValue : TGridCoordinate); 
+
+begin
+  If (FanchorCell=AValue) then exit;
+  FanchorCell:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOverlayPosition.SetoffsetXPixels(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FoffsetXPixels=AValue) then exit;
+  FoffsetXPixels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOverlayPosition.SetheightPixels(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FheightPixels=AValue) then exit;
+  FheightPixels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOverlayPosition.SetoffsetYPixels(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FoffsetYPixels=AValue) then exit;
+  FoffsetYPixels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAutoFillRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAutoFillRequest.SetuseAlternateSeries(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FuseAlternateSeries=AValue) then exit;
+  FuseAlternateSeries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutoFillRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAutoFillRequest.SetsourceAndDestination(AIndex : Integer; const AValue : TSourceAndDestination); 
+
+begin
+  If (FsourceAndDestination=AValue) then exit;
+  FsourceAndDestination:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPieChartSpec
+  --------------------------------------------------------------------}
+
+
+Procedure TPieChartSpec.SetlegendPosition(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlegendPosition=AValue) then exit;
+  FlegendPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPieChartSpec.Setseries(AIndex : Integer; const AValue : TChartData); 
+
+begin
+  If (Fseries=AValue) then exit;
+  Fseries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPieChartSpec.SetpieHole(AIndex : Integer; const AValue : double); 
+
+begin
+  If (FpieHole=AValue) then exit;
+  FpieHole:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPieChartSpec.SetthreeDimensional(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FthreeDimensional=AValue) then exit;
+  FthreeDimensional:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPieChartSpec.Setdomain(AIndex : Integer; const AValue : TChartData); 
+
+begin
+  If (Fdomain=AValue) then exit;
+  Fdomain:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateSheetPropertiesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateSheetPropertiesRequest.Setfields(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Ffields=AValue) then exit;
+  Ffields:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateSheetPropertiesRequest.Setproperties(AIndex : Integer; const AValue : TSheetProperties); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBooleanRule
+  --------------------------------------------------------------------}
+
+
+Procedure TBooleanRule.Setcondition(AIndex : Integer; const AValue : TBooleanCondition); 
+
+begin
+  If (Fcondition=AValue) then exit;
+  Fcondition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBooleanRule.Setformat(AIndex : Integer; const AValue : TCellFormat); 
+
+begin
+  If (Fformat=AValue) then exit;
+  Fformat:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAppendDimensionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAppendDimensionRequest.SetsheetId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FsheetId=AValue) then exit;
+  FsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAppendDimensionRequest.Set_length(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (F_length=AValue) then exit;
+  F_length:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAppendDimensionRequest.Setdimension(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdimension=AValue) then exit;
+  Fdimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TAppendDimensionRequest.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_length' : Result:='length';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddFilterViewRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddFilterViewRequest.Setfilter(AIndex : Integer; const AValue : TFilterView); 
+
+begin
+  If (Ffilter=AValue) then exit;
+  Ffilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGridProperties
+  --------------------------------------------------------------------}
+
+
+Procedure TGridProperties.SetrowCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrowCount=AValue) then exit;
+  FrowCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridProperties.SetcolumnCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FcolumnCount=AValue) then exit;
+  FcolumnCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridProperties.SetfrozenRowCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfrozenRowCount=AValue) then exit;
+  FfrozenRowCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridProperties.SetfrozenColumnCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfrozenColumnCount=AValue) then exit;
+  FfrozenColumnCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TGridProperties.SethideGridlines(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhideGridlines=AValue) then exit;
+  FhideGridlines:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteNamedRangeRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteNamedRangeRequest.SetnamedRangeId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnamedRangeId=AValue) then exit;
+  FnamedRangeId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAddChartRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAddChartRequest.Setchart(AIndex : Integer; const AValue : TEmbeddedChart); 
+
+begin
+  If (Fchart=AValue) then exit;
+  Fchart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSetDataValidationRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSetDataValidationRequest.Setrule(AIndex : Integer; const AValue : TDataValidationRule); 
+
+begin
+  If (Frule=AValue) then exit;
+  Frule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSetDataValidationRequest.Setrange(AIndex : Integer; const AValue : TGridRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TRequest.SetupdateEmbeddedObjectPosition(AIndex : Integer; const AValue : TUpdateEmbeddedObjectPositionRequest); 
+
+begin
+  If (FupdateEmbeddedObjectPosition=AValue) then exit;
+  FupdateEmbeddedObjectPosition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteNamedRange(AIndex : Integer; const AValue : TDeleteNamedRangeRequest); 
+
+begin
+  If (FdeleteNamedRange=AValue) then exit;
+  FdeleteNamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateNamedRange(AIndex : Integer; const AValue : TUpdateNamedRangeRequest); 
+
+begin
+  If (FupdateNamedRange=AValue) then exit;
+  FupdateNamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddFilterView(AIndex : Integer; const AValue : TAddFilterViewRequest); 
+
+begin
+  If (FaddFilterView=AValue) then exit;
+  FaddFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateSpreadsheetProperties(AIndex : Integer; const AValue : TUpdateSpreadsheetPropertiesRequest); 
+
+begin
+  If (FupdateSpreadsheetProperties=AValue) then exit;
+  FupdateSpreadsheetProperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetappendDimension(AIndex : Integer; const AValue : TAppendDimensionRequest); 
+
+begin
+  If (FappendDimension=AValue) then exit;
+  FappendDimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetunmergeCells(AIndex : Integer; const AValue : TUnmergeCellsRequest); 
+
+begin
+  If (FunmergeCells=AValue) then exit;
+  FunmergeCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateProtectedRange(AIndex : Integer; const AValue : TUpdateProtectedRangeRequest); 
+
+begin
+  If (FupdateProtectedRange=AValue) then exit;
+  FupdateProtectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteFilterView(AIndex : Integer; const AValue : TDeleteFilterViewRequest); 
+
+begin
+  If (FdeleteFilterView=AValue) then exit;
+  FdeleteFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetclearBasicFilter(AIndex : Integer; const AValue : TClearBasicFilterRequest); 
+
+begin
+  If (FclearBasicFilter=AValue) then exit;
+  FclearBasicFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetsortRange(AIndex : Integer; const AValue : TSortRangeRequest); 
+
+begin
+  If (FsortRange=AValue) then exit;
+  FsortRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetrepeatCell(AIndex : Integer; const AValue : TRepeatCellRequest); 
+
+begin
+  If (FrepeatCell=AValue) then exit;
+  FrepeatCell:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetsetDataValidation(AIndex : Integer; const AValue : TSetDataValidationRequest); 
+
+begin
+  If (FsetDataValidation=AValue) then exit;
+  FsetDataValidation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateCells(AIndex : Integer; const AValue : TUpdateCellsRequest); 
+
+begin
+  If (FupdateCells=AValue) then exit;
+  FupdateCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddSheet(AIndex : Integer; const AValue : TAddSheetRequest); 
+
+begin
+  If (FaddSheet=AValue) then exit;
+  FaddSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateFilterView(AIndex : Integer; const AValue : TUpdateFilterViewRequest); 
+
+begin
+  If (FupdateFilterView=AValue) then exit;
+  FupdateFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateSheetProperties(AIndex : Integer; const AValue : TUpdateSheetPropertiesRequest); 
+
+begin
+  If (FupdateSheetProperties=AValue) then exit;
+  FupdateSheetProperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateDimensionProperties(AIndex : Integer; const AValue : TUpdateDimensionPropertiesRequest); 
+
+begin
+  If (FupdateDimensionProperties=AValue) then exit;
+  FupdateDimensionProperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteSheet(AIndex : Integer; const AValue : TDeleteSheetRequest); 
+
+begin
+  If (FdeleteSheet=AValue) then exit;
+  FdeleteSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetfindReplace(AIndex : Integer; const AValue : TFindReplaceRequest); 
+
+begin
+  If (FfindReplace=AValue) then exit;
+  FfindReplace:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddProtectedRange(AIndex : Integer; const AValue : TAddProtectedRangeRequest); 
+
+begin
+  If (FaddProtectedRange=AValue) then exit;
+  FaddProtectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteProtectedRange(AIndex : Integer; const AValue : TDeleteProtectedRangeRequest); 
+
+begin
+  If (FdeleteProtectedRange=AValue) then exit;
+  FdeleteProtectedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateConditionalFormatRule(AIndex : Integer; const AValue : TUpdateConditionalFormatRuleRequest); 
+
+begin
+  If (FupdateConditionalFormatRule=AValue) then exit;
+  FupdateConditionalFormatRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetsetBasicFilter(AIndex : Integer; const AValue : TSetBasicFilterRequest); 
+
+begin
+  If (FsetBasicFilter=AValue) then exit;
+  FsetBasicFilter:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetmergeCells(AIndex : Integer; const AValue : TMergeCellsRequest); 
+
+begin
+  If (FmergeCells=AValue) then exit;
+  FmergeCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddChart(AIndex : Integer; const AValue : TAddChartRequest); 
+
+begin
+  If (FaddChart=AValue) then exit;
+  FaddChart:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteConditionalFormatRule(AIndex : Integer; const AValue : TDeleteConditionalFormatRuleRequest); 
+
+begin
+  If (FdeleteConditionalFormatRule=AValue) then exit;
+  FdeleteConditionalFormatRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateChartSpec(AIndex : Integer; const AValue : TUpdateChartSpecRequest); 
+
+begin
+  If (FupdateChartSpec=AValue) then exit;
+  FupdateChartSpec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteDimension(AIndex : Integer; const AValue : TDeleteDimensionRequest); 
+
+begin
+  If (FdeleteDimension=AValue) then exit;
+  FdeleteDimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetdeleteEmbeddedObject(AIndex : Integer; const AValue : TDeleteEmbeddedObjectRequest); 
+
+begin
+  If (FdeleteEmbeddedObject=AValue) then exit;
+  FdeleteEmbeddedObject:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetpasteData(AIndex : Integer; const AValue : TPasteDataRequest); 
+
+begin
+  If (FpasteData=AValue) then exit;
+  FpasteData:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddConditionalFormatRule(AIndex : Integer; const AValue : TAddConditionalFormatRuleRequest); 
+
+begin
+  If (FaddConditionalFormatRule=AValue) then exit;
+  FaddConditionalFormatRule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetupdateBorders(AIndex : Integer; const AValue : TUpdateBordersRequest); 
+
+begin
+  If (FupdateBorders=AValue) then exit;
+  FupdateBorders:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetautoResizeDimensions(AIndex : Integer; const AValue : TAutoResizeDimensionsRequest); 
+
+begin
+  If (FautoResizeDimensions=AValue) then exit;
+  FautoResizeDimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetduplicateSheet(AIndex : Integer; const AValue : TDuplicateSheetRequest); 
+
+begin
+  If (FduplicateSheet=AValue) then exit;
+  FduplicateSheet:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetduplicateFilterView(AIndex : Integer; const AValue : TDuplicateFilterViewRequest); 
+
+begin
+  If (FduplicateFilterView=AValue) then exit;
+  FduplicateFilterView:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetcutPaste(AIndex : Integer; const AValue : TCutPasteRequest); 
+
+begin
+  If (FcutPaste=AValue) then exit;
+  FcutPaste:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetappendCells(AIndex : Integer; const AValue : TAppendCellsRequest); 
+
+begin
+  If (FappendCells=AValue) then exit;
+  FappendCells:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetaddNamedRange(AIndex : Integer; const AValue : TAddNamedRangeRequest); 
+
+begin
+  If (FaddNamedRange=AValue) then exit;
+  FaddNamedRange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetautoFill(AIndex : Integer; const AValue : TAutoFillRequest); 
+
+begin
+  If (FautoFill=AValue) then exit;
+  FautoFill:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetmoveDimension(AIndex : Integer; const AValue : TMoveDimensionRequest); 
+
+begin
+  If (FmoveDimension=AValue) then exit;
+  FmoveDimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SettextToColumns(AIndex : Integer; const AValue : TTextToColumnsRequest); 
+
+begin
+  If (FtextToColumns=AValue) then exit;
+  FtextToColumns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetinsertDimension(AIndex : Integer; const AValue : TInsertDimensionRequest); 
+
+begin
+  If (FinsertDimension=AValue) then exit;
+  FinsertDimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TRequest.SetcopyPaste(AIndex : Integer; const AValue : TCopyPasteRequest); 
+
+begin
+  If (FcopyPaste=AValue) then exit;
+  FcopyPaste:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchGetValuesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchGetValuesResponse.SetvalueRanges(AIndex : Integer; const AValue : TBatchGetValuesResponseTypevalueRangesArray); 
+
+begin
+  If (FvalueRanges=AValue) then exit;
+  FvalueRanges:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBatchGetValuesResponse.SetspreadsheetId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FspreadsheetId=AValue) then exit;
+  FspreadsheetId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchGetValuesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'valueranges' : SetLength(FvalueRanges,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TInsertDimensionRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TInsertDimensionRequest.SetinheritFromBefore(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FinheritFromBefore=AValue) then exit;
+  FinheritFromBefore:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInsertDimensionRequest.Setrange(AIndex : Integer; const AValue : TDimensionRange); 
+
+begin
+  If (Frange=AValue) then exit;
+  Frange:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteEmbeddedObjectRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteEmbeddedObjectRequest.SetobjectId(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FobjectId=AValue) then exit;
+  FobjectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDeleteConditionalFormatRuleResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TDeleteConditionalFormatRuleResponse.Setrule(AIndex : Integer; const AValue : TConditionalFormatRule); 
+
+begin
+  If (Frule=AValue) then exit;
+  Frule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSpreadsheetsValuesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TSpreadsheetsValuesResource.ResourceName : String;
+
+begin
+  Result:='values';
+end;
+
+Class Function TSpreadsheetsValuesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsheetsAPI;
+end;
+
+Function TSpreadsheetsValuesResource.Update(spreadsheetId: string; range: string; aValueRange : TValueRange; AQuery : string = '') : TUpdateValuesResponse;
+
+Const
+  _HTTPMethod = 'PUT';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}/values/{range}';
+  _Methodid   = 'sheets.spreadsheets.values.update';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId,'range',range]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aValueRange,TUpdateValuesResponse) as TUpdateValuesResponse;
+end;
+
+
+Function TSpreadsheetsValuesResource.Update(spreadsheetId: string; range: string; aValueRange : TValueRange; AQuery : TSpreadsheetsValuesupdateOptions) : TUpdateValuesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'valueInputOption',AQuery.valueInputOption);
+  Result:=Update(spreadsheetId,range,aValueRange,_Q);
+end;
+
+Function TSpreadsheetsValuesResource.Get(spreadsheetId: string; range: string; AQuery : string = '') : TValueRange;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}/values/{range}';
+  _Methodid   = 'sheets.spreadsheets.values.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId,'range',range]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TValueRange) as TValueRange;
+end;
+
+
+Function TSpreadsheetsValuesResource.Get(spreadsheetId: string; range: string; AQuery : TSpreadsheetsValuesgetOptions) : TValueRange;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'valueRenderOption',AQuery.valueRenderOption);
+  AddToQuery(_Q,'dateTimeRenderOption',AQuery.dateTimeRenderOption);
+  AddToQuery(_Q,'majorDimension',AQuery.majorDimension);
+  Result:=Get(spreadsheetId,range,_Q);
+end;
+
+Function TSpreadsheetsValuesResource.BatchGet(spreadsheetId: string; AQuery : string = '') : TBatchGetValuesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}/values:batchGet';
+  _Methodid   = 'sheets.spreadsheets.values.batchGet';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TBatchGetValuesResponse) as TBatchGetValuesResponse;
+end;
+
+
+Function TSpreadsheetsValuesResource.BatchGet(spreadsheetId: string; AQuery : TSpreadsheetsValuesbatchGetOptions) : TBatchGetValuesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'ranges',AQuery.ranges);
+  AddToQuery(_Q,'valueRenderOption',AQuery.valueRenderOption);
+  AddToQuery(_Q,'dateTimeRenderOption',AQuery.dateTimeRenderOption);
+  AddToQuery(_Q,'majorDimension',AQuery.majorDimension);
+  Result:=BatchGet(spreadsheetId,_Q);
+end;
+
+Function TSpreadsheetsValuesResource.BatchUpdate(spreadsheetId: string; aBatchUpdateValuesRequest : TBatchUpdateValuesRequest) : TBatchUpdateValuesResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}/values:batchUpdate';
+  _Methodid   = 'sheets.spreadsheets.values.batchUpdate';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aBatchUpdateValuesRequest,TBatchUpdateValuesResponse) as TBatchUpdateValuesResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSpreadsheetsSheetsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TSpreadsheetsSheetsResource.ResourceName : String;
+
+begin
+  Result:='sheets';
+end;
+
+Class Function TSpreadsheetsSheetsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsheetsAPI;
+end;
+
+Function TSpreadsheetsSheetsResource.CopyTo(sheetId: integer; spreadsheetId: string; aCopySheetToAnotherSpreadsheetRequest : TCopySheetToAnotherSpreadsheetRequest) : TSheetProperties;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}/sheets/{sheetId}:copyTo';
+  _Methodid   = 'sheets.spreadsheets.sheets.copyTo';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['sheetId',sheetId,'spreadsheetId',spreadsheetId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aCopySheetToAnotherSpreadsheetRequest,TSheetProperties) as TSheetProperties;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSpreadsheetsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TSpreadsheetsResource.ResourceName : String;
+
+begin
+  Result:='spreadsheets';
+end;
+
+Class Function TSpreadsheetsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TsheetsAPI;
+end;
+
+Function TSpreadsheetsResource.Create(aSpreadsheet : TSpreadsheet) : TSpreadsheet;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/spreadsheets';
+  _Methodid   = 'sheets.spreadsheets.create';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aSpreadsheet,TSpreadsheet) as TSpreadsheet;
+end;
+
+Function TSpreadsheetsResource.Get(spreadsheetId: string; AQuery : string = '') : TSpreadsheet;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}';
+  _Methodid   = 'sheets.spreadsheets.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TSpreadsheet) as TSpreadsheet;
+end;
+
+
+Function TSpreadsheetsResource.Get(spreadsheetId: string; AQuery : TSpreadsheetsgetOptions) : TSpreadsheet;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'ranges',AQuery.ranges);
+  AddToQuery(_Q,'includeGridData',AQuery.includeGridData);
+  Result:=Get(spreadsheetId,_Q);
+end;
+
+Function TSpreadsheetsResource.BatchUpdate(spreadsheetId: string; aBatchUpdateSpreadsheetRequest : TBatchUpdateSpreadsheetRequest) : TBatchUpdateSpreadsheetResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v4/spreadsheets/{spreadsheetId}:batchUpdate';
+  _Methodid   = 'sheets.spreadsheets.batchUpdate';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['spreadsheetId',spreadsheetId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aBatchUpdateSpreadsheetRequest,TBatchUpdateSpreadsheetResponse) as TBatchUpdateSpreadsheetResponse;
+end;
+
+
+
+Function TSpreadsheetsResource.GetValuesInstance : TSpreadsheetsValuesResource;
+
+begin
+  if (FValuesInstance=Nil) then
+    FValuesInstance:=CreateValuesResource;
+  Result:=FValuesInstance;
+end;
+
+Function TSpreadsheetsResource.CreateValuesResource : TSpreadsheetsValuesResource;
+
+begin
+  Result:=CreateValuesResource(Self);
+end;
+
+
+Function TSpreadsheetsResource.CreateValuesResource(AOwner : TComponent) : TSpreadsheetsValuesResource;
+
+begin
+  Result:=TSpreadsheetsValuesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSpreadsheetsResource.GetSheetsInstance : TSpreadsheetsSheetsResource;
+
+begin
+  if (FSheetsInstance=Nil) then
+    FSheetsInstance:=CreateSheetsResource;
+  Result:=FSheetsInstance;
+end;
+
+Function TSpreadsheetsResource.CreateSheetsResource : TSpreadsheetsSheetsResource;
+
+begin
+  Result:=CreateSheetsResource(Self);
+end;
+
+
+Function TSpreadsheetsResource.CreateSheetsResource(AOwner : TComponent) : TSpreadsheetsSheetsResource;
+
+begin
+  Result:=TSpreadsheetsSheetsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TSheetsAPI
+  --------------------------------------------------------------------}
+
+Class Function TSheetsAPI.APIName : String;
+
+begin
+  Result:='sheets';
+end;
+
+Class Function TSheetsAPI.APIVersion : String;
+
+begin
+  Result:='v4';
+end;
+
+Class Function TSheetsAPI.APIRevision : String;
+
+begin
+  Result:='20160519';
+end;
+
+Class Function TSheetsAPI.APIID : String;
+
+begin
+  Result:='sheets:v4';
+end;
+
+Class Function TSheetsAPI.APITitle : String;
+
+begin
+  Result:='Google Sheets API';
+end;
+
+Class Function TSheetsAPI.APIDescription : String;
+
+begin
+  Result:='Reads and writes Google Sheets.';
+end;
+
+Class Function TSheetsAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TSheetsAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TSheetsAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TSheetsAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TSheetsAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/sheets/';
+end;
+
+Class Function TSheetsAPI.APIrootUrl : string;
+
+begin
+  Result:='https://sheets.googleapis.com/';
+end;
+
+Class Function TSheetsAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TSheetsAPI.APIbaseURL : String;
+
+begin
+  Result:='https://sheets.googleapis.com/';
+end;
+
+Class Function TSheetsAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TSheetsAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TSheetsAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TSheetsAPI.APIAuthScopes : TScopeInfoArray;
+
+begin
+  SetLength(Result,4);
+  Result[0].Name:='https://www.googleapis.com/auth/drive.readonly';
+  Result[0].Description:='View the files in your Google Drive';
+  Result[1].Name:='https://www.googleapis.com/auth/spreadsheets.readonly';
+  Result[1].Description:='View your Google Spreadsheets';
+  Result[2].Name:='https://www.googleapis.com/auth/drive';
+  Result[2].Description:='View and manage the files in your Google Drive';
+  Result[3].Name:='https://www.googleapis.com/auth/spreadsheets';
+  Result[3].Description:='View and manage your spreadsheets in Google Drive';
+  
+end;
+
+Class Function TSheetsAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TSheetsAPI.RegisterAPIResources;
+
+begin
+  TAddNamedRangeResponse.RegisterObject;
+  TUpdateProtectedRangeRequest.RegisterObject;
+  TPadding.RegisterObject;
+  TMergeCellsRequest.RegisterObject;
+  TAddSheetResponse.RegisterObject;
+  TPivotGroupValueMetadata.RegisterObject;
+  TUpdateEmbeddedObjectPositionResponse.RegisterObject;
+  TUpdateConditionalFormatRuleRequest.RegisterObject;
+  TTextFormat.RegisterObject;
+  TUpdateChartSpecRequest.RegisterObject;
+  TGridCoordinate.RegisterObject;
+  TDeleteFilterViewRequest.RegisterObject;
+  TBatchUpdateValuesResponse.RegisterObject;
+  TUpdateNamedRangeRequest.RegisterObject;
+  TUpdateValuesResponse.RegisterObject;
+  TSpreadsheetProperties.RegisterObject;
+  TCellData.RegisterObject;
+  TUnmergeCellsRequest.RegisterObject;
+  TTextToColumnsRequest.RegisterObject;
+  TAddProtectedRangeResponse.RegisterObject;
+  TBooleanCondition.RegisterObject;
+  TDeleteProtectedRangeRequest.RegisterObject;
+  TBasicChartDomain.RegisterObject;
+  TDimensionRange.RegisterObject;
+  TResponse.RegisterObject;
+  TAddConditionalFormatRuleRequest.RegisterObject;
+  TFilterViewTypecriteria.RegisterObject;
+  TFilterView.RegisterObject;
+  TSortRangeRequest.RegisterObject;
+  TTextFormatRun.RegisterObject;
+  TUpdateFilterViewRequest.RegisterObject;
+  TUpdateConditionalFormatRuleResponse.RegisterObject;
+  TFilterCriteria.RegisterObject;
+  TDeleteDimensionRequest.RegisterObject;
+  TPivotTableTypecriteria.RegisterObject;
+  TPivotTable.RegisterObject;
+  TDataValidationRule.RegisterObject;
+  TUpdateSpreadsheetPropertiesRequest.RegisterObject;
+  TChartSourceRange.RegisterObject;
+  TBatchUpdateValuesRequest.RegisterObject;
+  TClearBasicFilterRequest.RegisterObject;
+  TConditionalFormatRule.RegisterObject;
+  TUpdateBordersRequest.RegisterObject;
+  TPivotFilterCriteria.RegisterObject;
+  TBorders.RegisterObject;
+  TEmbeddedChart.RegisterObject;
+  TColor.RegisterObject;
+  TAddSheetRequest.RegisterObject;
+  TAddProtectedRangeRequest.RegisterObject;
+  TValueRange.RegisterObject;
+  TFindReplaceResponse.RegisterObject;
+  TCellFormat.RegisterObject;
+  TMoveDimensionRequest.RegisterObject;
+  TBasicChartAxis.RegisterObject;
+  TPivotGroupSortValueBucket.RegisterObject;
+  TDimensionProperties.RegisterObject;
+  TEmbeddedObjectPosition.RegisterObject;
+  TInterpolationPoint.RegisterObject;
+  TErrorValue.RegisterObject;
+  TDuplicateFilterViewRequest.RegisterObject;
+  TBatchUpdateSpreadsheetRequest.RegisterObject;
+  TSheetProperties.RegisterObject;
+  TProtectedRange.RegisterObject;
+  TDeleteConditionalFormatRuleRequest.RegisterObject;
+  TChartSpec.RegisterObject;
+  TSourceAndDestination.RegisterObject;
+  TConditionValue.RegisterObject;
+  TPasteDataRequest.RegisterObject;
+  TFindReplaceRequest.RegisterObject;
+  TSortSpec.RegisterObject;
+  TCopySheetToAnotherSpreadsheetRequest.RegisterObject;
+  TNumberFormat.RegisterObject;
+  TUpdateDimensionPropertiesRequest.RegisterObject;
+  TEditors.RegisterObject;
+  TSpreadsheet.RegisterObject;
+  TGridData.RegisterObject;
+  TPivotValue.RegisterObject;
+  TBasicFilterTypecriteria.RegisterObject;
+  TBasicFilter.RegisterObject;
+  TDuplicateSheetRequest.RegisterObject;
+  TAddFilterViewResponse.RegisterObject;
+  TDuplicateSheetResponse.RegisterObject;
+  TBorder.RegisterObject;
+  TAddNamedRangeRequest.RegisterObject;
+  TAddChartResponse.RegisterObject;
+  TAppendCellsRequest.RegisterObject;
+  TRowData.RegisterObject;
+  TBasicChartSeries.RegisterObject;
+  TRepeatCellRequest.RegisterObject;
+  TBasicChartSpec.RegisterObject;
+  TNamedRange.RegisterObject;
+  TSetBasicFilterRequest.RegisterObject;
+  TUpdateEmbeddedObjectPositionRequest.RegisterObject;
+  TAutoResizeDimensionsRequest.RegisterObject;
+  TDuplicateFilterViewResponse.RegisterObject;
+  TPivotGroup.RegisterObject;
+  TGridRange.RegisterObject;
+  TDeleteSheetRequest.RegisterObject;
+  TChartData.RegisterObject;
+  TSheet.RegisterObject;
+  TCopyPasteRequest.RegisterObject;
+  TUpdateCellsRequest.RegisterObject;
+  TExtendedValue.RegisterObject;
+  TBatchUpdateSpreadsheetResponse.RegisterObject;
+  TGradientRule.RegisterObject;
+  TCutPasteRequest.RegisterObject;
+  TOverlayPosition.RegisterObject;
+  TAutoFillRequest.RegisterObject;
+  TPieChartSpec.RegisterObject;
+  TUpdateSheetPropertiesRequest.RegisterObject;
+  TBooleanRule.RegisterObject;
+  TAppendDimensionRequest.RegisterObject;
+  TAddFilterViewRequest.RegisterObject;
+  TGridProperties.RegisterObject;
+  TDeleteNamedRangeRequest.RegisterObject;
+  TAddChartRequest.RegisterObject;
+  TSetDataValidationRequest.RegisterObject;
+  TRequest.RegisterObject;
+  TBatchGetValuesResponse.RegisterObject;
+  TInsertDimensionRequest.RegisterObject;
+  TDeleteEmbeddedObjectRequest.RegisterObject;
+  TDeleteConditionalFormatRuleResponse.RegisterObject;
+end;
+
+
+Function TSheetsAPI.GetSpreadsheetsValuesInstance : TSpreadsheetsValuesResource;
+
+begin
+  if (FSpreadsheetsValuesInstance=Nil) then
+    FSpreadsheetsValuesInstance:=CreateSpreadsheetsValuesResource;
+  Result:=FSpreadsheetsValuesInstance;
+end;
+
+Function TSheetsAPI.CreateSpreadsheetsValuesResource : TSpreadsheetsValuesResource;
+
+begin
+  Result:=CreateSpreadsheetsValuesResource(Self);
+end;
+
+
+Function TSheetsAPI.CreateSpreadsheetsValuesResource(AOwner : TComponent) : TSpreadsheetsValuesResource;
+
+begin
+  Result:=TSpreadsheetsValuesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSheetsAPI.GetSpreadsheetsSheetsInstance : TSpreadsheetsSheetsResource;
+
+begin
+  if (FSpreadsheetsSheetsInstance=Nil) then
+    FSpreadsheetsSheetsInstance:=CreateSpreadsheetsSheetsResource;
+  Result:=FSpreadsheetsSheetsInstance;
+end;
+
+Function TSheetsAPI.CreateSpreadsheetsSheetsResource : TSpreadsheetsSheetsResource;
+
+begin
+  Result:=CreateSpreadsheetsSheetsResource(Self);
+end;
+
+
+Function TSheetsAPI.CreateSpreadsheetsSheetsResource(AOwner : TComponent) : TSpreadsheetsSheetsResource;
+
+begin
+  Result:=TSpreadsheetsSheetsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TSheetsAPI.GetSpreadsheetsInstance : TSpreadsheetsResource;
+
+begin
+  if (FSpreadsheetsInstance=Nil) then
+    FSpreadsheetsInstance:=CreateSpreadsheetsResource;
+  Result:=FSpreadsheetsInstance;
+end;
+
+Function TSheetsAPI.CreateSpreadsheetsResource : TSpreadsheetsResource;
+
+begin
+  Result:=CreateSpreadsheetsResource(Self);
+end;
+
+
+Function TSheetsAPI.CreateSpreadsheetsResource(AOwner : TComponent) : TSpreadsheetsResource;
+
+begin
+  Result:=TSpreadsheetsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TSheetsAPI.RegisterAPI;
+end.

+ 12 - 27
packages/googleapi/src/googlesiteVerification.pp → packages/googleapi/src/googlesiteverification.pp

@@ -1,19 +1,4 @@
 unit googlesiteVerification;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:07
 {$MODE objfpc}
 {$H+}
 
@@ -67,7 +52,7 @@ type
     FverificationMethod : String;
   Protected
     //Property setters
-    Procedure Setsite(AIndex : Integer; AValue : TSiteVerificationWebResourceGettokenRequestTypesite); virtual;
+    Procedure Setsite(AIndex : Integer; const AValue : TSiteVerificationWebResourceGettokenRequestTypesite); virtual;
     Procedure SetverificationMethod(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -104,7 +89,7 @@ type
     Fitems : TSiteVerificationWebResourceListResponseTypeitemsArray;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TSiteVerificationWebResourceListResponseTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TSiteVerificationWebResourceListResponseTypeitemsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -147,8 +132,8 @@ type
   Protected
     //Property setters
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setowners(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setsite(AIndex : Integer; AValue : TSiteVerificationWebResourceResourceTypesite); virtual;
+    Procedure Setowners(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setsite(AIndex : Integer; const AValue : TSiteVerificationWebResourceResourceTypesite); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -270,7 +255,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSiteVerificationWebResourceGettokenRequest.Setsite(AIndex : Integer; AValue : TSiteVerificationWebResourceGettokenRequestTypesite); 
+Procedure TSiteVerificationWebResourceGettokenRequest.Setsite(AIndex : Integer; const AValue : TSiteVerificationWebResourceGettokenRequestTypesite); 
 
 begin
   If (Fsite=AValue) then exit;
@@ -324,7 +309,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSiteVerificationWebResourceListResponse.Setitems(AIndex : Integer; AValue : TSiteVerificationWebResourceListResponseTypeitemsArray); 
+Procedure TSiteVerificationWebResourceListResponse.Setitems(AIndex : Integer; const AValue : TSiteVerificationWebResourceListResponseTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -402,7 +387,7 @@ end;
 
 
 
-Procedure TSiteVerificationWebResourceResource.Setowners(AIndex : Integer; AValue : TStringArray); 
+Procedure TSiteVerificationWebResourceResource.Setowners(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fowners=AValue) then exit;
@@ -412,7 +397,7 @@ end;
 
 
 
-Procedure TSiteVerificationWebResourceResource.Setsite(AIndex : Integer; AValue : TSiteVerificationWebResourceResourceTypesite); 
+Procedure TSiteVerificationWebResourceResource.Setsite(AIndex : Integer; const AValue : TSiteVerificationWebResourceResourceTypesite); 
 
 begin
   If (Fsite=AValue) then exit;
@@ -580,7 +565,7 @@ end;
 Class Function TSiteVerificationAPI.APIRevision : String;
 
 begin
-  Result:='20131007';
+  Result:='20160228';
 end;
 
 Class Function TSiteVerificationAPI.APIID : String;
@@ -598,7 +583,7 @@ end;
 Class Function TSiteVerificationAPI.APIDescription : String;
 
 begin
-  Result:='Lets you programatically verify ownership of websites or domains with Google.';
+  Result:='Verifies ownership of websites or domains with Google.';
 end;
 
 Class Function TSiteVerificationAPI.APIOwnerDomain : String;
@@ -634,7 +619,7 @@ end;
 Class Function TSiteVerificationAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TSiteVerificationAPI.APIbasePath : string;
@@ -646,7 +631,7 @@ end;
 Class Function TSiteVerificationAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/siteVerification/v1/';
+  Result:='https://www.googleapis.com/siteVerification/v1/';
 end;
 
 Class Function TSiteVerificationAPI.APIProtocol : string;

File diff suppressed because it is too large
+ 147 - 162
packages/googleapi/src/googlespectrum.pp


File diff suppressed because it is too large
+ 298 - 126
packages/googleapi/src/googlesqladmin.pp


+ 200 - 126
packages/googleapi/src/googlestorage.pp

@@ -1,19 +1,4 @@
 unit googlestorage;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:08
 {$MODE objfpc}
 {$H+}
 
@@ -60,6 +45,7 @@ type
   TChannelTypeparams = Class;
   TComposeRequestTypesourceObjectsItemTypeobjectPreconditions = Class;
   TComposeRequestTypesourceObjectsItem = Class;
+  TObjectTypecustomerEncryption = Class;
   TObjectTypemetadata = Class;
   TObjectTypeowner = Class;
   TObjectAccessControlTypeprojectTeam = Class;
@@ -85,10 +71,10 @@ type
     FresponseHeader : TStringArray;
   Protected
     //Property setters
-    Procedure SetmaxAgeSeconds(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setmethod(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setorigin(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetresponseHeader(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetmaxAgeSeconds(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setmethod(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setorigin(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetresponseHeader(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -131,10 +117,10 @@ type
     FnumNewerVersions : integer;
   Protected
     //Property setters
-    Procedure Setage(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetcreatedBefore(AIndex : Integer; AValue : TDate); virtual;
-    Procedure SetisLive(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetnumNewerVersions(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setage(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetcreatedBefore(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure SetisLive(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnumNewerVersions(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property age : integer Index 0 Read Fage Write Setage;
@@ -154,8 +140,8 @@ type
     Fcondition : TBucketTypelifecycleTyperuleItemTypecondition;
   Protected
     //Property setters
-    Procedure Setaction(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleItemTypeaction); virtual;
-    Procedure Setcondition(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleItemTypecondition); virtual;
+    Procedure Setaction(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleItemTypeaction); virtual;
+    Procedure Setcondition(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleItemTypecondition); virtual;
   Public
   Published
     Property action : TBucketTypelifecycleTyperuleItemTypeaction Index 0 Read Faction Write Setaction;
@@ -172,7 +158,7 @@ type
     Frule : TBucketTypelifecycleTyperuleArray;
   Protected
     //Property setters
-    Procedure Setrule(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleArray); virtual;
+    Procedure Setrule(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -230,7 +216,7 @@ type
     Fenabled : boolean;
   Protected
     //Property setters
-    Procedure Setenabled(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setenabled(AIndex : Integer; const AValue : boolean); virtual;
   Public
   Published
     Property enabled : boolean Index 0 Read Fenabled Write Setenabled;
@@ -278,28 +264,30 @@ type
     FselfLink : String;
     FstorageClass : String;
     FtimeCreated : TDatetime;
+    Fupdated : TDatetime;
     Fversioning : TBucketTypeversioning;
     Fwebsite : TBucketTypewebsite;
   Protected
     //Property setters
-    Procedure Setacl(AIndex : Integer; AValue : TBucketTypeaclArray); virtual;
-    Procedure Setcors(AIndex : Integer; AValue : TBucketTypecorsArray); virtual;
-    Procedure SetdefaultObjectAcl(AIndex : Integer; AValue : TBucketTypedefaultObjectAclArray); virtual;
+    Procedure Setacl(AIndex : Integer; const AValue : TBucketTypeaclArray); virtual;
+    Procedure Setcors(AIndex : Integer; const AValue : TBucketTypecorsArray); virtual;
+    Procedure SetdefaultObjectAcl(AIndex : Integer; const AValue : TBucketTypedefaultObjectAclArray); 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 Setlifecycle(AIndex : Integer; AValue : TBucketTypelifecycle); virtual;
+    Procedure Setlifecycle(AIndex : Integer; const AValue : TBucketTypelifecycle); virtual;
     Procedure Setlocation(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlogging(AIndex : Integer; AValue : TBucketTypelogging); virtual;
+    Procedure Setlogging(AIndex : Integer; const AValue : TBucketTypelogging); virtual;
     Procedure Setmetageneration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setowner(AIndex : Integer; AValue : TBucketTypeowner); virtual;
+    Procedure Setowner(AIndex : Integer; const AValue : TBucketTypeowner); virtual;
     Procedure SetprojectNumber(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstorageClass(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettimeCreated(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setversioning(AIndex : Integer; AValue : TBucketTypeversioning); virtual;
-    Procedure Setwebsite(AIndex : Integer; AValue : TBucketTypewebsite); virtual;
+    Procedure SettimeCreated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setversioning(AIndex : Integer; const AValue : TBucketTypeversioning); virtual;
+    Procedure Setwebsite(AIndex : Integer; const AValue : TBucketTypewebsite); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -322,8 +310,9 @@ type
     Property selfLink : String Index 104 Read FselfLink Write SetselfLink;
     Property storageClass : String Index 112 Read FstorageClass Write SetstorageClass;
     Property timeCreated : TDatetime Index 120 Read FtimeCreated Write SettimeCreated;
-    Property versioning : TBucketTypeversioning Index 128 Read Fversioning Write Setversioning;
-    Property website : TBucketTypewebsite Index 136 Read Fwebsite Write Setwebsite;
+    Property updated : TDatetime Index 128 Read Fupdated Write Setupdated;
+    Property versioning : TBucketTypeversioning Index 136 Read Fversioning Write Setversioning;
+    Property website : TBucketTypewebsite Index 144 Read Fwebsite Write Setwebsite;
   end;
   TBucketClass = Class of TBucket;
   
@@ -373,7 +362,7 @@ type
     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 SetprojectTeam(AIndex : Integer; AValue : TBucketAccessControlTypeprojectTeam); virtual;
+    Procedure SetprojectTeam(AIndex : Integer; const AValue : TBucketAccessControlTypeprojectTeam); virtual;
     Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -402,7 +391,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TBucketAccessControlsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TBucketAccessControlsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -426,7 +415,7 @@ type
     FnextPageToken : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TBucketsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TBucketsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -478,8 +467,8 @@ type
     Procedure Setexpiration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setparams(AIndex : Integer; AValue : TChannelTypeparams); virtual;
-    Procedure Setpayload(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setparams(AIndex : Integer; const AValue : TChannelTypeparams); virtual;
+    Procedure Setpayload(AIndex : Integer; const AValue : boolean); virtual;
     Procedure SetresourceId(AIndex : Integer; const AValue : String); virtual;
     Procedure SetresourceUri(AIndex : Integer; const AValue : String); virtual;
     Procedure Settoken(AIndex : Integer; const AValue : String); virtual;
@@ -528,7 +517,7 @@ type
     //Property setters
     Procedure Setgeneration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetobjectPreconditions(AIndex : Integer; AValue : TComposeRequestTypesourceObjectsItemTypeobjectPreconditions); virtual;
+    Procedure SetobjectPreconditions(AIndex : Integer; const AValue : TComposeRequestTypesourceObjectsItemTypeobjectPreconditions); virtual;
   Public
   Published
     Property generation : String Index 0 Read Fgeneration Write Setgeneration;
@@ -548,9 +537,9 @@ type
     FsourceObjects : TComposeRequestTypesourceObjectsArray;
   Protected
     //Property setters
-    Procedure Setdestination(AIndex : Integer; AValue : TObject); virtual;
+    Procedure Setdestination(AIndex : Integer; const AValue : TObject); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetsourceObjects(AIndex : Integer; AValue : TComposeRequestTypesourceObjectsArray); virtual;
+    Procedure SetsourceObjects(AIndex : Integer; const AValue : TComposeRequestTypesourceObjectsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -563,6 +552,25 @@ type
   end;
   TComposeRequestClass = Class of TComposeRequest;
   
+  { --------------------------------------------------------------------
+    TObjectTypecustomerEncryption
+    --------------------------------------------------------------------}
+  
+  TObjectTypecustomerEncryption = Class(TGoogleBaseObject)
+  Private
+    FencryptionAlgorithm : String;
+    FkeySha256 : String;
+  Protected
+    //Property setters
+    Procedure SetencryptionAlgorithm(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetkeySha256(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property encryptionAlgorithm : String Index 0 Read FencryptionAlgorithm Write SetencryptionAlgorithm;
+    Property keySha256 : String Index 8 Read FkeySha256 Write SetkeySha256;
+  end;
+  TObjectTypecustomerEncryptionClass = Class of TObjectTypecustomerEncryption;
+  
   { --------------------------------------------------------------------
     TObjectTypemetadata
     --------------------------------------------------------------------}
@@ -611,6 +619,7 @@ type
     FcontentLanguage : String;
     FcontentType : String;
     Fcrc32c : String;
+    FcustomerEncryption : TObjectTypecustomerEncryption;
     Fetag : String;
     Fgeneration : String;
     Fid : String;
@@ -624,34 +633,37 @@ type
     FselfLink : String;
     Fsize : String;
     FstorageClass : String;
+    FtimeCreated : TDatetime;
     FtimeDeleted : TDatetime;
     Fupdated : TDatetime;
   Protected
     //Property setters
-    Procedure Setacl(AIndex : Integer; AValue : TObjectTypeaclArray); virtual;
+    Procedure Setacl(AIndex : Integer; const AValue : TObjectTypeaclArray); virtual;
     Procedure Setbucket(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcacheControl(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetcomponentCount(AIndex : Integer; AValue : integer); virtual;
+    Procedure SetcomponentCount(AIndex : Integer; const AValue : integer); virtual;
     Procedure SetcontentDisposition(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcontentEncoding(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcontentLanguage(AIndex : Integer; const AValue : String); virtual;
     Procedure SetcontentType(AIndex : Integer; const AValue : String); virtual;
     Procedure Setcrc32c(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcustomerEncryption(AIndex : Integer; const AValue : TObjectTypecustomerEncryption); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
     Procedure Setgeneration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Setmd5Hash(AIndex : Integer; const AValue : String); virtual;
     Procedure SetmediaLink(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setmetadata(AIndex : Integer; AValue : TObjectTypemetadata); virtual;
+    Procedure Setmetadata(AIndex : Integer; const AValue : TObjectTypemetadata); virtual;
     Procedure Setmetageneration(AIndex : Integer; const AValue : String); virtual;
     Procedure Setname(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setowner(AIndex : Integer; AValue : TObjectTypeowner); virtual;
+    Procedure Setowner(AIndex : Integer; const AValue : TObjectTypeowner); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setsize(AIndex : Integer; const AValue : String); virtual;
     Procedure SetstorageClass(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettimeDeleted(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SettimeCreated(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SettimeDeleted(AIndex : Integer; const AValue : TDatetime); 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;
@@ -667,21 +679,23 @@ type
     Property contentLanguage : String Index 48 Read FcontentLanguage Write SetcontentLanguage;
     Property contentType : String Index 56 Read FcontentType Write SetcontentType;
     Property crc32c : String Index 64 Read Fcrc32c Write Setcrc32c;
-    Property etag : String Index 72 Read Fetag Write Setetag;
-    Property generation : String Index 80 Read Fgeneration Write Setgeneration;
-    Property id : String Index 88 Read Fid Write Setid;
-    Property kind : String Index 96 Read Fkind Write Setkind;
-    Property md5Hash : String Index 104 Read Fmd5Hash Write Setmd5Hash;
-    Property mediaLink : String Index 112 Read FmediaLink Write SetmediaLink;
-    Property metadata : TObjectTypemetadata Index 120 Read Fmetadata Write Setmetadata;
-    Property metageneration : String Index 128 Read Fmetageneration Write Setmetageneration;
-    Property name : String Index 136 Read Fname Write Setname;
-    Property owner : TObjectTypeowner Index 144 Read Fowner Write Setowner;
-    Property selfLink : String Index 152 Read FselfLink Write SetselfLink;
-    Property size : String Index 160 Read Fsize Write Setsize;
-    Property storageClass : String Index 168 Read FstorageClass Write SetstorageClass;
-    Property timeDeleted : TDatetime Index 176 Read FtimeDeleted Write SettimeDeleted;
-    Property updated : TDatetime Index 184 Read Fupdated Write Setupdated;
+    Property customerEncryption : TObjectTypecustomerEncryption Index 72 Read FcustomerEncryption Write SetcustomerEncryption;
+    Property etag : String Index 80 Read Fetag Write Setetag;
+    Property generation : String Index 88 Read Fgeneration Write Setgeneration;
+    Property id : String Index 96 Read Fid Write Setid;
+    Property kind : String Index 104 Read Fkind Write Setkind;
+    Property md5Hash : String Index 112 Read Fmd5Hash Write Setmd5Hash;
+    Property mediaLink : String Index 120 Read FmediaLink Write SetmediaLink;
+    Property metadata : TObjectTypemetadata Index 128 Read Fmetadata Write Setmetadata;
+    Property metageneration : String Index 136 Read Fmetageneration Write Setmetageneration;
+    Property name : String Index 144 Read Fname Write Setname;
+    Property owner : TObjectTypeowner Index 152 Read Fowner Write Setowner;
+    Property selfLink : String Index 160 Read FselfLink Write SetselfLink;
+    Property size : String Index 168 Read Fsize Write Setsize;
+    Property storageClass : String Index 176 Read FstorageClass Write SetstorageClass;
+    Property timeCreated : TDatetime Index 184 Read FtimeCreated Write SettimeCreated;
+    Property timeDeleted : TDatetime Index 192 Read FtimeDeleted Write SettimeDeleted;
+    Property updated : TDatetime Index 200 Read Fupdated Write Setupdated;
   end;
   TObjectClass = Class of TObject;
   
@@ -736,7 +750,7 @@ type
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_object(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetprojectTeam(AIndex : Integer; AValue : TObjectAccessControlTypeprojectTeam); virtual;
+    Procedure SetprojectTeam(AIndex : Integer; const AValue : TObjectAccessControlTypeprojectTeam); virtual;
     Procedure Setrole(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -767,7 +781,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTJSONSchemaArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -792,10 +806,10 @@ type
     Fprefixes : TStringArray;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TObjectsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TObjectsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setprefixes(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure Setprefixes(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -823,10 +837,10 @@ type
     FtotalBytesRewritten : String;
   Protected
     //Property setters
-    Procedure Setdone(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetobjectSize(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setresource(AIndex : Integer; AValue : TObject); virtual;
+    Procedure Setresource(AIndex : Integer; const AValue : TObject); virtual;
     Procedure SetrewriteToken(AIndex : Integer; const AValue : String); virtual;
     Procedure SettotalBytesRewritten(AIndex : Integer; const AValue : String); virtual;
   Public
@@ -1276,7 +1290,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TBucketTypecorsItem.SetmaxAgeSeconds(AIndex : Integer; AValue : integer); 
+Procedure TBucketTypecorsItem.SetmaxAgeSeconds(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxAgeSeconds=AValue) then exit;
@@ -1286,7 +1300,7 @@ end;
 
 
 
-Procedure TBucketTypecorsItem.Setmethod(AIndex : Integer; AValue : TStringArray); 
+Procedure TBucketTypecorsItem.Setmethod(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fmethod=AValue) then exit;
@@ -1296,7 +1310,7 @@ end;
 
 
 
-Procedure TBucketTypecorsItem.Setorigin(AIndex : Integer; AValue : TStringArray); 
+Procedure TBucketTypecorsItem.Setorigin(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Forigin=AValue) then exit;
@@ -1306,7 +1320,7 @@ end;
 
 
 
-Procedure TBucketTypecorsItem.SetresponseHeader(AIndex : Integer; AValue : TStringArray); 
+Procedure TBucketTypecorsItem.SetresponseHeader(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FresponseHeader=AValue) then exit;
@@ -1366,7 +1380,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucketTypelifecycleTyperuleItemTypecondition.Setage(AIndex : Integer; AValue : integer); 
+Procedure TBucketTypelifecycleTyperuleItemTypecondition.Setage(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fage=AValue) then exit;
@@ -1376,7 +1390,7 @@ end;
 
 
 
-Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetcreatedBefore(AIndex : Integer; AValue : TDate); 
+Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetcreatedBefore(AIndex : Integer; const AValue : TDate); 
 
 begin
   If (FcreatedBefore=AValue) then exit;
@@ -1386,7 +1400,7 @@ end;
 
 
 
-Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetisLive(AIndex : Integer; AValue : boolean); 
+Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetisLive(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisLive=AValue) then exit;
@@ -1396,7 +1410,7 @@ end;
 
 
 
-Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetnumNewerVersions(AIndex : Integer; AValue : integer); 
+Procedure TBucketTypelifecycleTyperuleItemTypecondition.SetnumNewerVersions(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FnumNewerVersions=AValue) then exit;
@@ -1413,7 +1427,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucketTypelifecycleTyperuleItem.Setaction(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleItemTypeaction); 
+Procedure TBucketTypelifecycleTyperuleItem.Setaction(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleItemTypeaction); 
 
 begin
   If (Faction=AValue) then exit;
@@ -1423,7 +1437,7 @@ end;
 
 
 
-Procedure TBucketTypelifecycleTyperuleItem.Setcondition(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleItemTypecondition); 
+Procedure TBucketTypelifecycleTyperuleItem.Setcondition(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleItemTypecondition); 
 
 begin
   If (Fcondition=AValue) then exit;
@@ -1440,7 +1454,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucketTypelifecycle.Setrule(AIndex : Integer; AValue : TBucketTypelifecycleTyperuleArray); 
+Procedure TBucketTypelifecycle.Setrule(AIndex : Integer; const AValue : TBucketTypelifecycleTyperuleArray); 
 
 begin
   If (Frule=AValue) then exit;
@@ -1524,7 +1538,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucketTypeversioning.Setenabled(AIndex : Integer; AValue : boolean); 
+Procedure TBucketTypeversioning.Setenabled(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fenabled=AValue) then exit;
@@ -1568,7 +1582,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucket.Setacl(AIndex : Integer; AValue : TBucketTypeaclArray); 
+Procedure TBucket.Setacl(AIndex : Integer; const AValue : TBucketTypeaclArray); 
 
 begin
   If (Facl=AValue) then exit;
@@ -1578,7 +1592,7 @@ end;
 
 
 
-Procedure TBucket.Setcors(AIndex : Integer; AValue : TBucketTypecorsArray); 
+Procedure TBucket.Setcors(AIndex : Integer; const AValue : TBucketTypecorsArray); 
 
 begin
   If (Fcors=AValue) then exit;
@@ -1588,7 +1602,7 @@ end;
 
 
 
-Procedure TBucket.SetdefaultObjectAcl(AIndex : Integer; AValue : TBucketTypedefaultObjectAclArray); 
+Procedure TBucket.SetdefaultObjectAcl(AIndex : Integer; const AValue : TBucketTypedefaultObjectAclArray); 
 
 begin
   If (FdefaultObjectAcl=AValue) then exit;
@@ -1628,7 +1642,7 @@ end;
 
 
 
-Procedure TBucket.Setlifecycle(AIndex : Integer; AValue : TBucketTypelifecycle); 
+Procedure TBucket.Setlifecycle(AIndex : Integer; const AValue : TBucketTypelifecycle); 
 
 begin
   If (Flifecycle=AValue) then exit;
@@ -1648,7 +1662,7 @@ end;
 
 
 
-Procedure TBucket.Setlogging(AIndex : Integer; AValue : TBucketTypelogging); 
+Procedure TBucket.Setlogging(AIndex : Integer; const AValue : TBucketTypelogging); 
 
 begin
   If (Flogging=AValue) then exit;
@@ -1678,7 +1692,7 @@ end;
 
 
 
-Procedure TBucket.Setowner(AIndex : Integer; AValue : TBucketTypeowner); 
+Procedure TBucket.Setowner(AIndex : Integer; const AValue : TBucketTypeowner); 
 
 begin
   If (Fowner=AValue) then exit;
@@ -1718,7 +1732,7 @@ end;
 
 
 
-Procedure TBucket.SettimeCreated(AIndex : Integer; AValue : TDatetime); 
+Procedure TBucket.SettimeCreated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FtimeCreated=AValue) then exit;
@@ -1728,7 +1742,17 @@ end;
 
 
 
-Procedure TBucket.Setversioning(AIndex : Integer; AValue : TBucketTypeversioning); 
+Procedure TBucket.Setupdated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (Fupdated=AValue) then exit;
+  Fupdated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TBucket.Setversioning(AIndex : Integer; const AValue : TBucketTypeversioning); 
 
 begin
   If (Fversioning=AValue) then exit;
@@ -1738,7 +1762,7 @@ end;
 
 
 
-Procedure TBucket.Setwebsite(AIndex : Integer; AValue : TBucketTypewebsite); 
+Procedure TBucket.Setwebsite(AIndex : Integer; const AValue : TBucketTypewebsite); 
 
 begin
   If (Fwebsite=AValue) then exit;
@@ -1877,7 +1901,7 @@ end;
 
 
 
-Procedure TBucketAccessControl.SetprojectTeam(AIndex : Integer; AValue : TBucketAccessControlTypeprojectTeam); 
+Procedure TBucketAccessControl.SetprojectTeam(AIndex : Integer; const AValue : TBucketAccessControlTypeprojectTeam); 
 
 begin
   If (FprojectTeam=AValue) then exit;
@@ -1914,7 +1938,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBucketAccessControls.Setitems(AIndex : Integer; AValue : TBucketAccessControlsTypeitemsArray); 
+Procedure TBucketAccessControls.Setitems(AIndex : Integer; const AValue : TBucketAccessControlsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1954,7 +1978,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TBuckets.Setitems(AIndex : Integer; AValue : TBucketsTypeitemsArray); 
+Procedure TBuckets.Setitems(AIndex : Integer; const AValue : TBucketsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2057,7 +2081,7 @@ end;
 
 
 
-Procedure TChannel.Setparams(AIndex : Integer; AValue : TChannelTypeparams); 
+Procedure TChannel.Setparams(AIndex : Integer; const AValue : TChannelTypeparams); 
 
 begin
   If (Fparams=AValue) then exit;
@@ -2067,7 +2091,7 @@ end;
 
 
 
-Procedure TChannel.Setpayload(AIndex : Integer; AValue : boolean); 
+Procedure TChannel.Setpayload(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fpayload=AValue) then exit;
@@ -2172,7 +2196,7 @@ end;
 
 
 
-Procedure TComposeRequestTypesourceObjectsItem.SetobjectPreconditions(AIndex : Integer; AValue : TComposeRequestTypesourceObjectsItemTypeobjectPreconditions); 
+Procedure TComposeRequestTypesourceObjectsItem.SetobjectPreconditions(AIndex : Integer; const AValue : TComposeRequestTypesourceObjectsItemTypeobjectPreconditions); 
 
 begin
   If (FobjectPreconditions=AValue) then exit;
@@ -2189,7 +2213,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TComposeRequest.Setdestination(AIndex : Integer; AValue : TObject); 
+Procedure TComposeRequest.Setdestination(AIndex : Integer; const AValue : TObject); 
 
 begin
   If (Fdestination=AValue) then exit;
@@ -2209,7 +2233,7 @@ end;
 
 
 
-Procedure TComposeRequest.SetsourceObjects(AIndex : Integer; AValue : TComposeRequestTypesourceObjectsArray); 
+Procedure TComposeRequest.SetsourceObjects(AIndex : Integer; const AValue : TComposeRequestTypesourceObjectsArray); 
 
 begin
   If (FsourceObjects=AValue) then exit;
@@ -2234,6 +2258,33 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TObjectTypecustomerEncryption
+  --------------------------------------------------------------------}
+
+
+Procedure TObjectTypecustomerEncryption.SetencryptionAlgorithm(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FencryptionAlgorithm=AValue) then exit;
+  FencryptionAlgorithm:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObjectTypecustomerEncryption.SetkeySha256(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FkeySha256=AValue) then exit;
+  FkeySha256:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
 { --------------------------------------------------------------------
   TObjectTypemetadata
   --------------------------------------------------------------------}
@@ -2279,7 +2330,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TObject.Setacl(AIndex : Integer; AValue : TObjectTypeaclArray); 
+Procedure TObject.Setacl(AIndex : Integer; const AValue : TObjectTypeaclArray); 
 
 begin
   If (Facl=AValue) then exit;
@@ -2309,7 +2360,7 @@ end;
 
 
 
-Procedure TObject.SetcomponentCount(AIndex : Integer; AValue : integer); 
+Procedure TObject.SetcomponentCount(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FcomponentCount=AValue) then exit;
@@ -2369,6 +2420,16 @@ end;
 
 
 
+Procedure TObject.SetcustomerEncryption(AIndex : Integer; const AValue : TObjectTypecustomerEncryption); 
+
+begin
+  If (FcustomerEncryption=AValue) then exit;
+  FcustomerEncryption:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
 Procedure TObject.Setetag(AIndex : Integer; const AValue : String); 
 
 begin
@@ -2429,7 +2490,7 @@ end;
 
 
 
-Procedure TObject.Setmetadata(AIndex : Integer; AValue : TObjectTypemetadata); 
+Procedure TObject.Setmetadata(AIndex : Integer; const AValue : TObjectTypemetadata); 
 
 begin
   If (Fmetadata=AValue) then exit;
@@ -2459,7 +2520,7 @@ end;
 
 
 
-Procedure TObject.Setowner(AIndex : Integer; AValue : TObjectTypeowner); 
+Procedure TObject.Setowner(AIndex : Integer; const AValue : TObjectTypeowner); 
 
 begin
   If (Fowner=AValue) then exit;
@@ -2499,7 +2560,17 @@ end;
 
 
 
-Procedure TObject.SettimeDeleted(AIndex : Integer; AValue : TDatetime); 
+Procedure TObject.SettimeCreated(AIndex : Integer; const AValue : TDatetime); 
+
+begin
+  If (FtimeCreated=AValue) then exit;
+  FtimeCreated:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObject.SettimeDeleted(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FtimeDeleted=AValue) then exit;
@@ -2509,7 +2580,7 @@ end;
 
 
 
-Procedure TObject.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TObject.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -2666,7 +2737,7 @@ end;
 
 
 
-Procedure TObjectAccessControl.SetprojectTeam(AIndex : Integer; AValue : TObjectAccessControlTypeprojectTeam); 
+Procedure TObjectAccessControl.SetprojectTeam(AIndex : Integer; const AValue : TObjectAccessControlTypeprojectTeam); 
 
 begin
   If (FprojectTeam=AValue) then exit;
@@ -2714,7 +2785,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TObjectAccessControls.Setitems(AIndex : Integer; AValue : TTJSONSchemaArray); 
+Procedure TObjectAccessControls.Setitems(AIndex : Integer; const AValue : TTJSONSchemaArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2754,7 +2825,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TObjects.Setitems(AIndex : Integer; AValue : TObjectsTypeitemsArray); 
+Procedure TObjects.Setitems(AIndex : Integer; const AValue : TObjectsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -2784,7 +2855,7 @@ end;
 
 
 
-Procedure TObjects.Setprefixes(AIndex : Integer; AValue : TStringArray); 
+Procedure TObjects.Setprefixes(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fprefixes=AValue) then exit;
@@ -2815,7 +2886,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TRewriteResponse.Setdone(AIndex : Integer; AValue : boolean); 
+Procedure TRewriteResponse.Setdone(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fdone=AValue) then exit;
@@ -2845,7 +2916,7 @@ end;
 
 
 
-Procedure TRewriteResponse.Setresource(AIndex : Integer; AValue : TObject); 
+Procedure TRewriteResponse.Setresource(AIndex : Integer; const AValue : TObject); 
 
 begin
   If (Fresource=AValue) then exit;
@@ -3880,7 +3951,7 @@ end;
 Class Function TStorageAPI.APIRevision : String;
 
 begin
-  Result:='20150326';
+  Result:='20160504';
 end;
 
 Class Function TStorageAPI.APIID : String;
@@ -3892,13 +3963,13 @@ end;
 Class Function TStorageAPI.APITitle : String;
 
 begin
-  Result:='Cloud Storage API';
+  Result:='Cloud Storage JSON API';
 end;
 
 Class Function TStorageAPI.APIDescription : String;
 
 begin
-  Result:='Lets you store and retrieve potentially-large, immutable data objects.';
+  Result:='Stores and retrieves potentially large, immutable data objects.';
 end;
 
 Class Function TStorageAPI.APIOwnerDomain : String;
@@ -3934,7 +4005,7 @@ end;
 Class Function TStorageAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TStorageAPI.APIbasePath : string;
@@ -3946,7 +4017,7 @@ end;
 Class Function TStorageAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/storage/v1/';
+  Result:='https://www.googleapis.com/storage/v1/';
 end;
 
 Class Function TStorageAPI.APIProtocol : string;
@@ -3970,15 +4041,17 @@ end;
 Class Function TStorageAPI.APIAuthScopes : TScopeInfoArray;
 
 begin
-  SetLength(Result,4);
+  SetLength(Result,5);
   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/devstorage.full_control';
-  Result[1].Description:='Manage your data and permissions in Google Cloud Storage';
-  Result[2].Name:='https://www.googleapis.com/auth/devstorage.read_only';
-  Result[2].Description:='View your data in Google Cloud Storage';
-  Result[3].Name:='https://www.googleapis.com/auth/devstorage.read_write';
-  Result[3].Description:='Manage your data in Google Cloud Storage';
+  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/devstorage.full_control';
+  Result[2].Description:='Manage your data and permissions in Google Cloud Storage';
+  Result[3].Name:='https://www.googleapis.com/auth/devstorage.read_only';
+  Result[3].Description:='View your data in Google Cloud Storage';
+  Result[4].Name:='https://www.googleapis.com/auth/devstorage.read_write';
+  Result[4].Description:='Manage your data in Google Cloud Storage';
   
 end;
 
@@ -4010,6 +4083,7 @@ begin
   TComposeRequestTypesourceObjectsItemTypeobjectPreconditions.RegisterObject;
   TComposeRequestTypesourceObjectsItem.RegisterObject;
   TComposeRequest.RegisterObject;
+  TObjectTypecustomerEncryption.RegisterObject;
   TObjectTypemetadata.RegisterObject;
   TObjectTypeowner.RegisterObject;
   TObject.RegisterObject;

+ 2538 - 0
packages/googleapi/src/googlestoragetransfer.pp

@@ -0,0 +1,2538 @@
+unit googlestoragetransfer;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TGoogleServiceAccount = Class;
+  TTransferJob = Class;
+  TTransferSpec = Class;
+  TGcsData = Class;
+  TAwsS3Data = Class;
+  TAwsAccessKey = Class;
+  THttpData = Class;
+  TObjectConditions = Class;
+  TTransferOptions = Class;
+  TSchedule = Class;
+  TDate = Class;
+  TTimeOfDay = Class;
+  TUpdateTransferJobRequest = Class;
+  TListTransferJobsResponse = Class;
+  TPauseTransferOperationRequest = Class;
+  TEmpty = Class;
+  TResumeTransferOperationRequest = Class;
+  TOperation = Class;
+  TStatus = Class;
+  TListOperationsResponse = Class;
+  TTransferOperation = Class;
+  TTransferCounters = Class;
+  TErrorSummary = Class;
+  TErrorLogEntry = Class;
+  TGoogleServiceAccountArray = Array of TGoogleServiceAccount;
+  TTransferJobArray = Array of TTransferJob;
+  TTransferSpecArray = Array of TTransferSpec;
+  TGcsDataArray = Array of TGcsData;
+  TAwsS3DataArray = Array of TAwsS3Data;
+  TAwsAccessKeyArray = Array of TAwsAccessKey;
+  THttpDataArray = Array of THttpData;
+  TObjectConditionsArray = Array of TObjectConditions;
+  TTransferOptionsArray = Array of TTransferOptions;
+  TScheduleArray = Array of TSchedule;
+  TDateArray = Array of TDate;
+  TTimeOfDayArray = Array of TTimeOfDay;
+  TUpdateTransferJobRequestArray = Array of TUpdateTransferJobRequest;
+  TListTransferJobsResponseArray = Array of TListTransferJobsResponse;
+  TPauseTransferOperationRequestArray = Array of TPauseTransferOperationRequest;
+  TEmptyArray = Array of TEmpty;
+  TResumeTransferOperationRequestArray = Array of TResumeTransferOperationRequest;
+  TOperationArray = Array of TOperation;
+  TStatusArray = Array of TStatus;
+  TListOperationsResponseArray = Array of TListOperationsResponse;
+  TTransferOperationArray = Array of TTransferOperation;
+  TTransferCountersArray = Array of TTransferCounters;
+  TErrorSummaryArray = Array of TErrorSummary;
+  TErrorLogEntryArray = Array of TErrorLogEntry;
+  //Anonymous types, using auto-generated names
+  TOperationTypemetadata = Class;
+  TOperationTyperesponse = Class;
+  TStatusTypedetailsItem = Class;
+  TListTransferJobsResponseTypetransferJobsArray = Array of TTransferJob;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TListOperationsResponseTypeoperationsArray = Array of TOperation;
+  TTransferOperationTypeerrorBreakdownsArray = Array of TErrorSummary;
+  TErrorSummaryTypeerrorLogEntriesArray = Array of TErrorLogEntry;
+  
+  { --------------------------------------------------------------------
+    TGoogleServiceAccount
+    --------------------------------------------------------------------}
+  
+  TGoogleServiceAccount = Class(TGoogleBaseObject)
+  Private
+    FaccountEmail : String;
+  Protected
+    //Property setters
+    Procedure SetaccountEmail(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property accountEmail : String Index 0 Read FaccountEmail Write SetaccountEmail;
+  end;
+  TGoogleServiceAccountClass = Class of TGoogleServiceAccount;
+  
+  { --------------------------------------------------------------------
+    TTransferJob
+    --------------------------------------------------------------------}
+  
+  TTransferJob = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    Fdescription : String;
+    FprojectId : String;
+    FtransferSpec : TTransferSpec;
+    Fschedule : TSchedule;
+    Fstatus : String;
+    FcreationTime : String;
+    FlastModificationTime : String;
+    FdeletionTime : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettransferSpec(AIndex : Integer; const AValue : TTransferSpec); virtual;
+    Procedure Setschedule(AIndex : Integer; const AValue : TSchedule); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetlastModificationTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdeletionTime(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property name : String Index 0 Read Fname Write Setname;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property projectId : String Index 16 Read FprojectId Write SetprojectId;
+    Property transferSpec : TTransferSpec Index 24 Read FtransferSpec Write SettransferSpec;
+    Property schedule : TSchedule Index 32 Read Fschedule Write Setschedule;
+    Property status : String Index 40 Read Fstatus Write Setstatus;
+    Property creationTime : String Index 48 Read FcreationTime Write SetcreationTime;
+    Property lastModificationTime : String Index 56 Read FlastModificationTime Write SetlastModificationTime;
+    Property deletionTime : String Index 64 Read FdeletionTime Write SetdeletionTime;
+  end;
+  TTransferJobClass = Class of TTransferJob;
+  
+  { --------------------------------------------------------------------
+    TTransferSpec
+    --------------------------------------------------------------------}
+  
+  TTransferSpec = Class(TGoogleBaseObject)
+  Private
+    FgcsDataSource : TGcsData;
+    FawsS3DataSource : TAwsS3Data;
+    FhttpDataSource : THttpData;
+    FgcsDataSink : TGcsData;
+    FobjectConditions : TObjectConditions;
+    FtransferOptions : TTransferOptions;
+  Protected
+    //Property setters
+    Procedure SetgcsDataSource(AIndex : Integer; const AValue : TGcsData); virtual;
+    Procedure SetawsS3DataSource(AIndex : Integer; const AValue : TAwsS3Data); virtual;
+    Procedure SethttpDataSource(AIndex : Integer; const AValue : THttpData); virtual;
+    Procedure SetgcsDataSink(AIndex : Integer; const AValue : TGcsData); virtual;
+    Procedure SetobjectConditions(AIndex : Integer; const AValue : TObjectConditions); virtual;
+    Procedure SettransferOptions(AIndex : Integer; const AValue : TTransferOptions); virtual;
+  Public
+  Published
+    Property gcsDataSource : TGcsData Index 0 Read FgcsDataSource Write SetgcsDataSource;
+    Property awsS3DataSource : TAwsS3Data Index 8 Read FawsS3DataSource Write SetawsS3DataSource;
+    Property httpDataSource : THttpData Index 16 Read FhttpDataSource Write SethttpDataSource;
+    Property gcsDataSink : TGcsData Index 24 Read FgcsDataSink Write SetgcsDataSink;
+    Property objectConditions : TObjectConditions Index 32 Read FobjectConditions Write SetobjectConditions;
+    Property transferOptions : TTransferOptions Index 40 Read FtransferOptions Write SettransferOptions;
+  end;
+  TTransferSpecClass = Class of TTransferSpec;
+  
+  { --------------------------------------------------------------------
+    TGcsData
+    --------------------------------------------------------------------}
+  
+  TGcsData = Class(TGoogleBaseObject)
+  Private
+    FbucketName : String;
+  Protected
+    //Property setters
+    Procedure SetbucketName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property bucketName : String Index 0 Read FbucketName Write SetbucketName;
+  end;
+  TGcsDataClass = Class of TGcsData;
+  
+  { --------------------------------------------------------------------
+    TAwsS3Data
+    --------------------------------------------------------------------}
+  
+  TAwsS3Data = Class(TGoogleBaseObject)
+  Private
+    FbucketName : String;
+    FawsAccessKey : TAwsAccessKey;
+  Protected
+    //Property setters
+    Procedure SetbucketName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetawsAccessKey(AIndex : Integer; const AValue : TAwsAccessKey); virtual;
+  Public
+  Published
+    Property bucketName : String Index 0 Read FbucketName Write SetbucketName;
+    Property awsAccessKey : TAwsAccessKey Index 8 Read FawsAccessKey Write SetawsAccessKey;
+  end;
+  TAwsS3DataClass = Class of TAwsS3Data;
+  
+  { --------------------------------------------------------------------
+    TAwsAccessKey
+    --------------------------------------------------------------------}
+  
+  TAwsAccessKey = Class(TGoogleBaseObject)
+  Private
+    FaccessKeyId : String;
+    FsecretAccessKey : String;
+  Protected
+    //Property setters
+    Procedure SetaccessKeyId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetsecretAccessKey(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property accessKeyId : String Index 0 Read FaccessKeyId Write SetaccessKeyId;
+    Property secretAccessKey : String Index 8 Read FsecretAccessKey Write SetsecretAccessKey;
+  end;
+  TAwsAccessKeyClass = Class of TAwsAccessKey;
+  
+  { --------------------------------------------------------------------
+    THttpData
+    --------------------------------------------------------------------}
+  
+  THttpData = Class(TGoogleBaseObject)
+  Private
+    FlistUrl : String;
+  Protected
+    //Property setters
+    Procedure SetlistUrl(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property listUrl : String Index 0 Read FlistUrl Write SetlistUrl;
+  end;
+  THttpDataClass = Class of THttpData;
+  
+  { --------------------------------------------------------------------
+    TObjectConditions
+    --------------------------------------------------------------------}
+  
+  TObjectConditions = Class(TGoogleBaseObject)
+  Private
+    FminTimeElapsedSinceLastModification : String;
+    FmaxTimeElapsedSinceLastModification : String;
+    FincludePrefixes : TStringArray;
+    FexcludePrefixes : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetminTimeElapsedSinceLastModification(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxTimeElapsedSinceLastModification(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetincludePrefixes(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetexcludePrefixes(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 minTimeElapsedSinceLastModification : String Index 0 Read FminTimeElapsedSinceLastModification Write SetminTimeElapsedSinceLastModification;
+    Property maxTimeElapsedSinceLastModification : String Index 8 Read FmaxTimeElapsedSinceLastModification Write SetmaxTimeElapsedSinceLastModification;
+    Property includePrefixes : TStringArray Index 16 Read FincludePrefixes Write SetincludePrefixes;
+    Property excludePrefixes : TStringArray Index 24 Read FexcludePrefixes Write SetexcludePrefixes;
+  end;
+  TObjectConditionsClass = Class of TObjectConditions;
+  
+  { --------------------------------------------------------------------
+    TTransferOptions
+    --------------------------------------------------------------------}
+  
+  TTransferOptions = Class(TGoogleBaseObject)
+  Private
+    FoverwriteObjectsAlreadyExistingInSink : boolean;
+    FdeleteObjectsUniqueInSink : boolean;
+    FdeleteObjectsFromSourceAfterTransfer : boolean;
+  Protected
+    //Property setters
+    Procedure SetoverwriteObjectsAlreadyExistingInSink(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdeleteObjectsUniqueInSink(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetdeleteObjectsFromSourceAfterTransfer(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property overwriteObjectsAlreadyExistingInSink : boolean Index 0 Read FoverwriteObjectsAlreadyExistingInSink Write SetoverwriteObjectsAlreadyExistingInSink;
+    Property deleteObjectsUniqueInSink : boolean Index 8 Read FdeleteObjectsUniqueInSink Write SetdeleteObjectsUniqueInSink;
+    Property deleteObjectsFromSourceAfterTransfer : boolean Index 16 Read FdeleteObjectsFromSourceAfterTransfer Write SetdeleteObjectsFromSourceAfterTransfer;
+  end;
+  TTransferOptionsClass = Class of TTransferOptions;
+  
+  { --------------------------------------------------------------------
+    TSchedule
+    --------------------------------------------------------------------}
+  
+  TSchedule = Class(TGoogleBaseObject)
+  Private
+    FscheduleStartDate : TDate;
+    FscheduleEndDate : TDate;
+    FstartTimeOfDay : TTimeOfDay;
+  Protected
+    //Property setters
+    Procedure SetscheduleStartDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure SetscheduleEndDate(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure SetstartTimeOfDay(AIndex : Integer; const AValue : TTimeOfDay); virtual;
+  Public
+  Published
+    Property scheduleStartDate : TDate Index 0 Read FscheduleStartDate Write SetscheduleStartDate;
+    Property scheduleEndDate : TDate Index 8 Read FscheduleEndDate Write SetscheduleEndDate;
+    Property startTimeOfDay : TTimeOfDay Index 16 Read FstartTimeOfDay Write SetstartTimeOfDay;
+  end;
+  TScheduleClass = Class of TSchedule;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TUpdateTransferJobRequest
+    --------------------------------------------------------------------}
+  
+  TUpdateTransferJobRequest = Class(TGoogleBaseObject)
+  Private
+    FprojectId : String;
+    FtransferJob : TTransferJob;
+    FupdateTransferJobFieldMask : String;
+  Protected
+    //Property setters
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettransferJob(AIndex : Integer; const AValue : TTransferJob); virtual;
+    Procedure SetupdateTransferJobFieldMask(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property projectId : String Index 0 Read FprojectId Write SetprojectId;
+    Property transferJob : TTransferJob Index 8 Read FtransferJob Write SettransferJob;
+    Property updateTransferJobFieldMask : String Index 16 Read FupdateTransferJobFieldMask Write SetupdateTransferJobFieldMask;
+  end;
+  TUpdateTransferJobRequestClass = Class of TUpdateTransferJobRequest;
+  
+  { --------------------------------------------------------------------
+    TListTransferJobsResponse
+    --------------------------------------------------------------------}
+  
+  TListTransferJobsResponse = Class(TGoogleBaseObject)
+  Private
+    FtransferJobs : TListTransferJobsResponseTypetransferJobsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure SettransferJobs(AIndex : Integer; const AValue : TListTransferJobsResponseTypetransferJobsArray); 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 transferJobs : TListTransferJobsResponseTypetransferJobsArray Index 0 Read FtransferJobs Write SettransferJobs;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListTransferJobsResponseClass = Class of TListTransferJobsResponse;
+  
+  { --------------------------------------------------------------------
+    TPauseTransferOperationRequest
+    --------------------------------------------------------------------}
+  
+  TPauseTransferOperationRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TPauseTransferOperationRequestClass = Class of TPauseTransferOperationRequest;
+  
+  { --------------------------------------------------------------------
+    TEmpty
+    --------------------------------------------------------------------}
+  
+  TEmpty = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TEmptyClass = Class of TEmpty;
+  
+  { --------------------------------------------------------------------
+    TResumeTransferOperationRequest
+    --------------------------------------------------------------------}
+  
+  TResumeTransferOperationRequest = Class(TGoogleBaseObject)
+  Private
+  Protected
+    //Property setters
+  Public
+  Published
+  end;
+  TResumeTransferOperationRequestClass = Class of TResumeTransferOperationRequest;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TTransferOperation
+    --------------------------------------------------------------------}
+  
+  TTransferOperation = Class(TGoogleBaseObject)
+  Private
+    Fname : String;
+    FprojectId : String;
+    FtransferSpec : TTransferSpec;
+    FstartTime : String;
+    FendTime : String;
+    Fstatus : String;
+    Fcounters : TTransferCounters;
+    FerrorBreakdowns : TTransferOperationTypeerrorBreakdownsArray;
+    FtransferJobName : String;
+  Protected
+    //Property setters
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettransferSpec(AIndex : Integer; const AValue : TTransferSpec); virtual;
+    Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setcounters(AIndex : Integer; const AValue : TTransferCounters); virtual;
+    Procedure SeterrorBreakdowns(AIndex : Integer; const AValue : TTransferOperationTypeerrorBreakdownsArray); virtual;
+    Procedure SettransferJobName(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 projectId : String Index 8 Read FprojectId Write SetprojectId;
+    Property transferSpec : TTransferSpec Index 16 Read FtransferSpec Write SettransferSpec;
+    Property startTime : String Index 24 Read FstartTime Write SetstartTime;
+    Property endTime : String Index 32 Read FendTime Write SetendTime;
+    Property status : String Index 40 Read Fstatus Write Setstatus;
+    Property counters : TTransferCounters Index 48 Read Fcounters Write Setcounters;
+    Property errorBreakdowns : TTransferOperationTypeerrorBreakdownsArray Index 56 Read FerrorBreakdowns Write SeterrorBreakdowns;
+    Property transferJobName : String Index 64 Read FtransferJobName Write SettransferJobName;
+  end;
+  TTransferOperationClass = Class of TTransferOperation;
+  
+  { --------------------------------------------------------------------
+    TTransferCounters
+    --------------------------------------------------------------------}
+  
+  TTransferCounters = Class(TGoogleBaseObject)
+  Private
+    FobjectsFoundFromSource : String;
+    FbytesFoundFromSource : String;
+    FobjectsFoundOnlyFromSink : String;
+    FbytesFoundOnlyFromSink : String;
+    FobjectsFromSourceSkippedBySync : String;
+    FbytesFromSourceSkippedBySync : String;
+    FobjectsCopiedToSink : String;
+    FbytesCopiedToSink : String;
+    FobjectsDeletedFromSource : String;
+    FbytesDeletedFromSource : String;
+    FobjectsDeletedFromSink : String;
+    FbytesDeletedFromSink : String;
+    FobjectsFromSourceFailed : String;
+    FbytesFromSourceFailed : String;
+    FobjectsFailedToDeleteFromSink : String;
+    FbytesFailedToDeleteFromSink : String;
+  Protected
+    //Property setters
+    Procedure SetobjectsFoundFromSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesFoundFromSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsFoundOnlyFromSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesFoundOnlyFromSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsFromSourceSkippedBySync(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesFromSourceSkippedBySync(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsCopiedToSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesCopiedToSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsDeletedFromSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesDeletedFromSource(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsDeletedFromSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesDeletedFromSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsFromSourceFailed(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesFromSourceFailed(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetobjectsFailedToDeleteFromSink(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetbytesFailedToDeleteFromSink(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property objectsFoundFromSource : String Index 0 Read FobjectsFoundFromSource Write SetobjectsFoundFromSource;
+    Property bytesFoundFromSource : String Index 8 Read FbytesFoundFromSource Write SetbytesFoundFromSource;
+    Property objectsFoundOnlyFromSink : String Index 16 Read FobjectsFoundOnlyFromSink Write SetobjectsFoundOnlyFromSink;
+    Property bytesFoundOnlyFromSink : String Index 24 Read FbytesFoundOnlyFromSink Write SetbytesFoundOnlyFromSink;
+    Property objectsFromSourceSkippedBySync : String Index 32 Read FobjectsFromSourceSkippedBySync Write SetobjectsFromSourceSkippedBySync;
+    Property bytesFromSourceSkippedBySync : String Index 40 Read FbytesFromSourceSkippedBySync Write SetbytesFromSourceSkippedBySync;
+    Property objectsCopiedToSink : String Index 48 Read FobjectsCopiedToSink Write SetobjectsCopiedToSink;
+    Property bytesCopiedToSink : String Index 56 Read FbytesCopiedToSink Write SetbytesCopiedToSink;
+    Property objectsDeletedFromSource : String Index 64 Read FobjectsDeletedFromSource Write SetobjectsDeletedFromSource;
+    Property bytesDeletedFromSource : String Index 72 Read FbytesDeletedFromSource Write SetbytesDeletedFromSource;
+    Property objectsDeletedFromSink : String Index 80 Read FobjectsDeletedFromSink Write SetobjectsDeletedFromSink;
+    Property bytesDeletedFromSink : String Index 88 Read FbytesDeletedFromSink Write SetbytesDeletedFromSink;
+    Property objectsFromSourceFailed : String Index 96 Read FobjectsFromSourceFailed Write SetobjectsFromSourceFailed;
+    Property bytesFromSourceFailed : String Index 104 Read FbytesFromSourceFailed Write SetbytesFromSourceFailed;
+    Property objectsFailedToDeleteFromSink : String Index 112 Read FobjectsFailedToDeleteFromSink Write SetobjectsFailedToDeleteFromSink;
+    Property bytesFailedToDeleteFromSink : String Index 120 Read FbytesFailedToDeleteFromSink Write SetbytesFailedToDeleteFromSink;
+  end;
+  TTransferCountersClass = Class of TTransferCounters;
+  
+  { --------------------------------------------------------------------
+    TErrorSummary
+    --------------------------------------------------------------------}
+  
+  TErrorSummary = Class(TGoogleBaseObject)
+  Private
+    FerrorCode : String;
+    FerrorCount : String;
+    FerrorLogEntries : TErrorSummaryTypeerrorLogEntriesArray;
+  Protected
+    //Property setters
+    Procedure SeterrorCode(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorCount(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorLogEntries(AIndex : Integer; const AValue : TErrorSummaryTypeerrorLogEntriesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property errorCode : String Index 0 Read FerrorCode Write SeterrorCode;
+    Property errorCount : String Index 8 Read FerrorCount Write SeterrorCount;
+    Property errorLogEntries : TErrorSummaryTypeerrorLogEntriesArray Index 16 Read FerrorLogEntries Write SeterrorLogEntries;
+  end;
+  TErrorSummaryClass = Class of TErrorSummary;
+  
+  { --------------------------------------------------------------------
+    TErrorLogEntry
+    --------------------------------------------------------------------}
+  
+  TErrorLogEntry = Class(TGoogleBaseObject)
+  Private
+    Furl : String;
+    FerrorDetails : TStringArray;
+  Protected
+    //Property setters
+    Procedure Seturl(AIndex : Integer; const AValue : String); virtual;
+    Procedure SeterrorDetails(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 url : String Index 0 Read Furl Write Seturl;
+    Property errorDetails : TStringArray Index 8 Read FerrorDetails Write SeterrorDetails;
+  end;
+  TErrorLogEntryClass = Class of TErrorLogEntry;
+  
+  { --------------------------------------------------------------------
+    TGoogleServiceAccountsResource
+    --------------------------------------------------------------------}
+  
+  TGoogleServiceAccountsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Get(projectId: string) : TGoogleServiceAccount;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TV1Resource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TV1Resource, method GetGoogleServiceAccount
+  
+  TV1GetGoogleServiceAccountOptions = Record
+    projectId : String;
+  end;
+  
+  TV1Resource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function GetGoogleServiceAccount(AQuery : string  = '') : TGoogleServiceAccount;
+    Function GetGoogleServiceAccount(AQuery : TV1getGoogleServiceAccountOptions) : TGoogleServiceAccount;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TTransferJobsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TTransferJobsResource, method Get
+  
+  TTransferJobsGetOptions = Record
+    projectId : String;
+  end;
+  
+  
+  //Optional query Options for TTransferJobsResource, method List
+  
+  TTransferJobsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TTransferJobsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(aTransferJob : TTransferJob) : TTransferJob;overload;
+    Function Patch(jobName: string; aUpdateTransferJobRequest : TUpdateTransferJobRequest) : TTransferJob;
+    Function Get(jobName: string; AQuery : string  = '') : TTransferJob;
+    Function Get(jobName: string; AQuery : TTransferJobsgetOptions) : TTransferJob;
+    Function List(AQuery : string  = '') : TListTransferJobsResponse;
+    Function List(AQuery : TTransferJobslistOptions) : TListTransferJobsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TTransferOperationsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TTransferOperationsResource, method List
+  
+  TTransferOperationsListOptions = Record
+    filter : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TTransferOperationsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Pause(_name: string; aPauseTransferOperationRequest : TPauseTransferOperationRequest) : TEmpty;
+    Function Resume(_name: string; aResumeTransferOperationRequest : TResumeTransferOperationRequest) : TEmpty;
+    Function Get(_name: string) : TOperation;
+    Function List(_name: string; AQuery : string  = '') : TListOperationsResponse;
+    Function List(_name: string; AQuery : TTransferOperationslistOptions) : TListOperationsResponse;
+    Function Cancel(_name: string) : TEmpty;
+    Function Delete(_name: string) : TEmpty;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TStoragetransferAPI
+    --------------------------------------------------------------------}
+  
+  TStoragetransferAPI = Class(TGoogleAPI)
+  Private
+    FGoogleServiceAccountsInstance : TGoogleServiceAccountsResource;
+    FV1Instance : TV1Resource;
+    FTransferJobsInstance : TTransferJobsResource;
+    FTransferOperationsInstance : TTransferOperationsResource;
+    Function GetGoogleServiceAccountsInstance : TGoogleServiceAccountsResource;virtual;
+    Function GetV1Instance : TV1Resource;virtual;
+    Function GetTransferJobsInstance : TTransferJobsResource;virtual;
+    Function GetTransferOperationsInstance : TTransferOperationsResource;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 CreateGoogleServiceAccountsResource(AOwner : TComponent) : TGoogleServiceAccountsResource;virtual;overload;
+    Function CreateGoogleServiceAccountsResource : TGoogleServiceAccountsResource;virtual;overload;
+    Function CreateV1Resource(AOwner : TComponent) : TV1Resource;virtual;overload;
+    Function CreateV1Resource : TV1Resource;virtual;overload;
+    Function CreateTransferJobsResource(AOwner : TComponent) : TTransferJobsResource;virtual;overload;
+    Function CreateTransferJobsResource : TTransferJobsResource;virtual;overload;
+    Function CreateTransferOperationsResource(AOwner : TComponent) : TTransferOperationsResource;virtual;overload;
+    Function CreateTransferOperationsResource : TTransferOperationsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property GoogleServiceAccountsResource : TGoogleServiceAccountsResource Read GetGoogleServiceAccountsInstance;
+    Property V1Resource : TV1Resource Read GetV1Instance;
+    Property TransferJobsResource : TTransferJobsResource Read GetTransferJobsInstance;
+    Property TransferOperationsResource : TTransferOperationsResource Read GetTransferOperationsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TGoogleServiceAccount
+  --------------------------------------------------------------------}
+
+
+Procedure TGoogleServiceAccount.SetaccountEmail(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaccountEmail=AValue) then exit;
+  FaccountEmail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTransferJob
+  --------------------------------------------------------------------}
+
+
+Procedure TTransferJob.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.SettransferSpec(AIndex : Integer; const AValue : TTransferSpec); 
+
+begin
+  If (FtransferSpec=AValue) then exit;
+  FtransferSpec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.Setschedule(AIndex : Integer; const AValue : TSchedule); 
+
+begin
+  If (Fschedule=AValue) then exit;
+  Fschedule:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.SetcreationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.SetlastModificationTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlastModificationTime=AValue) then exit;
+  FlastModificationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferJob.SetdeletionTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdeletionTime=AValue) then exit;
+  FdeletionTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTransferSpec
+  --------------------------------------------------------------------}
+
+
+Procedure TTransferSpec.SetgcsDataSource(AIndex : Integer; const AValue : TGcsData); 
+
+begin
+  If (FgcsDataSource=AValue) then exit;
+  FgcsDataSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferSpec.SetawsS3DataSource(AIndex : Integer; const AValue : TAwsS3Data); 
+
+begin
+  If (FawsS3DataSource=AValue) then exit;
+  FawsS3DataSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferSpec.SethttpDataSource(AIndex : Integer; const AValue : THttpData); 
+
+begin
+  If (FhttpDataSource=AValue) then exit;
+  FhttpDataSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferSpec.SetgcsDataSink(AIndex : Integer; const AValue : TGcsData); 
+
+begin
+  If (FgcsDataSink=AValue) then exit;
+  FgcsDataSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferSpec.SetobjectConditions(AIndex : Integer; const AValue : TObjectConditions); 
+
+begin
+  If (FobjectConditions=AValue) then exit;
+  FobjectConditions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferSpec.SettransferOptions(AIndex : Integer; const AValue : TTransferOptions); 
+
+begin
+  If (FtransferOptions=AValue) then exit;
+  FtransferOptions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TGcsData
+  --------------------------------------------------------------------}
+
+
+Procedure TGcsData.SetbucketName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbucketName=AValue) then exit;
+  FbucketName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAwsS3Data
+  --------------------------------------------------------------------}
+
+
+Procedure TAwsS3Data.SetbucketName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbucketName=AValue) then exit;
+  FbucketName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAwsS3Data.SetawsAccessKey(AIndex : Integer; const AValue : TAwsAccessKey); 
+
+begin
+  If (FawsAccessKey=AValue) then exit;
+  FawsAccessKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAwsAccessKey
+  --------------------------------------------------------------------}
+
+
+Procedure TAwsAccessKey.SetaccessKeyId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaccessKeyId=AValue) then exit;
+  FaccessKeyId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAwsAccessKey.SetsecretAccessKey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsecretAccessKey=AValue) then exit;
+  FsecretAccessKey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  THttpData
+  --------------------------------------------------------------------}
+
+
+Procedure THttpData.SetlistUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FlistUrl=AValue) then exit;
+  FlistUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TObjectConditions
+  --------------------------------------------------------------------}
+
+
+Procedure TObjectConditions.SetminTimeElapsedSinceLastModification(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FminTimeElapsedSinceLastModification=AValue) then exit;
+  FminTimeElapsedSinceLastModification:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObjectConditions.SetmaxTimeElapsedSinceLastModification(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FmaxTimeElapsedSinceLastModification=AValue) then exit;
+  FmaxTimeElapsedSinceLastModification:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObjectConditions.SetincludePrefixes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FincludePrefixes=AValue) then exit;
+  FincludePrefixes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TObjectConditions.SetexcludePrefixes(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FexcludePrefixes=AValue) then exit;
+  FexcludePrefixes:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TObjectConditions.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'includeprefixes' : SetLength(FincludePrefixes,ALength);
+  'excludeprefixes' : SetLength(FexcludePrefixes,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTransferOptions
+  --------------------------------------------------------------------}
+
+
+Procedure TTransferOptions.SetoverwriteObjectsAlreadyExistingInSink(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FoverwriteObjectsAlreadyExistingInSink=AValue) then exit;
+  FoverwriteObjectsAlreadyExistingInSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOptions.SetdeleteObjectsUniqueInSink(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdeleteObjectsUniqueInSink=AValue) then exit;
+  FdeleteObjectsUniqueInSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOptions.SetdeleteObjectsFromSourceAfterTransfer(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FdeleteObjectsFromSourceAfterTransfer=AValue) then exit;
+  FdeleteObjectsFromSourceAfterTransfer:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSchedule
+  --------------------------------------------------------------------}
+
+
+Procedure TSchedule.SetscheduleStartDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FscheduleStartDate=AValue) then exit;
+  FscheduleStartDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSchedule.SetscheduleEndDate(AIndex : Integer; const AValue : TDate); 
+
+begin
+  If (FscheduleEndDate=AValue) then exit;
+  FscheduleEndDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSchedule.SetstartTimeOfDay(AIndex : Integer; const AValue : TTimeOfDay); 
+
+begin
+  If (FstartTimeOfDay=AValue) then exit;
+  FstartTimeOfDay:=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;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TUpdateTransferJobRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TUpdateTransferJobRequest.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateTransferJobRequest.SettransferJob(AIndex : Integer; const AValue : TTransferJob); 
+
+begin
+  If (FtransferJob=AValue) then exit;
+  FtransferJob:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TUpdateTransferJobRequest.SetupdateTransferJobFieldMask(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FupdateTransferJobFieldMask=AValue) then exit;
+  FupdateTransferJobFieldMask:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListTransferJobsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListTransferJobsResponse.SettransferJobs(AIndex : Integer; const AValue : TListTransferJobsResponseTypetransferJobsArray); 
+
+begin
+  If (FtransferJobs=AValue) then exit;
+  FtransferJobs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListTransferJobsResponse.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 TListTransferJobsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'transferjobs' : SetLength(FtransferJobs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TPauseTransferOperationRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEmpty
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  TResumeTransferOperationRequest
+  --------------------------------------------------------------------}
+
+
+
+
+{ --------------------------------------------------------------------
+  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}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTransferOperation
+  --------------------------------------------------------------------}
+
+
+Procedure TTransferOperation.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SetprojectId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FprojectId=AValue) then exit;
+  FprojectId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SettransferSpec(AIndex : Integer; const AValue : TTransferSpec); 
+
+begin
+  If (FtransferSpec=AValue) then exit;
+  FtransferSpec:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SetstartTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartTime=AValue) then exit;
+  FstartTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SetendTime(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendTime=AValue) then exit;
+  FendTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.Setstatus(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstatus=AValue) then exit;
+  Fstatus:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.Setcounters(AIndex : Integer; const AValue : TTransferCounters); 
+
+begin
+  If (Fcounters=AValue) then exit;
+  Fcounters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SeterrorBreakdowns(AIndex : Integer; const AValue : TTransferOperationTypeerrorBreakdownsArray); 
+
+begin
+  If (FerrorBreakdowns=AValue) then exit;
+  FerrorBreakdowns:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferOperation.SettransferJobName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtransferJobName=AValue) then exit;
+  FtransferJobName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTransferOperation.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errorbreakdowns' : SetLength(FerrorBreakdowns,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTransferCounters
+  --------------------------------------------------------------------}
+
+
+Procedure TTransferCounters.SetobjectsFoundFromSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsFoundFromSource=AValue) then exit;
+  FobjectsFoundFromSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesFoundFromSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesFoundFromSource=AValue) then exit;
+  FbytesFoundFromSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsFoundOnlyFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsFoundOnlyFromSink=AValue) then exit;
+  FobjectsFoundOnlyFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesFoundOnlyFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesFoundOnlyFromSink=AValue) then exit;
+  FbytesFoundOnlyFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsFromSourceSkippedBySync(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsFromSourceSkippedBySync=AValue) then exit;
+  FobjectsFromSourceSkippedBySync:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesFromSourceSkippedBySync(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesFromSourceSkippedBySync=AValue) then exit;
+  FbytesFromSourceSkippedBySync:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsCopiedToSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsCopiedToSink=AValue) then exit;
+  FobjectsCopiedToSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesCopiedToSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesCopiedToSink=AValue) then exit;
+  FbytesCopiedToSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsDeletedFromSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsDeletedFromSource=AValue) then exit;
+  FobjectsDeletedFromSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesDeletedFromSource(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesDeletedFromSource=AValue) then exit;
+  FbytesDeletedFromSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsDeletedFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsDeletedFromSink=AValue) then exit;
+  FobjectsDeletedFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesDeletedFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesDeletedFromSink=AValue) then exit;
+  FbytesDeletedFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsFromSourceFailed(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsFromSourceFailed=AValue) then exit;
+  FobjectsFromSourceFailed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesFromSourceFailed(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesFromSourceFailed=AValue) then exit;
+  FbytesFromSourceFailed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetobjectsFailedToDeleteFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FobjectsFailedToDeleteFromSink=AValue) then exit;
+  FobjectsFailedToDeleteFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTransferCounters.SetbytesFailedToDeleteFromSink(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FbytesFailedToDeleteFromSink=AValue) then exit;
+  FbytesFailedToDeleteFromSink:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorSummary
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorSummary.SeterrorCode(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorCode=AValue) then exit;
+  FerrorCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorSummary.SeterrorCount(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorCount=AValue) then exit;
+  FerrorCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorSummary.SeterrorLogEntries(AIndex : Integer; const AValue : TErrorSummaryTypeerrorLogEntriesArray); 
+
+begin
+  If (FerrorLogEntries=AValue) then exit;
+  FerrorLogEntries:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TErrorSummary.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errorlogentries' : SetLength(FerrorLogEntries,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TErrorLogEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TErrorLogEntry.Seturl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Furl=AValue) then exit;
+  Furl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TErrorLogEntry.SeterrorDetails(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FerrorDetails=AValue) then exit;
+  FerrorDetails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TErrorLogEntry.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'errordetails' : SetLength(FerrorDetails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TGoogleServiceAccountsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TGoogleServiceAccountsResource.ResourceName : String;
+
+begin
+  Result:='googleServiceAccounts';
+end;
+
+Class Function TGoogleServiceAccountsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TstoragetransferAPI;
+end;
+
+Function TGoogleServiceAccountsResource.Get(projectId: string) : TGoogleServiceAccount;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/googleServiceAccounts/{projectId}';
+  _Methodid   = 'storagetransfer.googleServiceAccounts.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TGoogleServiceAccount) as TGoogleServiceAccount;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TV1Resource
+  --------------------------------------------------------------------}
+
+
+Class Function TV1Resource.ResourceName : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TV1Resource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TstoragetransferAPI;
+end;
+
+Function TV1Resource.GetGoogleServiceAccount(AQuery : string = '') : TGoogleServiceAccount;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1:getGoogleServiceAccount';
+  _Methodid   = 'storagetransfer.getGoogleServiceAccount';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TGoogleServiceAccount) as TGoogleServiceAccount;
+end;
+
+
+Function TV1Resource.GetGoogleServiceAccount(AQuery : TV1getGoogleServiceAccountOptions) : TGoogleServiceAccount;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=GetGoogleServiceAccount(_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TTransferJobsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TTransferJobsResource.ResourceName : String;
+
+begin
+  Result:='transferJobs';
+end;
+
+Class Function TTransferJobsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TstoragetransferAPI;
+end;
+
+Function TTransferJobsResource.Create(aTransferJob : TTransferJob) : TTransferJob;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/transferJobs';
+  _Methodid   = 'storagetransfer.transferJobs.create';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aTransferJob,TTransferJob) as TTransferJob;
+end;
+
+Function TTransferJobsResource.Patch(jobName: string; aUpdateTransferJobRequest : TUpdateTransferJobRequest) : TTransferJob;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = 'v1/{+jobName}';
+  _Methodid   = 'storagetransfer.transferJobs.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['jobName',jobName]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aUpdateTransferJobRequest,TTransferJob) as TTransferJob;
+end;
+
+Function TTransferJobsResource.Get(jobName: string; AQuery : string = '') : TTransferJob;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+jobName}';
+  _Methodid   = 'storagetransfer.transferJobs.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['jobName',jobName]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TTransferJob) as TTransferJob;
+end;
+
+
+Function TTransferJobsResource.Get(jobName: string; AQuery : TTransferJobsgetOptions) : TTransferJob;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'projectId',AQuery.projectId);
+  Result:=Get(jobName,_Q);
+end;
+
+Function TTransferJobsResource.List(AQuery : string = '') : TListTransferJobsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/transferJobs';
+  _Methodid   = 'storagetransfer.transferJobs.list';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListTransferJobsResponse) as TListTransferJobsResponse;
+end;
+
+
+Function TTransferJobsResource.List(AQuery : TTransferJobslistOptions) : TListTransferJobsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filter',AQuery.filter);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TTransferOperationsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TTransferOperationsResource.ResourceName : String;
+
+begin
+  Result:='transferOperations';
+end;
+
+Class Function TTransferOperationsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TstoragetransferAPI;
+end;
+
+Function TTransferOperationsResource.Pause(_name: string; aPauseTransferOperationRequest : TPauseTransferOperationRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:pause';
+  _Methodid   = 'storagetransfer.transferOperations.pause';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aPauseTransferOperationRequest,TEmpty) as TEmpty;
+end;
+
+Function TTransferOperationsResource.Resume(_name: string; aResumeTransferOperationRequest : TResumeTransferOperationRequest) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:resume';
+  _Methodid   = 'storagetransfer.transferOperations.resume';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aResumeTransferOperationRequest,TEmpty) as TEmpty;
+end;
+
+Function TTransferOperationsResource.Get(_name: string) : TOperation;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'storagetransfer.transferOperations.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TOperation) as TOperation;
+end;
+
+Function TTransferOperationsResource.List(_name: string; AQuery : string = '') : TListOperationsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'storagetransfer.transferOperations.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListOperationsResponse) as TListOperationsResponse;
+end;
+
+
+Function TTransferOperationsResource.List(_name: string; AQuery : TTransferOperationslistOptions) : 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 TTransferOperationsResource.Cancel(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/{+name}:cancel';
+  _Methodid   = 'storagetransfer.transferOperations.cancel';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+Function TTransferOperationsResource.Delete(_name: string) : TEmpty;
+
+Const
+  _HTTPMethod = 'DELETE';
+  _Path       = 'v1/{+name}';
+  _Methodid   = 'storagetransfer.transferOperations.delete';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['name',_name]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TStoragetransferAPI
+  --------------------------------------------------------------------}
+
+Class Function TStoragetransferAPI.APIName : String;
+
+begin
+  Result:='storagetransfer';
+end;
+
+Class Function TStoragetransferAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TStoragetransferAPI.APIRevision : String;
+
+begin
+  Result:='20150811';
+end;
+
+Class Function TStoragetransferAPI.APIID : String;
+
+begin
+  Result:='storagetransfer:v1';
+end;
+
+Class Function TStoragetransferAPI.APITitle : String;
+
+begin
+  Result:='Google Storage Transfer API';
+end;
+
+Class Function TStoragetransferAPI.APIDescription : String;
+
+begin
+  Result:='Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.';
+end;
+
+Class Function TStoragetransferAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TStoragetransferAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TStoragetransferAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TStoragetransferAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TStoragetransferAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/storage/transfer';
+end;
+
+Class Function TStoragetransferAPI.APIrootUrl : string;
+
+begin
+  Result:='https://storagetransfer.googleapis.com/';
+end;
+
+Class Function TStoragetransferAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TStoragetransferAPI.APIbaseURL : String;
+
+begin
+  Result:='https://storagetransfer.googleapis.com/';
+end;
+
+Class Function TStoragetransferAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TStoragetransferAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TStoragetransferAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TStoragetransferAPI.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 TStoragetransferAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TStoragetransferAPI.RegisterAPIResources;
+
+begin
+  TGoogleServiceAccount.RegisterObject;
+  TTransferJob.RegisterObject;
+  TTransferSpec.RegisterObject;
+  TGcsData.RegisterObject;
+  TAwsS3Data.RegisterObject;
+  TAwsAccessKey.RegisterObject;
+  THttpData.RegisterObject;
+  TObjectConditions.RegisterObject;
+  TTransferOptions.RegisterObject;
+  TSchedule.RegisterObject;
+  TDate.RegisterObject;
+  TTimeOfDay.RegisterObject;
+  TUpdateTransferJobRequest.RegisterObject;
+  TListTransferJobsResponse.RegisterObject;
+  TPauseTransferOperationRequest.RegisterObject;
+  TEmpty.RegisterObject;
+  TResumeTransferOperationRequest.RegisterObject;
+  TOperationTypemetadata.RegisterObject;
+  TOperationTyperesponse.RegisterObject;
+  TOperation.RegisterObject;
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TListOperationsResponse.RegisterObject;
+  TTransferOperation.RegisterObject;
+  TTransferCounters.RegisterObject;
+  TErrorSummary.RegisterObject;
+  TErrorLogEntry.RegisterObject;
+end;
+
+
+Function TStoragetransferAPI.GetGoogleServiceAccountsInstance : TGoogleServiceAccountsResource;
+
+begin
+  if (FGoogleServiceAccountsInstance=Nil) then
+    FGoogleServiceAccountsInstance:=CreateGoogleServiceAccountsResource;
+  Result:=FGoogleServiceAccountsInstance;
+end;
+
+Function TStoragetransferAPI.CreateGoogleServiceAccountsResource : TGoogleServiceAccountsResource;
+
+begin
+  Result:=CreateGoogleServiceAccountsResource(Self);
+end;
+
+
+Function TStoragetransferAPI.CreateGoogleServiceAccountsResource(AOwner : TComponent) : TGoogleServiceAccountsResource;
+
+begin
+  Result:=TGoogleServiceAccountsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TStoragetransferAPI.GetV1Instance : TV1Resource;
+
+begin
+  if (FV1Instance=Nil) then
+    FV1Instance:=CreateV1Resource;
+  Result:=FV1Instance;
+end;
+
+Function TStoragetransferAPI.CreateV1Resource : TV1Resource;
+
+begin
+  Result:=CreateV1Resource(Self);
+end;
+
+
+Function TStoragetransferAPI.CreateV1Resource(AOwner : TComponent) : TV1Resource;
+
+begin
+  Result:=TV1Resource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TStoragetransferAPI.GetTransferJobsInstance : TTransferJobsResource;
+
+begin
+  if (FTransferJobsInstance=Nil) then
+    FTransferJobsInstance:=CreateTransferJobsResource;
+  Result:=FTransferJobsInstance;
+end;
+
+Function TStoragetransferAPI.CreateTransferJobsResource : TTransferJobsResource;
+
+begin
+  Result:=CreateTransferJobsResource(Self);
+end;
+
+
+Function TStoragetransferAPI.CreateTransferJobsResource(AOwner : TComponent) : TTransferJobsResource;
+
+begin
+  Result:=TTransferJobsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TStoragetransferAPI.GetTransferOperationsInstance : TTransferOperationsResource;
+
+begin
+  if (FTransferOperationsInstance=Nil) then
+    FTransferOperationsInstance:=CreateTransferOperationsResource;
+  Result:=FTransferOperationsInstance;
+end;
+
+Function TStoragetransferAPI.CreateTransferOperationsResource : TTransferOperationsResource;
+
+begin
+  Result:=CreateTransferOperationsResource(Self);
+end;
+
+
+Function TStoragetransferAPI.CreateTransferOperationsResource(AOwner : TComponent) : TTransferOperationsResource;
+
+begin
+  Result:=TTransferOperationsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TStoragetransferAPI.RegisterAPI;
+end.

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


+ 24 - 39
packages/googleapi/src/googletaskqueue.pp

@@ -1,19 +1,4 @@
 unit googletaskqueue;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:08
 {$MODE objfpc}
 {$H+}
 
@@ -60,7 +45,7 @@ type
     Procedure SetleaseTimestamp(AIndex : Integer; const AValue : String); virtual;
     Procedure SetpayloadBase64(AIndex : Integer; const AValue : String); virtual;
     Procedure SetqueueName(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setretry_count(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setretry_count(AIndex : Integer; const AValue : integer); virtual;
     Procedure Settag(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -86,9 +71,9 @@ type
     FproducerEmails : TStringArray;
   Protected
     //Property setters
-    Procedure SetadminEmails(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetconsumerEmails(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetproducerEmails(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetadminEmails(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetconsumerEmails(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetproducerEmails(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -116,7 +101,7 @@ type
     Procedure SetleasedLastHour(AIndex : Integer; const AValue : String); virtual;
     Procedure SetleasedLastMinute(AIndex : Integer; const AValue : String); virtual;
     Procedure SetoldestTask(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalTasks(AIndex : Integer; AValue : integer); virtual;
+    Procedure SettotalTasks(AIndex : Integer; const AValue : integer); virtual;
   Public
   Published
     Property leasedLastHour : String Index 0 Read FleasedLastHour Write SetleasedLastHour;
@@ -139,11 +124,11 @@ type
     Fstats : TTaskQueueTypestats;
   Protected
     //Property setters
-    Procedure Setacl(AIndex : Integer; AValue : TTaskQueueTypeacl); virtual;
+    Procedure Setacl(AIndex : Integer; const AValue : TTaskQueueTypeacl); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetmaxLeases(AIndex : Integer; AValue : integer); virtual;
-    Procedure Setstats(AIndex : Integer; AValue : TTaskQueueTypestats); virtual;
+    Procedure SetmaxLeases(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setstats(AIndex : Integer; const AValue : TTaskQueueTypestats); virtual;
   Public
   Published
     Property acl : TTaskQueueTypeacl Index 0 Read Facl Write Setacl;
@@ -164,7 +149,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTasksTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -187,7 +172,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TTasks2TypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTasks2TypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -375,7 +360,7 @@ end;
 
 
 
-Procedure TTask.Setretry_count(AIndex : Integer; AValue : integer); 
+Procedure TTask.Setretry_count(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fretry_count=AValue) then exit;
@@ -402,7 +387,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTaskQueueTypeacl.SetadminEmails(AIndex : Integer; AValue : TStringArray); 
+Procedure TTaskQueueTypeacl.SetadminEmails(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FadminEmails=AValue) then exit;
@@ -412,7 +397,7 @@ end;
 
 
 
-Procedure TTaskQueueTypeacl.SetconsumerEmails(AIndex : Integer; AValue : TStringArray); 
+Procedure TTaskQueueTypeacl.SetconsumerEmails(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FconsumerEmails=AValue) then exit;
@@ -422,7 +407,7 @@ end;
 
 
 
-Procedure TTaskQueueTypeacl.SetproducerEmails(AIndex : Integer; AValue : TStringArray); 
+Procedure TTaskQueueTypeacl.SetproducerEmails(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FproducerEmails=AValue) then exit;
@@ -484,7 +469,7 @@ end;
 
 
 
-Procedure TTaskQueueTypestats.SettotalTasks(AIndex : Integer; AValue : integer); 
+Procedure TTaskQueueTypestats.SettotalTasks(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalTasks=AValue) then exit;
@@ -501,7 +486,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTaskQueue.Setacl(AIndex : Integer; AValue : TTaskQueueTypeacl); 
+Procedure TTaskQueue.Setacl(AIndex : Integer; const AValue : TTaskQueueTypeacl); 
 
 begin
   If (Facl=AValue) then exit;
@@ -531,7 +516,7 @@ end;
 
 
 
-Procedure TTaskQueue.SetmaxLeases(AIndex : Integer; AValue : integer); 
+Procedure TTaskQueue.SetmaxLeases(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FmaxLeases=AValue) then exit;
@@ -541,7 +526,7 @@ end;
 
 
 
-Procedure TTaskQueue.Setstats(AIndex : Integer; AValue : TTaskQueueTypestats); 
+Procedure TTaskQueue.Setstats(AIndex : Integer; const AValue : TTaskQueueTypestats); 
 
 begin
   If (Fstats=AValue) then exit;
@@ -558,7 +543,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTasks.Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray); 
+Procedure TTasks.Setitems(AIndex : Integer; const AValue : TTasksTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -598,7 +583,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTasks2.Setitems(AIndex : Integer; AValue : TTasks2TypeitemsArray); 
+Procedure TTasks2.Setitems(AIndex : Integer; const AValue : TTasks2TypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -861,7 +846,7 @@ end;
 Class Function TTaskqueueAPI.APIRevision : String;
 
 begin
-  Result:='20141111';
+  Result:='20160428';
 end;
 
 Class Function TTaskqueueAPI.APIID : String;
@@ -879,7 +864,7 @@ end;
 Class Function TTaskqueueAPI.APIDescription : String;
 
 begin
-  Result:='Lets you access a Google App Engine Pull Task Queue over REST.';
+  Result:='Accesses a Google App Engine Pull Task Queue over REST.';
 end;
 
 Class Function TTaskqueueAPI.APIOwnerDomain : String;
@@ -915,7 +900,7 @@ end;
 Class Function TTaskqueueAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TTaskqueueAPI.APIbasePath : string;
@@ -927,7 +912,7 @@ end;
 Class Function TTaskqueueAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/taskqueue/v1beta2/projects/';
+  Result:='https://www.googleapis.com/taskqueue/v1beta2/projects/';
 end;
 
 Class Function TTaskqueueAPI.APIProtocol : string;

+ 20 - 35
packages/googleapi/src/googletasks.pp

@@ -1,19 +1,4 @@
 unit googletasks;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:08
 {$MODE objfpc}
 {$H+}
 
@@ -84,21 +69,21 @@ type
     Fupdated : TDatetime;
   Protected
     //Property setters
-    Procedure Setcompleted(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setdeleted(AIndex : Integer; AValue : boolean); virtual;
-    Procedure Setdue(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setcompleted(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setdeleted(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setdue(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Sethidden(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Sethidden(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setlinks(AIndex : Integer; AValue : TTaskTypelinksArray); virtual;
+    Procedure Setlinks(AIndex : Integer; const AValue : TTaskTypelinksArray); virtual;
     Procedure Setnotes(AIndex : Integer; const AValue : String); virtual;
     Procedure Setparent(AIndex : Integer; const AValue : String); virtual;
     Procedure Setposition(AIndex : Integer; const AValue : String); virtual;
     Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
     Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
     Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setupdated(AIndex : Integer; AValue : TDatetime); 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;
@@ -142,7 +127,7 @@ type
     Procedure Setkind(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; AValue : TDatetime); virtual;
+    Procedure Setupdated(AIndex : Integer; const AValue : TDatetime); virtual;
   Public
   Published
     Property etag : String Index 0 Read Fetag Write Setetag;
@@ -167,7 +152,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TTaskListsTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTaskListsTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -196,7 +181,7 @@ type
   Protected
     //Property setters
     Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TTasksTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
@@ -390,7 +375,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTask.Setcompleted(AIndex : Integer; AValue : TDatetime); 
+Procedure TTask.Setcompleted(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fcompleted=AValue) then exit;
@@ -400,7 +385,7 @@ end;
 
 
 
-Procedure TTask.Setdeleted(AIndex : Integer; AValue : boolean); 
+Procedure TTask.Setdeleted(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fdeleted=AValue) then exit;
@@ -410,7 +395,7 @@ end;
 
 
 
-Procedure TTask.Setdue(AIndex : Integer; AValue : TDatetime); 
+Procedure TTask.Setdue(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fdue=AValue) then exit;
@@ -430,7 +415,7 @@ end;
 
 
 
-Procedure TTask.Sethidden(AIndex : Integer; AValue : boolean); 
+Procedure TTask.Sethidden(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (Fhidden=AValue) then exit;
@@ -460,7 +445,7 @@ end;
 
 
 
-Procedure TTask.Setlinks(AIndex : Integer; AValue : TTaskTypelinksArray); 
+Procedure TTask.Setlinks(AIndex : Integer; const AValue : TTaskTypelinksArray); 
 
 begin
   If (Flinks=AValue) then exit;
@@ -530,7 +515,7 @@ end;
 
 
 
-Procedure TTask.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TTask.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -610,7 +595,7 @@ end;
 
 
 
-Procedure TTaskList.Setupdated(AIndex : Integer; AValue : TDatetime); 
+Procedure TTaskList.Setupdated(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Fupdated=AValue) then exit;
@@ -637,7 +622,7 @@ end;
 
 
 
-Procedure TTaskLists.Setitems(AIndex : Integer; AValue : TTaskListsTypeitemsArray); 
+Procedure TTaskLists.Setitems(AIndex : Integer; const AValue : TTaskListsTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -697,7 +682,7 @@ end;
 
 
 
-Procedure TTasks.Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray); 
+Procedure TTasks.Setitems(AIndex : Integer; const AValue : TTasksTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -1115,7 +1100,7 @@ end;
 Class Function TTasksAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TTasksAPI.APIbasePath : string;
@@ -1127,7 +1112,7 @@ end;
 Class Function TTasksAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/tasks/v1/';
+  Result:='https://www.googleapis.com/tasks/v1/';
 end;
 
 Class Function TTasksAPI.APIProtocol : string;

+ 3412 - 0
packages/googleapi/src/googletoolresults.pp

@@ -0,0 +1,3412 @@
+unit googletoolresults;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TAny = Class;
+  TDuration = Class;
+  TExecution = Class;
+  TFailureDetail = Class;
+  TFileReference = Class;
+  THistory = Class;
+  TImage = Class;
+  TInconclusiveDetail = Class;
+  TListExecutionsResponse = Class;
+  TListHistoriesResponse = Class;
+  TListStepThumbnailsResponse = Class;
+  TListStepsResponse = Class;
+  TOutcome = Class;
+  TProjectSettings = Class;
+  TPublishXunitXmlFilesRequest = Class;
+  TSkippedDetail = Class;
+  TStackTrace = Class;
+  TStatus = Class;
+  TStep = Class;
+  TStepDimensionValueEntry = Class;
+  TStepLabelsEntry = Class;
+  TSuccessDetail = Class;
+  TTestCaseReference = Class;
+  TTestExecutionStep = Class;
+  TTestIssue = Class;
+  TTestSuiteOverview = Class;
+  TTestTiming = Class;
+  TThumbnail = Class;
+  TTimestamp = Class;
+  TToolExecution = Class;
+  TToolExecutionStep = Class;
+  TToolExitCode = Class;
+  TToolOutputReference = Class;
+  TAnyArray = Array of TAny;
+  TDurationArray = Array of TDuration;
+  TExecutionArray = Array of TExecution;
+  TFailureDetailArray = Array of TFailureDetail;
+  TFileReferenceArray = Array of TFileReference;
+  THistoryArray = Array of THistory;
+  TImageArray = Array of TImage;
+  TInconclusiveDetailArray = Array of TInconclusiveDetail;
+  TListExecutionsResponseArray = Array of TListExecutionsResponse;
+  TListHistoriesResponseArray = Array of TListHistoriesResponse;
+  TListStepThumbnailsResponseArray = Array of TListStepThumbnailsResponse;
+  TListStepsResponseArray = Array of TListStepsResponse;
+  TOutcomeArray = Array of TOutcome;
+  TProjectSettingsArray = Array of TProjectSettings;
+  TPublishXunitXmlFilesRequestArray = Array of TPublishXunitXmlFilesRequest;
+  TSkippedDetailArray = Array of TSkippedDetail;
+  TStackTraceArray = Array of TStackTrace;
+  TStatusArray = Array of TStatus;
+  TStepArray = Array of TStep;
+  TStepDimensionValueEntryArray = Array of TStepDimensionValueEntry;
+  TStepLabelsEntryArray = Array of TStepLabelsEntry;
+  TSuccessDetailArray = Array of TSuccessDetail;
+  TTestCaseReferenceArray = Array of TTestCaseReference;
+  TTestExecutionStepArray = Array of TTestExecutionStep;
+  TTestIssueArray = Array of TTestIssue;
+  TTestSuiteOverviewArray = Array of TTestSuiteOverview;
+  TTestTimingArray = Array of TTestTiming;
+  TThumbnailArray = Array of TThumbnail;
+  TTimestampArray = Array of TTimestamp;
+  TToolExecutionArray = Array of TToolExecution;
+  TToolExecutionStepArray = Array of TToolExecutionStep;
+  TToolExitCodeArray = Array of TToolExitCode;
+  TToolOutputReferenceArray = Array of TToolOutputReference;
+  //Anonymous types, using auto-generated names
+  TListExecutionsResponseTypeexecutionsArray = Array of TExecution;
+  TListHistoriesResponseTypehistoriesArray = Array of THistory;
+  TListStepThumbnailsResponseTypethumbnailsArray = Array of TImage;
+  TListStepsResponseTypestepsArray = Array of TStep;
+  TPublishXunitXmlFilesRequestTypexunitXmlFilesArray = Array of TFileReference;
+  TStatusTypedetailsArray = Array of TAny;
+  TStepTypedimensionValueArray = Array of TStepDimensionValueEntry;
+  TStepTypelabelsArray = Array of TStepLabelsEntry;
+  TTestExecutionStepTypetestIssuesArray = Array of TTestIssue;
+  TTestExecutionStepTypetestSuiteOverviewsArray = Array of TTestSuiteOverview;
+  TToolExecutionTypetoolLogsArray = Array of TFileReference;
+  TToolExecutionTypetoolOutputsArray = Array of TToolOutputReference;
+  
+  { --------------------------------------------------------------------
+    TAny
+    --------------------------------------------------------------------}
+  
+  TAny = Class(TGoogleBaseObject)
+  Private
+    FtypeUrl : String;
+    Fvalue : String;
+  Protected
+    //Property setters
+    Procedure SettypeUrl(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setvalue(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property typeUrl : String Index 0 Read FtypeUrl Write SettypeUrl;
+    Property value : String Index 8 Read Fvalue Write Setvalue;
+  end;
+  TAnyClass = Class of TAny;
+  
+  { --------------------------------------------------------------------
+    TDuration
+    --------------------------------------------------------------------}
+  
+  TDuration = Class(TGoogleBaseObject)
+  Private
+    Fnanos : integer;
+    Fseconds : String;
+  Protected
+    //Property setters
+    Procedure Setnanos(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setseconds(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property nanos : integer Index 0 Read Fnanos Write Setnanos;
+    Property seconds : String Index 8 Read Fseconds Write Setseconds;
+  end;
+  TDurationClass = Class of TDuration;
+  
+  { --------------------------------------------------------------------
+    TExecution
+    --------------------------------------------------------------------}
+  
+  TExecution = Class(TGoogleBaseObject)
+  Private
+    FcompletionTime : TTimestamp;
+    FcreationTime : TTimestamp;
+    FexecutionId : String;
+    Foutcome : TOutcome;
+    Fstate : String;
+    FtestExecutionMatrixId : String;
+  Protected
+    //Property setters
+    Procedure SetcompletionTime(AIndex : Integer; const AValue : TTimestamp); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : TTimestamp); virtual;
+    Procedure SetexecutionId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoutcome(AIndex : Integer; const AValue : TOutcome); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettestExecutionMatrixId(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property completionTime : TTimestamp Index 0 Read FcompletionTime Write SetcompletionTime;
+    Property creationTime : TTimestamp Index 8 Read FcreationTime Write SetcreationTime;
+    Property executionId : String Index 16 Read FexecutionId Write SetexecutionId;
+    Property outcome : TOutcome Index 24 Read Foutcome Write Setoutcome;
+    Property state : String Index 32 Read Fstate Write Setstate;
+    Property testExecutionMatrixId : String Index 40 Read FtestExecutionMatrixId Write SettestExecutionMatrixId;
+  end;
+  TExecutionClass = Class of TExecution;
+  
+  { --------------------------------------------------------------------
+    TFailureDetail
+    --------------------------------------------------------------------}
+  
+  TFailureDetail = Class(TGoogleBaseObject)
+  Private
+    Fcrashed : boolean;
+    FnotInstalled : boolean;
+    FotherNativeCrash : boolean;
+    FtimedOut : boolean;
+    FunableToCrawl : boolean;
+  Protected
+    //Property setters
+    Procedure Setcrashed(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnotInstalled(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetotherNativeCrash(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SettimedOut(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetunableToCrawl(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property crashed : boolean Index 0 Read Fcrashed Write Setcrashed;
+    Property notInstalled : boolean Index 8 Read FnotInstalled Write SetnotInstalled;
+    Property otherNativeCrash : boolean Index 16 Read FotherNativeCrash Write SetotherNativeCrash;
+    Property timedOut : boolean Index 24 Read FtimedOut Write SettimedOut;
+    Property unableToCrawl : boolean Index 32 Read FunableToCrawl Write SetunableToCrawl;
+  end;
+  TFailureDetailClass = Class of TFailureDetail;
+  
+  { --------------------------------------------------------------------
+    TFileReference
+    --------------------------------------------------------------------}
+  
+  TFileReference = Class(TGoogleBaseObject)
+  Private
+    FfileUri : String;
+  Protected
+    //Property setters
+    Procedure SetfileUri(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property fileUri : String Index 0 Read FfileUri Write SetfileUri;
+  end;
+  TFileReferenceClass = Class of TFileReference;
+  
+  { --------------------------------------------------------------------
+    THistory
+    --------------------------------------------------------------------}
+  
+  THistory = Class(TGoogleBaseObject)
+  Private
+    FdisplayName : String;
+    FhistoryId : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual;
+    Procedure SethistoryId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property displayName : String Index 0 Read FdisplayName Write SetdisplayName;
+    Property historyId : String Index 8 Read FhistoryId Write SethistoryId;
+    Property name : String Index 16 Read Fname Write Setname;
+  end;
+  THistoryClass = Class of THistory;
+  
+  { --------------------------------------------------------------------
+    TImage
+    --------------------------------------------------------------------}
+  
+  TImage = Class(TGoogleBaseObject)
+  Private
+    Ferror : TStatus;
+    FsourceImage : TToolOutputReference;
+    FstepId : String;
+    Fthumbnail : TThumbnail;
+  Protected
+    //Property setters
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    Procedure SetsourceImage(AIndex : Integer; const AValue : TToolOutputReference); virtual;
+    Procedure SetstepId(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setthumbnail(AIndex : Integer; const AValue : TThumbnail); virtual;
+  Public
+  Published
+    Property error : TStatus Index 0 Read Ferror Write Seterror;
+    Property sourceImage : TToolOutputReference Index 8 Read FsourceImage Write SetsourceImage;
+    Property stepId : String Index 16 Read FstepId Write SetstepId;
+    Property thumbnail : TThumbnail Index 24 Read Fthumbnail Write Setthumbnail;
+  end;
+  TImageClass = Class of TImage;
+  
+  { --------------------------------------------------------------------
+    TInconclusiveDetail
+    --------------------------------------------------------------------}
+  
+  TInconclusiveDetail = Class(TGoogleBaseObject)
+  Private
+    FabortedByUser : boolean;
+    FinfrastructureFailure : boolean;
+    FnativeCrash : boolean;
+  Protected
+    //Property setters
+    Procedure SetabortedByUser(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetinfrastructureFailure(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetnativeCrash(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property abortedByUser : boolean Index 0 Read FabortedByUser Write SetabortedByUser;
+    Property infrastructureFailure : boolean Index 8 Read FinfrastructureFailure Write SetinfrastructureFailure;
+    Property nativeCrash : boolean Index 16 Read FnativeCrash Write SetnativeCrash;
+  end;
+  TInconclusiveDetailClass = Class of TInconclusiveDetail;
+  
+  { --------------------------------------------------------------------
+    TListExecutionsResponse
+    --------------------------------------------------------------------}
+  
+  TListExecutionsResponse = Class(TGoogleBaseObject)
+  Private
+    Fexecutions : TListExecutionsResponseTypeexecutionsArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Setexecutions(AIndex : Integer; const AValue : TListExecutionsResponseTypeexecutionsArray); 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 executions : TListExecutionsResponseTypeexecutionsArray Index 0 Read Fexecutions Write Setexecutions;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListExecutionsResponseClass = Class of TListExecutionsResponse;
+  
+  { --------------------------------------------------------------------
+    TListHistoriesResponse
+    --------------------------------------------------------------------}
+  
+  TListHistoriesResponse = Class(TGoogleBaseObject)
+  Private
+    Fhistories : TListHistoriesResponseTypehistoriesArray;
+    FnextPageToken : String;
+  Protected
+    //Property setters
+    Procedure Sethistories(AIndex : Integer; const AValue : TListHistoriesResponseTypehistoriesArray); 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 histories : TListHistoriesResponseTypehistoriesArray Index 0 Read Fhistories Write Sethistories;
+    Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
+  end;
+  TListHistoriesResponseClass = Class of TListHistoriesResponse;
+  
+  { --------------------------------------------------------------------
+    TListStepThumbnailsResponse
+    --------------------------------------------------------------------}
+  
+  TListStepThumbnailsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fthumbnails : TListStepThumbnailsResponseTypethumbnailsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setthumbnails(AIndex : Integer; const AValue : TListStepThumbnailsResponseTypethumbnailsArray); 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 thumbnails : TListStepThumbnailsResponseTypethumbnailsArray Index 8 Read Fthumbnails Write Setthumbnails;
+  end;
+  TListStepThumbnailsResponseClass = Class of TListStepThumbnailsResponse;
+  
+  { --------------------------------------------------------------------
+    TListStepsResponse
+    --------------------------------------------------------------------}
+  
+  TListStepsResponse = Class(TGoogleBaseObject)
+  Private
+    FnextPageToken : String;
+    Fsteps : TListStepsResponseTypestepsArray;
+  Protected
+    //Property setters
+    Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setsteps(AIndex : Integer; const AValue : TListStepsResponseTypestepsArray); 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 steps : TListStepsResponseTypestepsArray Index 8 Read Fsteps Write Setsteps;
+  end;
+  TListStepsResponseClass = Class of TListStepsResponse;
+  
+  { --------------------------------------------------------------------
+    TOutcome
+    --------------------------------------------------------------------}
+  
+  TOutcome = Class(TGoogleBaseObject)
+  Private
+    FfailureDetail : TFailureDetail;
+    FinconclusiveDetail : TInconclusiveDetail;
+    FskippedDetail : TSkippedDetail;
+    FsuccessDetail : TSuccessDetail;
+    Fsummary : String;
+  Protected
+    //Property setters
+    Procedure SetfailureDetail(AIndex : Integer; const AValue : TFailureDetail); virtual;
+    Procedure SetinconclusiveDetail(AIndex : Integer; const AValue : TInconclusiveDetail); virtual;
+    Procedure SetskippedDetail(AIndex : Integer; const AValue : TSkippedDetail); virtual;
+    Procedure SetsuccessDetail(AIndex : Integer; const AValue : TSuccessDetail); virtual;
+    Procedure Setsummary(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property failureDetail : TFailureDetail Index 0 Read FfailureDetail Write SetfailureDetail;
+    Property inconclusiveDetail : TInconclusiveDetail Index 8 Read FinconclusiveDetail Write SetinconclusiveDetail;
+    Property skippedDetail : TSkippedDetail Index 16 Read FskippedDetail Write SetskippedDetail;
+    Property successDetail : TSuccessDetail Index 24 Read FsuccessDetail Write SetsuccessDetail;
+    Property summary : String Index 32 Read Fsummary Write Setsummary;
+  end;
+  TOutcomeClass = Class of TOutcome;
+  
+  { --------------------------------------------------------------------
+    TProjectSettings
+    --------------------------------------------------------------------}
+  
+  TProjectSettings = Class(TGoogleBaseObject)
+  Private
+    FdefaultBucket : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure SetdefaultBucket(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property defaultBucket : String Index 0 Read FdefaultBucket Write SetdefaultBucket;
+    Property name : String Index 8 Read Fname Write Setname;
+  end;
+  TProjectSettingsClass = Class of TProjectSettings;
+  
+  { --------------------------------------------------------------------
+    TPublishXunitXmlFilesRequest
+    --------------------------------------------------------------------}
+  
+  TPublishXunitXmlFilesRequest = Class(TGoogleBaseObject)
+  Private
+    FxunitXmlFiles : TPublishXunitXmlFilesRequestTypexunitXmlFilesArray;
+  Protected
+    //Property setters
+    Procedure SetxunitXmlFiles(AIndex : Integer; const AValue : TPublishXunitXmlFilesRequestTypexunitXmlFilesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property xunitXmlFiles : TPublishXunitXmlFilesRequestTypexunitXmlFilesArray Index 0 Read FxunitXmlFiles Write SetxunitXmlFiles;
+  end;
+  TPublishXunitXmlFilesRequestClass = Class of TPublishXunitXmlFilesRequest;
+  
+  { --------------------------------------------------------------------
+    TSkippedDetail
+    --------------------------------------------------------------------}
+  
+  TSkippedDetail = Class(TGoogleBaseObject)
+  Private
+    FincompatibleAppVersion : boolean;
+    FincompatibleArchitecture : boolean;
+    FincompatibleDevice : boolean;
+  Protected
+    //Property setters
+    Procedure SetincompatibleAppVersion(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetincompatibleArchitecture(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetincompatibleDevice(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property incompatibleAppVersion : boolean Index 0 Read FincompatibleAppVersion Write SetincompatibleAppVersion;
+    Property incompatibleArchitecture : boolean Index 8 Read FincompatibleArchitecture Write SetincompatibleArchitecture;
+    Property incompatibleDevice : boolean Index 16 Read FincompatibleDevice Write SetincompatibleDevice;
+  end;
+  TSkippedDetailClass = Class of TSkippedDetail;
+  
+  { --------------------------------------------------------------------
+    TStackTrace
+    --------------------------------------------------------------------}
+  
+  TStackTrace = Class(TGoogleBaseObject)
+  Private
+    Fexception : String;
+  Protected
+    //Property setters
+    Procedure Setexception(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property exception : String Index 0 Read Fexception Write Setexception;
+  end;
+  TStackTraceClass = Class of TStackTrace;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TStep
+    --------------------------------------------------------------------}
+  
+  TStep = Class(TGoogleBaseObject)
+  Private
+    FcompletionTime : TTimestamp;
+    FcreationTime : TTimestamp;
+    Fdescription : String;
+    FdeviceUsageDuration : TDuration;
+    FdimensionValue : TStepTypedimensionValueArray;
+    FhasImages : boolean;
+    Flabels : TStepTypelabelsArray;
+    Fname : String;
+    Foutcome : TOutcome;
+    FrunDuration : TDuration;
+    Fstate : String;
+    FstepId : String;
+    FtestExecutionStep : TTestExecutionStep;
+    FtoolExecutionStep : TToolExecutionStep;
+  Protected
+    //Property setters
+    Procedure SetcompletionTime(AIndex : Integer; const AValue : TTimestamp); virtual;
+    Procedure SetcreationTime(AIndex : Integer; const AValue : TTimestamp); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdeviceUsageDuration(AIndex : Integer; const AValue : TDuration); virtual;
+    Procedure SetdimensionValue(AIndex : Integer; const AValue : TStepTypedimensionValueArray); virtual;
+    Procedure SethasImages(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure Setlabels(AIndex : Integer; const AValue : TStepTypelabelsArray); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setoutcome(AIndex : Integer; const AValue : TOutcome); virtual;
+    Procedure SetrunDuration(AIndex : Integer; const AValue : TDuration); virtual;
+    Procedure Setstate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstepId(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettestExecutionStep(AIndex : Integer; const AValue : TTestExecutionStep); virtual;
+    Procedure SettoolExecutionStep(AIndex : Integer; const AValue : TToolExecutionStep); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property completionTime : TTimestamp Index 0 Read FcompletionTime Write SetcompletionTime;
+    Property creationTime : TTimestamp Index 8 Read FcreationTime Write SetcreationTime;
+    Property description : String Index 16 Read Fdescription Write Setdescription;
+    Property deviceUsageDuration : TDuration Index 24 Read FdeviceUsageDuration Write SetdeviceUsageDuration;
+    Property dimensionValue : TStepTypedimensionValueArray Index 32 Read FdimensionValue Write SetdimensionValue;
+    Property hasImages : boolean Index 40 Read FhasImages Write SethasImages;
+    Property labels : TStepTypelabelsArray Index 48 Read Flabels Write Setlabels;
+    Property name : String Index 56 Read Fname Write Setname;
+    Property outcome : TOutcome Index 64 Read Foutcome Write Setoutcome;
+    Property runDuration : TDuration Index 72 Read FrunDuration Write SetrunDuration;
+    Property state : String Index 80 Read Fstate Write Setstate;
+    Property stepId : String Index 88 Read FstepId Write SetstepId;
+    Property testExecutionStep : TTestExecutionStep Index 96 Read FtestExecutionStep Write SettestExecutionStep;
+    Property toolExecutionStep : TToolExecutionStep Index 104 Read FtoolExecutionStep Write SettoolExecutionStep;
+  end;
+  TStepClass = Class of TStep;
+  
+  { --------------------------------------------------------------------
+    TStepDimensionValueEntry
+    --------------------------------------------------------------------}
+  
+  TStepDimensionValueEntry = 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;
+  TStepDimensionValueEntryClass = Class of TStepDimensionValueEntry;
+  
+  { --------------------------------------------------------------------
+    TStepLabelsEntry
+    --------------------------------------------------------------------}
+  
+  TStepLabelsEntry = 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;
+  TStepLabelsEntryClass = Class of TStepLabelsEntry;
+  
+  { --------------------------------------------------------------------
+    TSuccessDetail
+    --------------------------------------------------------------------}
+  
+  TSuccessDetail = Class(TGoogleBaseObject)
+  Private
+    FotherNativeCrash : boolean;
+  Protected
+    //Property setters
+    Procedure SetotherNativeCrash(AIndex : Integer; const AValue : boolean); virtual;
+  Public
+  Published
+    Property otherNativeCrash : boolean Index 0 Read FotherNativeCrash Write SetotherNativeCrash;
+  end;
+  TSuccessDetailClass = Class of TSuccessDetail;
+  
+  { --------------------------------------------------------------------
+    TTestCaseReference
+    --------------------------------------------------------------------}
+  
+  TTestCaseReference = Class(TGoogleBaseObject)
+  Private
+    FclassName : String;
+    Fname : String;
+    FtestSuiteName : String;
+  Protected
+    //Property setters
+    Procedure SetclassName(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SettestSuiteName(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property className : String Index 0 Read FclassName Write SetclassName;
+    Property name : String Index 8 Read Fname Write Setname;
+    Property testSuiteName : String Index 16 Read FtestSuiteName Write SettestSuiteName;
+  end;
+  TTestCaseReferenceClass = Class of TTestCaseReference;
+  
+  { --------------------------------------------------------------------
+    TTestExecutionStep
+    --------------------------------------------------------------------}
+  
+  TTestExecutionStep = Class(TGoogleBaseObject)
+  Private
+    FtestIssues : TTestExecutionStepTypetestIssuesArray;
+    FtestSuiteOverviews : TTestExecutionStepTypetestSuiteOverviewsArray;
+    FtestTiming : TTestTiming;
+    FtoolExecution : TToolExecution;
+  Protected
+    //Property setters
+    Procedure SettestIssues(AIndex : Integer; const AValue : TTestExecutionStepTypetestIssuesArray); virtual;
+    Procedure SettestSuiteOverviews(AIndex : Integer; const AValue : TTestExecutionStepTypetestSuiteOverviewsArray); virtual;
+    Procedure SettestTiming(AIndex : Integer; const AValue : TTestTiming); virtual;
+    Procedure SettoolExecution(AIndex : Integer; const AValue : TToolExecution); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property testIssues : TTestExecutionStepTypetestIssuesArray Index 0 Read FtestIssues Write SettestIssues;
+    Property testSuiteOverviews : TTestExecutionStepTypetestSuiteOverviewsArray Index 8 Read FtestSuiteOverviews Write SettestSuiteOverviews;
+    Property testTiming : TTestTiming Index 16 Read FtestTiming Write SettestTiming;
+    Property toolExecution : TToolExecution Index 24 Read FtoolExecution Write SettoolExecution;
+  end;
+  TTestExecutionStepClass = Class of TTestExecutionStep;
+  
+  { --------------------------------------------------------------------
+    TTestIssue
+    --------------------------------------------------------------------}
+  
+  TTestIssue = Class(TGoogleBaseObject)
+  Private
+    FerrorMessage : String;
+    FstackTrace : TStackTrace;
+  Protected
+    //Property setters
+    Procedure SeterrorMessage(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstackTrace(AIndex : Integer; const AValue : TStackTrace); virtual;
+  Public
+  Published
+    Property errorMessage : String Index 0 Read FerrorMessage Write SeterrorMessage;
+    Property stackTrace : TStackTrace Index 8 Read FstackTrace Write SetstackTrace;
+  end;
+  TTestIssueClass = Class of TTestIssue;
+  
+  { --------------------------------------------------------------------
+    TTestSuiteOverview
+    --------------------------------------------------------------------}
+  
+  TTestSuiteOverview = Class(TGoogleBaseObject)
+  Private
+    FerrorCount : integer;
+    FfailureCount : integer;
+    Fname : String;
+    FskippedCount : integer;
+    FtotalCount : integer;
+    FxmlSource : TFileReference;
+  Protected
+    //Property setters
+    Procedure SeterrorCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetfailureCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setname(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetskippedCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SettotalCount(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetxmlSource(AIndex : Integer; const AValue : TFileReference); virtual;
+  Public
+  Published
+    Property errorCount : integer Index 0 Read FerrorCount Write SeterrorCount;
+    Property failureCount : integer Index 8 Read FfailureCount Write SetfailureCount;
+    Property name : String Index 16 Read Fname Write Setname;
+    Property skippedCount : integer Index 24 Read FskippedCount Write SetskippedCount;
+    Property totalCount : integer Index 32 Read FtotalCount Write SettotalCount;
+    Property xmlSource : TFileReference Index 40 Read FxmlSource Write SetxmlSource;
+  end;
+  TTestSuiteOverviewClass = Class of TTestSuiteOverview;
+  
+  { --------------------------------------------------------------------
+    TTestTiming
+    --------------------------------------------------------------------}
+  
+  TTestTiming = Class(TGoogleBaseObject)
+  Private
+    FtestProcessDuration : TDuration;
+  Protected
+    //Property setters
+    Procedure SettestProcessDuration(AIndex : Integer; const AValue : TDuration); virtual;
+  Public
+  Published
+    Property testProcessDuration : TDuration Index 0 Read FtestProcessDuration Write SettestProcessDuration;
+  end;
+  TTestTimingClass = Class of TTestTiming;
+  
+  { --------------------------------------------------------------------
+    TThumbnail
+    --------------------------------------------------------------------}
+  
+  TThumbnail = Class(TGoogleBaseObject)
+  Private
+    FcontentType : String;
+    Fdata : String;
+    FheightPx : integer;
+    FwidthPx : integer;
+  Protected
+    //Property setters
+    Procedure SetcontentType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdata(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetheightPx(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetwidthPx(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property contentType : String Index 0 Read FcontentType Write SetcontentType;
+    Property data : String Index 8 Read Fdata Write Setdata;
+    Property heightPx : integer Index 16 Read FheightPx Write SetheightPx;
+    Property widthPx : integer Index 24 Read FwidthPx Write SetwidthPx;
+  end;
+  TThumbnailClass = Class of TThumbnail;
+  
+  { --------------------------------------------------------------------
+    TTimestamp
+    --------------------------------------------------------------------}
+  
+  TTimestamp = Class(TGoogleBaseObject)
+  Private
+    Fnanos : integer;
+    Fseconds : String;
+  Protected
+    //Property setters
+    Procedure Setnanos(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setseconds(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property nanos : integer Index 0 Read Fnanos Write Setnanos;
+    Property seconds : String Index 8 Read Fseconds Write Setseconds;
+  end;
+  TTimestampClass = Class of TTimestamp;
+  
+  { --------------------------------------------------------------------
+    TToolExecution
+    --------------------------------------------------------------------}
+  
+  TToolExecution = Class(TGoogleBaseObject)
+  Private
+    FcommandLineArguments : TStringArray;
+    FexitCode : TToolExitCode;
+    FtoolLogs : TToolExecutionTypetoolLogsArray;
+    FtoolOutputs : TToolExecutionTypetoolOutputsArray;
+  Protected
+    //Property setters
+    Procedure SetcommandLineArguments(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetexitCode(AIndex : Integer; const AValue : TToolExitCode); virtual;
+    Procedure SettoolLogs(AIndex : Integer; const AValue : TToolExecutionTypetoolLogsArray); virtual;
+    Procedure SettoolOutputs(AIndex : Integer; const AValue : TToolExecutionTypetoolOutputsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property commandLineArguments : TStringArray Index 0 Read FcommandLineArguments Write SetcommandLineArguments;
+    Property exitCode : TToolExitCode Index 8 Read FexitCode Write SetexitCode;
+    Property toolLogs : TToolExecutionTypetoolLogsArray Index 16 Read FtoolLogs Write SettoolLogs;
+    Property toolOutputs : TToolExecutionTypetoolOutputsArray Index 24 Read FtoolOutputs Write SettoolOutputs;
+  end;
+  TToolExecutionClass = Class of TToolExecution;
+  
+  { --------------------------------------------------------------------
+    TToolExecutionStep
+    --------------------------------------------------------------------}
+  
+  TToolExecutionStep = Class(TGoogleBaseObject)
+  Private
+    FtoolExecution : TToolExecution;
+  Protected
+    //Property setters
+    Procedure SettoolExecution(AIndex : Integer; const AValue : TToolExecution); virtual;
+  Public
+  Published
+    Property toolExecution : TToolExecution Index 0 Read FtoolExecution Write SettoolExecution;
+  end;
+  TToolExecutionStepClass = Class of TToolExecutionStep;
+  
+  { --------------------------------------------------------------------
+    TToolExitCode
+    --------------------------------------------------------------------}
+  
+  TToolExitCode = Class(TGoogleBaseObject)
+  Private
+    Fnumber : integer;
+  Protected
+    //Property setters
+    Procedure Setnumber(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property number : integer Index 0 Read Fnumber Write Setnumber;
+  end;
+  TToolExitCodeClass = Class of TToolExitCode;
+  
+  { --------------------------------------------------------------------
+    TToolOutputReference
+    --------------------------------------------------------------------}
+  
+  TToolOutputReference = Class(TGoogleBaseObject)
+  Private
+    FcreationTime : TTimestamp;
+    Foutput : TFileReference;
+    FtestCase : TTestCaseReference;
+  Protected
+    //Property setters
+    Procedure SetcreationTime(AIndex : Integer; const AValue : TTimestamp); virtual;
+    Procedure Setoutput(AIndex : Integer; const AValue : TFileReference); virtual;
+    Procedure SettestCase(AIndex : Integer; const AValue : TTestCaseReference); virtual;
+  Public
+  Published
+    Property creationTime : TTimestamp Index 0 Read FcreationTime Write SetcreationTime;
+    Property output : TFileReference Index 8 Read Foutput Write Setoutput;
+    Property testCase : TTestCaseReference Index 16 Read FtestCase Write SettestCase;
+  end;
+  TToolOutputReferenceClass = Class of TToolOutputReference;
+  
+  { --------------------------------------------------------------------
+    TProjectsHistoriesExecutionsStepsThumbnailsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsStepsThumbnailsResource, method List
+  
+  TProjectsHistoriesExecutionsStepsThumbnailsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsHistoriesExecutionsStepsThumbnailsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function List(executionId: string; historyId: string; projectId: string; stepId: string; AQuery : string  = '') : TListStepThumbnailsResponse;
+    Function List(executionId: string; historyId: string; projectId: string; stepId: string; AQuery : TProjectsHistoriesExecutionsStepsThumbnailslistOptions) : TListStepThumbnailsResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsHistoriesExecutionsStepsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsStepsResource, method Create
+  
+  TProjectsHistoriesExecutionsStepsCreateOptions = Record
+    requestId : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsStepsResource, method List
+  
+  TProjectsHistoriesExecutionsStepsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsStepsResource, method Patch
+  
+  TProjectsHistoriesExecutionsStepsPatchOptions = Record
+    requestId : String;
+  end;
+  
+  TProjectsHistoriesExecutionsStepsResource = Class(TGoogleResource)
+  Private
+    FThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+    Function GetThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(executionId: string; historyId: string; projectId: string; aStep : TStep; AQuery : string  = '') : TStep;overload;
+    Function Create(executionId: string; historyId: string; projectId: string; aStep : TStep; AQuery : TProjectsHistoriesExecutionsStepscreateOptions) : TStep;overload;
+    Function Get(executionId: string; historyId: string; projectId: string; stepId: string) : TStep;
+    Function List(executionId: string; historyId: string; projectId: string; AQuery : string  = '') : TListStepsResponse;
+    Function List(executionId: string; historyId: string; projectId: string; AQuery : TProjectsHistoriesExecutionsStepslistOptions) : TListStepsResponse;
+    Function Patch(executionId: string; historyId: string; projectId: string; stepId: string; aStep : TStep; AQuery : string  = '') : TStep;
+    Function Patch(executionId: string; historyId: string; projectId: string; stepId: string; aStep : TStep; AQuery : TProjectsHistoriesExecutionsStepspatchOptions) : TStep;
+    Function PublishXunitXmlFiles(executionId: string; historyId: string; projectId: string; stepId: string; aPublishXunitXmlFilesRequest : TPublishXunitXmlFilesRequest) : TStep;
+    Function CreateThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Property ThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource Read GetThumbnailsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsHistoriesExecutionsResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsResource, method Create
+  
+  TProjectsHistoriesExecutionsCreateOptions = Record
+    requestId : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsResource, method List
+  
+  TProjectsHistoriesExecutionsListOptions = Record
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsHistoriesExecutionsResource, method Patch
+  
+  TProjectsHistoriesExecutionsPatchOptions = Record
+    requestId : String;
+  end;
+  
+  TProjectsHistoriesExecutionsResource = Class(TGoogleResource)
+  Private
+    FStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+    FStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+    Function GetStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;
+    Function GetStepsInstance : TProjectsHistoriesExecutionsStepsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(historyId: string; projectId: string; aExecution : TExecution; AQuery : string  = '') : TExecution;overload;
+    Function Create(historyId: string; projectId: string; aExecution : TExecution; AQuery : TProjectsHistoriesExecutionscreateOptions) : TExecution;overload;
+    Function Get(executionId: string; historyId: string; projectId: string) : TExecution;
+    Function List(historyId: string; projectId: string; AQuery : string  = '') : TListExecutionsResponse;
+    Function List(historyId: string; projectId: string; AQuery : TProjectsHistoriesExecutionslistOptions) : TListExecutionsResponse;
+    Function Patch(executionId: string; historyId: string; projectId: string; aExecution : TExecution; AQuery : string  = '') : TExecution;
+    Function Patch(executionId: string; historyId: string; projectId: string; aExecution : TExecution; AQuery : TProjectsHistoriesExecutionspatchOptions) : TExecution;
+    Function CreateStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateStepsResource : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Property StepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource Read GetStepsThumbnailsInstance;
+    Property StepsResource : TProjectsHistoriesExecutionsStepsResource Read GetStepsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsHistoriesResource
+    --------------------------------------------------------------------}
+  
+  
+  //Optional query Options for TProjectsHistoriesResource, method Create
+  
+  TProjectsHistoriesCreateOptions = Record
+    requestId : String;
+  end;
+  
+  
+  //Optional query Options for TProjectsHistoriesResource, method List
+  
+  TProjectsHistoriesListOptions = Record
+    filterByName : String;
+    pageSize : integer;
+    pageToken : String;
+  end;
+  
+  TProjectsHistoriesResource = Class(TGoogleResource)
+  Private
+    FExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+    FExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+    FExecutionsInstance : TProjectsHistoriesExecutionsResource;
+    Function GetExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;
+    Function GetExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;virtual;
+    Function GetExecutionsInstance : TProjectsHistoriesExecutionsResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Create(projectId: string; aHistory : THistory; AQuery : string  = '') : THistory;overload;
+    Function Create(projectId: string; aHistory : THistory; AQuery : TProjectsHistoriescreateOptions) : THistory;overload;
+    Function Get(historyId: string; projectId: string) : THistory;
+    Function List(projectId: string; AQuery : string  = '') : TListHistoriesResponse;
+    Function List(projectId: string; AQuery : TProjectsHistorieslistOptions) : TListHistoriesResponse;
+    Function CreateExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Function CreateExecutionsResource : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Property ExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource Read GetExecutionsStepsThumbnailsInstance;
+    Property ExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource Read GetExecutionsStepsInstance;
+    Property ExecutionsResource : TProjectsHistoriesExecutionsResource Read GetExecutionsInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TProjectsResource
+    --------------------------------------------------------------------}
+  
+  TProjectsResource = Class(TGoogleResource)
+  Private
+    FHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+    FHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+    FHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;
+    FHistoriesInstance : TProjectsHistoriesResource;
+    Function GetHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;
+    Function GetHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;virtual;
+    Function GetHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;virtual;
+    Function GetHistoriesInstance : TProjectsHistoriesResource;virtual;
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function GetSettings(projectId: string) : TProjectSettings;
+    Function InitializeSettings(projectId: string) : TProjectSettings;
+    Function CreateHistoriesExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateHistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateHistoriesExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateHistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateHistoriesExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Function CreateHistoriesExecutionsResource : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Function CreateHistoriesResource(AOwner : TComponent) : TProjectsHistoriesResource;virtual;overload;
+    Function CreateHistoriesResource : TProjectsHistoriesResource;virtual;overload;
+    Property HistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource Read GetHistoriesExecutionsStepsThumbnailsInstance;
+    Property HistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource Read GetHistoriesExecutionsStepsInstance;
+    Property HistoriesExecutionsResource : TProjectsHistoriesExecutionsResource Read GetHistoriesExecutionsInstance;
+    Property HistoriesResource : TProjectsHistoriesResource Read GetHistoriesInstance;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TToolresultsAPI
+    --------------------------------------------------------------------}
+  
+  TToolresultsAPI = Class(TGoogleAPI)
+  Private
+    FProjectsHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+    FProjectsHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+    FProjectsHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;
+    FProjectsHistoriesInstance : TProjectsHistoriesResource;
+    FProjectsInstance : TProjectsResource;
+    Function GetProjectsHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;
+    Function GetProjectsHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;virtual;
+    Function GetProjectsHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;virtual;
+    Function GetProjectsHistoriesInstance : TProjectsHistoriesResource;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 CreateProjectsHistoriesExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateProjectsHistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;virtual;overload;
+    Function CreateProjectsHistoriesExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateProjectsHistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;virtual;overload;
+    Function CreateProjectsHistoriesExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Function CreateProjectsHistoriesExecutionsResource : TProjectsHistoriesExecutionsResource;virtual;overload;
+    Function CreateProjectsHistoriesResource(AOwner : TComponent) : TProjectsHistoriesResource;virtual;overload;
+    Function CreateProjectsHistoriesResource : TProjectsHistoriesResource;virtual;overload;
+    Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
+    Function CreateProjectsResource : TProjectsResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ProjectsHistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource Read GetProjectsHistoriesExecutionsStepsThumbnailsInstance;
+    Property ProjectsHistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource Read GetProjectsHistoriesExecutionsStepsInstance;
+    Property ProjectsHistoriesExecutionsResource : TProjectsHistoriesExecutionsResource Read GetProjectsHistoriesExecutionsInstance;
+    Property ProjectsHistoriesResource : TProjectsHistoriesResource Read GetProjectsHistoriesInstance;
+    Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TAny
+  --------------------------------------------------------------------}
+
+
+Procedure TAny.SettypeUrl(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtypeUrl=AValue) then exit;
+  FtypeUrl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAny.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDuration
+  --------------------------------------------------------------------}
+
+
+Procedure TDuration.Setnanos(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnanos=AValue) then exit;
+  Fnanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TDuration.Setseconds(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fseconds=AValue) then exit;
+  Fseconds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TExecution
+  --------------------------------------------------------------------}
+
+
+Procedure TExecution.SetcompletionTime(AIndex : Integer; const AValue : TTimestamp); 
+
+begin
+  If (FcompletionTime=AValue) then exit;
+  FcompletionTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecution.SetcreationTime(AIndex : Integer; const AValue : TTimestamp); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecution.SetexecutionId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FexecutionId=AValue) then exit;
+  FexecutionId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecution.Setoutcome(AIndex : Integer; const AValue : TOutcome); 
+
+begin
+  If (Foutcome=AValue) then exit;
+  Foutcome:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecution.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TExecution.SettestExecutionMatrixId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtestExecutionMatrixId=AValue) then exit;
+  FtestExecutionMatrixId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFailureDetail
+  --------------------------------------------------------------------}
+
+
+Procedure TFailureDetail.Setcrashed(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (Fcrashed=AValue) then exit;
+  Fcrashed:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFailureDetail.SetnotInstalled(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FnotInstalled=AValue) then exit;
+  FnotInstalled:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFailureDetail.SetotherNativeCrash(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FotherNativeCrash=AValue) then exit;
+  FotherNativeCrash:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFailureDetail.SettimedOut(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FtimedOut=AValue) then exit;
+  FtimedOut:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFailureDetail.SetunableToCrawl(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FunableToCrawl=AValue) then exit;
+  FunableToCrawl:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TFileReference
+  --------------------------------------------------------------------}
+
+
+Procedure TFileReference.SetfileUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FfileUri=AValue) then exit;
+  FfileUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  THistory
+  --------------------------------------------------------------------}
+
+
+Procedure THistory.SetdisplayName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdisplayName=AValue) then exit;
+  FdisplayName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THistory.SethistoryId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FhistoryId=AValue) then exit;
+  FhistoryId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure THistory.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TImage
+  --------------------------------------------------------------------}
+
+
+Procedure TImage.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImage.SetsourceImage(AIndex : Integer; const AValue : TToolOutputReference); 
+
+begin
+  If (FsourceImage=AValue) then exit;
+  FsourceImage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImage.SetstepId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstepId=AValue) then exit;
+  FstepId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImage.Setthumbnail(AIndex : Integer; const AValue : TThumbnail); 
+
+begin
+  If (Fthumbnail=AValue) then exit;
+  Fthumbnail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TInconclusiveDetail
+  --------------------------------------------------------------------}
+
+
+Procedure TInconclusiveDetail.SetabortedByUser(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FabortedByUser=AValue) then exit;
+  FabortedByUser:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInconclusiveDetail.SetinfrastructureFailure(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FinfrastructureFailure=AValue) then exit;
+  FinfrastructureFailure:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TInconclusiveDetail.SetnativeCrash(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FnativeCrash=AValue) then exit;
+  FnativeCrash:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TListExecutionsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListExecutionsResponse.Setexecutions(AIndex : Integer; const AValue : TListExecutionsResponseTypeexecutionsArray); 
+
+begin
+  If (Fexecutions=AValue) then exit;
+  Fexecutions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListExecutionsResponse.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 TListExecutionsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'executions' : SetLength(Fexecutions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListHistoriesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListHistoriesResponse.Sethistories(AIndex : Integer; const AValue : TListHistoriesResponseTypehistoriesArray); 
+
+begin
+  If (Fhistories=AValue) then exit;
+  Fhistories:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListHistoriesResponse.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 TListHistoriesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'histories' : SetLength(Fhistories,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListStepThumbnailsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListStepThumbnailsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStepThumbnailsResponse.Setthumbnails(AIndex : Integer; const AValue : TListStepThumbnailsResponseTypethumbnailsArray); 
+
+begin
+  If (Fthumbnails=AValue) then exit;
+  Fthumbnails:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListStepThumbnailsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'thumbnails' : SetLength(Fthumbnails,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TListStepsResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TListStepsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FnextPageToken=AValue) then exit;
+  FnextPageToken:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TListStepsResponse.Setsteps(AIndex : Integer; const AValue : TListStepsResponseTypestepsArray); 
+
+begin
+  If (Fsteps=AValue) then exit;
+  Fsteps:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TListStepsResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'steps' : SetLength(Fsteps,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TOutcome
+  --------------------------------------------------------------------}
+
+
+Procedure TOutcome.SetfailureDetail(AIndex : Integer; const AValue : TFailureDetail); 
+
+begin
+  If (FfailureDetail=AValue) then exit;
+  FfailureDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOutcome.SetinconclusiveDetail(AIndex : Integer; const AValue : TInconclusiveDetail); 
+
+begin
+  If (FinconclusiveDetail=AValue) then exit;
+  FinconclusiveDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOutcome.SetskippedDetail(AIndex : Integer; const AValue : TSkippedDetail); 
+
+begin
+  If (FskippedDetail=AValue) then exit;
+  FskippedDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOutcome.SetsuccessDetail(AIndex : Integer; const AValue : TSuccessDetail); 
+
+begin
+  If (FsuccessDetail=AValue) then exit;
+  FsuccessDetail:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TOutcome.Setsummary(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fsummary=AValue) then exit;
+  Fsummary:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectSettings
+  --------------------------------------------------------------------}
+
+
+Procedure TProjectSettings.SetdefaultBucket(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FdefaultBucket=AValue) then exit;
+  FdefaultBucket:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProjectSettings.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPublishXunitXmlFilesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TPublishXunitXmlFilesRequest.SetxunitXmlFiles(AIndex : Integer; const AValue : TPublishXunitXmlFilesRequestTypexunitXmlFilesArray); 
+
+begin
+  If (FxunitXmlFiles=AValue) then exit;
+  FxunitXmlFiles:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TPublishXunitXmlFilesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'xunitxmlfiles' : SetLength(FxunitXmlFiles,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSkippedDetail
+  --------------------------------------------------------------------}
+
+
+Procedure TSkippedDetail.SetincompatibleAppVersion(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FincompatibleAppVersion=AValue) then exit;
+  FincompatibleAppVersion:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSkippedDetail.SetincompatibleArchitecture(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FincompatibleArchitecture=AValue) then exit;
+  FincompatibleArchitecture:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSkippedDetail.SetincompatibleDevice(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FincompatibleDevice=AValue) then exit;
+  FincompatibleDevice:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStackTrace
+  --------------------------------------------------------------------}
+
+
+Procedure TStackTrace.Setexception(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fexception=AValue) then exit;
+  Fexception:=AValue;
+  MarkPropertyChanged(AIndex);
+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}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStep
+  --------------------------------------------------------------------}
+
+
+Procedure TStep.SetcompletionTime(AIndex : Integer; const AValue : TTimestamp); 
+
+begin
+  If (FcompletionTime=AValue) then exit;
+  FcompletionTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SetcreationTime(AIndex : Integer; const AValue : TTimestamp); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SetdeviceUsageDuration(AIndex : Integer; const AValue : TDuration); 
+
+begin
+  If (FdeviceUsageDuration=AValue) then exit;
+  FdeviceUsageDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SetdimensionValue(AIndex : Integer; const AValue : TStepTypedimensionValueArray); 
+
+begin
+  If (FdimensionValue=AValue) then exit;
+  FdimensionValue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SethasImages(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FhasImages=AValue) then exit;
+  FhasImages:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.Setlabels(AIndex : Integer; const AValue : TStepTypelabelsArray); 
+
+begin
+  If (Flabels=AValue) then exit;
+  Flabels:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.Setoutcome(AIndex : Integer; const AValue : TOutcome); 
+
+begin
+  If (Foutcome=AValue) then exit;
+  Foutcome:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SetrunDuration(AIndex : Integer; const AValue : TDuration); 
+
+begin
+  If (FrunDuration=AValue) then exit;
+  FrunDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.Setstate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fstate=AValue) then exit;
+  Fstate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SetstepId(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstepId=AValue) then exit;
+  FstepId:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SettestExecutionStep(AIndex : Integer; const AValue : TTestExecutionStep); 
+
+begin
+  If (FtestExecutionStep=AValue) then exit;
+  FtestExecutionStep:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStep.SettoolExecutionStep(AIndex : Integer; const AValue : TToolExecutionStep); 
+
+begin
+  If (FtoolExecutionStep=AValue) then exit;
+  FtoolExecutionStep:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TStep.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensionvalue' : SetLength(FdimensionValue,ALength);
+  'labels' : SetLength(Flabels,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TStepDimensionValueEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TStepDimensionValueEntry.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStepDimensionValueEntry.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TStepLabelsEntry
+  --------------------------------------------------------------------}
+
+
+Procedure TStepLabelsEntry.Setkey(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fkey=AValue) then exit;
+  Fkey:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TStepLabelsEntry.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSuccessDetail
+  --------------------------------------------------------------------}
+
+
+Procedure TSuccessDetail.SetotherNativeCrash(AIndex : Integer; const AValue : boolean); 
+
+begin
+  If (FotherNativeCrash=AValue) then exit;
+  FotherNativeCrash:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestCaseReference
+  --------------------------------------------------------------------}
+
+
+Procedure TTestCaseReference.SetclassName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FclassName=AValue) then exit;
+  FclassName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestCaseReference.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestCaseReference.SettestSuiteName(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FtestSuiteName=AValue) then exit;
+  FtestSuiteName:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestExecutionStep
+  --------------------------------------------------------------------}
+
+
+Procedure TTestExecutionStep.SettestIssues(AIndex : Integer; const AValue : TTestExecutionStepTypetestIssuesArray); 
+
+begin
+  If (FtestIssues=AValue) then exit;
+  FtestIssues:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestExecutionStep.SettestSuiteOverviews(AIndex : Integer; const AValue : TTestExecutionStepTypetestSuiteOverviewsArray); 
+
+begin
+  If (FtestSuiteOverviews=AValue) then exit;
+  FtestSuiteOverviews:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestExecutionStep.SettestTiming(AIndex : Integer; const AValue : TTestTiming); 
+
+begin
+  If (FtestTiming=AValue) then exit;
+  FtestTiming:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestExecutionStep.SettoolExecution(AIndex : Integer; const AValue : TToolExecution); 
+
+begin
+  If (FtoolExecution=AValue) then exit;
+  FtoolExecution:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TTestExecutionStep.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'testissues' : SetLength(FtestIssues,ALength);
+  'testsuiteoverviews' : SetLength(FtestSuiteOverviews,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestIssue
+  --------------------------------------------------------------------}
+
+
+Procedure TTestIssue.SeterrorMessage(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FerrorMessage=AValue) then exit;
+  FerrorMessage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestIssue.SetstackTrace(AIndex : Integer; const AValue : TStackTrace); 
+
+begin
+  If (FstackTrace=AValue) then exit;
+  FstackTrace:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestSuiteOverview
+  --------------------------------------------------------------------}
+
+
+Procedure TTestSuiteOverview.SeterrorCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FerrorCount=AValue) then exit;
+  FerrorCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestSuiteOverview.SetfailureCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FfailureCount=AValue) then exit;
+  FfailureCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestSuiteOverview.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestSuiteOverview.SetskippedCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FskippedCount=AValue) then exit;
+  FskippedCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestSuiteOverview.SettotalCount(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtotalCount=AValue) then exit;
+  FtotalCount:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTestSuiteOverview.SetxmlSource(AIndex : Integer; const AValue : TFileReference); 
+
+begin
+  If (FxmlSource=AValue) then exit;
+  FxmlSource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTestTiming
+  --------------------------------------------------------------------}
+
+
+Procedure TTestTiming.SettestProcessDuration(AIndex : Integer; const AValue : TDuration); 
+
+begin
+  If (FtestProcessDuration=AValue) then exit;
+  FtestProcessDuration:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TThumbnail
+  --------------------------------------------------------------------}
+
+
+Procedure TThumbnail.SetcontentType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FcontentType=AValue) then exit;
+  FcontentType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThumbnail.Setdata(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdata=AValue) then exit;
+  Fdata:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThumbnail.SetheightPx(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FheightPx=AValue) then exit;
+  FheightPx:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TThumbnail.SetwidthPx(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FwidthPx=AValue) then exit;
+  FwidthPx:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TTimestamp
+  --------------------------------------------------------------------}
+
+
+Procedure TTimestamp.Setnanos(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnanos=AValue) then exit;
+  Fnanos:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TTimestamp.Setseconds(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fseconds=AValue) then exit;
+  Fseconds:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TToolExecution
+  --------------------------------------------------------------------}
+
+
+Procedure TToolExecution.SetcommandLineArguments(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FcommandLineArguments=AValue) then exit;
+  FcommandLineArguments:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TToolExecution.SetexitCode(AIndex : Integer; const AValue : TToolExitCode); 
+
+begin
+  If (FexitCode=AValue) then exit;
+  FexitCode:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TToolExecution.SettoolLogs(AIndex : Integer; const AValue : TToolExecutionTypetoolLogsArray); 
+
+begin
+  If (FtoolLogs=AValue) then exit;
+  FtoolLogs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TToolExecution.SettoolOutputs(AIndex : Integer; const AValue : TToolExecutionTypetoolOutputsArray); 
+
+begin
+  If (FtoolOutputs=AValue) then exit;
+  FtoolOutputs:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TToolExecution.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'commandlinearguments' : SetLength(FcommandLineArguments,ALength);
+  'toollogs' : SetLength(FtoolLogs,ALength);
+  'tooloutputs' : SetLength(FtoolOutputs,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TToolExecutionStep
+  --------------------------------------------------------------------}
+
+
+Procedure TToolExecutionStep.SettoolExecution(AIndex : Integer; const AValue : TToolExecution); 
+
+begin
+  If (FtoolExecution=AValue) then exit;
+  FtoolExecution:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TToolExitCode
+  --------------------------------------------------------------------}
+
+
+Procedure TToolExitCode.Setnumber(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fnumber=AValue) then exit;
+  Fnumber:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TToolOutputReference
+  --------------------------------------------------------------------}
+
+
+Procedure TToolOutputReference.SetcreationTime(AIndex : Integer; const AValue : TTimestamp); 
+
+begin
+  If (FcreationTime=AValue) then exit;
+  FcreationTime:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TToolOutputReference.Setoutput(AIndex : Integer; const AValue : TFileReference); 
+
+begin
+  If (Foutput=AValue) then exit;
+  Foutput:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TToolOutputReference.SettestCase(AIndex : Integer; const AValue : TTestCaseReference); 
+
+begin
+  If (FtestCase=AValue) then exit;
+  FtestCase:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsHistoriesExecutionsStepsThumbnailsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsHistoriesExecutionsStepsThumbnailsResource.ResourceName : String;
+
+begin
+  Result:='thumbnails';
+end;
+
+Class Function TProjectsHistoriesExecutionsStepsThumbnailsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TtoolresultsAPI;
+end;
+
+Function TProjectsHistoriesExecutionsStepsThumbnailsResource.List(executionId: string; historyId: string; projectId: string; stepId: string; AQuery : string = '') : TListStepThumbnailsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/thumbnails';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.thumbnails.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId,'stepId',stepId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStepThumbnailsResponse) as TListStepThumbnailsResponse;
+end;
+
+
+Function TProjectsHistoriesExecutionsStepsThumbnailsResource.List(executionId: string; historyId: string; projectId: string; stepId: string; AQuery : TProjectsHistoriesExecutionsStepsThumbnailslistOptions) : TListStepThumbnailsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(executionId,historyId,projectId,stepId,_Q);
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsHistoriesExecutionsStepsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsHistoriesExecutionsStepsResource.ResourceName : String;
+
+begin
+  Result:='steps';
+end;
+
+Class Function TProjectsHistoriesExecutionsStepsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TtoolresultsAPI;
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.Create(executionId: string; historyId: string; projectId: string; aStep : TStep; AQuery : string = '') : TStep;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStep,TStep) as TStep;
+end;
+
+
+Function TProjectsHistoriesExecutionsStepsResource.Create(executionId: string; historyId: string; projectId: string; aStep : TStep; AQuery : TProjectsHistoriesExecutionsStepscreateOptions) : TStep;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestId',AQuery.requestId);
+  Result:=Create(executionId,historyId,projectId,aStep,_Q);
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.Get(executionId: string; historyId: string; projectId: string; stepId: string) : TStep;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId,'stepId',stepId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStep) as TStep;
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.List(executionId: string; historyId: string; projectId: string; AQuery : string = '') : TListStepsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStepsResponse) as TListStepsResponse;
+end;
+
+
+Function TProjectsHistoriesExecutionsStepsResource.List(executionId: string; historyId: string; projectId: string; AQuery : TProjectsHistoriesExecutionsStepslistOptions) : TListStepsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(executionId,historyId,projectId,_Q);
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.Patch(executionId: string; historyId: string; projectId: string; stepId: string; aStep : TStep; AQuery : string = '') : TStep;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId,'stepId',stepId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStep,TStep) as TStep;
+end;
+
+
+Function TProjectsHistoriesExecutionsStepsResource.Patch(executionId: string; historyId: string; projectId: string; stepId: string; aStep : TStep; AQuery : TProjectsHistoriesExecutionsStepspatchOptions) : TStep;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestId',AQuery.requestId);
+  Result:=Patch(executionId,historyId,projectId,stepId,aStep,_Q);
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.PublishXunitXmlFiles(executionId: string; historyId: string; projectId: string; stepId: string; aPublishXunitXmlFilesRequest : TPublishXunitXmlFilesRequest) : TStep;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}:publishXunitXmlFiles';
+  _Methodid   = 'toolresults.projects.histories.executions.steps.publishXunitXmlFiles';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId,'stepId',stepId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aPublishXunitXmlFilesRequest,TStep) as TStep;
+end;
+
+
+
+Function TProjectsHistoriesExecutionsStepsResource.GetThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  if (FThumbnailsInstance=Nil) then
+    FThumbnailsInstance:=CreateThumbnailsResource;
+  Result:=FThumbnailsInstance;
+end;
+
+Function TProjectsHistoriesExecutionsStepsResource.CreateThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=CreateThumbnailsResource(Self);
+end;
+
+
+Function TProjectsHistoriesExecutionsStepsResource.CreateThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsThumbnailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsHistoriesExecutionsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsHistoriesExecutionsResource.ResourceName : String;
+
+begin
+  Result:='executions';
+end;
+
+Class Function TProjectsHistoriesExecutionsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TtoolresultsAPI;
+end;
+
+Function TProjectsHistoriesExecutionsResource.Create(historyId: string; projectId: string; aExecution : TExecution; AQuery : string = '') : TExecution;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{projectId}/histories/{historyId}/executions';
+  _Methodid   = 'toolresults.projects.histories.executions.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aExecution,TExecution) as TExecution;
+end;
+
+
+Function TProjectsHistoriesExecutionsResource.Create(historyId: string; projectId: string; aExecution : TExecution; AQuery : TProjectsHistoriesExecutionscreateOptions) : TExecution;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestId',AQuery.requestId);
+  Result:=Create(historyId,projectId,aExecution,_Q);
+end;
+
+Function TProjectsHistoriesExecutionsResource.Get(executionId: string; historyId: string; projectId: string) : TExecution;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}';
+  _Methodid   = 'toolresults.projects.histories.executions.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TExecution) as TExecution;
+end;
+
+Function TProjectsHistoriesExecutionsResource.List(historyId: string; projectId: string; AQuery : string = '') : TListExecutionsResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}/executions';
+  _Methodid   = 'toolresults.projects.histories.executions.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListExecutionsResponse) as TListExecutionsResponse;
+end;
+
+
+Function TProjectsHistoriesExecutionsResource.List(historyId: string; projectId: string; AQuery : TProjectsHistoriesExecutionslistOptions) : TListExecutionsResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(historyId,projectId,_Q);
+end;
+
+Function TProjectsHistoriesExecutionsResource.Patch(executionId: string; historyId: string; projectId: string; aExecution : TExecution; AQuery : string = '') : TExecution;
+
+Const
+  _HTTPMethod = 'PATCH';
+  _Path       = '{projectId}/histories/{historyId}/executions/{executionId}';
+  _Methodid   = 'toolresults.projects.histories.executions.patch';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['executionId',executionId,'historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aExecution,TExecution) as TExecution;
+end;
+
+
+Function TProjectsHistoriesExecutionsResource.Patch(executionId: string; historyId: string; projectId: string; aExecution : TExecution; AQuery : TProjectsHistoriesExecutionspatchOptions) : TExecution;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestId',AQuery.requestId);
+  Result:=Patch(executionId,historyId,projectId,aExecution,_Q);
+end;
+
+
+
+Function TProjectsHistoriesExecutionsResource.GetStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  if (FStepsThumbnailsInstance=Nil) then
+    FStepsThumbnailsInstance:=CreateStepsThumbnailsResource;
+  Result:=FStepsThumbnailsInstance;
+end;
+
+Function TProjectsHistoriesExecutionsResource.CreateStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=CreateStepsThumbnailsResource(Self);
+end;
+
+
+Function TProjectsHistoriesExecutionsResource.CreateStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsThumbnailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsHistoriesExecutionsResource.GetStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  if (FStepsInstance=Nil) then
+    FStepsInstance:=CreateStepsResource;
+  Result:=FStepsInstance;
+end;
+
+Function TProjectsHistoriesExecutionsResource.CreateStepsResource : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=CreateStepsResource(Self);
+end;
+
+
+Function TProjectsHistoriesExecutionsResource.CreateStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsHistoriesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsHistoriesResource.ResourceName : String;
+
+begin
+  Result:='histories';
+end;
+
+Class Function TProjectsHistoriesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TtoolresultsAPI;
+end;
+
+Function TProjectsHistoriesResource.Create(projectId: string; aHistory : THistory; AQuery : string = '') : THistory;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{projectId}/histories';
+  _Methodid   = 'toolresults.projects.histories.create';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,aHistory,THistory) as THistory;
+end;
+
+
+Function TProjectsHistoriesResource.Create(projectId: string; aHistory : THistory; AQuery : TProjectsHistoriescreateOptions) : THistory;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'requestId',AQuery.requestId);
+  Result:=Create(projectId,aHistory,_Q);
+end;
+
+Function TProjectsHistoriesResource.Get(historyId: string; projectId: string) : THistory;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories/{historyId}';
+  _Methodid   = 'toolresults.projects.histories.get';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['historyId',historyId,'projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,THistory) as THistory;
+end;
+
+Function TProjectsHistoriesResource.List(projectId: string; AQuery : string = '') : TListHistoriesResponse;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/histories';
+  _Methodid   = 'toolresults.projects.histories.list';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListHistoriesResponse) as TListHistoriesResponse;
+end;
+
+
+Function TProjectsHistoriesResource.List(projectId: string; AQuery : TProjectsHistorieslistOptions) : TListHistoriesResponse;
+
+Var
+  _Q : String;
+
+begin
+  _Q:='';
+  AddToQuery(_Q,'filterByName',AQuery.filterByName);
+  AddToQuery(_Q,'pageSize',AQuery.pageSize);
+  AddToQuery(_Q,'pageToken',AQuery.pageToken);
+  Result:=List(projectId,_Q);
+end;
+
+
+
+Function TProjectsHistoriesResource.GetExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  if (FExecutionsStepsThumbnailsInstance=Nil) then
+    FExecutionsStepsThumbnailsInstance:=CreateExecutionsStepsThumbnailsResource;
+  Result:=FExecutionsStepsThumbnailsInstance;
+end;
+
+Function TProjectsHistoriesResource.CreateExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=CreateExecutionsStepsThumbnailsResource(Self);
+end;
+
+
+Function TProjectsHistoriesResource.CreateExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsThumbnailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsHistoriesResource.GetExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  if (FExecutionsStepsInstance=Nil) then
+    FExecutionsStepsInstance:=CreateExecutionsStepsResource;
+  Result:=FExecutionsStepsInstance;
+end;
+
+Function TProjectsHistoriesResource.CreateExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=CreateExecutionsStepsResource(Self);
+end;
+
+
+Function TProjectsHistoriesResource.CreateExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsHistoriesResource.GetExecutionsInstance : TProjectsHistoriesExecutionsResource;
+
+begin
+  if (FExecutionsInstance=Nil) then
+    FExecutionsInstance:=CreateExecutionsResource;
+  Result:=FExecutionsInstance;
+end;
+
+Function TProjectsHistoriesResource.CreateExecutionsResource : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=CreateExecutionsResource(Self);
+end;
+
+
+Function TProjectsHistoriesResource.CreateExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TProjectsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TProjectsResource.ResourceName : String;
+
+begin
+  Result:='projects';
+end;
+
+Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TtoolresultsAPI;
+end;
+
+Function TProjectsResource.GetSettings(projectId: string) : TProjectSettings;
+
+Const
+  _HTTPMethod = 'GET';
+  _Path       = '{projectId}/settings';
+  _Methodid   = 'toolresults.projects.getSettings';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProjectSettings) as TProjectSettings;
+end;
+
+Function TProjectsResource.InitializeSettings(projectId: string) : TProjectSettings;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = '{projectId}:initializeSettings';
+  _Methodid   = 'toolresults.projects.initializeSettings';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['projectId',projectId]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProjectSettings) as TProjectSettings;
+end;
+
+
+
+Function TProjectsResource.GetHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  if (FHistoriesExecutionsStepsThumbnailsInstance=Nil) then
+    FHistoriesExecutionsStepsThumbnailsInstance:=CreateHistoriesExecutionsStepsThumbnailsResource;
+  Result:=FHistoriesExecutionsStepsThumbnailsInstance;
+end;
+
+Function TProjectsResource.CreateHistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=CreateHistoriesExecutionsStepsThumbnailsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateHistoriesExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsThumbnailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  if (FHistoriesExecutionsStepsInstance=Nil) then
+    FHistoriesExecutionsStepsInstance:=CreateHistoriesExecutionsStepsResource;
+  Result:=FHistoriesExecutionsStepsInstance;
+end;
+
+Function TProjectsResource.CreateHistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=CreateHistoriesExecutionsStepsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateHistoriesExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;
+
+begin
+  if (FHistoriesExecutionsInstance=Nil) then
+    FHistoriesExecutionsInstance:=CreateHistoriesExecutionsResource;
+  Result:=FHistoriesExecutionsInstance;
+end;
+
+Function TProjectsResource.CreateHistoriesExecutionsResource : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=CreateHistoriesExecutionsResource(Self);
+end;
+
+
+Function TProjectsResource.CreateHistoriesExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TProjectsResource.GetHistoriesInstance : TProjectsHistoriesResource;
+
+begin
+  if (FHistoriesInstance=Nil) then
+    FHistoriesInstance:=CreateHistoriesResource;
+  Result:=FHistoriesInstance;
+end;
+
+Function TProjectsResource.CreateHistoriesResource : TProjectsHistoriesResource;
+
+begin
+  Result:=CreateHistoriesResource(Self);
+end;
+
+
+Function TProjectsResource.CreateHistoriesResource(AOwner : TComponent) : TProjectsHistoriesResource;
+
+begin
+  Result:=TProjectsHistoriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TToolresultsAPI
+  --------------------------------------------------------------------}
+
+Class Function TToolresultsAPI.APIName : String;
+
+begin
+  Result:='toolresults';
+end;
+
+Class Function TToolresultsAPI.APIVersion : String;
+
+begin
+  Result:='v1beta3';
+end;
+
+Class Function TToolresultsAPI.APIRevision : String;
+
+begin
+  Result:='20160523';
+end;
+
+Class Function TToolresultsAPI.APIID : String;
+
+begin
+  Result:='toolresults:v1beta3';
+end;
+
+Class Function TToolresultsAPI.APITitle : String;
+
+begin
+  Result:='Cloud Tool Results API';
+end;
+
+Class Function TToolresultsAPI.APIDescription : String;
+
+begin
+  Result:='Reads and publishes results from Cloud Test Lab.';
+end;
+
+Class Function TToolresultsAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TToolresultsAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TToolresultsAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TToolresultsAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TToolresultsAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://developers.google.com/cloud-test-lab/';
+end;
+
+Class Function TToolresultsAPI.APIrootUrl : string;
+
+begin
+  Result:='https://www.googleapis.com/';
+end;
+
+Class Function TToolresultsAPI.APIbasePath : string;
+
+begin
+  Result:='/toolresults/v1beta3/projects/';
+end;
+
+Class Function TToolresultsAPI.APIbaseURL : String;
+
+begin
+  Result:='https://www.googleapis.com/toolresults/v1beta3/projects/';
+end;
+
+Class Function TToolresultsAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TToolresultsAPI.APIservicePath : string;
+
+begin
+  Result:='toolresults/v1beta3/projects/';
+end;
+
+Class Function TToolresultsAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TToolresultsAPI.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 TToolresultsAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TToolresultsAPI.RegisterAPIResources;
+
+begin
+  TAny.RegisterObject;
+  TDuration.RegisterObject;
+  TExecution.RegisterObject;
+  TFailureDetail.RegisterObject;
+  TFileReference.RegisterObject;
+  THistory.RegisterObject;
+  TImage.RegisterObject;
+  TInconclusiveDetail.RegisterObject;
+  TListExecutionsResponse.RegisterObject;
+  TListHistoriesResponse.RegisterObject;
+  TListStepThumbnailsResponse.RegisterObject;
+  TListStepsResponse.RegisterObject;
+  TOutcome.RegisterObject;
+  TProjectSettings.RegisterObject;
+  TPublishXunitXmlFilesRequest.RegisterObject;
+  TSkippedDetail.RegisterObject;
+  TStackTrace.RegisterObject;
+  TStatus.RegisterObject;
+  TStep.RegisterObject;
+  TStepDimensionValueEntry.RegisterObject;
+  TStepLabelsEntry.RegisterObject;
+  TSuccessDetail.RegisterObject;
+  TTestCaseReference.RegisterObject;
+  TTestExecutionStep.RegisterObject;
+  TTestIssue.RegisterObject;
+  TTestSuiteOverview.RegisterObject;
+  TTestTiming.RegisterObject;
+  TThumbnail.RegisterObject;
+  TTimestamp.RegisterObject;
+  TToolExecution.RegisterObject;
+  TToolExecutionStep.RegisterObject;
+  TToolExitCode.RegisterObject;
+  TToolOutputReference.RegisterObject;
+end;
+
+
+Function TToolresultsAPI.GetProjectsHistoriesExecutionsStepsThumbnailsInstance : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  if (FProjectsHistoriesExecutionsStepsThumbnailsInstance=Nil) then
+    FProjectsHistoriesExecutionsStepsThumbnailsInstance:=CreateProjectsHistoriesExecutionsStepsThumbnailsResource;
+  Result:=FProjectsHistoriesExecutionsStepsThumbnailsInstance;
+end;
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsStepsThumbnailsResource : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=CreateProjectsHistoriesExecutionsStepsThumbnailsResource(Self);
+end;
+
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsStepsThumbnailsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsThumbnailsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsThumbnailsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TToolresultsAPI.GetProjectsHistoriesExecutionsStepsInstance : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  if (FProjectsHistoriesExecutionsStepsInstance=Nil) then
+    FProjectsHistoriesExecutionsStepsInstance:=CreateProjectsHistoriesExecutionsStepsResource;
+  Result:=FProjectsHistoriesExecutionsStepsInstance;
+end;
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsStepsResource : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=CreateProjectsHistoriesExecutionsStepsResource(Self);
+end;
+
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsStepsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsStepsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsStepsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TToolresultsAPI.GetProjectsHistoriesExecutionsInstance : TProjectsHistoriesExecutionsResource;
+
+begin
+  if (FProjectsHistoriesExecutionsInstance=Nil) then
+    FProjectsHistoriesExecutionsInstance:=CreateProjectsHistoriesExecutionsResource;
+  Result:=FProjectsHistoriesExecutionsInstance;
+end;
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsResource : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=CreateProjectsHistoriesExecutionsResource(Self);
+end;
+
+
+Function TToolresultsAPI.CreateProjectsHistoriesExecutionsResource(AOwner : TComponent) : TProjectsHistoriesExecutionsResource;
+
+begin
+  Result:=TProjectsHistoriesExecutionsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TToolresultsAPI.GetProjectsHistoriesInstance : TProjectsHistoriesResource;
+
+begin
+  if (FProjectsHistoriesInstance=Nil) then
+    FProjectsHistoriesInstance:=CreateProjectsHistoriesResource;
+  Result:=FProjectsHistoriesInstance;
+end;
+
+Function TToolresultsAPI.CreateProjectsHistoriesResource : TProjectsHistoriesResource;
+
+begin
+  Result:=CreateProjectsHistoriesResource(Self);
+end;
+
+
+Function TToolresultsAPI.CreateProjectsHistoriesResource(AOwner : TComponent) : TProjectsHistoriesResource;
+
+begin
+  Result:=TProjectsHistoriesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+Function TToolresultsAPI.GetProjectsInstance : TProjectsResource;
+
+begin
+  if (FProjectsInstance=Nil) then
+    FProjectsInstance:=CreateProjectsResource;
+  Result:=FProjectsInstance;
+end;
+
+Function TToolresultsAPI.CreateProjectsResource : TProjectsResource;
+
+begin
+  Result:=CreateProjectsResource(Self);
+end;
+
+
+Function TToolresultsAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
+
+begin
+  Result:=TProjectsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TToolresultsAPI.RegisterAPI;
+end.

+ 13 - 28
packages/googleapi/src/googletranslate.pp

@@ -1,19 +1,4 @@
 unit googletranslate;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:08
 {$MODE objfpc}
 {$H+}
 
@@ -51,7 +36,7 @@ type
     Fdetections : TDetectionsListResponseTypedetectionsArray;
   Protected
     //Property setters
-    Procedure Setdetections(AIndex : Integer; AValue : TDetectionsListResponseTypedetectionsArray); virtual;
+    Procedure Setdetections(AIndex : Integer; const AValue : TDetectionsListResponseTypedetectionsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -73,8 +58,8 @@ type
     Flanguage : String;
   Protected
     //Property setters
-    Procedure Setconfidence(AIndex : Integer; AValue : integer); virtual;
-    Procedure SetisReliable(AIndex : Integer; AValue : boolean); virtual;
+    Procedure Setconfidence(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetisReliable(AIndex : Integer; const AValue : boolean); virtual;
     Procedure Setlanguage(AIndex : Integer; const AValue : String); virtual;
   Public
   Published
@@ -93,7 +78,7 @@ type
     Flanguages : TLanguagesListResponseTypelanguagesArray;
   Protected
     //Property setters
-    Procedure Setlanguages(AIndex : Integer; AValue : TLanguagesListResponseTypelanguagesArray); virtual;
+    Procedure Setlanguages(AIndex : Integer; const AValue : TLanguagesListResponseTypelanguagesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -132,7 +117,7 @@ type
     Ftranslations : TTranslationsListResponseTypetranslationsArray;
   Protected
     //Property setters
-    Procedure Settranslations(AIndex : Integer; AValue : TTranslationsListResponseTypetranslationsArray); virtual;
+    Procedure Settranslations(AIndex : Integer; const AValue : TTranslationsListResponseTypetranslationsArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -281,7 +266,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TDetectionsListResponse.Setdetections(AIndex : Integer; AValue : TDetectionsListResponseTypedetectionsArray); 
+Procedure TDetectionsListResponse.Setdetections(AIndex : Integer; const AValue : TDetectionsListResponseTypedetectionsArray); 
 
 begin
   If (Fdetections=AValue) then exit;
@@ -311,7 +296,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TDetectionsResourceItem.Setconfidence(AIndex : Integer; AValue : integer); 
+Procedure TDetectionsResourceItem.Setconfidence(AIndex : Integer; const AValue : integer); 
 
 begin
   If (Fconfidence=AValue) then exit;
@@ -321,7 +306,7 @@ end;
 
 
 
-Procedure TDetectionsResourceItem.SetisReliable(AIndex : Integer; AValue : boolean); 
+Procedure TDetectionsResourceItem.SetisReliable(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisReliable=AValue) then exit;
@@ -348,7 +333,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TLanguagesListResponse.Setlanguages(AIndex : Integer; AValue : TLanguagesListResponseTypelanguagesArray); 
+Procedure TLanguagesListResponse.Setlanguages(AIndex : Integer; const AValue : TLanguagesListResponseTypelanguagesArray); 
 
 begin
   If (Flanguages=AValue) then exit;
@@ -405,7 +390,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TTranslationsListResponse.Settranslations(AIndex : Integer; AValue : TTranslationsListResponseTypetranslationsArray); 
+Procedure TTranslationsListResponse.Settranslations(AIndex : Integer; const AValue : TTranslationsListResponseTypetranslationsArray); 
 
 begin
   If (Ftranslations=AValue) then exit;
@@ -606,7 +591,7 @@ end;
 Class Function TTranslateAPI.APIRevision : String;
 
 begin
-  Result:='20141123';
+  Result:='20160217';
 end;
 
 Class Function TTranslateAPI.APIID : String;
@@ -660,7 +645,7 @@ end;
 Class Function TTranslateAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TTranslateAPI.APIbasePath : string;
@@ -672,7 +657,7 @@ end;
 Class Function TTranslateAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/language/translate/';
+  Result:='https://www.googleapis.com/language/translate/';
 end;
 
 Class Function TTranslateAPI.APIProtocol : string;

+ 29 - 44
packages/googleapi/src/googleurlshortener.pp

@@ -1,19 +1,4 @@
 unit googleurlshortener;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:09
 {$MODE objfpc}
 {$H+}
 
@@ -55,11 +40,11 @@ type
     FshortUrlClicks : String;
   Protected
     //Property setters
-    Procedure Setbrowsers(AIndex : Integer; AValue : TAnalyticsSnapshotTypebrowsersArray); virtual;
-    Procedure Setcountries(AIndex : Integer; AValue : TAnalyticsSnapshotTypecountriesArray); virtual;
+    Procedure Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray); virtual;
+    Procedure Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray); virtual;
     Procedure SetlongUrlClicks(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setplatforms(AIndex : Integer; AValue : TAnalyticsSnapshotTypeplatformsArray); virtual;
-    Procedure Setreferrers(AIndex : Integer; AValue : TAnalyticsSnapshotTypereferrersArray); virtual;
+    Procedure Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray); virtual;
+    Procedure Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray); virtual;
     Procedure SetshortUrlClicks(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -89,11 +74,11 @@ type
     Fweek : TAnalyticsSnapshot;
   Protected
     //Property setters
-    Procedure SetallTime(AIndex : Integer; AValue : TAnalyticsSnapshot); virtual;
-    Procedure Setday(AIndex : Integer; AValue : TAnalyticsSnapshot); virtual;
-    Procedure Setmonth(AIndex : Integer; AValue : TAnalyticsSnapshot); virtual;
-    Procedure SettwoHours(AIndex : Integer; AValue : TAnalyticsSnapshot); virtual;
-    Procedure Setweek(AIndex : Integer; AValue : TAnalyticsSnapshot); virtual;
+    Procedure SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
+    Procedure Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
+    Procedure Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
+    Procedure SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
+    Procedure Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
   Public
   Published
     Property allTime : TAnalyticsSnapshot Index 0 Read FallTime Write SetallTime;
@@ -137,7 +122,7 @@ type
     Fstatus : String;
   Protected
     //Property setters
-    Procedure Setanalytics(AIndex : Integer; AValue : TAnalyticsSummary); virtual;
+    Procedure Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary); virtual;
     Procedure Setcreated(AIndex : Integer; const AValue : String); virtual;
     Procedure Setid(AIndex : Integer; const AValue : String); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
@@ -167,11 +152,11 @@ type
     FtotalItems : integer;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TUrlHistoryTypeitemsArray); virtual;
-    Procedure SetitemsPerPage(AIndex : Integer; AValue : integer); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray); virtual;
+    Procedure SetitemsPerPage(AIndex : Integer; const AValue : integer); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
-    Procedure SettotalItems(AIndex : Integer; AValue : integer); 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;
@@ -263,7 +248,7 @@ implementation
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyticsSnapshot.Setbrowsers(AIndex : Integer; AValue : TAnalyticsSnapshotTypebrowsersArray); 
+Procedure TAnalyticsSnapshot.Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray); 
 
 begin
   If (Fbrowsers=AValue) then exit;
@@ -273,7 +258,7 @@ end;
 
 
 
-Procedure TAnalyticsSnapshot.Setcountries(AIndex : Integer; AValue : TAnalyticsSnapshotTypecountriesArray); 
+Procedure TAnalyticsSnapshot.Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray); 
 
 begin
   If (Fcountries=AValue) then exit;
@@ -293,7 +278,7 @@ end;
 
 
 
-Procedure TAnalyticsSnapshot.Setplatforms(AIndex : Integer; AValue : TAnalyticsSnapshotTypeplatformsArray); 
+Procedure TAnalyticsSnapshot.Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray); 
 
 begin
   If (Fplatforms=AValue) then exit;
@@ -303,7 +288,7 @@ end;
 
 
 
-Procedure TAnalyticsSnapshot.Setreferrers(AIndex : Integer; AValue : TAnalyticsSnapshotTypereferrersArray); 
+Procedure TAnalyticsSnapshot.Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray); 
 
 begin
   If (Freferrers=AValue) then exit;
@@ -346,7 +331,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TAnalyticsSummary.SetallTime(AIndex : Integer; AValue : TAnalyticsSnapshot); 
+Procedure TAnalyticsSummary.SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot); 
 
 begin
   If (FallTime=AValue) then exit;
@@ -356,7 +341,7 @@ end;
 
 
 
-Procedure TAnalyticsSummary.Setday(AIndex : Integer; AValue : TAnalyticsSnapshot); 
+Procedure TAnalyticsSummary.Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot); 
 
 begin
   If (Fday=AValue) then exit;
@@ -366,7 +351,7 @@ end;
 
 
 
-Procedure TAnalyticsSummary.Setmonth(AIndex : Integer; AValue : TAnalyticsSnapshot); 
+Procedure TAnalyticsSummary.Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot); 
 
 begin
   If (Fmonth=AValue) then exit;
@@ -376,7 +361,7 @@ end;
 
 
 
-Procedure TAnalyticsSummary.SettwoHours(AIndex : Integer; AValue : TAnalyticsSnapshot); 
+Procedure TAnalyticsSummary.SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot); 
 
 begin
   If (FtwoHours=AValue) then exit;
@@ -386,7 +371,7 @@ end;
 
 
 
-Procedure TAnalyticsSummary.Setweek(AIndex : Integer; AValue : TAnalyticsSnapshot); 
+Procedure TAnalyticsSummary.Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot); 
 
 begin
   If (Fweek=AValue) then exit;
@@ -430,7 +415,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrl.Setanalytics(AIndex : Integer; AValue : TAnalyticsSummary); 
+Procedure TUrl.Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary); 
 
 begin
   If (Fanalytics=AValue) then exit;
@@ -497,7 +482,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrlHistory.Setitems(AIndex : Integer; AValue : TUrlHistoryTypeitemsArray); 
+Procedure TUrlHistory.Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -507,7 +492,7 @@ end;
 
 
 
-Procedure TUrlHistory.SetitemsPerPage(AIndex : Integer; AValue : integer); 
+Procedure TUrlHistory.SetitemsPerPage(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FitemsPerPage=AValue) then exit;
@@ -537,7 +522,7 @@ end;
 
 
 
-Procedure TUrlHistory.SettotalItems(AIndex : Integer; AValue : integer); 
+Procedure TUrlHistory.SettotalItems(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FtotalItems=AValue) then exit;
@@ -659,7 +644,7 @@ end;
 Class Function TUrlshortenerAPI.APIRevision : String;
 
 begin
-  Result:='20150319';
+  Result:='20150519';
 end;
 
 Class Function TUrlshortenerAPI.APIID : String;
@@ -713,7 +698,7 @@ end;
 Class Function TUrlshortenerAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TUrlshortenerAPI.APIbasePath : string;
@@ -725,7 +710,7 @@ end;
 Class Function TUrlshortenerAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/urlshortener/v1/';
+  Result:='https://www.googleapis.com/urlshortener/v1/';
 end;
 
 Class Function TUrlshortenerAPI.APIProtocol : string;

+ 2018 - 0
packages/googleapi/src/googlevision.pp

@@ -0,0 +1,2018 @@
+unit googlevision;
+{$MODE objfpc}
+{$H+}
+
+interface
+
+uses sysutils, classes, googleservice, restbase, googlebase;
+
+type
+  
+  //Top-level schema types
+  TImageSource = Class;
+  TAnnotateImageRequest = Class;
+  TAnnotateImageResponse = Class;
+  TLatLongRect = Class;
+  TStatus = Class;
+  TFaceAnnotation = Class;
+  TVertex = Class;
+  TColorInfo = Class;
+  TBoundingPoly = Class;
+  TLandmark = Class;
+  TImageContext = Class;
+  TBatchAnnotateImagesRequest = Class;
+  TEntityAnnotation = Class;
+  TProperty = Class;
+  TColor = Class;
+  TLocationInfo = Class;
+  TSafeSearchAnnotation = Class;
+  TImage = Class;
+  TDominantColorsAnnotation = Class;
+  TFeature = Class;
+  TBatchAnnotateImagesResponse = Class;
+  TImageProperties = Class;
+  TLatLng = Class;
+  TPosition = Class;
+  TImageSourceArray = Array of TImageSource;
+  TAnnotateImageRequestArray = Array of TAnnotateImageRequest;
+  TAnnotateImageResponseArray = Array of TAnnotateImageResponse;
+  TLatLongRectArray = Array of TLatLongRect;
+  TStatusArray = Array of TStatus;
+  TFaceAnnotationArray = Array of TFaceAnnotation;
+  TVertexArray = Array of TVertex;
+  TColorInfoArray = Array of TColorInfo;
+  TBoundingPolyArray = Array of TBoundingPoly;
+  TLandmarkArray = Array of TLandmark;
+  TImageContextArray = Array of TImageContext;
+  TBatchAnnotateImagesRequestArray = Array of TBatchAnnotateImagesRequest;
+  TEntityAnnotationArray = Array of TEntityAnnotation;
+  TPropertyArray = Array of TProperty;
+  TColorArray = Array of TColor;
+  TLocationInfoArray = Array of TLocationInfo;
+  TSafeSearchAnnotationArray = Array of TSafeSearchAnnotation;
+  TImageArray = Array of TImage;
+  TDominantColorsAnnotationArray = Array of TDominantColorsAnnotation;
+  TFeatureArray = Array of TFeature;
+  TBatchAnnotateImagesResponseArray = Array of TBatchAnnotateImagesResponse;
+  TImagePropertiesArray = Array of TImageProperties;
+  TLatLngArray = Array of TLatLng;
+  TPositionArray = Array of TPosition;
+  //Anonymous types, using auto-generated names
+  TStatusTypedetailsItem = Class;
+  TAnnotateImageRequestTypefeaturesArray = Array of TFeature;
+  TAnnotateImageResponseTypelabelAnnotationsArray = Array of TEntityAnnotation;
+  TAnnotateImageResponseTypelandmarkAnnotationsArray = Array of TEntityAnnotation;
+  TAnnotateImageResponseTypetextAnnotationsArray = Array of TEntityAnnotation;
+  TAnnotateImageResponseTypelogoAnnotationsArray = Array of TEntityAnnotation;
+  TAnnotateImageResponseTypefaceAnnotationsArray = Array of TFaceAnnotation;
+  TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
+  TFaceAnnotationTypelandmarksArray = Array of TLandmark;
+  TBoundingPolyTypeverticesArray = Array of TVertex;
+  TBatchAnnotateImagesRequestTyperequestsArray = Array of TAnnotateImageRequest;
+  TEntityAnnotationTypepropertiesArray = Array of TProperty;
+  TEntityAnnotationTypelocationsArray = Array of TLocationInfo;
+  TDominantColorsAnnotationTypecolorsArray = Array of TColorInfo;
+  TBatchAnnotateImagesResponseTyperesponsesArray = Array of TAnnotateImageResponse;
+  
+  { --------------------------------------------------------------------
+    TImageSource
+    --------------------------------------------------------------------}
+  
+  TImageSource = Class(TGoogleBaseObject)
+  Private
+    FgcsImageUri : String;
+  Protected
+    //Property setters
+    Procedure SetgcsImageUri(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property gcsImageUri : String Index 0 Read FgcsImageUri Write SetgcsImageUri;
+  end;
+  TImageSourceClass = Class of TImageSource;
+  
+  { --------------------------------------------------------------------
+    TAnnotateImageRequest
+    --------------------------------------------------------------------}
+  
+  TAnnotateImageRequest = Class(TGoogleBaseObject)
+  Private
+    Fimage : TImage;
+    FimageContext : TImageContext;
+    Ffeatures : TAnnotateImageRequestTypefeaturesArray;
+  Protected
+    //Property setters
+    Procedure Setimage(AIndex : Integer; const AValue : TImage); virtual;
+    Procedure SetimageContext(AIndex : Integer; const AValue : TImageContext); virtual;
+    Procedure Setfeatures(AIndex : Integer; const AValue : TAnnotateImageRequestTypefeaturesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property image : TImage Index 0 Read Fimage Write Setimage;
+    Property imageContext : TImageContext Index 8 Read FimageContext Write SetimageContext;
+    Property features : TAnnotateImageRequestTypefeaturesArray Index 16 Read Ffeatures Write Setfeatures;
+  end;
+  TAnnotateImageRequestClass = Class of TAnnotateImageRequest;
+  
+  { --------------------------------------------------------------------
+    TAnnotateImageResponse
+    --------------------------------------------------------------------}
+  
+  TAnnotateImageResponse = Class(TGoogleBaseObject)
+  Private
+    FlabelAnnotations : TAnnotateImageResponseTypelabelAnnotationsArray;
+    FlandmarkAnnotations : TAnnotateImageResponseTypelandmarkAnnotationsArray;
+    FsafeSearchAnnotation : TSafeSearchAnnotation;
+    FimagePropertiesAnnotation : TImageProperties;
+    FtextAnnotations : TAnnotateImageResponseTypetextAnnotationsArray;
+    FlogoAnnotations : TAnnotateImageResponseTypelogoAnnotationsArray;
+    FfaceAnnotations : TAnnotateImageResponseTypefaceAnnotationsArray;
+    Ferror : TStatus;
+  Protected
+    //Property setters
+    Procedure SetlabelAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelabelAnnotationsArray); virtual;
+    Procedure SetlandmarkAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelandmarkAnnotationsArray); virtual;
+    Procedure SetsafeSearchAnnotation(AIndex : Integer; const AValue : TSafeSearchAnnotation); virtual;
+    Procedure SetimagePropertiesAnnotation(AIndex : Integer; const AValue : TImageProperties); virtual;
+    Procedure SettextAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypetextAnnotationsArray); virtual;
+    Procedure SetlogoAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelogoAnnotationsArray); virtual;
+    Procedure SetfaceAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypefaceAnnotationsArray); virtual;
+    Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property labelAnnotations : TAnnotateImageResponseTypelabelAnnotationsArray Index 0 Read FlabelAnnotations Write SetlabelAnnotations;
+    Property landmarkAnnotations : TAnnotateImageResponseTypelandmarkAnnotationsArray Index 8 Read FlandmarkAnnotations Write SetlandmarkAnnotations;
+    Property safeSearchAnnotation : TSafeSearchAnnotation Index 16 Read FsafeSearchAnnotation Write SetsafeSearchAnnotation;
+    Property imagePropertiesAnnotation : TImageProperties Index 24 Read FimagePropertiesAnnotation Write SetimagePropertiesAnnotation;
+    Property textAnnotations : TAnnotateImageResponseTypetextAnnotationsArray Index 32 Read FtextAnnotations Write SettextAnnotations;
+    Property logoAnnotations : TAnnotateImageResponseTypelogoAnnotationsArray Index 40 Read FlogoAnnotations Write SetlogoAnnotations;
+    Property faceAnnotations : TAnnotateImageResponseTypefaceAnnotationsArray Index 48 Read FfaceAnnotations Write SetfaceAnnotations;
+    Property error : TStatus Index 56 Read Ferror Write Seterror;
+  end;
+  TAnnotateImageResponseClass = Class of TAnnotateImageResponse;
+  
+  { --------------------------------------------------------------------
+    TLatLongRect
+    --------------------------------------------------------------------}
+  
+  TLatLongRect = Class(TGoogleBaseObject)
+  Private
+    FmaxLatLng : TLatLng;
+    FminLatLng : TLatLng;
+  Protected
+    //Property setters
+    Procedure SetmaxLatLng(AIndex : Integer; const AValue : TLatLng); virtual;
+    Procedure SetminLatLng(AIndex : Integer; const AValue : TLatLng); virtual;
+  Public
+  Published
+    Property maxLatLng : TLatLng Index 0 Read FmaxLatLng Write SetmaxLatLng;
+    Property minLatLng : TLatLng Index 8 Read FminLatLng Write SetminLatLng;
+  end;
+  TLatLongRectClass = Class of TLatLongRect;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TFaceAnnotation
+    --------------------------------------------------------------------}
+  
+  TFaceAnnotation = Class(TGoogleBaseObject)
+  Private
+    FtiltAngle : integer;
+    FunderExposedLikelihood : String;
+    FfdBoundingPoly : TBoundingPoly;
+    FlandmarkingConfidence : integer;
+    FjoyLikelihood : String;
+    FdetectionConfidence : integer;
+    FsurpriseLikelihood : String;
+    FangerLikelihood : String;
+    FheadwearLikelihood : String;
+    FpanAngle : integer;
+    FboundingPoly : TBoundingPoly;
+    Flandmarks : TFaceAnnotationTypelandmarksArray;
+    FblurredLikelihood : String;
+    FrollAngle : integer;
+    FsorrowLikelihood : String;
+  Protected
+    //Property setters
+    Procedure SettiltAngle(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetunderExposedLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetfdBoundingPoly(AIndex : Integer; const AValue : TBoundingPoly); virtual;
+    Procedure SetlandmarkingConfidence(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetjoyLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdetectionConfidence(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsurpriseLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetangerLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetheadwearLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetpanAngle(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetboundingPoly(AIndex : Integer; const AValue : TBoundingPoly); virtual;
+    Procedure Setlandmarks(AIndex : Integer; const AValue : TFaceAnnotationTypelandmarksArray); virtual;
+    Procedure SetblurredLikelihood(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrollAngle(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsorrowLikelihood(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 tiltAngle : integer Index 0 Read FtiltAngle Write SettiltAngle;
+    Property underExposedLikelihood : String Index 8 Read FunderExposedLikelihood Write SetunderExposedLikelihood;
+    Property fdBoundingPoly : TBoundingPoly Index 16 Read FfdBoundingPoly Write SetfdBoundingPoly;
+    Property landmarkingConfidence : integer Index 24 Read FlandmarkingConfidence Write SetlandmarkingConfidence;
+    Property joyLikelihood : String Index 32 Read FjoyLikelihood Write SetjoyLikelihood;
+    Property detectionConfidence : integer Index 40 Read FdetectionConfidence Write SetdetectionConfidence;
+    Property surpriseLikelihood : String Index 48 Read FsurpriseLikelihood Write SetsurpriseLikelihood;
+    Property angerLikelihood : String Index 56 Read FangerLikelihood Write SetangerLikelihood;
+    Property headwearLikelihood : String Index 64 Read FheadwearLikelihood Write SetheadwearLikelihood;
+    Property panAngle : integer Index 72 Read FpanAngle Write SetpanAngle;
+    Property boundingPoly : TBoundingPoly Index 80 Read FboundingPoly Write SetboundingPoly;
+    Property landmarks : TFaceAnnotationTypelandmarksArray Index 88 Read Flandmarks Write Setlandmarks;
+    Property blurredLikelihood : String Index 96 Read FblurredLikelihood Write SetblurredLikelihood;
+    Property rollAngle : integer Index 104 Read FrollAngle Write SetrollAngle;
+    Property sorrowLikelihood : String Index 112 Read FsorrowLikelihood Write SetsorrowLikelihood;
+  end;
+  TFaceAnnotationClass = Class of TFaceAnnotation;
+  
+  { --------------------------------------------------------------------
+    TVertex
+    --------------------------------------------------------------------}
+  
+  TVertex = Class(TGoogleBaseObject)
+  Private
+    Fy : integer;
+    Fx : integer;
+  Protected
+    //Property setters
+    Procedure Sety(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setx(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property y : integer Index 0 Read Fy Write Sety;
+    Property x : integer Index 8 Read Fx Write Setx;
+  end;
+  TVertexClass = Class of TVertex;
+  
+  { --------------------------------------------------------------------
+    TColorInfo
+    --------------------------------------------------------------------}
+  
+  TColorInfo = Class(TGoogleBaseObject)
+  Private
+    FpixelFraction : integer;
+    Fcolor : TColor;
+    Fscore : integer;
+  Protected
+    //Property setters
+    Procedure SetpixelFraction(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setcolor(AIndex : Integer; const AValue : TColor); virtual;
+    Procedure Setscore(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property pixelFraction : integer Index 0 Read FpixelFraction Write SetpixelFraction;
+    Property color : TColor Index 8 Read Fcolor Write Setcolor;
+    Property score : integer Index 16 Read Fscore Write Setscore;
+  end;
+  TColorInfoClass = Class of TColorInfo;
+  
+  { --------------------------------------------------------------------
+    TBoundingPoly
+    --------------------------------------------------------------------}
+  
+  TBoundingPoly = Class(TGoogleBaseObject)
+  Private
+    Fvertices : TBoundingPolyTypeverticesArray;
+  Protected
+    //Property setters
+    Procedure Setvertices(AIndex : Integer; const AValue : TBoundingPolyTypeverticesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property vertices : TBoundingPolyTypeverticesArray Index 0 Read Fvertices Write Setvertices;
+  end;
+  TBoundingPolyClass = Class of TBoundingPoly;
+  
+  { --------------------------------------------------------------------
+    TLandmark
+    --------------------------------------------------------------------}
+  
+  TLandmark = Class(TGoogleBaseObject)
+  Private
+    Fposition : TPosition;
+    F_type : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setposition(AIndex : Integer; const AValue : TPosition); virtual;
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property position : TPosition Index 0 Read Fposition Write Setposition;
+    Property _type : String Index 8 Read F_type Write Set_type;
+  end;
+  TLandmarkClass = Class of TLandmark;
+  
+  { --------------------------------------------------------------------
+    TImageContext
+    --------------------------------------------------------------------}
+  
+  TImageContext = Class(TGoogleBaseObject)
+  Private
+    FlatLongRect : TLatLongRect;
+    FlanguageHints : TStringArray;
+  Protected
+    //Property setters
+    Procedure SetlatLongRect(AIndex : Integer; const AValue : TLatLongRect); virtual;
+    Procedure SetlanguageHints(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 latLongRect : TLatLongRect Index 0 Read FlatLongRect Write SetlatLongRect;
+    Property languageHints : TStringArray Index 8 Read FlanguageHints Write SetlanguageHints;
+  end;
+  TImageContextClass = Class of TImageContext;
+  
+  { --------------------------------------------------------------------
+    TBatchAnnotateImagesRequest
+    --------------------------------------------------------------------}
+  
+  TBatchAnnotateImagesRequest = Class(TGoogleBaseObject)
+  Private
+    Frequests : TBatchAnnotateImagesRequestTyperequestsArray;
+  Protected
+    //Property setters
+    Procedure Setrequests(AIndex : Integer; const AValue : TBatchAnnotateImagesRequestTyperequestsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property requests : TBatchAnnotateImagesRequestTyperequestsArray Index 0 Read Frequests Write Setrequests;
+  end;
+  TBatchAnnotateImagesRequestClass = Class of TBatchAnnotateImagesRequest;
+  
+  { --------------------------------------------------------------------
+    TEntityAnnotation
+    --------------------------------------------------------------------}
+  
+  TEntityAnnotation = Class(TGoogleBaseObject)
+  Private
+    Fmid : String;
+    Fdescription : String;
+    Ftopicality : integer;
+    Flocale : String;
+    Fproperties : TEntityAnnotationTypepropertiesArray;
+    Fscore : integer;
+    FboundingPoly : TBoundingPoly;
+    Flocations : TEntityAnnotationTypelocationsArray;
+    Fconfidence : integer;
+  Protected
+    //Property setters
+    Procedure Setmid(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
+    Procedure Settopicality(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setproperties(AIndex : Integer; const AValue : TEntityAnnotationTypepropertiesArray); virtual;
+    Procedure Setscore(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetboundingPoly(AIndex : Integer; const AValue : TBoundingPoly); virtual;
+    Procedure Setlocations(AIndex : Integer; const AValue : TEntityAnnotationTypelocationsArray); virtual;
+    Procedure Setconfidence(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 mid : String Index 0 Read Fmid Write Setmid;
+    Property description : String Index 8 Read Fdescription Write Setdescription;
+    Property topicality : integer Index 16 Read Ftopicality Write Settopicality;
+    Property locale : String Index 24 Read Flocale Write Setlocale;
+    Property properties : TEntityAnnotationTypepropertiesArray Index 32 Read Fproperties Write Setproperties;
+    Property score : integer Index 40 Read Fscore Write Setscore;
+    Property boundingPoly : TBoundingPoly Index 48 Read FboundingPoly Write SetboundingPoly;
+    Property locations : TEntityAnnotationTypelocationsArray Index 56 Read Flocations Write Setlocations;
+    Property confidence : integer Index 64 Read Fconfidence Write Setconfidence;
+  end;
+  TEntityAnnotationClass = Class of TEntityAnnotation;
+  
+  { --------------------------------------------------------------------
+    TProperty
+    --------------------------------------------------------------------}
+  
+  TProperty = Class(TGoogleBaseObject)
+  Private
+    Fvalue : String;
+    Fname : String;
+  Protected
+    //Property setters
+    Procedure Setvalue(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 name : String Index 8 Read Fname Write Setname;
+  end;
+  TPropertyClass = Class of TProperty;
+  
+  { --------------------------------------------------------------------
+    TColor
+    --------------------------------------------------------------------}
+  
+  TColor = Class(TGoogleBaseObject)
+  Private
+    Fgreen : integer;
+    Fblue : integer;
+    Fred : integer;
+    Falpha : integer;
+  Protected
+    //Property setters
+    Procedure Setgreen(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setblue(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setred(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setalpha(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property green : integer Index 0 Read Fgreen Write Setgreen;
+    Property blue : integer Index 8 Read Fblue Write Setblue;
+    Property red : integer Index 16 Read Fred Write Setred;
+    Property alpha : integer Index 24 Read Falpha Write Setalpha;
+  end;
+  TColorClass = Class of TColor;
+  
+  { --------------------------------------------------------------------
+    TLocationInfo
+    --------------------------------------------------------------------}
+  
+  TLocationInfo = Class(TGoogleBaseObject)
+  Private
+    FlatLng : TLatLng;
+  Protected
+    //Property setters
+    Procedure SetlatLng(AIndex : Integer; const AValue : TLatLng); virtual;
+  Public
+  Published
+    Property latLng : TLatLng Index 0 Read FlatLng Write SetlatLng;
+  end;
+  TLocationInfoClass = Class of TLocationInfo;
+  
+  { --------------------------------------------------------------------
+    TSafeSearchAnnotation
+    --------------------------------------------------------------------}
+  
+  TSafeSearchAnnotation = Class(TGoogleBaseObject)
+  Private
+    Fmedical : String;
+    Fspoof : String;
+    Fviolence : String;
+    Fadult : String;
+  Protected
+    //Property setters
+    Procedure Setmedical(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setspoof(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setviolence(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setadult(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property medical : String Index 0 Read Fmedical Write Setmedical;
+    Property spoof : String Index 8 Read Fspoof Write Setspoof;
+    Property violence : String Index 16 Read Fviolence Write Setviolence;
+    Property adult : String Index 24 Read Fadult Write Setadult;
+  end;
+  TSafeSearchAnnotationClass = Class of TSafeSearchAnnotation;
+  
+  { --------------------------------------------------------------------
+    TImage
+    --------------------------------------------------------------------}
+  
+  TImage = Class(TGoogleBaseObject)
+  Private
+    Fsource : TImageSource;
+    Fcontent : String;
+  Protected
+    //Property setters
+    Procedure Setsource(AIndex : Integer; const AValue : TImageSource); virtual;
+    Procedure Setcontent(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property source : TImageSource Index 0 Read Fsource Write Setsource;
+    Property content : String Index 8 Read Fcontent Write Setcontent;
+  end;
+  TImageClass = Class of TImage;
+  
+  { --------------------------------------------------------------------
+    TDominantColorsAnnotation
+    --------------------------------------------------------------------}
+  
+  TDominantColorsAnnotation = Class(TGoogleBaseObject)
+  Private
+    Fcolors : TDominantColorsAnnotationTypecolorsArray;
+  Protected
+    //Property setters
+    Procedure Setcolors(AIndex : Integer; const AValue : TDominantColorsAnnotationTypecolorsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property colors : TDominantColorsAnnotationTypecolorsArray Index 0 Read Fcolors Write Setcolors;
+  end;
+  TDominantColorsAnnotationClass = Class of TDominantColorsAnnotation;
+  
+  { --------------------------------------------------------------------
+    TFeature
+    --------------------------------------------------------------------}
+  
+  TFeature = Class(TGoogleBaseObject)
+  Private
+    F_type : String;
+    FmaxResults : integer;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetmaxResults(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property _type : String Index 0 Read F_type Write Set_type;
+    Property maxResults : integer Index 8 Read FmaxResults Write SetmaxResults;
+  end;
+  TFeatureClass = Class of TFeature;
+  
+  { --------------------------------------------------------------------
+    TBatchAnnotateImagesResponse
+    --------------------------------------------------------------------}
+  
+  TBatchAnnotateImagesResponse = Class(TGoogleBaseObject)
+  Private
+    Fresponses : TBatchAnnotateImagesResponseTyperesponsesArray;
+  Protected
+    //Property setters
+    Procedure Setresponses(AIndex : Integer; const AValue : TBatchAnnotateImagesResponseTyperesponsesArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property responses : TBatchAnnotateImagesResponseTyperesponsesArray Index 0 Read Fresponses Write Setresponses;
+  end;
+  TBatchAnnotateImagesResponseClass = Class of TBatchAnnotateImagesResponse;
+  
+  { --------------------------------------------------------------------
+    TImageProperties
+    --------------------------------------------------------------------}
+  
+  TImageProperties = Class(TGoogleBaseObject)
+  Private
+    FdominantColors : TDominantColorsAnnotation;
+  Protected
+    //Property setters
+    Procedure SetdominantColors(AIndex : Integer; const AValue : TDominantColorsAnnotation); virtual;
+  Public
+  Published
+    Property dominantColors : TDominantColorsAnnotation Index 0 Read FdominantColors Write SetdominantColors;
+  end;
+  TImagePropertiesClass = Class of TImageProperties;
+  
+  { --------------------------------------------------------------------
+    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;
+  
+  { --------------------------------------------------------------------
+    TPosition
+    --------------------------------------------------------------------}
+  
+  TPosition = Class(TGoogleBaseObject)
+  Private
+    Fy : integer;
+    Fx : integer;
+    Fz : integer;
+  Protected
+    //Property setters
+    Procedure Sety(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setx(AIndex : Integer; const AValue : integer); virtual;
+    Procedure Setz(AIndex : Integer; const AValue : integer); virtual;
+  Public
+  Published
+    Property y : integer Index 0 Read Fy Write Sety;
+    Property x : integer Index 8 Read Fx Write Setx;
+    Property z : integer Index 16 Read Fz Write Setz;
+  end;
+  TPositionClass = Class of TPosition;
+  
+  { --------------------------------------------------------------------
+    TImagesResource
+    --------------------------------------------------------------------}
+  
+  TImagesResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Annotate(aBatchAnnotateImagesRequest : TBatchAnnotateImagesRequest) : TBatchAnnotateImagesResponse;
+  end;
+  
+  
+  { --------------------------------------------------------------------
+    TVisionAPI
+    --------------------------------------------------------------------}
+  
+  TVisionAPI = Class(TGoogleAPI)
+  Private
+    FImagesInstance : TImagesResource;
+    Function GetImagesInstance : TImagesResource;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 CreateImagesResource(AOwner : TComponent) : TImagesResource;virtual;overload;
+    Function CreateImagesResource : TImagesResource;virtual;overload;
+    //Add default on-demand instances for resources
+    Property ImagesResource : TImagesResource Read GetImagesInstance;
+  end;
+
+implementation
+
+
+{ --------------------------------------------------------------------
+  TImageSource
+  --------------------------------------------------------------------}
+
+
+Procedure TImageSource.SetgcsImageUri(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgcsImageUri=AValue) then exit;
+  FgcsImageUri:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TAnnotateImageRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TAnnotateImageRequest.Setimage(AIndex : Integer; const AValue : TImage); 
+
+begin
+  If (Fimage=AValue) then exit;
+  Fimage:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageRequest.SetimageContext(AIndex : Integer; const AValue : TImageContext); 
+
+begin
+  If (FimageContext=AValue) then exit;
+  FimageContext:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageRequest.Setfeatures(AIndex : Integer; const AValue : TAnnotateImageRequestTypefeaturesArray); 
+
+begin
+  If (Ffeatures=AValue) then exit;
+  Ffeatures:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAnnotateImageRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'features' : SetLength(Ffeatures,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TAnnotateImageResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TAnnotateImageResponse.SetlabelAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelabelAnnotationsArray); 
+
+begin
+  If (FlabelAnnotations=AValue) then exit;
+  FlabelAnnotations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SetlandmarkAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelandmarkAnnotationsArray); 
+
+begin
+  If (FlandmarkAnnotations=AValue) then exit;
+  FlandmarkAnnotations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SetsafeSearchAnnotation(AIndex : Integer; const AValue : TSafeSearchAnnotation); 
+
+begin
+  If (FsafeSearchAnnotation=AValue) then exit;
+  FsafeSearchAnnotation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SetimagePropertiesAnnotation(AIndex : Integer; const AValue : TImageProperties); 
+
+begin
+  If (FimagePropertiesAnnotation=AValue) then exit;
+  FimagePropertiesAnnotation:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SettextAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypetextAnnotationsArray); 
+
+begin
+  If (FtextAnnotations=AValue) then exit;
+  FtextAnnotations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SetlogoAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypelogoAnnotationsArray); 
+
+begin
+  If (FlogoAnnotations=AValue) then exit;
+  FlogoAnnotations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.SetfaceAnnotations(AIndex : Integer; const AValue : TAnnotateImageResponseTypefaceAnnotationsArray); 
+
+begin
+  If (FfaceAnnotations=AValue) then exit;
+  FfaceAnnotations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TAnnotateImageResponse.Seterror(AIndex : Integer; const AValue : TStatus); 
+
+begin
+  If (Ferror=AValue) then exit;
+  Ferror:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TAnnotateImageResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'labelannotations' : SetLength(FlabelAnnotations,ALength);
+  'landmarkannotations' : SetLength(FlandmarkAnnotations,ALength);
+  'textannotations' : SetLength(FtextAnnotations,ALength);
+  'logoannotations' : SetLength(FlogoAnnotations,ALength);
+  'faceannotations' : SetLength(FfaceAnnotations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLatLongRect
+  --------------------------------------------------------------------}
+
+
+Procedure TLatLongRect.SetmaxLatLng(AIndex : Integer; const AValue : TLatLng); 
+
+begin
+  If (FmaxLatLng=AValue) then exit;
+  FmaxLatLng:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLatLongRect.SetminLatLng(AIndex : Integer; const AValue : TLatLng); 
+
+begin
+  If (FminLatLng=AValue) then exit;
+  FminLatLng:=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.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}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFaceAnnotation
+  --------------------------------------------------------------------}
+
+
+Procedure TFaceAnnotation.SettiltAngle(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FtiltAngle=AValue) then exit;
+  FtiltAngle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetunderExposedLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FunderExposedLikelihood=AValue) then exit;
+  FunderExposedLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetfdBoundingPoly(AIndex : Integer; const AValue : TBoundingPoly); 
+
+begin
+  If (FfdBoundingPoly=AValue) then exit;
+  FfdBoundingPoly:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetlandmarkingConfidence(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FlandmarkingConfidence=AValue) then exit;
+  FlandmarkingConfidence:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetjoyLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FjoyLikelihood=AValue) then exit;
+  FjoyLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetdetectionConfidence(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FdetectionConfidence=AValue) then exit;
+  FdetectionConfidence:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetsurpriseLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsurpriseLikelihood=AValue) then exit;
+  FsurpriseLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetangerLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FangerLikelihood=AValue) then exit;
+  FangerLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetheadwearLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FheadwearLikelihood=AValue) then exit;
+  FheadwearLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetpanAngle(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FpanAngle=AValue) then exit;
+  FpanAngle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetboundingPoly(AIndex : Integer; const AValue : TBoundingPoly); 
+
+begin
+  If (FboundingPoly=AValue) then exit;
+  FboundingPoly:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.Setlandmarks(AIndex : Integer; const AValue : TFaceAnnotationTypelandmarksArray); 
+
+begin
+  If (Flandmarks=AValue) then exit;
+  Flandmarks:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetblurredLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FblurredLikelihood=AValue) then exit;
+  FblurredLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetrollAngle(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrollAngle=AValue) then exit;
+  FrollAngle:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFaceAnnotation.SetsorrowLikelihood(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsorrowLikelihood=AValue) then exit;
+  FsorrowLikelihood:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TFaceAnnotation.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'landmarks' : SetLength(Flandmarks,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TVertex
+  --------------------------------------------------------------------}
+
+
+Procedure TVertex.Sety(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fy=AValue) then exit;
+  Fy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TVertex.Setx(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fx=AValue) then exit;
+  Fx:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TColorInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TColorInfo.SetpixelFraction(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FpixelFraction=AValue) then exit;
+  FpixelFraction:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColorInfo.Setcolor(AIndex : Integer; const AValue : TColor); 
+
+begin
+  If (Fcolor=AValue) then exit;
+  Fcolor:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColorInfo.Setscore(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fscore=AValue) then exit;
+  Fscore:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TBoundingPoly
+  --------------------------------------------------------------------}
+
+
+Procedure TBoundingPoly.Setvertices(AIndex : Integer; const AValue : TBoundingPolyTypeverticesArray); 
+
+begin
+  If (Fvertices=AValue) then exit;
+  Fvertices:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBoundingPoly.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'vertices' : SetLength(Fvertices,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TLandmark
+  --------------------------------------------------------------------}
+
+
+Procedure TLandmark.Setposition(AIndex : Integer; const AValue : TPosition); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TLandmark.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TLandmark.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TImageContext
+  --------------------------------------------------------------------}
+
+
+Procedure TImageContext.SetlatLongRect(AIndex : Integer; const AValue : TLatLongRect); 
+
+begin
+  If (FlatLongRect=AValue) then exit;
+  FlatLongRect:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImageContext.SetlanguageHints(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (FlanguageHints=AValue) then exit;
+  FlanguageHints:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TImageContext.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'languagehints' : SetLength(FlanguageHints,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchAnnotateImagesRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchAnnotateImagesRequest.Setrequests(AIndex : Integer; const AValue : TBatchAnnotateImagesRequestTyperequestsArray); 
+
+begin
+  If (Frequests=AValue) then exit;
+  Frequests:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchAnnotateImagesRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'requests' : SetLength(Frequests,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TEntityAnnotation
+  --------------------------------------------------------------------}
+
+
+Procedure TEntityAnnotation.Setmid(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmid=AValue) then exit;
+  Fmid:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setdescription(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdescription=AValue) then exit;
+  Fdescription:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Settopicality(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Ftopicality=AValue) then exit;
+  Ftopicality:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setlocale(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Flocale=AValue) then exit;
+  Flocale:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setproperties(AIndex : Integer; const AValue : TEntityAnnotationTypepropertiesArray); 
+
+begin
+  If (Fproperties=AValue) then exit;
+  Fproperties:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setscore(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fscore=AValue) then exit;
+  Fscore:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.SetboundingPoly(AIndex : Integer; const AValue : TBoundingPoly); 
+
+begin
+  If (FboundingPoly=AValue) then exit;
+  FboundingPoly:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setlocations(AIndex : Integer; const AValue : TEntityAnnotationTypelocationsArray); 
+
+begin
+  If (Flocations=AValue) then exit;
+  Flocations:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TEntityAnnotation.Setconfidence(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fconfidence=AValue) then exit;
+  Fconfidence:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TEntityAnnotation.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'properties' : SetLength(Fproperties,ALength);
+  'locations' : SetLength(Flocations,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TProperty
+  --------------------------------------------------------------------}
+
+
+Procedure TProperty.Setvalue(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fvalue=AValue) then exit;
+  Fvalue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TProperty.Setname(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fname=AValue) then exit;
+  Fname:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TColor
+  --------------------------------------------------------------------}
+
+
+Procedure TColor.Setgreen(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fgreen=AValue) then exit;
+  Fgreen:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setblue(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fblue=AValue) then exit;
+  Fblue:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setred(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fred=AValue) then exit;
+  Fred:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TColor.Setalpha(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Falpha=AValue) then exit;
+  Falpha:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TLocationInfo
+  --------------------------------------------------------------------}
+
+
+Procedure TLocationInfo.SetlatLng(AIndex : Integer; const AValue : TLatLng); 
+
+begin
+  If (FlatLng=AValue) then exit;
+  FlatLng:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TSafeSearchAnnotation
+  --------------------------------------------------------------------}
+
+
+Procedure TSafeSearchAnnotation.Setmedical(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fmedical=AValue) then exit;
+  Fmedical:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSafeSearchAnnotation.Setspoof(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fspoof=AValue) then exit;
+  Fspoof:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSafeSearchAnnotation.Setviolence(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fviolence=AValue) then exit;
+  Fviolence:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSafeSearchAnnotation.Setadult(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fadult=AValue) then exit;
+  Fadult:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TImage
+  --------------------------------------------------------------------}
+
+
+Procedure TImage.Setsource(AIndex : Integer; const AValue : TImageSource); 
+
+begin
+  If (Fsource=AValue) then exit;
+  Fsource:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TImage.Setcontent(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fcontent=AValue) then exit;
+  Fcontent:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TDominantColorsAnnotation
+  --------------------------------------------------------------------}
+
+
+Procedure TDominantColorsAnnotation.Setcolors(AIndex : Integer; const AValue : TDominantColorsAnnotationTypecolorsArray); 
+
+begin
+  If (Fcolors=AValue) then exit;
+  Fcolors:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TDominantColorsAnnotation.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'colors' : SetLength(Fcolors,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TFeature
+  --------------------------------------------------------------------}
+
+
+Procedure TFeature.Set_type(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_type=AValue) then exit;
+  F_type:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TFeature.SetmaxResults(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FmaxResults=AValue) then exit;
+  FmaxResults:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TFeature.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_type' : Result:='type';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TBatchAnnotateImagesResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TBatchAnnotateImagesResponse.Setresponses(AIndex : Integer; const AValue : TBatchAnnotateImagesResponseTyperesponsesArray); 
+
+begin
+  If (Fresponses=AValue) then exit;
+  Fresponses:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TBatchAnnotateImagesResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'responses' : SetLength(Fresponses,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TImageProperties
+  --------------------------------------------------------------------}
+
+
+Procedure TImageProperties.SetdominantColors(AIndex : Integer; const AValue : TDominantColorsAnnotation); 
+
+begin
+  If (FdominantColors=AValue) then exit;
+  FdominantColors:=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;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TPosition
+  --------------------------------------------------------------------}
+
+
+Procedure TPosition.Sety(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fy=AValue) then exit;
+  Fy:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPosition.Setx(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fx=AValue) then exit;
+  Fx:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TPosition.Setz(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (Fz=AValue) then exit;
+  Fz:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+
+
+{ --------------------------------------------------------------------
+  TImagesResource
+  --------------------------------------------------------------------}
+
+
+Class Function TImagesResource.ResourceName : String;
+
+begin
+  Result:='images';
+end;
+
+Class Function TImagesResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TvisionAPI;
+end;
+
+Function TImagesResource.Annotate(aBatchAnnotateImagesRequest : TBatchAnnotateImagesRequest) : TBatchAnnotateImagesResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'v1/images:annotate';
+  _Methodid   = 'vision.images.annotate';
+
+begin
+  Result:=ServiceCall(_HTTPMethod,_Path,'',aBatchAnnotateImagesRequest,TBatchAnnotateImagesResponse) as TBatchAnnotateImagesResponse;
+end;
+
+
+
+{ --------------------------------------------------------------------
+  TVisionAPI
+  --------------------------------------------------------------------}
+
+Class Function TVisionAPI.APIName : String;
+
+begin
+  Result:='vision';
+end;
+
+Class Function TVisionAPI.APIVersion : String;
+
+begin
+  Result:='v1';
+end;
+
+Class Function TVisionAPI.APIRevision : String;
+
+begin
+  Result:='20160519';
+end;
+
+Class Function TVisionAPI.APIID : String;
+
+begin
+  Result:='vision:v1';
+end;
+
+Class Function TVisionAPI.APITitle : String;
+
+begin
+  Result:='Google Cloud Vision API';
+end;
+
+Class Function TVisionAPI.APIDescription : String;
+
+begin
+  Result:='Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.';
+end;
+
+Class Function TVisionAPI.APIOwnerDomain : String;
+
+begin
+  Result:='google.com';
+end;
+
+Class Function TVisionAPI.APIOwnerName : String;
+
+begin
+  Result:='Google';
+end;
+
+Class Function TVisionAPI.APIIcon16 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-16.gif';
+end;
+
+Class Function TVisionAPI.APIIcon32 : String;
+
+begin
+  Result:='http://www.google.com/images/icons/product/search-32.gif';
+end;
+
+Class Function TVisionAPI.APIdocumentationLink : String;
+
+begin
+  Result:='https://cloud.google.com/vision/';
+end;
+
+Class Function TVisionAPI.APIrootUrl : string;
+
+begin
+  Result:='https://vision.googleapis.com/';
+end;
+
+Class Function TVisionAPI.APIbasePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TVisionAPI.APIbaseURL : String;
+
+begin
+  Result:='https://vision.googleapis.com/';
+end;
+
+Class Function TVisionAPI.APIProtocol : string;
+
+begin
+  Result:='rest';
+end;
+
+Class Function TVisionAPI.APIservicePath : string;
+
+begin
+  Result:='';
+end;
+
+Class Function TVisionAPI.APIbatchPath : String;
+
+begin
+  Result:='batch';
+end;
+
+Class Function TVisionAPI.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 TVisionAPI.APINeedsAuth : Boolean;
+
+begin
+  Result:=True;
+end;
+
+Class Procedure TVisionAPI.RegisterAPIResources;
+
+begin
+  TImageSource.RegisterObject;
+  TAnnotateImageRequest.RegisterObject;
+  TAnnotateImageResponse.RegisterObject;
+  TLatLongRect.RegisterObject;
+  TStatusTypedetailsItem.RegisterObject;
+  TStatus.RegisterObject;
+  TFaceAnnotation.RegisterObject;
+  TVertex.RegisterObject;
+  TColorInfo.RegisterObject;
+  TBoundingPoly.RegisterObject;
+  TLandmark.RegisterObject;
+  TImageContext.RegisterObject;
+  TBatchAnnotateImagesRequest.RegisterObject;
+  TEntityAnnotation.RegisterObject;
+  TProperty.RegisterObject;
+  TColor.RegisterObject;
+  TLocationInfo.RegisterObject;
+  TSafeSearchAnnotation.RegisterObject;
+  TImage.RegisterObject;
+  TDominantColorsAnnotation.RegisterObject;
+  TFeature.RegisterObject;
+  TBatchAnnotateImagesResponse.RegisterObject;
+  TImageProperties.RegisterObject;
+  TLatLng.RegisterObject;
+  TPosition.RegisterObject;
+end;
+
+
+Function TVisionAPI.GetImagesInstance : TImagesResource;
+
+begin
+  if (FImagesInstance=Nil) then
+    FImagesInstance:=CreateImagesResource;
+  Result:=FImagesInstance;
+end;
+
+Function TVisionAPI.CreateImagesResource : TImagesResource;
+
+begin
+  Result:=CreateImagesResource(Self);
+end;
+
+
+Function TVisionAPI.CreateImagesResource(AOwner : TComponent) : TImagesResource;
+
+begin
+  Result:=TImagesResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
+initialization
+  TVisionAPI.RegisterAPI;
+end.

+ 16 - 31
packages/googleapi/src/googlewebfonts.pp

@@ -1,19 +1,4 @@
 unit googlewebfonts;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:09
 {$MODE objfpc}
 {$H+}
 
@@ -64,11 +49,11 @@ type
     //Property setters
     Procedure Setcategory(AIndex : Integer; const AValue : String); virtual;
     Procedure Setfamily(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setfiles(AIndex : Integer; AValue : TWebfontTypefiles); virtual;
+    Procedure Setfiles(AIndex : Integer; const AValue : TWebfontTypefiles); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetlastModified(AIndex : Integer; AValue : TDate); virtual;
-    Procedure Setsubsets(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure Setvariants(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetlastModified(AIndex : Integer; const AValue : TDate); virtual;
+    Procedure Setsubsets(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setvariants(AIndex : Integer; const AValue : TStringArray); virtual;
     Procedure Setversion(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -97,7 +82,7 @@ type
     Fkind : String;
   Protected
     //Property setters
-    Procedure Setitems(AIndex : Integer; AValue : TWebfontListTypeitemsArray); virtual;
+    Procedure Setitems(AIndex : Integer; const AValue : TWebfontListTypeitemsArray); virtual;
     Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -208,7 +193,7 @@ end;
 
 
 
-Procedure TWebfont.Setfiles(AIndex : Integer; AValue : TWebfontTypefiles); 
+Procedure TWebfont.Setfiles(AIndex : Integer; const AValue : TWebfontTypefiles); 
 
 begin
   If (Ffiles=AValue) then exit;
@@ -228,7 +213,7 @@ end;
 
 
 
-Procedure TWebfont.SetlastModified(AIndex : Integer; AValue : TDate); 
+Procedure TWebfont.SetlastModified(AIndex : Integer; const AValue : TDate); 
 
 begin
   If (FlastModified=AValue) then exit;
@@ -238,7 +223,7 @@ end;
 
 
 
-Procedure TWebfont.Setsubsets(AIndex : Integer; AValue : TStringArray); 
+Procedure TWebfont.Setsubsets(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fsubsets=AValue) then exit;
@@ -248,7 +233,7 @@ end;
 
 
 
-Procedure TWebfont.Setvariants(AIndex : Integer; AValue : TStringArray); 
+Procedure TWebfont.Setvariants(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (Fvariants=AValue) then exit;
@@ -289,7 +274,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TWebfontList.Setitems(AIndex : Integer; AValue : TWebfontListTypeitemsArray); 
+Procedure TWebfontList.Setitems(AIndex : Integer; const AValue : TWebfontListTypeitemsArray); 
 
 begin
   If (Fitems=AValue) then exit;
@@ -385,7 +370,7 @@ end;
 Class Function TWebfontsAPI.APIRevision : String;
 
 begin
-  Result:='20140210';
+  Result:='20160302';
 end;
 
 Class Function TWebfontsAPI.APIID : String;
@@ -403,7 +388,7 @@ end;
 Class Function TWebfontsAPI.APIDescription : String;
 
 begin
-  Result:='The Google Fonts Developer API.';
+  Result:='Accesses the metadata for all families served by Google Fonts, providing a list of families currently available (including available styles and a list of supported script subsets).';
 end;
 
 Class Function TWebfontsAPI.APIOwnerDomain : String;
@@ -421,13 +406,13 @@ end;
 Class Function TWebfontsAPI.APIIcon16 : String;
 
 begin
-  Result:='http://www.google.com/images/icons/feature/font_api-16.png';
+  Result:='https://www.google.com/images/icons/feature/font_api-16.png';
 end;
 
 Class Function TWebfontsAPI.APIIcon32 : String;
 
 begin
-  Result:='http://www.google.com/images/icons/feature/font_api-32.gif';
+  Result:='https://www.google.com/images/icons/feature/font_api-32.gif';
 end;
 
 Class Function TWebfontsAPI.APIdocumentationLink : String;
@@ -439,7 +424,7 @@ end;
 Class Function TWebfontsAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TWebfontsAPI.APIbasePath : string;
@@ -451,7 +436,7 @@ end;
 Class Function TWebfontsAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/webfonts/v1/';
+  Result:='https://www.googleapis.com/webfonts/v1/';
 end;
 
 Class Function TWebfontsAPI.APIProtocol : string;

+ 576 - 57
packages/googleapi/src/googlewebmasters.pp

@@ -1,19 +1,4 @@
 unit googlewebmasters;
-{
-   **********************************************************************
-      This file is part of the Free Component Library (FCL)
-      Copyright (c) 2015 The free pascal team.
-  
-      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.
-  
-   **********************************************************************
-}
-//Generated on: 16-5-15 08:53:09
 {$MODE objfpc}
 {$H+}
 
@@ -24,6 +9,11 @@ uses sysutils, classes, googleservice, restbase, googlebase;
 type
   
   //Top-level schema types
+  TApiDataRow = Class;
+  TApiDimensionFilter = Class;
+  TApiDimensionFilterGroup = Class;
+  TSearchAnalyticsQueryRequest = Class;
+  TSearchAnalyticsQueryResponse = Class;
   TSitemapsListResponse = Class;
   TSitesListResponse = Class;
   TUrlCrawlErrorCount = Class;
@@ -35,6 +25,11 @@ type
   TWmxSite = Class;
   TWmxSitemap = Class;
   TWmxSitemapContent = Class;
+  TApiDataRowArray = Array of TApiDataRow;
+  TApiDimensionFilterArray = Array of TApiDimensionFilter;
+  TApiDimensionFilterGroupArray = Array of TApiDimensionFilterGroup;
+  TSearchAnalyticsQueryRequestArray = Array of TSearchAnalyticsQueryRequest;
+  TSearchAnalyticsQueryResponseArray = Array of TSearchAnalyticsQueryResponse;
   TSitemapsListResponseArray = Array of TSitemapsListResponse;
   TSitesListResponseArray = Array of TSitesListResponse;
   TUrlCrawlErrorCountArray = Array of TUrlCrawlErrorCount;
@@ -47,6 +42,9 @@ type
   TWmxSitemapArray = Array of TWmxSitemap;
   TWmxSitemapContentArray = Array of TWmxSitemapContent;
   //Anonymous types, using auto-generated names
+  TApiDimensionFilterGroupTypefiltersArray = Array of TApiDimensionFilter;
+  TSearchAnalyticsQueryRequestTypedimensionFilterGroupsArray = Array of TApiDimensionFilterGroup;
+  TSearchAnalyticsQueryResponseTyperowsArray = Array of TApiDataRow;
   TSitemapsListResponseTypesitemapArray = Array of TWmxSitemap;
   TSitesListResponseTypesiteEntryArray = Array of TWmxSite;
   TUrlCrawlErrorCountsPerTypeTypeentriesArray = Array of TUrlCrawlErrorCount;
@@ -54,6 +52,148 @@ type
   TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray = Array of TUrlCrawlErrorsSample;
   TWmxSitemapTypecontentsArray = Array of TWmxSitemapContent;
   
+  { --------------------------------------------------------------------
+    TApiDataRow
+    --------------------------------------------------------------------}
+  
+  TApiDataRow = Class(TGoogleBaseObject)
+  Private
+    Fclicks : double;
+    Fctr : double;
+    Fimpressions : double;
+    Fkeys : TStringArray;
+    Fposition : double;
+  Protected
+    //Property setters
+    Procedure Setclicks(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setctr(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setimpressions(AIndex : Integer; const AValue : double); virtual;
+    Procedure Setkeys(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure Setposition(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 clicks : double Index 0 Read Fclicks Write Setclicks;
+    Property ctr : double Index 8 Read Fctr Write Setctr;
+    Property impressions : double Index 16 Read Fimpressions Write Setimpressions;
+    Property keys : TStringArray Index 24 Read Fkeys Write Setkeys;
+    Property position : double Index 32 Read Fposition Write Setposition;
+  end;
+  TApiDataRowClass = Class of TApiDataRow;
+  
+  { --------------------------------------------------------------------
+    TApiDimensionFilter
+    --------------------------------------------------------------------}
+  
+  TApiDimensionFilter = Class(TGoogleBaseObject)
+  Private
+    Fdimension : String;
+    Fexpression : String;
+    F_operator : String;
+  Protected
+    Class Function ExportPropertyName(Const AName : String) : string; override;
+    //Property setters
+    Procedure Setdimension(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setexpression(AIndex : Integer; const AValue : String); virtual;
+    Procedure Set_operator(AIndex : Integer; const AValue : String); virtual;
+  Public
+  Published
+    Property dimension : String Index 0 Read Fdimension Write Setdimension;
+    Property expression : String Index 8 Read Fexpression Write Setexpression;
+    Property _operator : String Index 16 Read F_operator Write Set_operator;
+  end;
+  TApiDimensionFilterClass = Class of TApiDimensionFilter;
+  
+  { --------------------------------------------------------------------
+    TApiDimensionFilterGroup
+    --------------------------------------------------------------------}
+  
+  TApiDimensionFilterGroup = Class(TGoogleBaseObject)
+  Private
+    Ffilters : TApiDimensionFilterGroupTypefiltersArray;
+    FgroupType : String;
+  Protected
+    //Property setters
+    Procedure Setfilters(AIndex : Integer; const AValue : TApiDimensionFilterGroupTypefiltersArray); virtual;
+    Procedure SetgroupType(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 filters : TApiDimensionFilterGroupTypefiltersArray Index 0 Read Ffilters Write Setfilters;
+    Property groupType : String Index 8 Read FgroupType Write SetgroupType;
+  end;
+  TApiDimensionFilterGroupClass = Class of TApiDimensionFilterGroup;
+  
+  { --------------------------------------------------------------------
+    TSearchAnalyticsQueryRequest
+    --------------------------------------------------------------------}
+  
+  TSearchAnalyticsQueryRequest = Class(TGoogleBaseObject)
+  Private
+    FaggregationType : String;
+    FdimensionFilterGroups : TSearchAnalyticsQueryRequestTypedimensionFilterGroupsArray;
+    Fdimensions : TStringArray;
+    FendDate : String;
+    FrowLimit : integer;
+    FsearchType : String;
+    FstartDate : String;
+    FstartRow : integer;
+  Protected
+    //Property setters
+    Procedure SetaggregationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetdimensionFilterGroups(AIndex : Integer; const AValue : TSearchAnalyticsQueryRequestTypedimensionFilterGroupsArray); virtual;
+    Procedure Setdimensions(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetendDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetrowLimit(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SetsearchType(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartDate(AIndex : Integer; const AValue : String); virtual;
+    Procedure SetstartRow(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 aggregationType : String Index 0 Read FaggregationType Write SetaggregationType;
+    Property dimensionFilterGroups : TSearchAnalyticsQueryRequestTypedimensionFilterGroupsArray Index 8 Read FdimensionFilterGroups Write SetdimensionFilterGroups;
+    Property dimensions : TStringArray Index 16 Read Fdimensions Write Setdimensions;
+    Property endDate : String Index 24 Read FendDate Write SetendDate;
+    Property rowLimit : integer Index 32 Read FrowLimit Write SetrowLimit;
+    Property searchType : String Index 40 Read FsearchType Write SetsearchType;
+    Property startDate : String Index 48 Read FstartDate Write SetstartDate;
+    Property startRow : integer Index 56 Read FstartRow Write SetstartRow;
+  end;
+  TSearchAnalyticsQueryRequestClass = Class of TSearchAnalyticsQueryRequest;
+  
+  { --------------------------------------------------------------------
+    TSearchAnalyticsQueryResponse
+    --------------------------------------------------------------------}
+  
+  TSearchAnalyticsQueryResponse = Class(TGoogleBaseObject)
+  Private
+    FresponseAggregationType : String;
+    Frows : TSearchAnalyticsQueryResponseTyperowsArray;
+  Protected
+    //Property setters
+    Procedure SetresponseAggregationType(AIndex : Integer; const AValue : String); virtual;
+    Procedure Setrows(AIndex : Integer; const AValue : TSearchAnalyticsQueryResponseTyperowsArray); virtual;
+    //2.6.4. bug workaround
+    {$IFDEF VER2_6}
+    Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
+    {$ENDIF VER2_6}
+  Public
+  Published
+    Property responseAggregationType : String Index 0 Read FresponseAggregationType Write SetresponseAggregationType;
+    Property rows : TSearchAnalyticsQueryResponseTyperowsArray Index 8 Read Frows Write Setrows;
+  end;
+  TSearchAnalyticsQueryResponseClass = Class of TSearchAnalyticsQueryResponse;
+  
   { --------------------------------------------------------------------
     TSitemapsListResponse
     --------------------------------------------------------------------}
@@ -63,7 +203,7 @@ type
     Fsitemap : TSitemapsListResponseTypesitemapArray;
   Protected
     //Property setters
-    Procedure Setsitemap(AIndex : Integer; AValue : TSitemapsListResponseTypesitemapArray); virtual;
+    Procedure Setsitemap(AIndex : Integer; const AValue : TSitemapsListResponseTypesitemapArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -83,7 +223,7 @@ type
     FsiteEntry : TSitesListResponseTypesiteEntryArray;
   Protected
     //Property setters
-    Procedure SetsiteEntry(AIndex : Integer; AValue : TSitesListResponseTypesiteEntryArray); virtual;
+    Procedure SetsiteEntry(AIndex : Integer; const AValue : TSitesListResponseTypesiteEntryArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -105,7 +245,7 @@ type
   Protected
     //Property setters
     Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
-    Procedure Settimestamp(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Settimestamp(AIndex : Integer; const AValue : TDatetime); virtual;
   Public
   Published
     Property count : String Index 0 Read Fcount Write Setcount;
@@ -125,7 +265,7 @@ type
   Protected
     //Property setters
     Procedure Setcategory(AIndex : Integer; const AValue : String); virtual;
-    Procedure Setentries(AIndex : Integer; AValue : TUrlCrawlErrorCountsPerTypeTypeentriesArray); virtual;
+    Procedure Setentries(AIndex : Integer; const AValue : TUrlCrawlErrorCountsPerTypeTypeentriesArray); virtual;
     Procedure Setplatform(AIndex : Integer; const AValue : String); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
@@ -148,7 +288,7 @@ type
     FcountPerTypes : TUrlCrawlErrorsCountsQueryResponseTypecountPerTypesArray;
   Protected
     //Property setters
-    Procedure SetcountPerTypes(AIndex : Integer; AValue : TUrlCrawlErrorsCountsQueryResponseTypecountPerTypesArray); virtual;
+    Procedure SetcountPerTypes(AIndex : Integer; const AValue : TUrlCrawlErrorsCountsQueryResponseTypecountPerTypesArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -172,11 +312,11 @@ type
     FurlDetails : TUrlSampleDetails;
   Protected
     //Property setters
-    Procedure Setfirst_detected(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure Setlast_crawled(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure Setfirst_detected(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure Setlast_crawled(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure SetpageUrl(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetresponseCode(AIndex : Integer; AValue : integer); virtual;
-    Procedure SeturlDetails(AIndex : Integer; AValue : TUrlSampleDetails); virtual;
+    Procedure SetresponseCode(AIndex : Integer; const AValue : integer); virtual;
+    Procedure SeturlDetails(AIndex : Integer; const AValue : TUrlSampleDetails); virtual;
   Public
   Published
     Property first_detected : TDatetime Index 0 Read Ffirst_detected Write Setfirst_detected;
@@ -196,7 +336,7 @@ type
     FurlCrawlErrorSample : TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray;
   Protected
     //Property setters
-    Procedure SeturlCrawlErrorSample(AIndex : Integer; AValue : TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray); virtual;
+    Procedure SeturlCrawlErrorSample(AIndex : Integer; const AValue : TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -217,8 +357,8 @@ type
     FlinkedFromUrls : TStringArray;
   Protected
     //Property setters
-    Procedure SetcontainingSitemaps(AIndex : Integer; AValue : TStringArray); virtual;
-    Procedure SetlinkedFromUrls(AIndex : Integer; AValue : TStringArray); virtual;
+    Procedure SetcontainingSitemaps(AIndex : Integer; const AValue : TStringArray); virtual;
+    Procedure SetlinkedFromUrls(AIndex : Integer; const AValue : TStringArray); virtual;
     //2.6.4. bug workaround
     {$IFDEF VER2_6}
     Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
@@ -267,12 +407,12 @@ type
   Protected
     Class Function ExportPropertyName(Const AName : String) : string; override;
     //Property setters
-    Procedure Setcontents(AIndex : Integer; AValue : TWmxSitemapTypecontentsArray); virtual;
+    Procedure Setcontents(AIndex : Integer; const AValue : TWmxSitemapTypecontentsArray); virtual;
     Procedure Seterrors(AIndex : Integer; const AValue : String); virtual;
-    Procedure SetisPending(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetisSitemapsIndex(AIndex : Integer; AValue : boolean); virtual;
-    Procedure SetlastDownloaded(AIndex : Integer; AValue : TDatetime); virtual;
-    Procedure SetlastSubmitted(AIndex : Integer; AValue : TDatetime); virtual;
+    Procedure SetisPending(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetisSitemapsIndex(AIndex : Integer; const AValue : boolean); virtual;
+    Procedure SetlastDownloaded(AIndex : Integer; const AValue : TDatetime); virtual;
+    Procedure SetlastSubmitted(AIndex : Integer; const AValue : TDatetime); virtual;
     Procedure Setpath(AIndex : Integer; const AValue : String); virtual;
     Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
     Procedure Setwarnings(AIndex : Integer; const AValue : String); virtual;
@@ -317,6 +457,18 @@ type
   end;
   TWmxSitemapContentClass = Class of TWmxSitemapContent;
   
+  { --------------------------------------------------------------------
+    TSearchanalyticsResource
+    --------------------------------------------------------------------}
+  
+  TSearchanalyticsResource = Class(TGoogleResource)
+  Public
+    Class Function ResourceName : String; override;
+    Class Function DefaultAPI : TGoogleAPIClass; override;
+    Function Query(siteUrl: string; aSearchAnalyticsQueryRequest : TSearchAnalyticsQueryRequest) : TSearchAnalyticsQueryResponse;
+  end;
+  
+  
   { --------------------------------------------------------------------
     TSitemapsResource
     --------------------------------------------------------------------}
@@ -424,10 +576,12 @@ type
   
   TWebmastersAPI = Class(TGoogleAPI)
   Private
+    FSearchanalyticsInstance : TSearchanalyticsResource;
     FSitemapsInstance : TSitemapsResource;
     FSitesInstance : TSitesResource;
     FUrlcrawlerrorscountsInstance : TUrlcrawlerrorscountsResource;
     FUrlcrawlerrorssamplesInstance : TUrlcrawlerrorssamplesResource;
+    Function GetSearchanalyticsInstance : TSearchanalyticsResource;virtual;
     Function GetSitemapsInstance : TSitemapsResource;virtual;
     Function GetSitesInstance : TSitesResource;virtual;
     Function GetUrlcrawlerrorscountsInstance : TUrlcrawlerrorscountsResource;virtual;
@@ -455,6 +609,8 @@ type
     Class Function APINeedsAuth : Boolean;override;
     Class Procedure RegisterAPIResources; override;
     //Add create function for resources
+    Function CreateSearchanalyticsResource(AOwner : TComponent) : TSearchanalyticsResource;virtual;overload;
+    Function CreateSearchanalyticsResource : TSearchanalyticsResource;virtual;overload;
     Function CreateSitemapsResource(AOwner : TComponent) : TSitemapsResource;virtual;overload;
     Function CreateSitemapsResource : TSitemapsResource;virtual;overload;
     Function CreateSitesResource(AOwner : TComponent) : TSitesResource;virtual;overload;
@@ -464,6 +620,7 @@ type
     Function CreateUrlcrawlerrorssamplesResource(AOwner : TComponent) : TUrlcrawlerrorssamplesResource;virtual;overload;
     Function CreateUrlcrawlerrorssamplesResource : TUrlcrawlerrorssamplesResource;virtual;overload;
     //Add default on-demand instances for resources
+    Property SearchanalyticsResource : TSearchanalyticsResource Read GetSearchanalyticsInstance;
     Property SitemapsResource : TSitemapsResource Read GetSitemapsInstance;
     Property SitesResource : TSitesResource Read GetSitesInstance;
     Property UrlcrawlerrorscountsResource : TUrlcrawlerrorscountsResource Read GetUrlcrawlerrorscountsInstance;
@@ -473,12 +630,311 @@ type
 implementation
 
 
+{ --------------------------------------------------------------------
+  TApiDataRow
+  --------------------------------------------------------------------}
+
+
+Procedure TApiDataRow.Setclicks(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fclicks=AValue) then exit;
+  Fclicks:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDataRow.Setctr(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fctr=AValue) then exit;
+  Fctr:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDataRow.Setimpressions(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fimpressions=AValue) then exit;
+  Fimpressions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDataRow.Setkeys(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fkeys=AValue) then exit;
+  Fkeys:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDataRow.Setposition(AIndex : Integer; const AValue : double); 
+
+begin
+  If (Fposition=AValue) then exit;
+  Fposition:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TApiDataRow.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'keys' : SetLength(Fkeys,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TApiDimensionFilter
+  --------------------------------------------------------------------}
+
+
+Procedure TApiDimensionFilter.Setdimension(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fdimension=AValue) then exit;
+  Fdimension:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDimensionFilter.Setexpression(AIndex : Integer; const AValue : String); 
+
+begin
+  If (Fexpression=AValue) then exit;
+  Fexpression:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDimensionFilter.Set_operator(AIndex : Integer; const AValue : String); 
+
+begin
+  If (F_operator=AValue) then exit;
+  F_operator:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Class Function TApiDimensionFilter.ExportPropertyName(Const AName : String) :String;
+
+begin
+  Case AName of
+  '_operator' : Result:='operator';
+  else
+    Result:=Inherited ExportPropertyName(AName);
+  end;
+end;
+
+
+
+
+{ --------------------------------------------------------------------
+  TApiDimensionFilterGroup
+  --------------------------------------------------------------------}
+
+
+Procedure TApiDimensionFilterGroup.Setfilters(AIndex : Integer; const AValue : TApiDimensionFilterGroupTypefiltersArray); 
+
+begin
+  If (Ffilters=AValue) then exit;
+  Ffilters:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TApiDimensionFilterGroup.SetgroupType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FgroupType=AValue) then exit;
+  FgroupType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TApiDimensionFilterGroup.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'filters' : SetLength(Ffilters,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSearchAnalyticsQueryRequest
+  --------------------------------------------------------------------}
+
+
+Procedure TSearchAnalyticsQueryRequest.SetaggregationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FaggregationType=AValue) then exit;
+  FaggregationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetdimensionFilterGroups(AIndex : Integer; const AValue : TSearchAnalyticsQueryRequestTypedimensionFilterGroupsArray); 
+
+begin
+  If (FdimensionFilterGroups=AValue) then exit;
+  FdimensionFilterGroups:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.Setdimensions(AIndex : Integer; const AValue : TStringArray); 
+
+begin
+  If (Fdimensions=AValue) then exit;
+  Fdimensions:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetendDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FendDate=AValue) then exit;
+  FendDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetrowLimit(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FrowLimit=AValue) then exit;
+  FrowLimit:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetsearchType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FsearchType=AValue) then exit;
+  FsearchType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetstartDate(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FstartDate=AValue) then exit;
+  FstartDate:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryRequest.SetstartRow(AIndex : Integer; const AValue : integer); 
+
+begin
+  If (FstartRow=AValue) then exit;
+  FstartRow:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSearchAnalyticsQueryRequest.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'dimensionfiltergroups' : SetLength(FdimensionFilterGroups,ALength);
+  'dimensions' : SetLength(Fdimensions,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
+{ --------------------------------------------------------------------
+  TSearchAnalyticsQueryResponse
+  --------------------------------------------------------------------}
+
+
+Procedure TSearchAnalyticsQueryResponse.SetresponseAggregationType(AIndex : Integer; const AValue : String); 
+
+begin
+  If (FresponseAggregationType=AValue) then exit;
+  FresponseAggregationType:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+
+Procedure TSearchAnalyticsQueryResponse.Setrows(AIndex : Integer; const AValue : TSearchAnalyticsQueryResponseTyperowsArray); 
+
+begin
+  If (Frows=AValue) then exit;
+  Frows:=AValue;
+  MarkPropertyChanged(AIndex);
+end;
+
+
+//2.6.4. bug workaround
+{$IFDEF VER2_6}
+Procedure TSearchAnalyticsQueryResponse.SetArrayLength(Const AName : String; ALength : Longint); 
+
+begin
+  Case AName of
+  'rows' : SetLength(Frows,ALength);
+  else
+    Inherited SetArrayLength(AName,ALength);
+  end;
+end;
+{$ENDIF VER2_6}
+
+
+
+
 { --------------------------------------------------------------------
   TSitemapsListResponse
   --------------------------------------------------------------------}
 
 
-Procedure TSitemapsListResponse.Setsitemap(AIndex : Integer; AValue : TSitemapsListResponseTypesitemapArray); 
+Procedure TSitemapsListResponse.Setsitemap(AIndex : Integer; const AValue : TSitemapsListResponseTypesitemapArray); 
 
 begin
   If (Fsitemap=AValue) then exit;
@@ -508,7 +964,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TSitesListResponse.SetsiteEntry(AIndex : Integer; AValue : TSitesListResponseTypesiteEntryArray); 
+Procedure TSitesListResponse.SetsiteEntry(AIndex : Integer; const AValue : TSitesListResponseTypesiteEntryArray); 
 
 begin
   If (FsiteEntry=AValue) then exit;
@@ -548,7 +1004,7 @@ end;
 
 
 
-Procedure TUrlCrawlErrorCount.Settimestamp(AIndex : Integer; AValue : TDatetime); 
+Procedure TUrlCrawlErrorCount.Settimestamp(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Ftimestamp=AValue) then exit;
@@ -575,7 +1031,7 @@ end;
 
 
 
-Procedure TUrlCrawlErrorCountsPerType.Setentries(AIndex : Integer; AValue : TUrlCrawlErrorCountsPerTypeTypeentriesArray); 
+Procedure TUrlCrawlErrorCountsPerType.Setentries(AIndex : Integer; const AValue : TUrlCrawlErrorCountsPerTypeTypeentriesArray); 
 
 begin
   If (Fentries=AValue) then exit;
@@ -615,7 +1071,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrlCrawlErrorsCountsQueryResponse.SetcountPerTypes(AIndex : Integer; AValue : TUrlCrawlErrorsCountsQueryResponseTypecountPerTypesArray); 
+Procedure TUrlCrawlErrorsCountsQueryResponse.SetcountPerTypes(AIndex : Integer; const AValue : TUrlCrawlErrorsCountsQueryResponseTypecountPerTypesArray); 
 
 begin
   If (FcountPerTypes=AValue) then exit;
@@ -645,7 +1101,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrlCrawlErrorsSample.Setfirst_detected(AIndex : Integer; AValue : TDatetime); 
+Procedure TUrlCrawlErrorsSample.Setfirst_detected(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Ffirst_detected=AValue) then exit;
@@ -655,7 +1111,7 @@ end;
 
 
 
-Procedure TUrlCrawlErrorsSample.Setlast_crawled(AIndex : Integer; AValue : TDatetime); 
+Procedure TUrlCrawlErrorsSample.Setlast_crawled(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (Flast_crawled=AValue) then exit;
@@ -675,7 +1131,7 @@ end;
 
 
 
-Procedure TUrlCrawlErrorsSample.SetresponseCode(AIndex : Integer; AValue : integer); 
+Procedure TUrlCrawlErrorsSample.SetresponseCode(AIndex : Integer; const AValue : integer); 
 
 begin
   If (FresponseCode=AValue) then exit;
@@ -685,7 +1141,7 @@ end;
 
 
 
-Procedure TUrlCrawlErrorsSample.SeturlDetails(AIndex : Integer; AValue : TUrlSampleDetails); 
+Procedure TUrlCrawlErrorsSample.SeturlDetails(AIndex : Integer; const AValue : TUrlSampleDetails); 
 
 begin
   If (FurlDetails=AValue) then exit;
@@ -702,7 +1158,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrlCrawlErrorsSamplesListResponse.SeturlCrawlErrorSample(AIndex : Integer; AValue : TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray); 
+Procedure TUrlCrawlErrorsSamplesListResponse.SeturlCrawlErrorSample(AIndex : Integer; const AValue : TUrlCrawlErrorsSamplesListResponseTypeurlCrawlErrorSampleArray); 
 
 begin
   If (FurlCrawlErrorSample=AValue) then exit;
@@ -732,7 +1188,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TUrlSampleDetails.SetcontainingSitemaps(AIndex : Integer; AValue : TStringArray); 
+Procedure TUrlSampleDetails.SetcontainingSitemaps(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FcontainingSitemaps=AValue) then exit;
@@ -742,7 +1198,7 @@ end;
 
 
 
-Procedure TUrlSampleDetails.SetlinkedFromUrls(AIndex : Integer; AValue : TStringArray); 
+Procedure TUrlSampleDetails.SetlinkedFromUrls(AIndex : Integer; const AValue : TStringArray); 
 
 begin
   If (FlinkedFromUrls=AValue) then exit;
@@ -800,7 +1256,7 @@ end;
   --------------------------------------------------------------------}
 
 
-Procedure TWmxSitemap.Setcontents(AIndex : Integer; AValue : TWmxSitemapTypecontentsArray); 
+Procedure TWmxSitemap.Setcontents(AIndex : Integer; const AValue : TWmxSitemapTypecontentsArray); 
 
 begin
   If (Fcontents=AValue) then exit;
@@ -820,7 +1276,7 @@ end;
 
 
 
-Procedure TWmxSitemap.SetisPending(AIndex : Integer; AValue : boolean); 
+Procedure TWmxSitemap.SetisPending(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisPending=AValue) then exit;
@@ -830,7 +1286,7 @@ end;
 
 
 
-Procedure TWmxSitemap.SetisSitemapsIndex(AIndex : Integer; AValue : boolean); 
+Procedure TWmxSitemap.SetisSitemapsIndex(AIndex : Integer; const AValue : boolean); 
 
 begin
   If (FisSitemapsIndex=AValue) then exit;
@@ -840,7 +1296,7 @@ end;
 
 
 
-Procedure TWmxSitemap.SetlastDownloaded(AIndex : Integer; AValue : TDatetime); 
+Procedure TWmxSitemap.SetlastDownloaded(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FlastDownloaded=AValue) then exit;
@@ -850,7 +1306,7 @@ end;
 
 
 
-Procedure TWmxSitemap.SetlastSubmitted(AIndex : Integer; AValue : TDatetime); 
+Procedure TWmxSitemap.SetlastSubmitted(AIndex : Integer; const AValue : TDatetime); 
 
 begin
   If (FlastSubmitted=AValue) then exit;
@@ -964,6 +1420,40 @@ end;
 
 
 
+{ --------------------------------------------------------------------
+  TSearchanalyticsResource
+  --------------------------------------------------------------------}
+
+
+Class Function TSearchanalyticsResource.ResourceName : String;
+
+begin
+  Result:='searchanalytics';
+end;
+
+Class Function TSearchanalyticsResource.DefaultAPI : TGoogleAPIClass;
+
+begin
+  Result:=TwebmastersAPI;
+end;
+
+Function TSearchanalyticsResource.Query(siteUrl: string; aSearchAnalyticsQueryRequest : TSearchAnalyticsQueryRequest) : TSearchAnalyticsQueryResponse;
+
+Const
+  _HTTPMethod = 'POST';
+  _Path       = 'sites/{siteUrl}/searchAnalytics/query';
+  _Methodid   = 'webmasters.searchanalytics.query';
+
+Var
+  _P : String;
+
+begin
+  _P:=SubstitutePath(_Path,['siteUrl',siteUrl]);
+  Result:=ServiceCall(_HTTPMethod,_P,'',aSearchAnalyticsQueryRequest,TSearchAnalyticsQueryResponse) as TSearchAnalyticsQueryResponse;
+end;
+
+
+
 { --------------------------------------------------------------------
   TSitemapsResource
   --------------------------------------------------------------------}
@@ -1300,7 +1790,7 @@ end;
 Class Function TWebmastersAPI.APIRevision : String;
 
 begin
-  Result:='20140908';
+  Result:='20160317';
 end;
 
 Class Function TWebmastersAPI.APIID : String;
@@ -1312,13 +1802,13 @@ end;
 Class Function TWebmastersAPI.APITitle : String;
 
 begin
-  Result:='Webmaster Tools API';
+  Result:='Search Console API';
 end;
 
 Class Function TWebmastersAPI.APIDescription : String;
 
 begin
-  Result:='Lets you view Google Webmaster Tools data for your verified sites.';
+  Result:='View Google Search Console data for your verified sites.';
 end;
 
 Class Function TWebmastersAPI.APIOwnerDomain : String;
@@ -1348,13 +1838,13 @@ end;
 Class Function TWebmastersAPI.APIdocumentationLink : String;
 
 begin
-  Result:='https://developers.google.com/webmaster-tools/v3/welcome';
+  Result:='https://developers.google.com/webmaster-tools/';
 end;
 
 Class Function TWebmastersAPI.APIrootUrl : string;
 
 begin
-  Result:='https://www.googleapis.com:443/';
+  Result:='https://www.googleapis.com/';
 end;
 
 Class Function TWebmastersAPI.APIbasePath : string;
@@ -1366,7 +1856,7 @@ end;
 Class Function TWebmastersAPI.APIbaseURL : String;
 
 begin
-  Result:='https://www.googleapis.com:443/webmasters/v3/';
+  Result:='https://www.googleapis.com/webmasters/v3/';
 end;
 
 Class Function TWebmastersAPI.APIProtocol : string;
@@ -1392,9 +1882,9 @@ Class Function TWebmastersAPI.APIAuthScopes : TScopeInfoArray;
 begin
   SetLength(Result,2);
   Result[0].Name:='https://www.googleapis.com/auth/webmasters';
-  Result[0].Description:='View and modify Webmaster Tools data for your verified sites';
+  Result[0].Description:='View and manage Search Console data for your verified sites';
   Result[1].Name:='https://www.googleapis.com/auth/webmasters.readonly';
-  Result[1].Description:='View Webmaster Tools data for your verified sites';
+  Result[1].Description:='View Search Console data for your verified sites';
   
 end;
 
@@ -1407,6 +1897,11 @@ end;
 Class Procedure TWebmastersAPI.RegisterAPIResources;
 
 begin
+  TApiDataRow.RegisterObject;
+  TApiDimensionFilter.RegisterObject;
+  TApiDimensionFilterGroup.RegisterObject;
+  TSearchAnalyticsQueryRequest.RegisterObject;
+  TSearchAnalyticsQueryResponse.RegisterObject;
   TSitemapsListResponse.RegisterObject;
   TSitesListResponse.RegisterObject;
   TUrlCrawlErrorCount.RegisterObject;
@@ -1421,6 +1916,30 @@ begin
 end;
 
 
+Function TWebmastersAPI.GetSearchanalyticsInstance : TSearchanalyticsResource;
+
+begin
+  if (FSearchanalyticsInstance=Nil) then
+    FSearchanalyticsInstance:=CreateSearchanalyticsResource;
+  Result:=FSearchanalyticsInstance;
+end;
+
+Function TWebmastersAPI.CreateSearchanalyticsResource : TSearchanalyticsResource;
+
+begin
+  Result:=CreateSearchanalyticsResource(Self);
+end;
+
+
+Function TWebmastersAPI.CreateSearchanalyticsResource(AOwner : TComponent) : TSearchanalyticsResource;
+
+begin
+  Result:=TSearchanalyticsResource.Create(AOwner);
+  Result.API:=Self.API;
+end;
+
+
+
 Function TWebmastersAPI.GetSitemapsInstance : TSitemapsResource;
 
 begin

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