google-api-client 0.13.2 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +149 -0
  3. data/bin/generate-api +6 -2
  4. data/generated/google/apis/acceleratedmobilepageurl_v1.rb +3 -3
  5. data/generated/google/apis/acceleratedmobilepageurl_v1/classes.rb +46 -46
  6. data/generated/google/apis/acceleratedmobilepageurl_v1/representations.rb +15 -15
  7. data/generated/google/apis/acceleratedmobilepageurl_v1/service.rb +6 -6
  8. data/generated/google/apis/adexchangebuyer2_v2beta1.rb +2 -2
  9. data/generated/google/apis/adexchangebuyer2_v2beta1/classes.rb +1394 -1394
  10. data/generated/google/apis/adexchangebuyer2_v2beta1/representations.rb +322 -322
  11. data/generated/google/apis/adexchangebuyer2_v2beta1/service.rb +449 -449
  12. data/generated/google/apis/adexchangebuyer_v1_2.rb +35 -0
  13. data/generated/google/apis/adexchangebuyer_v1_2/classes.rb +457 -0
  14. data/generated/google/apis/adexchangebuyer_v1_2/representations.rb +189 -0
  15. data/generated/google/apis/adexchangebuyer_v1_2/service.rb +329 -0
  16. data/generated/google/apis/adexchangebuyer_v1_3.rb +35 -0
  17. data/generated/google/apis/adexchangebuyer_v1_3/classes.rb +1347 -0
  18. data/generated/google/apis/adexchangebuyer_v1_3/representations.rb +498 -0
  19. data/generated/google/apis/adexchangebuyer_v1_3/service.rb +873 -0
  20. data/generated/google/apis/adexchangebuyer_v1_4.rb +1 -1
  21. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +1 -1
  22. data/generated/google/apis/adexchangeseller_v1.rb +37 -0
  23. data/generated/google/apis/adexchangeseller_v1/classes.rb +557 -0
  24. data/generated/google/apis/adexchangeseller_v1/representations.rb +248 -0
  25. data/generated/google/apis/adexchangeseller_v1/service.rb +568 -0
  26. data/generated/google/apis/adexchangeseller_v1_1.rb +37 -0
  27. data/generated/google/apis/adexchangeseller_v1_1/classes.rb +842 -0
  28. data/generated/google/apis/adexchangeseller_v1_1/representations.rb +364 -0
  29. data/generated/google/apis/adexchangeseller_v1_1/service.rb +771 -0
  30. data/generated/google/apis/adexperiencereport_v1.rb +35 -0
  31. data/generated/google/apis/adexperiencereport_v1/classes.rb +138 -0
  32. data/generated/google/apis/adexperiencereport_v1/representations.rb +77 -0
  33. data/generated/google/apis/adexperiencereport_v1/service.rb +123 -0
  34. data/generated/google/apis/admin_directory_v1.rb +1 -1
  35. data/generated/google/apis/admin_directory_v1/classes.rb +60 -0
  36. data/generated/google/apis/admin_directory_v1/representations.rb +29 -0
  37. data/generated/google/apis/admin_directory_v1/service.rb +39 -0
  38. data/generated/google/apis/adsense_v1_4.rb +1 -1
  39. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  40. data/generated/google/apis/analytics_v2_4.rb +37 -0
  41. data/generated/google/apis/analytics_v2_4/classes.rb +26 -0
  42. data/generated/google/apis/analytics_v2_4/representations.rb +26 -0
  43. data/generated/google/apis/analytics_v2_4/service.rb +345 -0
  44. data/generated/google/apis/analytics_v3.rb +1 -1
  45. data/generated/google/apis/analytics_v3/classes.rb +15 -2
  46. data/generated/google/apis/analytics_v3/representations.rb +3 -0
  47. data/generated/google/apis/analyticsreporting_v4.rb +4 -4
  48. data/generated/google/apis/analyticsreporting_v4/classes.rb +891 -891
  49. data/generated/google/apis/analyticsreporting_v4/representations.rb +189 -189
  50. data/generated/google/apis/androiddeviceprovisioning_v1.rb +32 -0
  51. data/generated/google/apis/androiddeviceprovisioning_v1/classes.rb +917 -0
  52. data/generated/google/apis/androiddeviceprovisioning_v1/representations.rb +447 -0
  53. data/generated/google/apis/androiddeviceprovisioning_v1/service.rb +419 -0
  54. data/generated/google/apis/androidenterprise_v1.rb +1 -1
  55. data/generated/google/apis/androidenterprise_v1/classes.rb +31 -0
  56. data/generated/google/apis/androidenterprise_v1/representations.rb +14 -0
  57. data/generated/google/apis/androidenterprise_v1/service.rb +76 -0
  58. data/generated/google/apis/androidmanagement_v1.rb +35 -0
  59. data/generated/google/apis/androidmanagement_v1/classes.rb +2039 -0
  60. data/generated/google/apis/androidmanagement_v1/representations.rb +702 -0
  61. data/generated/google/apis/androidmanagement_v1/service.rb +796 -0
  62. data/generated/google/apis/androidpublisher_v1.rb +34 -0
  63. data/generated/google/apis/androidpublisher_v1/classes.rb +67 -0
  64. data/generated/google/apis/androidpublisher_v1/representations.rb +42 -0
  65. data/generated/google/apis/androidpublisher_v1/service.rb +150 -0
  66. data/generated/google/apis/androidpublisher_v1_1.rb +34 -0
  67. data/generated/google/apis/androidpublisher_v1_1/classes.rb +123 -0
  68. data/generated/google/apis/androidpublisher_v1_1/representations.rb +60 -0
  69. data/generated/google/apis/androidpublisher_v1_1/service.rb +192 -0
  70. data/generated/google/apis/androidpublisher_v2.rb +1 -1
  71. data/generated/google/apis/androidpublisher_v2/classes.rb +21 -0
  72. data/generated/google/apis/androidpublisher_v2/representations.rb +3 -0
  73. data/generated/google/apis/androidpublisher_v2/service.rb +6 -2
  74. data/generated/google/apis/appengine_v1.rb +4 -4
  75. data/generated/google/apis/appengine_v1/classes.rb +1519 -1474
  76. data/generated/google/apis/appengine_v1/representations.rb +351 -335
  77. data/generated/google/apis/appengine_v1/service.rb +255 -239
  78. data/generated/google/apis/appengine_v1alpha.rb +41 -0
  79. data/generated/google/apis/appengine_v1alpha/classes.rb +987 -0
  80. data/generated/google/apis/appengine_v1alpha/representations.rb +397 -0
  81. data/generated/google/apis/appengine_v1alpha/service.rb +631 -0
  82. data/generated/google/apis/appengine_v1beta.rb +41 -0
  83. data/generated/google/apis/appengine_v1beta/classes.rb +2876 -0
  84. data/generated/google/apis/appengine_v1beta/representations.rb +1138 -0
  85. data/generated/google/apis/appengine_v1beta/service.rb +1546 -0
  86. data/generated/google/apis/appengine_v1beta4.rb +41 -0
  87. data/generated/google/apis/appengine_v1beta4/classes.rb +2170 -0
  88. data/generated/google/apis/appengine_v1beta4/representations.rb +824 -0
  89. data/generated/google/apis/appengine_v1beta4/service.rb +876 -0
  90. data/generated/google/apis/appengine_v1beta5.rb +41 -0
  91. data/generated/google/apis/appengine_v1beta5/classes.rb +2168 -0
  92. data/generated/google/apis/appengine_v1beta5/representations.rb +822 -0
  93. data/generated/google/apis/appengine_v1beta5/service.rb +877 -0
  94. data/generated/google/apis/appsactivity_v1.rb +1 -1
  95. data/generated/google/apis/appstate_v1.rb +1 -1
  96. data/generated/google/apis/bigquery_v2.rb +1 -1
  97. data/generated/google/apis/bigquery_v2/classes.rb +106 -18
  98. data/generated/google/apis/bigquery_v2/representations.rb +15 -0
  99. data/generated/google/apis/bigquerydatatransfer_v1.rb +41 -0
  100. data/generated/google/apis/bigquerydatatransfer_v1/classes.rb +886 -0
  101. data/generated/google/apis/bigquerydatatransfer_v1/representations.rb +343 -0
  102. data/generated/google/apis/bigquerydatatransfer_v1/service.rb +1317 -0
  103. data/generated/google/apis/blogger_v2.rb +34 -0
  104. data/generated/google/apis/blogger_v2/classes.rb +947 -0
  105. data/generated/google/apis/blogger_v2/representations.rb +465 -0
  106. data/generated/google/apis/blogger_v2/service.rb +424 -0
  107. data/generated/google/apis/calendar_v3.rb +1 -1
  108. data/generated/google/apis/calendar_v3/classes.rb +4 -207
  109. data/generated/google/apis/calendar_v3/representations.rb +0 -97
  110. data/generated/google/apis/calendar_v3/service.rb +8 -4
  111. data/generated/google/apis/classroom_v1.rb +27 -27
  112. data/generated/google/apis/classroom_v1/classes.rb +1037 -926
  113. data/generated/google/apis/classroom_v1/representations.rb +294 -244
  114. data/generated/google/apis/classroom_v1/service.rb +1114 -1109
  115. data/generated/google/apis/cloudbilling_v1.rb +1 -1
  116. data/generated/google/apis/cloudbilling_v1/classes.rb +473 -56
  117. data/generated/google/apis/cloudbilling_v1/representations.rb +176 -10
  118. data/generated/google/apis/cloudbilling_v1/service.rb +182 -89
  119. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  120. data/generated/google/apis/cloudbuild_v1/classes.rb +666 -625
  121. data/generated/google/apis/cloudbuild_v1/representations.rb +132 -116
  122. data/generated/google/apis/cloudbuild_v1/service.rb +158 -158
  123. data/generated/google/apis/clouddebugger_v2.rb +4 -4
  124. data/generated/google/apis/clouddebugger_v2/classes.rb +637 -639
  125. data/generated/google/apis/clouddebugger_v2/representations.rb +139 -139
  126. data/generated/google/apis/clouddebugger_v2/service.rb +157 -157
  127. data/generated/google/apis/clouderrorreporting_v1beta1.rb +1 -1
  128. data/generated/google/apis/clouderrorreporting_v1beta1/classes.rb +310 -310
  129. data/generated/google/apis/clouderrorreporting_v1beta1/representations.rb +77 -77
  130. data/generated/google/apis/clouderrorreporting_v1beta1/service.rb +144 -144
  131. data/generated/google/apis/cloudfunctions_v1.rb +4 -1
  132. data/generated/google/apis/cloudfunctions_v1/classes.rb +265 -6
  133. data/generated/google/apis/cloudfunctions_v1/representations.rb +80 -1
  134. data/generated/google/apis/cloudfunctions_v1/service.rb +118 -0
  135. data/generated/google/apis/cloudfunctions_v1beta2.rb +35 -0
  136. data/generated/google/apis/cloudfunctions_v1beta2/classes.rb +678 -0
  137. data/generated/google/apis/cloudfunctions_v1beta2/representations.rb +264 -0
  138. data/generated/google/apis/cloudfunctions_v1beta2/service.rb +385 -0
  139. data/generated/google/apis/cloudkms_v1.rb +1 -1
  140. data/generated/google/apis/cloudkms_v1/classes.rb +652 -622
  141. data/generated/google/apis/cloudkms_v1/representations.rb +138 -137
  142. data/generated/google/apis/cloudkms_v1/service.rb +320 -320
  143. data/generated/google/apis/cloudmonitoring_v2beta2.rb +1 -1
  144. data/generated/google/apis/cloudresourcemanager_v1.rb +4 -4
  145. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +1129 -1129
  146. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +188 -188
  147. data/generated/google/apis/cloudresourcemanager_v1/service.rb +609 -609
  148. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  149. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +404 -404
  150. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +83 -83
  151. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +328 -328
  152. data/generated/google/apis/cloudresourcemanager_v2beta1.rb +38 -0
  153. data/generated/google/apis/cloudresourcemanager_v2beta1/classes.rb +819 -0
  154. data/generated/google/apis/cloudresourcemanager_v2beta1/representations.rb +304 -0
  155. data/generated/google/apis/cloudresourcemanager_v2beta1/service.rb +528 -0
  156. data/generated/google/apis/cloudtrace_v1.rb +5 -5
  157. data/generated/google/apis/cloudtrace_v1/classes.rb +67 -67
  158. data/generated/google/apis/cloudtrace_v1/representations.rb +21 -21
  159. data/generated/google/apis/cloudtrace_v1/service.rb +36 -36
  160. data/generated/google/apis/cloudtrace_v2.rb +43 -0
  161. data/generated/google/apis/cloudtrace_v2/classes.rb +797 -0
  162. data/generated/google/apis/cloudtrace_v2/representations.rb +353 -0
  163. data/generated/google/apis/cloudtrace_v2/service.rb +238 -0
  164. data/generated/google/apis/clouduseraccounts_alpha.rb +44 -0
  165. data/generated/google/apis/clouduseraccounts_alpha/classes.rb +1188 -0
  166. data/generated/google/apis/clouduseraccounts_alpha/representations.rb +494 -0
  167. data/generated/google/apis/clouduseraccounts_alpha/service.rb +1152 -0
  168. data/generated/google/apis/clouduseraccounts_vm_alpha.rb +44 -0
  169. data/generated/google/apis/clouduseraccounts_vm_alpha/classes.rb +1188 -0
  170. data/generated/google/apis/clouduseraccounts_vm_alpha/representations.rb +494 -0
  171. data/generated/google/apis/clouduseraccounts_vm_alpha/service.rb +1152 -0
  172. data/generated/google/apis/clouduseraccounts_vm_beta.rb +44 -0
  173. data/generated/google/apis/clouduseraccounts_vm_beta/classes.rb +845 -0
  174. data/generated/google/apis/clouduseraccounts_vm_beta/representations.rb +352 -0
  175. data/generated/google/apis/clouduseraccounts_vm_beta/service.rb +908 -0
  176. data/generated/google/apis/compute_alpha.rb +49 -0
  177. data/generated/google/apis/compute_alpha/classes.rb +23796 -0
  178. data/generated/google/apis/compute_alpha/representations.rb +9391 -0
  179. data/generated/google/apis/compute_alpha/service.rb +24188 -0
  180. data/generated/google/apis/compute_beta.rb +1 -1
  181. data/generated/google/apis/compute_beta/classes.rb +1597 -235
  182. data/generated/google/apis/compute_beta/representations.rb +477 -0
  183. data/generated/google/apis/compute_beta/service.rb +2875 -1677
  184. data/generated/google/apis/compute_v1.rb +1 -1
  185. data/generated/google/apis/compute_v1/classes.rb +319 -197
  186. data/generated/google/apis/compute_v1/representations.rb +51 -0
  187. data/generated/google/apis/compute_v1/service.rb +2057 -172
  188. data/generated/google/apis/consumersurveys_v2.rb +40 -0
  189. data/generated/google/apis/consumersurveys_v2/classes.rb +736 -0
  190. data/generated/google/apis/consumersurveys_v2/representations.rb +343 -0
  191. data/generated/google/apis/consumersurveys_v2/service.rb +478 -0
  192. data/generated/google/apis/container_v1.rb +1 -1
  193. data/generated/google/apis/container_v1/classes.rb +1072 -936
  194. data/generated/google/apis/container_v1/representations.rb +266 -202
  195. data/generated/google/apis/container_v1/service.rb +243 -243
  196. data/generated/google/apis/container_v1beta1.rb +35 -0
  197. data/generated/google/apis/container_v1beta1/classes.rb +1900 -0
  198. data/generated/google/apis/container_v1beta1/representations.rb +662 -0
  199. data/generated/google/apis/container_v1beta1/service.rb +1875 -0
  200. data/generated/google/apis/content_v2.rb +1 -1
  201. data/generated/google/apis/content_v2/classes.rb +72 -3
  202. data/generated/google/apis/content_v2/representations.rb +23 -0
  203. data/generated/google/apis/content_v2/service.rb +23 -18
  204. data/generated/google/apis/content_v2sandbox.rb +35 -0
  205. data/generated/google/apis/content_v2sandbox/classes.rb +2406 -0
  206. data/generated/google/apis/content_v2sandbox/representations.rb +1042 -0
  207. data/generated/google/apis/content_v2sandbox/service.rb +709 -0
  208. data/generated/google/apis/dataflow_v1b3.rb +5 -5
  209. data/generated/google/apis/dataflow_v1b3/classes.rb +3341 -3341
  210. data/generated/google/apis/dataflow_v1b3/representations.rb +807 -807
  211. data/generated/google/apis/dataflow_v1b3/service.rb +492 -444
  212. data/generated/google/apis/dataproc_v1.rb +1 -1
  213. data/generated/google/apis/dataproc_v1/classes.rb +1101 -1101
  214. data/generated/google/apis/dataproc_v1/representations.rb +227 -227
  215. data/generated/google/apis/dataproc_v1/service.rb +254 -254
  216. data/generated/google/apis/dataproc_v1beta2.rb +34 -0
  217. data/generated/google/apis/dataproc_v1beta2/classes.rb +1756 -0
  218. data/generated/google/apis/dataproc_v1beta2/representations.rb +675 -0
  219. data/generated/google/apis/dataproc_v1beta2/service.rb +739 -0
  220. data/generated/google/apis/datastore_v1.rb +4 -4
  221. data/generated/google/apis/datastore_v1/classes.rb +1311 -773
  222. data/generated/google/apis/datastore_v1/representations.rb +351 -148
  223. data/generated/google/apis/datastore_v1/service.rb +206 -55
  224. data/generated/google/apis/datastore_v1beta3.rb +38 -0
  225. data/generated/google/apis/datastore_v1beta3/classes.rb +1621 -0
  226. data/generated/google/apis/datastore_v1beta3/representations.rb +715 -0
  227. data/generated/google/apis/datastore_v1beta3/service.rb +260 -0
  228. data/generated/google/apis/deploymentmanager_alpha.rb +44 -0
  229. data/generated/google/apis/deploymentmanager_alpha/classes.rb +2422 -0
  230. data/generated/google/apis/deploymentmanager_alpha/representations.rb +1054 -0
  231. data/generated/google/apis/deploymentmanager_alpha/service.rb +1883 -0
  232. data/generated/google/apis/deploymentmanager_v2.rb +1 -1
  233. data/generated/google/apis/deploymentmanager_v2/classes.rb +81 -2
  234. data/generated/google/apis/deploymentmanager_v2/representations.rb +30 -0
  235. data/generated/google/apis/deploymentmanager_v2beta.rb +44 -0
  236. data/generated/google/apis/deploymentmanager_v2beta/classes.rb +2426 -0
  237. data/generated/google/apis/deploymentmanager_v2beta/representations.rb +1054 -0
  238. data/generated/google/apis/deploymentmanager_v2beta/service.rb +1687 -0
  239. data/generated/google/apis/dfareporting_v2_7.rb +1 -1
  240. data/generated/google/apis/dfareporting_v2_7/classes.rb +9 -26
  241. data/generated/google/apis/dfareporting_v2_7/service.rb +1 -0
  242. data/generated/google/apis/dfareporting_v2_8.rb +1 -1
  243. data/generated/google/apis/dfareporting_v2_8/classes.rb +26 -34
  244. data/generated/google/apis/dfareporting_v2_8/representations.rb +1 -0
  245. data/generated/google/apis/dfareporting_v2_8/service.rb +1 -0
  246. data/generated/google/apis/dlp_v2beta1.rb +36 -0
  247. data/generated/google/apis/dlp_v2beta1/classes.rb +1735 -0
  248. data/generated/google/apis/dlp_v2beta1/representations.rb +879 -0
  249. data/generated/google/apis/dlp_v2beta1/service.rb +406 -0
  250. data/generated/google/apis/dns_v1.rb +1 -1
  251. data/generated/google/apis/dns_v2beta1.rb +1 -1
  252. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  253. data/generated/google/apis/drive_v2.rb +1 -1
  254. data/generated/google/apis/drive_v3.rb +1 -1
  255. data/generated/google/apis/firebasedynamiclinks_v1.rb +1 -1
  256. data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +267 -261
  257. data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +73 -72
  258. data/generated/google/apis/firebasedynamiclinks_v1/service.rb +1 -1
  259. data/generated/google/apis/firebaserules_v1.rb +1 -1
  260. data/generated/google/apis/firebaserules_v1/classes.rb +283 -283
  261. data/generated/google/apis/firebaserules_v1/representations.rb +75 -75
  262. data/generated/google/apis/firebaserules_v1/service.rb +113 -113
  263. data/generated/google/apis/fitness_v1.rb +1 -1
  264. data/generated/google/apis/fitness_v1/classes.rb +1 -1
  265. data/generated/google/apis/fusiontables_v1.rb +37 -0
  266. data/generated/google/apis/fusiontables_v1/classes.rb +977 -0
  267. data/generated/google/apis/fusiontables_v1/representations.rb +449 -0
  268. data/generated/google/apis/fusiontables_v1/service.rb +1373 -0
  269. data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
  270. data/generated/google/apis/games_management_v1management.rb +1 -1
  271. data/generated/google/apis/games_v1.rb +1 -1
  272. data/generated/google/apis/genomics_v1.rb +8 -8
  273. data/generated/google/apis/genomics_v1/classes.rb +2288 -2288
  274. data/generated/google/apis/genomics_v1/representations.rb +482 -482
  275. data/generated/google/apis/genomics_v1/service.rb +966 -966
  276. data/generated/google/apis/genomics_v1alpha2.rb +40 -0
  277. data/generated/google/apis/genomics_v1alpha2/classes.rb +1207 -0
  278. data/generated/google/apis/genomics_v1alpha2/representations.rb +449 -0
  279. data/generated/google/apis/genomics_v1alpha2/service.rb +426 -0
  280. data/generated/google/apis/gmail_v1.rb +1 -1
  281. data/generated/google/apis/iam_v1.rb +1 -1
  282. data/generated/google/apis/iam_v1/classes.rb +664 -395
  283. data/generated/google/apis/iam_v1/representations.rb +194 -81
  284. data/generated/google/apis/iam_v1/service.rb +657 -92
  285. data/generated/google/apis/identitytoolkit_v3.rb +1 -1
  286. data/generated/google/apis/kgsearch_v1/classes.rb +7 -7
  287. data/generated/google/apis/kgsearch_v1/representations.rb +1 -1
  288. data/generated/google/apis/kgsearch_v1/service.rb +8 -8
  289. data/generated/google/apis/language_v1.rb +4 -1
  290. data/generated/google/apis/language_v1/classes.rb +393 -393
  291. data/generated/google/apis/language_v1/representations.rb +95 -95
  292. data/generated/google/apis/language_v1/service.rb +42 -42
  293. data/generated/google/apis/language_v1beta1.rb +4 -1
  294. data/generated/google/apis/language_v1beta1/classes.rb +457 -457
  295. data/generated/google/apis/language_v1beta1/representations.rb +114 -114
  296. data/generated/google/apis/language_v1beta1/service.rb +48 -48
  297. data/generated/google/apis/language_v1beta2.rb +39 -0
  298. data/generated/google/apis/language_v1beta2/classes.rb +824 -0
  299. data/generated/google/apis/language_v1beta2/representations.rb +373 -0
  300. data/generated/google/apis/language_v1beta2/service.rb +217 -0
  301. data/generated/google/apis/logging_v2.rb +9 -9
  302. data/generated/google/apis/logging_v2/classes.rb +840 -834
  303. data/generated/google/apis/logging_v2/representations.rb +168 -167
  304. data/generated/google/apis/logging_v2/service.rb +667 -463
  305. data/generated/google/apis/logging_v2beta1.rb +9 -9
  306. data/generated/google/apis/logging_v2beta1/classes.rb +856 -850
  307. data/generated/google/apis/logging_v2beta1/representations.rb +169 -168
  308. data/generated/google/apis/logging_v2beta1/service.rb +253 -255
  309. data/generated/google/apis/manufacturers_v1.rb +1 -1
  310. data/generated/google/apis/manufacturers_v1/classes.rb +396 -389
  311. data/generated/google/apis/manufacturers_v1/representations.rb +92 -91
  312. data/generated/google/apis/manufacturers_v1/service.rb +8 -7
  313. data/generated/google/apis/ml_v1.rb +1 -1
  314. data/generated/google/apis/ml_v1/classes.rb +1487 -1676
  315. data/generated/google/apis/ml_v1/representations.rb +229 -299
  316. data/generated/google/apis/ml_v1/service.rb +359 -253
  317. data/generated/google/apis/ml_v1beta1.rb +34 -0
  318. data/generated/google/apis/ml_v1beta1/classes.rb +2396 -0
  319. data/generated/google/apis/ml_v1beta1/representations.rb +755 -0
  320. data/generated/google/apis/ml_v1beta1/service.rb +975 -0
  321. data/generated/google/apis/monitoring_v3.rb +6 -6
  322. data/generated/google/apis/monitoring_v3/classes.rb +834 -834
  323. data/generated/google/apis/monitoring_v3/representations.rb +168 -168
  324. data/generated/google/apis/monitoring_v3/service.rb +330 -330
  325. data/generated/google/apis/mybusiness_v3/classes.rb +1181 -1181
  326. data/generated/google/apis/mybusiness_v3/representations.rb +242 -242
  327. data/generated/google/apis/mybusiness_v3/service.rb +241 -241
  328. data/generated/google/apis/oauth2_v1.rb +43 -0
  329. data/generated/google/apis/oauth2_v1/classes.rb +321 -0
  330. data/generated/google/apis/oauth2_v1/representations.rb +135 -0
  331. data/generated/google/apis/oauth2_v1/service.rb +337 -0
  332. data/generated/google/apis/oauth2_v2.rb +1 -1
  333. data/generated/google/apis/oslogin_v1alpha.rb +37 -0
  334. data/generated/google/apis/oslogin_v1alpha/classes.rb +200 -0
  335. data/generated/google/apis/oslogin_v1alpha/representations.rb +105 -0
  336. data/generated/google/apis/oslogin_v1alpha/service.rb +228 -0
  337. data/generated/google/apis/pagespeedonline_v1.rb +32 -0
  338. data/generated/google/apis/pagespeedonline_v1/classes.rb +536 -0
  339. data/generated/google/apis/pagespeedonline_v1/representations.rb +257 -0
  340. data/generated/google/apis/pagespeedonline_v1/service.rb +120 -0
  341. data/generated/google/apis/partners_v2.rb +1 -1
  342. data/generated/google/apis/partners_v2/classes.rb +1512 -1512
  343. data/generated/google/apis/partners_v2/representations.rb +368 -368
  344. data/generated/google/apis/partners_v2/service.rb +596 -596
  345. data/generated/google/apis/people_v1.rb +15 -15
  346. data/generated/google/apis/people_v1/classes.rb +1384 -1383
  347. data/generated/google/apis/people_v1/representations.rb +311 -311
  348. data/generated/google/apis/people_v1/service.rb +208 -202
  349. data/generated/google/apis/playcustomapp_v1.rb +34 -0
  350. data/generated/google/apis/playcustomapp_v1/classes.rb +51 -0
  351. data/generated/google/apis/playcustomapp_v1/representations.rb +40 -0
  352. data/generated/google/apis/playcustomapp_v1/service.rb +114 -0
  353. data/generated/google/apis/playmoviespartner_v1.rb +34 -0
  354. data/generated/google/apis/playmoviespartner_v1/classes.rb +782 -0
  355. data/generated/google/apis/playmoviespartner_v1/representations.rb +191 -0
  356. data/generated/google/apis/playmoviespartner_v1/service.rb +354 -0
  357. data/generated/google/apis/plus_domains_v1.rb +1 -1
  358. data/generated/google/apis/plus_v1.rb +1 -1
  359. data/generated/google/apis/prediction_v1_2.rb +44 -0
  360. data/generated/google/apis/prediction_v1_2/classes.rb +237 -0
  361. data/generated/google/apis/prediction_v1_2/representations.rb +133 -0
  362. data/generated/google/apis/prediction_v1_2/service.rb +287 -0
  363. data/generated/google/apis/prediction_v1_3.rb +44 -0
  364. data/generated/google/apis/prediction_v1_3/classes.rb +286 -0
  365. data/generated/google/apis/prediction_v1_3/representations.rb +139 -0
  366. data/generated/google/apis/prediction_v1_3/service.rb +284 -0
  367. data/generated/google/apis/prediction_v1_4.rb +44 -0
  368. data/generated/google/apis/prediction_v1_4/classes.rb +336 -0
  369. data/generated/google/apis/prediction_v1_4/representations.rb +158 -0
  370. data/generated/google/apis/prediction_v1_4/service.rb +284 -0
  371. data/generated/google/apis/prediction_v1_5.rb +44 -0
  372. data/generated/google/apis/prediction_v1_5/classes.rb +708 -0
  373. data/generated/google/apis/prediction_v1_5/representations.rb +352 -0
  374. data/generated/google/apis/prediction_v1_5/service.rb +357 -0
  375. data/generated/google/apis/proximitybeacon_v1beta1.rb +1 -1
  376. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +539 -539
  377. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +105 -105
  378. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +312 -312
  379. data/generated/google/apis/pubsub_v1.rb +4 -4
  380. data/generated/google/apis/pubsub_v1/classes.rb +352 -352
  381. data/generated/google/apis/pubsub_v1/representations.rb +77 -77
  382. data/generated/google/apis/pubsub_v1/service.rb +346 -346
  383. data/generated/google/apis/pubsub_v1beta1a.rb +37 -0
  384. data/generated/google/apis/pubsub_v1beta1a/classes.rb +605 -0
  385. data/generated/google/apis/pubsub_v1beta1a/representations.rb +306 -0
  386. data/generated/google/apis/pubsub_v1beta1a/service.rb +549 -0
  387. data/generated/google/apis/pubsub_v1beta2.rb +37 -0
  388. data/generated/google/apis/pubsub_v1beta2/classes.rb +679 -0
  389. data/generated/google/apis/pubsub_v1beta2/representations.rb +324 -0
  390. data/generated/google/apis/pubsub_v1beta2/service.rb +779 -0
  391. data/generated/google/apis/replicapool_v1beta1.rb +50 -0
  392. data/generated/google/apis/replicapool_v1beta1/classes.rb +918 -0
  393. data/generated/google/apis/replicapool_v1beta1/representations.rb +409 -0
  394. data/generated/google/apis/replicapool_v1beta1/service.rb +511 -0
  395. data/generated/google/apis/resourceviews_v1beta1.rb +50 -0
  396. data/generated/google/apis/resourceviews_v1beta1/classes.rb +338 -0
  397. data/generated/google/apis/resourceviews_v1beta1/representations.rb +201 -0
  398. data/generated/google/apis/resourceviews_v1beta1/service.rb +667 -0
  399. data/generated/google/apis/runtimeconfig_v1.rb +4 -4
  400. data/generated/google/apis/runtimeconfig_v1/classes.rb +118 -118
  401. data/generated/google/apis/runtimeconfig_v1/representations.rb +18 -18
  402. data/generated/google/apis/runtimeconfig_v1/service.rb +21 -21
  403. data/generated/google/apis/runtimeconfig_v1beta1.rb +40 -0
  404. data/generated/google/apis/runtimeconfig_v1beta1/classes.rb +805 -0
  405. data/generated/google/apis/runtimeconfig_v1beta1/representations.rb +280 -0
  406. data/generated/google/apis/runtimeconfig_v1beta1/service.rb +903 -0
  407. data/generated/google/apis/safebrowsing_v4.rb +32 -0
  408. data/generated/google/apis/safebrowsing_v4/classes.rb +771 -0
  409. data/generated/google/apis/safebrowsing_v4/representations.rb +379 -0
  410. data/generated/google/apis/safebrowsing_v4/service.rb +252 -0
  411. data/generated/google/apis/script_v1.rb +19 -19
  412. data/generated/google/apis/script_v1/classes.rb +99 -157
  413. data/generated/google/apis/script_v1/representations.rb +17 -47
  414. data/generated/google/apis/script_v1/service.rb +12 -12
  415. data/generated/google/apis/searchconsole_v1.rb +1 -1
  416. data/generated/google/apis/searchconsole_v1/classes.rb +84 -84
  417. data/generated/google/apis/searchconsole_v1/representations.rb +32 -32
  418. data/generated/google/apis/servicecontrol_v1.rb +4 -4
  419. data/generated/google/apis/servicecontrol_v1/classes.rb +1086 -1042
  420. data/generated/google/apis/servicecontrol_v1/representations.rb +216 -200
  421. data/generated/google/apis/servicecontrol_v1/service.rb +120 -114
  422. data/generated/google/apis/servicemanagement_v1.rb +7 -7
  423. data/generated/google/apis/servicemanagement_v1/classes.rb +3375 -3383
  424. data/generated/google/apis/servicemanagement_v1/representations.rb +551 -552
  425. data/generated/google/apis/servicemanagement_v1/service.rb +386 -386
  426. data/generated/google/apis/serviceuser_v1.rb +5 -5
  427. data/generated/google/apis/serviceuser_v1/classes.rb +2667 -2598
  428. data/generated/google/apis/serviceuser_v1/representations.rb +406 -389
  429. data/generated/google/apis/serviceuser_v1/service.rb +43 -43
  430. data/generated/google/apis/sheets_v4.rb +7 -7
  431. data/generated/google/apis/sheets_v4/classes.rb +5031 -5024
  432. data/generated/google/apis/sheets_v4/representations.rb +931 -930
  433. data/generated/google/apis/sheets_v4/service.rb +244 -244
  434. data/generated/google/apis/slides_v1.rb +10 -10
  435. data/generated/google/apis/slides_v1/classes.rb +2915 -2915
  436. data/generated/google/apis/slides_v1/representations.rb +698 -698
  437. data/generated/google/apis/slides_v1/service.rb +35 -35
  438. data/generated/google/apis/sourcerepo_v1.rb +3 -3
  439. data/generated/google/apis/sourcerepo_v1/classes.rb +313 -313
  440. data/generated/google/apis/sourcerepo_v1/representations.rb +77 -77
  441. data/generated/google/apis/sourcerepo_v1/service.rb +102 -102
  442. data/generated/google/apis/spanner_v1.rb +4 -4
  443. data/generated/google/apis/spanner_v1/classes.rb +2304 -2251
  444. data/generated/google/apis/spanner_v1/representations.rb +338 -323
  445. data/generated/google/apis/spanner_v1/service.rb +689 -689
  446. data/generated/google/apis/spectrum_v1explorer.rb +31 -0
  447. data/generated/google/apis/spectrum_v1explorer/classes.rb +1612 -0
  448. data/generated/google/apis/spectrum_v1explorer/representations.rb +611 -0
  449. data/generated/google/apis/spectrum_v1explorer/service.rb +285 -0
  450. data/generated/google/apis/speech_v1.rb +34 -0
  451. data/generated/google/apis/speech_v1/classes.rb +572 -0
  452. data/generated/google/apis/speech_v1/representations.rb +236 -0
  453. data/generated/google/apis/speech_v1/service.rb +277 -0
  454. data/generated/google/apis/speech_v1beta1.rb +1 -1
  455. data/generated/google/apis/speech_v1beta1/classes.rb +312 -312
  456. data/generated/google/apis/speech_v1beta1/representations.rb +48 -48
  457. data/generated/google/apis/speech_v1beta1/service.rb +46 -46
  458. data/generated/google/apis/sqladmin_v1beta3.rb +38 -0
  459. data/generated/google/apis/sqladmin_v1beta3/classes.rb +1615 -0
  460. data/generated/google/apis/sqladmin_v1beta3/representations.rb +731 -0
  461. data/generated/google/apis/sqladmin_v1beta3/service.rb +1045 -0
  462. data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
  463. data/generated/google/apis/sqladmin_v1beta4/classes.rb +15 -7
  464. data/generated/google/apis/sqladmin_v1beta4/representations.rb +1 -0
  465. data/generated/google/apis/storage_v1.rb +1 -1
  466. data/generated/google/apis/storage_v1/classes.rb +7 -6
  467. data/generated/google/apis/storage_v1/service.rb +51 -29
  468. data/generated/google/apis/storage_v1beta1.rb +40 -0
  469. data/generated/google/apis/storage_v1beta1/classes.rb +616 -0
  470. data/generated/google/apis/storage_v1beta1/representations.rb +249 -0
  471. data/generated/google/apis/storage_v1beta1/service.rb +1082 -0
  472. data/generated/google/apis/storage_v1beta2.rb +40 -0
  473. data/generated/google/apis/storage_v1beta2/classes.rb +1048 -0
  474. data/generated/google/apis/storage_v1beta2/representations.rb +425 -0
  475. data/generated/google/apis/storage_v1beta2/service.rb +1736 -0
  476. data/generated/google/apis/storagetransfer_v1.rb +1 -1
  477. data/generated/google/apis/storagetransfer_v1/classes.rb +556 -556
  478. data/generated/google/apis/storagetransfer_v1/representations.rb +139 -139
  479. data/generated/google/apis/storagetransfer_v1/service.rb +148 -148
  480. data/generated/google/apis/streetviewpublish_v1.rb +36 -0
  481. data/generated/google/apis/streetviewpublish_v1/classes.rb +705 -0
  482. data/generated/google/apis/streetviewpublish_v1/representations.rb +296 -0
  483. data/generated/google/apis/streetviewpublish_v1/service.rb +485 -0
  484. data/generated/google/apis/taskqueue_v1beta1.rb +37 -0
  485. data/generated/google/apis/taskqueue_v1beta1/classes.rb +242 -0
  486. data/generated/google/apis/taskqueue_v1beta1/representations.rb +124 -0
  487. data/generated/google/apis/taskqueue_v1beta1/service.rb +269 -0
  488. data/generated/google/apis/toolresults_v1beta3.rb +1 -1
  489. data/generated/google/apis/toolresults_v1beta3/classes.rb +382 -4
  490. data/generated/google/apis/toolresults_v1beta3/representations.rb +139 -0
  491. data/generated/google/apis/toolresults_v1beta3/service.rb +50 -0
  492. data/generated/google/apis/toolresults_v1beta3firstparty.rb +31 -0
  493. data/generated/google/apis/toolresults_v1beta3firstparty/classes.rb +2630 -0
  494. data/generated/google/apis/toolresults_v1beta3firstparty/representations.rb +886 -0
  495. data/generated/google/apis/toolresults_v1beta3firstparty/service.rb +1288 -0
  496. data/generated/google/apis/translate_v2/classes.rb +111 -111
  497. data/generated/google/apis/translate_v2/representations.rb +49 -49
  498. data/generated/google/apis/translate_v2/service.rb +94 -94
  499. data/generated/google/apis/vault_v1.rb +31 -0
  500. data/generated/google/apis/vault_v1/classes.rb +554 -0
  501. data/generated/google/apis/vault_v1/representations.rb +318 -0
  502. data/generated/google/apis/vault_v1/service.rb +677 -0
  503. data/generated/google/apis/videointelligence_v1beta1.rb +34 -0
  504. data/generated/google/apis/videointelligence_v1beta1/classes.rb +903 -0
  505. data/generated/google/apis/videointelligence_v1beta1/representations.rb +351 -0
  506. data/generated/google/apis/videointelligence_v1beta1/service.rb +92 -0
  507. data/generated/google/apis/vision_v1.rb +4 -4
  508. data/generated/google/apis/vision_v1/classes.rb +1176 -1178
  509. data/generated/google/apis/vision_v1/representations.rb +235 -235
  510. data/generated/google/apis/webmasters_v3.rb +1 -1
  511. data/generated/google/apis/youtube_analytics_v1.rb +1 -1
  512. data/generated/google/apis/youtube_analytics_v1beta1.rb +46 -0
  513. data/generated/google/apis/youtube_analytics_v1beta1/classes.rb +337 -0
  514. data/generated/google/apis/youtube_analytics_v1beta1/representations.rb +174 -0
  515. data/generated/google/apis/youtube_analytics_v1beta1/service.rb +491 -0
  516. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  517. data/generated/google/apis/youtube_partner_v1/classes.rb +3 -3
  518. data/generated/google/apis/youtube_partner_v1/representations.rb +1 -1
  519. data/generated/google/apis/youtubereporting_v1.rb +4 -4
  520. data/generated/google/apis/youtubereporting_v1/classes.rb +134 -134
  521. data/generated/google/apis/youtubereporting_v1/representations.rb +36 -36
  522. data/generated/google/apis/youtubereporting_v1/service.rb +131 -131
  523. data/lib/google/apis/version.rb +1 -1
  524. metadata +246 -2
@@ -22,6 +22,30 @@ module Google
22
22
  module Apis
23
23
  module ToolresultsV1beta3
24
24
 
25
+ class AndroidAppInfo
26
+ class Representation < Google::Apis::Core::JsonRepresentation; end
27
+
28
+ include Google::Apis::Core::JsonObjectSupport
29
+ end
30
+
31
+ class AndroidInstrumentationTest
32
+ class Representation < Google::Apis::Core::JsonRepresentation; end
33
+
34
+ include Google::Apis::Core::JsonObjectSupport
35
+ end
36
+
37
+ class AndroidRoboTest
38
+ class Representation < Google::Apis::Core::JsonRepresentation; end
39
+
40
+ include Google::Apis::Core::JsonObjectSupport
41
+ end
42
+
43
+ class AndroidTest
44
+ class Representation < Google::Apis::Core::JsonRepresentation; end
45
+
46
+ include Google::Apis::Core::JsonObjectSupport
47
+ end
48
+
25
49
  class Any
26
50
  class Representation < Google::Apis::Core::JsonRepresentation; end
27
51
 
@@ -124,6 +148,12 @@ module Google
124
148
  include Google::Apis::Core::JsonObjectSupport
125
149
  end
126
150
 
151
+ class ListScreenshotClustersResponse
152
+ class Representation < Google::Apis::Core::JsonRepresentation; end
153
+
154
+ include Google::Apis::Core::JsonObjectSupport
155
+ end
156
+
127
157
  class ListStepThumbnailsResponse
128
158
  class Representation < Google::Apis::Core::JsonRepresentation; end
129
159
 
@@ -184,12 +214,30 @@ module Google
184
214
  include Google::Apis::Core::JsonObjectSupport
185
215
  end
186
216
 
217
+ class Screen
218
+ class Representation < Google::Apis::Core::JsonRepresentation; end
219
+
220
+ include Google::Apis::Core::JsonObjectSupport
221
+ end
222
+
223
+ class ScreenshotCluster
224
+ class Representation < Google::Apis::Core::JsonRepresentation; end
225
+
226
+ include Google::Apis::Core::JsonObjectSupport
227
+ end
228
+
187
229
  class SkippedDetail
188
230
  class Representation < Google::Apis::Core::JsonRepresentation; end
189
231
 
190
232
  include Google::Apis::Core::JsonObjectSupport
191
233
  end
192
234
 
235
+ class Specification
236
+ class Representation < Google::Apis::Core::JsonRepresentation; end
237
+
238
+ include Google::Apis::Core::JsonObjectSupport
239
+ end
240
+
193
241
  class StackTrace
194
242
  class Representation < Google::Apis::Core::JsonRepresentation; end
195
243
 
@@ -292,6 +340,51 @@ module Google
292
340
  include Google::Apis::Core::JsonObjectSupport
293
341
  end
294
342
 
343
+ class AndroidAppInfo
344
+ # @private
345
+ class Representation < Google::Apis::Core::JsonRepresentation
346
+ property :name, as: 'name'
347
+ property :package_name, as: 'packageName'
348
+ property :version_code, as: 'versionCode'
349
+ property :version_name, as: 'versionName'
350
+ end
351
+ end
352
+
353
+ class AndroidInstrumentationTest
354
+ # @private
355
+ class Representation < Google::Apis::Core::JsonRepresentation
356
+ property :test_package_id, as: 'testPackageId'
357
+ property :test_runner_class, as: 'testRunnerClass'
358
+ collection :test_targets, as: 'testTargets'
359
+ property :use_orchestrator, as: 'useOrchestrator'
360
+ end
361
+ end
362
+
363
+ class AndroidRoboTest
364
+ # @private
365
+ class Representation < Google::Apis::Core::JsonRepresentation
366
+ property :app_initial_activity, as: 'appInitialActivity'
367
+ property :bootstrap_package_id, as: 'bootstrapPackageId'
368
+ property :bootstrap_runner_class, as: 'bootstrapRunnerClass'
369
+ property :max_depth, as: 'maxDepth'
370
+ property :max_steps, as: 'maxSteps'
371
+ end
372
+ end
373
+
374
+ class AndroidTest
375
+ # @private
376
+ class Representation < Google::Apis::Core::JsonRepresentation
377
+ property :android_app_info, as: 'androidAppInfo', class: Google::Apis::ToolresultsV1beta3::AndroidAppInfo, decorator: Google::Apis::ToolresultsV1beta3::AndroidAppInfo::Representation
378
+
379
+ property :android_instrumentation_test, as: 'androidInstrumentationTest', class: Google::Apis::ToolresultsV1beta3::AndroidInstrumentationTest, decorator: Google::Apis::ToolresultsV1beta3::AndroidInstrumentationTest::Representation
380
+
381
+ property :android_robo_test, as: 'androidRoboTest', class: Google::Apis::ToolresultsV1beta3::AndroidRoboTest, decorator: Google::Apis::ToolresultsV1beta3::AndroidRoboTest::Representation
382
+
383
+ property :test_timeout, as: 'testTimeout', class: Google::Apis::ToolresultsV1beta3::Duration, decorator: Google::Apis::ToolresultsV1beta3::Duration::Representation
384
+
385
+ end
386
+ end
387
+
295
388
  class Any
296
389
  # @private
297
390
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -362,6 +455,8 @@ module Google
362
455
  property :execution_id, as: 'executionId'
363
456
  property :outcome, as: 'outcome', class: Google::Apis::ToolresultsV1beta3::Outcome, decorator: Google::Apis::ToolresultsV1beta3::Outcome::Representation
364
457
 
458
+ property :specification, as: 'specification', class: Google::Apis::ToolresultsV1beta3::Specification, decorator: Google::Apis::ToolresultsV1beta3::Specification::Representation
459
+
365
460
  property :state, as: 'state'
366
461
  property :test_execution_matrix_id, as: 'testExecutionMatrixId'
367
462
  end
@@ -450,6 +545,14 @@ module Google
450
545
  end
451
546
  end
452
547
 
548
+ class ListScreenshotClustersResponse
549
+ # @private
550
+ class Representation < Google::Apis::Core::JsonRepresentation
551
+ collection :clusters, as: 'clusters', class: Google::Apis::ToolresultsV1beta3::ScreenshotCluster, decorator: Google::Apis::ToolresultsV1beta3::ScreenshotCluster::Representation
552
+
553
+ end
554
+ end
555
+
453
556
  class ListStepThumbnailsResponse
454
557
  # @private
455
558
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -554,6 +657,28 @@ module Google
554
657
  end
555
658
  end
556
659
 
660
+ class Screen
661
+ # @private
662
+ class Representation < Google::Apis::Core::JsonRepresentation
663
+ property :file_reference, as: 'fileReference'
664
+ property :locale, as: 'locale'
665
+ property :model, as: 'model'
666
+ property :version, as: 'version'
667
+ end
668
+ end
669
+
670
+ class ScreenshotCluster
671
+ # @private
672
+ class Representation < Google::Apis::Core::JsonRepresentation
673
+ property :activity, as: 'activity'
674
+ property :cluster_id, as: 'clusterId'
675
+ property :key_screen, as: 'keyScreen', class: Google::Apis::ToolresultsV1beta3::Screen, decorator: Google::Apis::ToolresultsV1beta3::Screen::Representation
676
+
677
+ collection :screens, as: 'screens', class: Google::Apis::ToolresultsV1beta3::Screen, decorator: Google::Apis::ToolresultsV1beta3::Screen::Representation
678
+
679
+ end
680
+ end
681
+
557
682
  class SkippedDetail
558
683
  # @private
559
684
  class Representation < Google::Apis::Core::JsonRepresentation
@@ -563,10 +688,20 @@ module Google
563
688
  end
564
689
  end
565
690
 
691
+ class Specification
692
+ # @private
693
+ class Representation < Google::Apis::Core::JsonRepresentation
694
+ property :android_test, as: 'androidTest', class: Google::Apis::ToolresultsV1beta3::AndroidTest, decorator: Google::Apis::ToolresultsV1beta3::AndroidTest::Representation
695
+
696
+ end
697
+ end
698
+
566
699
  class StackTrace
567
700
  # @private
568
701
  class Representation < Google::Apis::Core::JsonRepresentation
702
+ property :cluster_id, as: 'clusterId'
569
703
  property :exception, as: 'exception'
704
+ property :report_id, as: 'reportId'
570
705
  end
571
706
  end
572
707
 
@@ -659,8 +794,12 @@ module Google
659
794
  # @private
660
795
  class Representation < Google::Apis::Core::JsonRepresentation
661
796
  property :error_message, as: 'errorMessage'
797
+ property :severity, as: 'severity'
662
798
  property :stack_trace, as: 'stackTrace', class: Google::Apis::ToolresultsV1beta3::StackTrace, decorator: Google::Apis::ToolresultsV1beta3::StackTrace::Representation
663
799
 
800
+ property :type, as: 'type'
801
+ property :warning, as: 'warning', class: Google::Apis::ToolresultsV1beta3::Any, decorator: Google::Apis::ToolresultsV1beta3::Any::Representation
802
+
664
803
  end
665
804
  end
666
805
 
@@ -507,6 +507,56 @@ module Google
507
507
  execute_or_queue_command(command, &block)
508
508
  end
509
509
 
510
+ # Lists Screenshot Clusters
511
+ # Returns the list of screenshot clusters corresponding to an execution.
512
+ # Screenshot clusters are created after the execution is finished. Clusters are
513
+ # created from a set of screenshots. Between any two screenshots, a matching
514
+ # score is calculated based off their metadata that determines how similar they
515
+ # are. Screenshots are placed in the cluster that has screens which have the
516
+ # highest matching scores.
517
+ # @param [String] project_id
518
+ # A Project id.
519
+ # Required.
520
+ # @param [String] history_id
521
+ # A History id.
522
+ # Required.
523
+ # @param [String] execution_id
524
+ # An Execution id.
525
+ # Required.
526
+ # @param [String] fields
527
+ # Selector specifying which fields to include in a partial response.
528
+ # @param [String] quota_user
529
+ # Available to use for quota purposes for server-side applications. Can be any
530
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
531
+ # Overrides userIp if both are provided.
532
+ # @param [String] user_ip
533
+ # IP address of the site where the request originates. Use this if you want to
534
+ # enforce per-user limits.
535
+ # @param [Google::Apis::RequestOptions] options
536
+ # Request-specific options
537
+ #
538
+ # @yield [result, err] Result & error if block supplied
539
+ # @yieldparam result [Google::Apis::ToolresultsV1beta3::ListScreenshotClustersResponse] parsed result object
540
+ # @yieldparam err [StandardError] error object if request failed
541
+ #
542
+ # @return [Google::Apis::ToolresultsV1beta3::ListScreenshotClustersResponse]
543
+ #
544
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
545
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
546
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
547
+ def list_project_history_execution_clusters(project_id, history_id, execution_id, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
548
+ command = make_simple_command(:get, '{projectId}/histories/{historyId}/executions/{executionId}/clusters', options)
549
+ command.response_representation = Google::Apis::ToolresultsV1beta3::ListScreenshotClustersResponse::Representation
550
+ command.response_class = Google::Apis::ToolresultsV1beta3::ListScreenshotClustersResponse
551
+ command.params['projectId'] = project_id unless project_id.nil?
552
+ command.params['historyId'] = history_id unless history_id.nil?
553
+ command.params['executionId'] = execution_id unless execution_id.nil?
554
+ command.query['fields'] = fields unless fields.nil?
555
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
556
+ command.query['userIp'] = user_ip unless user_ip.nil?
557
+ execute_or_queue_command(command, &block)
558
+ end
559
+
510
560
  # Creates a Step.
511
561
  # The returned Step will have the id set.
512
562
  # May return any of the following canonical error codes:
@@ -0,0 +1,31 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/toolresults_v1beta3firstparty/service.rb'
16
+ require 'google/apis/toolresults_v1beta3firstparty/classes.rb'
17
+ require 'google/apis/toolresults_v1beta3firstparty/representations.rb'
18
+
19
+ module Google
20
+ module Apis
21
+ # Cloud Tool Results firstparty API
22
+ #
23
+ # Reads and publishes results from Firebase Test Lab.
24
+ #
25
+ # @see https://firebase.google.com/docs/test-lab/
26
+ module ToolresultsV1beta3firstparty
27
+ VERSION = 'V1beta3firstparty'
28
+ REVISION = '20170811'
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,2630 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module ToolresultsV1beta3firstparty
24
+
25
+ # Android app information.
26
+ class AndroidAppInfo
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # The name of the app. Optional
30
+ # Corresponds to the JSON property `name`
31
+ # @return [String]
32
+ attr_accessor :name
33
+
34
+ # The package name of the app. Required.
35
+ # Corresponds to the JSON property `packageName`
36
+ # @return [String]
37
+ attr_accessor :package_name
38
+
39
+ # The internal version code of the app. Optional.
40
+ # Corresponds to the JSON property `versionCode`
41
+ # @return [String]
42
+ attr_accessor :version_code
43
+
44
+ # The version name of the app. Optional.
45
+ # Corresponds to the JSON property `versionName`
46
+ # @return [String]
47
+ attr_accessor :version_name
48
+
49
+ def initialize(**args)
50
+ update!(**args)
51
+ end
52
+
53
+ # Update properties of this object
54
+ def update!(**args)
55
+ @name = args[:name] if args.key?(:name)
56
+ @package_name = args[:package_name] if args.key?(:package_name)
57
+ @version_code = args[:version_code] if args.key?(:version_code)
58
+ @version_name = args[:version_name] if args.key?(:version_name)
59
+ end
60
+ end
61
+
62
+ # A test of an Android application that can control an Android component
63
+ # independently of its normal lifecycle.
64
+ # See for more information on types of Android tests.
65
+ class AndroidInstrumentationTest
66
+ include Google::Apis::Core::Hashable
67
+
68
+ # The java package for the test to be executed. Required
69
+ # Corresponds to the JSON property `testPackageId`
70
+ # @return [String]
71
+ attr_accessor :test_package_id
72
+
73
+ # The InstrumentationTestRunner class. Required
74
+ # Corresponds to the JSON property `testRunnerClass`
75
+ # @return [String]
76
+ attr_accessor :test_runner_class
77
+
78
+ # Each target must be fully qualified with the package name or class name, in
79
+ # one of these formats: - "package package_name" - "class package_name.
80
+ # class_name" - "class package_name.class_name#method_name"
81
+ # If empty, all targets in the module will be run.
82
+ # Corresponds to the JSON property `testTargets`
83
+ # @return [Array<String>]
84
+ attr_accessor :test_targets
85
+
86
+ # The flag indicates whether Android Test Orchestrator will be used to run test
87
+ # or not. Test orchestrator is used if either: - orchestrator_option field is
88
+ # USE_ORCHESTRATOR, and test runner is compatible with orchestrator. Or -
89
+ # orchestrator_option field is unspecified or ORCHESTRATOR_OPTION_UNSPECIFIED,
90
+ # and test runner is compatible with orchestrator.
91
+ # Corresponds to the JSON property `useOrchestrator`
92
+ # @return [Boolean]
93
+ attr_accessor :use_orchestrator
94
+ alias_method :use_orchestrator?, :use_orchestrator
95
+
96
+ def initialize(**args)
97
+ update!(**args)
98
+ end
99
+
100
+ # Update properties of this object
101
+ def update!(**args)
102
+ @test_package_id = args[:test_package_id] if args.key?(:test_package_id)
103
+ @test_runner_class = args[:test_runner_class] if args.key?(:test_runner_class)
104
+ @test_targets = args[:test_targets] if args.key?(:test_targets)
105
+ @use_orchestrator = args[:use_orchestrator] if args.key?(:use_orchestrator)
106
+ end
107
+ end
108
+
109
+ # A test of an android application that explores the application on a virtual or
110
+ # physical Android device, finding culprits and crashes as it goes.
111
+ class AndroidRoboTest
112
+ include Google::Apis::Core::Hashable
113
+
114
+ # The initial activity that should be used to start the app. Optional
115
+ # Corresponds to the JSON property `appInitialActivity`
116
+ # @return [String]
117
+ attr_accessor :app_initial_activity
118
+
119
+ # The java package for the bootstrap. Optional
120
+ # Corresponds to the JSON property `bootstrapPackageId`
121
+ # @return [String]
122
+ attr_accessor :bootstrap_package_id
123
+
124
+ # The runner class for the bootstrap. Optional
125
+ # Corresponds to the JSON property `bootstrapRunnerClass`
126
+ # @return [String]
127
+ attr_accessor :bootstrap_runner_class
128
+
129
+ # The max depth of the traversal stack Robo can explore. Optional
130
+ # Corresponds to the JSON property `maxDepth`
131
+ # @return [Fixnum]
132
+ attr_accessor :max_depth
133
+
134
+ # The max number of steps/actions Robo can execute. Default is no limit (0).
135
+ # Optional
136
+ # Corresponds to the JSON property `maxSteps`
137
+ # @return [Fixnum]
138
+ attr_accessor :max_steps
139
+
140
+ def initialize(**args)
141
+ update!(**args)
142
+ end
143
+
144
+ # Update properties of this object
145
+ def update!(**args)
146
+ @app_initial_activity = args[:app_initial_activity] if args.key?(:app_initial_activity)
147
+ @bootstrap_package_id = args[:bootstrap_package_id] if args.key?(:bootstrap_package_id)
148
+ @bootstrap_runner_class = args[:bootstrap_runner_class] if args.key?(:bootstrap_runner_class)
149
+ @max_depth = args[:max_depth] if args.key?(:max_depth)
150
+ @max_steps = args[:max_steps] if args.key?(:max_steps)
151
+ end
152
+ end
153
+
154
+ # An Android mobile test specification.
155
+ class AndroidTest
156
+ include Google::Apis::Core::Hashable
157
+
158
+ # Android app information.
159
+ # Corresponds to the JSON property `androidAppInfo`
160
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::AndroidAppInfo]
161
+ attr_accessor :android_app_info
162
+
163
+ # A test of an Android application that can control an Android component
164
+ # independently of its normal lifecycle.
165
+ # See for more information on types of Android tests.
166
+ # Corresponds to the JSON property `androidInstrumentationTest`
167
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::AndroidInstrumentationTest]
168
+ attr_accessor :android_instrumentation_test
169
+
170
+ # A test of an android application that explores the application on a virtual or
171
+ # physical Android device, finding culprits and crashes as it goes.
172
+ # Corresponds to the JSON property `androidRoboTest`
173
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::AndroidRoboTest]
174
+ attr_accessor :android_robo_test
175
+
176
+ # A Duration represents a signed, fixed-length span of time represented as a
177
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
178
+ # independent of any calendar and concepts like "day" or "month". It is related
179
+ # to Timestamp in that the difference between two Timestamp values is a Duration
180
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
181
+ # 10,000 years.
182
+ # # Examples
183
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
184
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
185
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
186
+ # start.nanos;
187
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
188
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
189
+ # 1; duration.nanos += 1000000000; `
190
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
191
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
192
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
193
+ # duration.nanos;
194
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
195
+ # Example 3: Compute Duration from datetime.timedelta in Python.
196
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
197
+ # FromTimedelta(td)
198
+ # # JSON Mapping
199
+ # In JSON format, the Duration type is encoded as a string rather than an object,
200
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
201
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
202
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
203
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
204
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
205
+ # format as "3.000001s".
206
+ # Corresponds to the JSON property `testTimeout`
207
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
208
+ attr_accessor :test_timeout
209
+
210
+ def initialize(**args)
211
+ update!(**args)
212
+ end
213
+
214
+ # Update properties of this object
215
+ def update!(**args)
216
+ @android_app_info = args[:android_app_info] if args.key?(:android_app_info)
217
+ @android_instrumentation_test = args[:android_instrumentation_test] if args.key?(:android_instrumentation_test)
218
+ @android_robo_test = args[:android_robo_test] if args.key?(:android_robo_test)
219
+ @test_timeout = args[:test_timeout] if args.key?(:test_timeout)
220
+ end
221
+ end
222
+
223
+ # `Any` contains an arbitrary serialized protocol buffer message along with a
224
+ # URL that describes the type of the serialized message.
225
+ # Protobuf library provides support to pack/unpack Any values in the form of
226
+ # utility functions or additional generated methods of the Any type.
227
+ # Example 1: Pack and unpack a message in C++.
228
+ # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) ` ... `
229
+ # Example 2: Pack and unpack a message in Java.
230
+ # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) ` foo = any.
231
+ # unpack(Foo.class); `
232
+ # Example 3: Pack and unpack a message in Python.
233
+ # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.
234
+ # Unpack(foo) ...
235
+ # Example 4: Pack and unpack a message in Go
236
+ # foo := &pb.Foo`...` any, err := ptypes.MarshalAny(foo) ... foo := &pb.Foo`` if
237
+ # err := ptypes.UnmarshalAny(any, foo); err != nil ` ... `
238
+ # The pack methods provided by protobuf library will by default use 'type.
239
+ # googleapis.com/full.type.name' as the type URL and the unpack methods only use
240
+ # the fully qualified type name after the last '/' in the type URL, for example "
241
+ # foo.bar.com/x/y.z" will yield type name "y.z".
242
+ # JSON ==== The JSON representation of an `Any` value uses the regular
243
+ # representation of the deserialized, embedded message, with an additional field
244
+ # `@type` which contains the type URL. Example:
245
+ # package google.profile; message Person ` string first_name = 1; string
246
+ # last_name = 2; `
247
+ # ` "@type": "type.googleapis.com/google.profile.Person", "firstName": , "
248
+ # lastName": `
249
+ # If the embedded message type is well-known and has a custom JSON
250
+ # representation, that representation will be embedded adding a field `value`
251
+ # which holds the custom JSON in addition to the `@type` field. Example (for
252
+ # message [google.protobuf.Duration][]):
253
+ # ` "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" `
254
+ class Any
255
+ include Google::Apis::Core::Hashable
256
+
257
+ # A URL/resource name whose content describes the type of the serialized
258
+ # protocol buffer message.
259
+ # For URLs which use the scheme `http`, `https`, or no scheme, the following
260
+ # restrictions and interpretations apply:
261
+ # * If no scheme is provided, `https` is assumed. * The last segment of the URL'
262
+ # s path must represent the fully qualified name of the type (as in `path/google.
263
+ # protobuf.Duration`). The name should be in a canonical form (e.g., leading "."
264
+ # is not accepted). * An HTTP GET on the URL must yield a [google.protobuf.Type][
265
+ # ] value in binary format, or produce an error. * Applications are allowed to
266
+ # cache lookup results based on the URL, or have them precompiled into a binary
267
+ # to avoid any lookup. Therefore, binary compatibility needs to be preserved on
268
+ # changes to types. (Use versioned type names to manage breaking changes.)
269
+ # Schemes other than `http`, `https` (or the empty scheme) might be used with
270
+ # implementation specific semantics.
271
+ # Corresponds to the JSON property `typeUrl`
272
+ # @return [String]
273
+ attr_accessor :type_url
274
+
275
+ # Must be a valid serialized protocol buffer of the above specified type.
276
+ # Corresponds to the JSON property `value`
277
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
278
+ # @return [String]
279
+ attr_accessor :value
280
+
281
+ def initialize(**args)
282
+ update!(**args)
283
+ end
284
+
285
+ # Update properties of this object
286
+ def update!(**args)
287
+ @type_url = args[:type_url] if args.key?(:type_url)
288
+ @value = args[:value] if args.key?(:value)
289
+ end
290
+ end
291
+
292
+ #
293
+ class AppStartTime
294
+ include Google::Apis::Core::Hashable
295
+
296
+ # A Duration represents a signed, fixed-length span of time represented as a
297
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
298
+ # independent of any calendar and concepts like "day" or "month". It is related
299
+ # to Timestamp in that the difference between two Timestamp values is a Duration
300
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
301
+ # 10,000 years.
302
+ # # Examples
303
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
304
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
305
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
306
+ # start.nanos;
307
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
308
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
309
+ # 1; duration.nanos += 1000000000; `
310
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
311
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
312
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
313
+ # duration.nanos;
314
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
315
+ # Example 3: Compute Duration from datetime.timedelta in Python.
316
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
317
+ # FromTimedelta(td)
318
+ # # JSON Mapping
319
+ # In JSON format, the Duration type is encoded as a string rather than an object,
320
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
321
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
322
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
323
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
324
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
325
+ # format as "3.000001s".
326
+ # Corresponds to the JSON property `fullyDrawnTime`
327
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
328
+ attr_accessor :fully_drawn_time
329
+
330
+ # A Duration represents a signed, fixed-length span of time represented as a
331
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
332
+ # independent of any calendar and concepts like "day" or "month". It is related
333
+ # to Timestamp in that the difference between two Timestamp values is a Duration
334
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
335
+ # 10,000 years.
336
+ # # Examples
337
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
338
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
339
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
340
+ # start.nanos;
341
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
342
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
343
+ # 1; duration.nanos += 1000000000; `
344
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
345
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
346
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
347
+ # duration.nanos;
348
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
349
+ # Example 3: Compute Duration from datetime.timedelta in Python.
350
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
351
+ # FromTimedelta(td)
352
+ # # JSON Mapping
353
+ # In JSON format, the Duration type is encoded as a string rather than an object,
354
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
355
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
356
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
357
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
358
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
359
+ # format as "3.000001s".
360
+ # Corresponds to the JSON property `initialDisplayTime`
361
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
362
+ attr_accessor :initial_display_time
363
+
364
+ def initialize(**args)
365
+ update!(**args)
366
+ end
367
+
368
+ # Update properties of this object
369
+ def update!(**args)
370
+ @fully_drawn_time = args[:fully_drawn_time] if args.key?(:fully_drawn_time)
371
+ @initial_display_time = args[:initial_display_time] if args.key?(:initial_display_time)
372
+ end
373
+ end
374
+
375
+ # Encapsulates the metadata for basic sample series represented by a line chart
376
+ class BasicPerfSampleSeries
377
+ include Google::Apis::Core::Hashable
378
+
379
+ #
380
+ # Corresponds to the JSON property `perfMetricType`
381
+ # @return [String]
382
+ attr_accessor :perf_metric_type
383
+
384
+ #
385
+ # Corresponds to the JSON property `perfUnit`
386
+ # @return [String]
387
+ attr_accessor :perf_unit
388
+
389
+ #
390
+ # Corresponds to the JSON property `sampleSeriesLabel`
391
+ # @return [String]
392
+ attr_accessor :sample_series_label
393
+
394
+ def initialize(**args)
395
+ update!(**args)
396
+ end
397
+
398
+ # Update properties of this object
399
+ def update!(**args)
400
+ @perf_metric_type = args[:perf_metric_type] if args.key?(:perf_metric_type)
401
+ @perf_unit = args[:perf_unit] if args.key?(:perf_unit)
402
+ @sample_series_label = args[:sample_series_label] if args.key?(:sample_series_label)
403
+ end
404
+ end
405
+
406
+ # The request must provide up to a maximum of 5000 samples to be created; a
407
+ # larger sample size will cause an INVALID_ARGUMENT error
408
+ class BatchCreatePerfSamplesRequest
409
+ include Google::Apis::Core::Hashable
410
+
411
+ # The set of PerfSamples to create should not include existing timestamps
412
+ # Corresponds to the JSON property `perfSamples`
413
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::PerfSample>]
414
+ attr_accessor :perf_samples
415
+
416
+ def initialize(**args)
417
+ update!(**args)
418
+ end
419
+
420
+ # Update properties of this object
421
+ def update!(**args)
422
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
423
+ end
424
+ end
425
+
426
+ #
427
+ class BatchCreatePerfSamplesResponse
428
+ include Google::Apis::Core::Hashable
429
+
430
+ #
431
+ # Corresponds to the JSON property `perfSamples`
432
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::PerfSample>]
433
+ attr_accessor :perf_samples
434
+
435
+ def initialize(**args)
436
+ update!(**args)
437
+ end
438
+
439
+ # Update properties of this object
440
+ def update!(**args)
441
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
442
+ end
443
+ end
444
+
445
+ #
446
+ class CpuInfo
447
+ include Google::Apis::Core::Hashable
448
+
449
+ # description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A'
450
+ # Corresponds to the JSON property `cpuProcessor`
451
+ # @return [String]
452
+ attr_accessor :cpu_processor
453
+
454
+ # the CPU clock speed in GHz
455
+ # Corresponds to the JSON property `cpuSpeedInGhz`
456
+ # @return [Float]
457
+ attr_accessor :cpu_speed_in_ghz
458
+
459
+ # the number of CPU cores
460
+ # Corresponds to the JSON property `numberOfCores`
461
+ # @return [Fixnum]
462
+ attr_accessor :number_of_cores
463
+
464
+ def initialize(**args)
465
+ update!(**args)
466
+ end
467
+
468
+ # Update properties of this object
469
+ def update!(**args)
470
+ @cpu_processor = args[:cpu_processor] if args.key?(:cpu_processor)
471
+ @cpu_speed_in_ghz = args[:cpu_speed_in_ghz] if args.key?(:cpu_speed_in_ghz)
472
+ @number_of_cores = args[:number_of_cores] if args.key?(:number_of_cores)
473
+ end
474
+ end
475
+
476
+ # A Duration represents a signed, fixed-length span of time represented as a
477
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
478
+ # independent of any calendar and concepts like "day" or "month". It is related
479
+ # to Timestamp in that the difference between two Timestamp values is a Duration
480
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
481
+ # 10,000 years.
482
+ # # Examples
483
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
484
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
485
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
486
+ # start.nanos;
487
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
488
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
489
+ # 1; duration.nanos += 1000000000; `
490
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
491
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
492
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
493
+ # duration.nanos;
494
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
495
+ # Example 3: Compute Duration from datetime.timedelta in Python.
496
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
497
+ # FromTimedelta(td)
498
+ # # JSON Mapping
499
+ # In JSON format, the Duration type is encoded as a string rather than an object,
500
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
501
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
502
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
503
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
504
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
505
+ # format as "3.000001s".
506
+ class Duration
507
+ include Google::Apis::Core::Hashable
508
+
509
+ # Signed fractions of a second at nanosecond resolution of the span of time.
510
+ # Durations less than one second are represented with a 0 `seconds` field and a
511
+ # positive or negative `nanos` field. For durations of one second or more, a non-
512
+ # zero value for the `nanos` field must be of the same sign as the `seconds`
513
+ # field. Must be from -999,999,999 to +999,999,999 inclusive.
514
+ # Corresponds to the JSON property `nanos`
515
+ # @return [Fixnum]
516
+ attr_accessor :nanos
517
+
518
+ # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,
519
+ # 000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/
520
+ # hr * 24 hr/day * 365.25 days/year * 10000 years
521
+ # Corresponds to the JSON property `seconds`
522
+ # @return [Fixnum]
523
+ attr_accessor :seconds
524
+
525
+ def initialize(**args)
526
+ update!(**args)
527
+ end
528
+
529
+ # Update properties of this object
530
+ def update!(**args)
531
+ @nanos = args[:nanos] if args.key?(:nanos)
532
+ @seconds = args[:seconds] if args.key?(:seconds)
533
+ end
534
+ end
535
+
536
+ # An Execution represents a collection of Steps. For instance, it could
537
+ # represent: - a mobile test executed across a range of device configurations -
538
+ # a jenkins job with a build step followed by a test step
539
+ # The maximum size of an execution message is 1 MiB.
540
+ # An Execution can be updated until its state is set to COMPLETE at which point
541
+ # it becomes immutable.
542
+ class Execution
543
+ include Google::Apis::Core::Hashable
544
+
545
+ # A Timestamp represents a point in time independent of any time zone or
546
+ # calendar, represented as seconds and fractions of seconds at nanosecond
547
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
548
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
549
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
550
+ # smeared" so that no leap second table is needed for interpretation. Range is
551
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
552
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
553
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
554
+ # txt).
555
+ # # Examples
556
+ # Example 1: Compute Timestamp from POSIX `time()`.
557
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
558
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
559
+ # struct timeval tv; gettimeofday(&tv, NULL);
560
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
561
+ # tv_usec * 1000);
562
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
563
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
564
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
565
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
566
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
567
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
568
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
569
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
570
+ # long millis = System.currentTimeMillis();
571
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
572
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
573
+ # Example 5: Compute Timestamp from current time in Python.
574
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
575
+ # # JSON Mapping
576
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
577
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
578
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
579
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
580
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
581
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
582
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
583
+ # indicated by "Z") is presently supported.
584
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
585
+ # January 15, 2017.
586
+ # In JavaScript, one can convert a Date object to this format using the standard
587
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
588
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
589
+ # datetime.datetime` object can be converted to this format using [`strftime`](
590
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
591
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
592
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
593
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
594
+ # formatter capable of generating timestamps in this format.
595
+ # Corresponds to the JSON property `completionTime`
596
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
597
+ attr_accessor :completion_time
598
+
599
+ # A Timestamp represents a point in time independent of any time zone or
600
+ # calendar, represented as seconds and fractions of seconds at nanosecond
601
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
602
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
603
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
604
+ # smeared" so that no leap second table is needed for interpretation. Range is
605
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
606
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
607
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
608
+ # txt).
609
+ # # Examples
610
+ # Example 1: Compute Timestamp from POSIX `time()`.
611
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
612
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
613
+ # struct timeval tv; gettimeofday(&tv, NULL);
614
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
615
+ # tv_usec * 1000);
616
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
617
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
618
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
619
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
620
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
621
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
622
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
623
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
624
+ # long millis = System.currentTimeMillis();
625
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
626
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
627
+ # Example 5: Compute Timestamp from current time in Python.
628
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
629
+ # # JSON Mapping
630
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
631
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
632
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
633
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
634
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
635
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
636
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
637
+ # indicated by "Z") is presently supported.
638
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
639
+ # January 15, 2017.
640
+ # In JavaScript, one can convert a Date object to this format using the standard
641
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
642
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
643
+ # datetime.datetime` object can be converted to this format using [`strftime`](
644
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
645
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
646
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
647
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
648
+ # formatter capable of generating timestamps in this format.
649
+ # Corresponds to the JSON property `creationTime`
650
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
651
+ attr_accessor :creation_time
652
+
653
+ # A unique identifier within a History for this Execution.
654
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
655
+ # - In response always set - In create/update request: never set
656
+ # Corresponds to the JSON property `executionId`
657
+ # @return [String]
658
+ attr_accessor :execution_id
659
+
660
+ # Interprets a result so that humans and machines can act on it.
661
+ # Corresponds to the JSON property `outcome`
662
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Outcome]
663
+ attr_accessor :outcome
664
+
665
+ # The details about how to run the execution.
666
+ # Corresponds to the JSON property `specification`
667
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Specification]
668
+ attr_accessor :specification
669
+
670
+ # The initial state is IN_PROGRESS.
671
+ # The only legal state transitions is from IN_PROGRESS to COMPLETE.
672
+ # A PRECONDITION_FAILED will be returned if an invalid transition is requested.
673
+ # The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be
674
+ # returned if the state is set to COMPLETE multiple times.
675
+ # If the state is set to COMPLETE, all the in-progress steps within the
676
+ # execution will be set as COMPLETE. If the outcome of the step is not set, the
677
+ # outcome will be set to INCONCLUSIVE.
678
+ # - In response always set - In create/update request: optional
679
+ # Corresponds to the JSON property `state`
680
+ # @return [String]
681
+ attr_accessor :state
682
+
683
+ # TestExecution Matrix ID that the TestExecutionService uses.
684
+ # - In response: present if set by create - In create: optional - In update:
685
+ # never set
686
+ # Corresponds to the JSON property `testExecutionMatrixId`
687
+ # @return [String]
688
+ attr_accessor :test_execution_matrix_id
689
+
690
+ def initialize(**args)
691
+ update!(**args)
692
+ end
693
+
694
+ # Update properties of this object
695
+ def update!(**args)
696
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
697
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
698
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
699
+ @outcome = args[:outcome] if args.key?(:outcome)
700
+ @specification = args[:specification] if args.key?(:specification)
701
+ @state = args[:state] if args.key?(:state)
702
+ @test_execution_matrix_id = args[:test_execution_matrix_id] if args.key?(:test_execution_matrix_id)
703
+ end
704
+ end
705
+
706
+ #
707
+ class FailureDetail
708
+ include Google::Apis::Core::Hashable
709
+
710
+ # If the failure was severe because the system under test crashed.
711
+ # Corresponds to the JSON property `crashed`
712
+ # @return [Boolean]
713
+ attr_accessor :crashed
714
+ alias_method :crashed?, :crashed
715
+
716
+ # If an app is not installed and thus no test can be run with the app. This
717
+ # might be caused by trying to run a test on an unsupported platform.
718
+ # Corresponds to the JSON property `notInstalled`
719
+ # @return [Boolean]
720
+ attr_accessor :not_installed
721
+ alias_method :not_installed?, :not_installed
722
+
723
+ # If a native process other than the app crashed.
724
+ # Corresponds to the JSON property `otherNativeCrash`
725
+ # @return [Boolean]
726
+ attr_accessor :other_native_crash
727
+ alias_method :other_native_crash?, :other_native_crash
728
+
729
+ # If the test overran some time limit, and that is why it failed.
730
+ # Corresponds to the JSON property `timedOut`
731
+ # @return [Boolean]
732
+ attr_accessor :timed_out
733
+ alias_method :timed_out?, :timed_out
734
+
735
+ # If the robo was unable to crawl the app; perhaps because the app did not start.
736
+ # Corresponds to the JSON property `unableToCrawl`
737
+ # @return [Boolean]
738
+ attr_accessor :unable_to_crawl
739
+ alias_method :unable_to_crawl?, :unable_to_crawl
740
+
741
+ def initialize(**args)
742
+ update!(**args)
743
+ end
744
+
745
+ # Update properties of this object
746
+ def update!(**args)
747
+ @crashed = args[:crashed] if args.key?(:crashed)
748
+ @not_installed = args[:not_installed] if args.key?(:not_installed)
749
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
750
+ @timed_out = args[:timed_out] if args.key?(:timed_out)
751
+ @unable_to_crawl = args[:unable_to_crawl] if args.key?(:unable_to_crawl)
752
+ end
753
+ end
754
+
755
+ # A reference to a file.
756
+ class FileReference
757
+ include Google::Apis::Core::Hashable
758
+
759
+ # The URI of a file stored in Google Cloud Storage.
760
+ # For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in
761
+ # gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://
762
+ # mybucket/path/to/test.xml#1360383693690000
763
+ # An INVALID_ARGUMENT error will be returned if the URI format is not supported.
764
+ # - In response: always set - In create/update request: always set
765
+ # Corresponds to the JSON property `fileUri`
766
+ # @return [String]
767
+ attr_accessor :file_uri
768
+
769
+ def initialize(**args)
770
+ update!(**args)
771
+ end
772
+
773
+ # Update properties of this object
774
+ def update!(**args)
775
+ @file_uri = args[:file_uri] if args.key?(:file_uri)
776
+ end
777
+ end
778
+
779
+ # A History represents a sorted list of Executions ordered by the
780
+ # start_timestamp_millis field (descending). It can be used to group all the
781
+ # Executions of a continuous build.
782
+ # Note that the ordering only operates on one-dimension. If a repository has
783
+ # multiple branches, it means that multiple histories will need to be used in
784
+ # order to order Executions per branch.
785
+ class History
786
+ include Google::Apis::Core::Hashable
787
+
788
+ # A short human-readable (plain text) name to display in the UI. Maximum of 100
789
+ # characters.
790
+ # - In response: present if set during create. - In create request: optional
791
+ # Corresponds to the JSON property `displayName`
792
+ # @return [String]
793
+ attr_accessor :display_name
794
+
795
+ # A unique identifier within a project for this History.
796
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
797
+ # - In response always set - In create request: never set
798
+ # Corresponds to the JSON property `historyId`
799
+ # @return [String]
800
+ attr_accessor :history_id
801
+
802
+ # A name to uniquely identify a history within a project. Maximum of 100
803
+ # characters.
804
+ # - In response always set - In create request: always set
805
+ # Corresponds to the JSON property `name`
806
+ # @return [String]
807
+ attr_accessor :name
808
+
809
+ def initialize(**args)
810
+ update!(**args)
811
+ end
812
+
813
+ # Update properties of this object
814
+ def update!(**args)
815
+ @display_name = args[:display_name] if args.key?(:display_name)
816
+ @history_id = args[:history_id] if args.key?(:history_id)
817
+ @name = args[:name] if args.key?(:name)
818
+ end
819
+ end
820
+
821
+ # An image, with a link to the main image and a thumbnail.
822
+ class Image
823
+ include Google::Apis::Core::Hashable
824
+
825
+ # The `Status` type defines a logical error model that is suitable for different
826
+ # programming environments, including REST APIs and RPC APIs. It is used by [
827
+ # gRPC](https://github.com/grpc). The error model is designed to be:
828
+ # - Simple to use and understand for most users - Flexible enough to meet
829
+ # unexpected needs
830
+ # # Overview
831
+ # The `Status` message contains three pieces of data: error code, error message,
832
+ # and error details. The error code should be an enum value of [google.rpc.Code][
833
+ # ], but it may accept additional error codes if needed. The error message
834
+ # should be a developer-facing English message that helps developers *understand*
835
+ # and *resolve* the error. If a localized user-facing error message is needed,
836
+ # put the localized message in the error details or localize it in the client.
837
+ # The optional error details may contain arbitrary information about the error.
838
+ # There is a predefined set of error detail types in the package `google.rpc`
839
+ # that can be used for common error conditions.
840
+ # # Language mapping
841
+ # The `Status` message is the logical representation of the error model, but it
842
+ # is not necessarily the actual wire format. When the `Status` message is
843
+ # exposed in different client libraries and different wire protocols, it can be
844
+ # mapped differently. For example, it will likely be mapped to some exceptions
845
+ # in Java, but more likely mapped to some error codes in C.
846
+ # # Other uses
847
+ # The error model and the `Status` message can be used in a variety of
848
+ # environments, either with or without APIs, to provide a consistent developer
849
+ # experience across different environments.
850
+ # Example uses of this error model include:
851
+ # - Partial errors. If a service needs to return partial errors to the client,
852
+ # it may embed the `Status` in the normal response to indicate the partial
853
+ # errors.
854
+ # - Workflow errors. A typical workflow has multiple steps. Each step may have a
855
+ # `Status` message for error reporting.
856
+ # - Batch operations. If a client uses batch request and batch response, the `
857
+ # Status` message should be used directly inside batch response, one for each
858
+ # error sub-response.
859
+ # - Asynchronous operations. If an API call embeds asynchronous operation
860
+ # results in its response, the status of those operations should be represented
861
+ # directly using the `Status` message.
862
+ # - Logging. If some API errors are stored in logs, the message `Status` could
863
+ # be used directly after any stripping needed for security/privacy reasons.
864
+ # Corresponds to the JSON property `error`
865
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Status]
866
+ attr_accessor :error
867
+
868
+ # A reference to a ToolExecution output file.
869
+ # Corresponds to the JSON property `sourceImage`
870
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::ToolOutputReference]
871
+ attr_accessor :source_image
872
+
873
+ # The step to which the image is attached.
874
+ # Always set.
875
+ # Corresponds to the JSON property `stepId`
876
+ # @return [String]
877
+ attr_accessor :step_id
878
+
879
+ # A single thumbnail, with its size and format.
880
+ # Corresponds to the JSON property `thumbnail`
881
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Thumbnail]
882
+ attr_accessor :thumbnail
883
+
884
+ def initialize(**args)
885
+ update!(**args)
886
+ end
887
+
888
+ # Update properties of this object
889
+ def update!(**args)
890
+ @error = args[:error] if args.key?(:error)
891
+ @source_image = args[:source_image] if args.key?(:source_image)
892
+ @step_id = args[:step_id] if args.key?(:step_id)
893
+ @thumbnail = args[:thumbnail] if args.key?(:thumbnail)
894
+ end
895
+ end
896
+
897
+ #
898
+ class InconclusiveDetail
899
+ include Google::Apis::Core::Hashable
900
+
901
+ # If the end user aborted the test execution before a pass or fail could be
902
+ # determined. For example, the user pressed ctrl-c which sent a kill signal to
903
+ # the test runner while the test was running.
904
+ # Corresponds to the JSON property `abortedByUser`
905
+ # @return [Boolean]
906
+ attr_accessor :aborted_by_user
907
+ alias_method :aborted_by_user?, :aborted_by_user
908
+
909
+ # If the test runner could not determine success or failure because the test
910
+ # depends on a component other than the system under test which failed.
911
+ # For example, a mobile test requires provisioning a device where the test
912
+ # executes, and that provisioning can fail.
913
+ # Corresponds to the JSON property `infrastructureFailure`
914
+ # @return [Boolean]
915
+ attr_accessor :infrastructure_failure
916
+ alias_method :infrastructure_failure?, :infrastructure_failure
917
+
918
+ def initialize(**args)
919
+ update!(**args)
920
+ end
921
+
922
+ # Update properties of this object
923
+ def update!(**args)
924
+ @aborted_by_user = args[:aborted_by_user] if args.key?(:aborted_by_user)
925
+ @infrastructure_failure = args[:infrastructure_failure] if args.key?(:infrastructure_failure)
926
+ end
927
+ end
928
+
929
+ #
930
+ class ListExecutionsResponse
931
+ include Google::Apis::Core::Hashable
932
+
933
+ # Executions.
934
+ # Always set.
935
+ # Corresponds to the JSON property `executions`
936
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::Execution>]
937
+ attr_accessor :executions
938
+
939
+ # A continuation token to resume the query at the next item.
940
+ # Will only be set if there are more Executions to fetch.
941
+ # Corresponds to the JSON property `nextPageToken`
942
+ # @return [String]
943
+ attr_accessor :next_page_token
944
+
945
+ def initialize(**args)
946
+ update!(**args)
947
+ end
948
+
949
+ # Update properties of this object
950
+ def update!(**args)
951
+ @executions = args[:executions] if args.key?(:executions)
952
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
953
+ end
954
+ end
955
+
956
+ # Response message for HistoryService.List
957
+ class ListHistoriesResponse
958
+ include Google::Apis::Core::Hashable
959
+
960
+ # Histories.
961
+ # Corresponds to the JSON property `histories`
962
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::History>]
963
+ attr_accessor :histories
964
+
965
+ # A continuation token to resume the query at the next item.
966
+ # Will only be set if there are more histories to fetch.
967
+ # Tokens are valid for up to one hour from the time of the first list request.
968
+ # For instance, if you make a list request at 1PM and use the token from this
969
+ # first request 10 minutes later, the token from this second response will only
970
+ # be valid for 50 minutes.
971
+ # Corresponds to the JSON property `nextPageToken`
972
+ # @return [String]
973
+ attr_accessor :next_page_token
974
+
975
+ def initialize(**args)
976
+ update!(**args)
977
+ end
978
+
979
+ # Update properties of this object
980
+ def update!(**args)
981
+ @histories = args[:histories] if args.key?(:histories)
982
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
983
+ end
984
+ end
985
+
986
+ #
987
+ class ListPerfSampleSeriesResponse
988
+ include Google::Apis::Core::Hashable
989
+
990
+ # The resulting PerfSampleSeries sorted by id
991
+ # Corresponds to the JSON property `perfSampleSeries`
992
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::PerfSampleSeries>]
993
+ attr_accessor :perf_sample_series
994
+
995
+ def initialize(**args)
996
+ update!(**args)
997
+ end
998
+
999
+ # Update properties of this object
1000
+ def update!(**args)
1001
+ @perf_sample_series = args[:perf_sample_series] if args.key?(:perf_sample_series)
1002
+ end
1003
+ end
1004
+
1005
+ #
1006
+ class ListPerfSamplesResponse
1007
+ include Google::Apis::Core::Hashable
1008
+
1009
+ # Optional, returned if result size exceeds the page size specified in the
1010
+ # request (or the default page size, 500, if unspecified). It indicates the last
1011
+ # sample timestamp to be used as page_token in subsequent request
1012
+ # Corresponds to the JSON property `nextPageToken`
1013
+ # @return [String]
1014
+ attr_accessor :next_page_token
1015
+
1016
+ #
1017
+ # Corresponds to the JSON property `perfSamples`
1018
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::PerfSample>]
1019
+ attr_accessor :perf_samples
1020
+
1021
+ def initialize(**args)
1022
+ update!(**args)
1023
+ end
1024
+
1025
+ # Update properties of this object
1026
+ def update!(**args)
1027
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1028
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
1029
+ end
1030
+ end
1031
+
1032
+ #
1033
+ class ListScreenshotClustersResponse
1034
+ include Google::Apis::Core::Hashable
1035
+
1036
+ # The set of clustres associated with an execution Always set
1037
+ # Corresponds to the JSON property `clusters`
1038
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::ScreenshotCluster>]
1039
+ attr_accessor :clusters
1040
+
1041
+ def initialize(**args)
1042
+ update!(**args)
1043
+ end
1044
+
1045
+ # Update properties of this object
1046
+ def update!(**args)
1047
+ @clusters = args[:clusters] if args.key?(:clusters)
1048
+ end
1049
+ end
1050
+
1051
+ # A response containing the thumbnails in a step.
1052
+ class ListStepThumbnailsResponse
1053
+ include Google::Apis::Core::Hashable
1054
+
1055
+ # A continuation token to resume the query at the next item.
1056
+ # If set, indicates that there are more thumbnails to read, by calling list
1057
+ # again with this value in the page_token field.
1058
+ # Corresponds to the JSON property `nextPageToken`
1059
+ # @return [String]
1060
+ attr_accessor :next_page_token
1061
+
1062
+ # A list of image data.
1063
+ # Images are returned in a deterministic order; they are ordered by these
1064
+ # factors, in order of importance: * First, by their associated test case.
1065
+ # Images without a test case are considered greater than images with one. *
1066
+ # Second, by their creation time. Images without a creation time are greater
1067
+ # than images with one. * Third, by the order in which they were added to the
1068
+ # step (by calls to CreateStep or UpdateStep).
1069
+ # Corresponds to the JSON property `thumbnails`
1070
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::Image>]
1071
+ attr_accessor :thumbnails
1072
+
1073
+ def initialize(**args)
1074
+ update!(**args)
1075
+ end
1076
+
1077
+ # Update properties of this object
1078
+ def update!(**args)
1079
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1080
+ @thumbnails = args[:thumbnails] if args.key?(:thumbnails)
1081
+ end
1082
+ end
1083
+
1084
+ # Response message for StepService.List.
1085
+ class ListStepsResponse
1086
+ include Google::Apis::Core::Hashable
1087
+
1088
+ # A continuation token to resume the query at the next item.
1089
+ # If set, indicates that there are more steps to read, by calling list again
1090
+ # with this value in the page_token field.
1091
+ # Corresponds to the JSON property `nextPageToken`
1092
+ # @return [String]
1093
+ attr_accessor :next_page_token
1094
+
1095
+ # Steps.
1096
+ # Corresponds to the JSON property `steps`
1097
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::Step>]
1098
+ attr_accessor :steps
1099
+
1100
+ def initialize(**args)
1101
+ update!(**args)
1102
+ end
1103
+
1104
+ # Update properties of this object
1105
+ def update!(**args)
1106
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1107
+ @steps = args[:steps] if args.key?(:steps)
1108
+ end
1109
+ end
1110
+
1111
+ #
1112
+ class MemoryInfo
1113
+ include Google::Apis::Core::Hashable
1114
+
1115
+ # Maximum memory that can be allocated to the process in KiB
1116
+ # Corresponds to the JSON property `memoryCapInKibibyte`
1117
+ # @return [Fixnum]
1118
+ attr_accessor :memory_cap_in_kibibyte
1119
+
1120
+ # Total memory available on the device in KiB
1121
+ # Corresponds to the JSON property `memoryTotalInKibibyte`
1122
+ # @return [Fixnum]
1123
+ attr_accessor :memory_total_in_kibibyte
1124
+
1125
+ def initialize(**args)
1126
+ update!(**args)
1127
+ end
1128
+
1129
+ # Update properties of this object
1130
+ def update!(**args)
1131
+ @memory_cap_in_kibibyte = args[:memory_cap_in_kibibyte] if args.key?(:memory_cap_in_kibibyte)
1132
+ @memory_total_in_kibibyte = args[:memory_total_in_kibibyte] if args.key?(:memory_total_in_kibibyte)
1133
+ end
1134
+ end
1135
+
1136
+ # Interprets a result so that humans and machines can act on it.
1137
+ class Outcome
1138
+ include Google::Apis::Core::Hashable
1139
+
1140
+ # More information about a FAILURE outcome.
1141
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE.
1142
+ # Optional
1143
+ # Corresponds to the JSON property `failureDetail`
1144
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::FailureDetail]
1145
+ attr_accessor :failure_detail
1146
+
1147
+ # More information about an INCONCLUSIVE outcome.
1148
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not
1149
+ # INCONCLUSIVE.
1150
+ # Optional
1151
+ # Corresponds to the JSON property `inconclusiveDetail`
1152
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::InconclusiveDetail]
1153
+ attr_accessor :inconclusive_detail
1154
+
1155
+ # More information about a SKIPPED outcome.
1156
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED.
1157
+ # Optional
1158
+ # Corresponds to the JSON property `skippedDetail`
1159
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::SkippedDetail]
1160
+ attr_accessor :skipped_detail
1161
+
1162
+ # More information about a SUCCESS outcome.
1163
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS.
1164
+ # Optional
1165
+ # Corresponds to the JSON property `successDetail`
1166
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::SuccessDetail]
1167
+ attr_accessor :success_detail
1168
+
1169
+ # The simplest way to interpret a result.
1170
+ # Required
1171
+ # Corresponds to the JSON property `summary`
1172
+ # @return [String]
1173
+ attr_accessor :summary
1174
+
1175
+ def initialize(**args)
1176
+ update!(**args)
1177
+ end
1178
+
1179
+ # Update properties of this object
1180
+ def update!(**args)
1181
+ @failure_detail = args[:failure_detail] if args.key?(:failure_detail)
1182
+ @inconclusive_detail = args[:inconclusive_detail] if args.key?(:inconclusive_detail)
1183
+ @skipped_detail = args[:skipped_detail] if args.key?(:skipped_detail)
1184
+ @success_detail = args[:success_detail] if args.key?(:success_detail)
1185
+ @summary = args[:summary] if args.key?(:summary)
1186
+ end
1187
+ end
1188
+
1189
+ # Encapsulates performance environment info
1190
+ class PerfEnvironment
1191
+ include Google::Apis::Core::Hashable
1192
+
1193
+ # CPU related environment info
1194
+ # Corresponds to the JSON property `cpuInfo`
1195
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::CpuInfo]
1196
+ attr_accessor :cpu_info
1197
+
1198
+ # Memory related environment info
1199
+ # Corresponds to the JSON property `memoryInfo`
1200
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::MemoryInfo]
1201
+ attr_accessor :memory_info
1202
+
1203
+ def initialize(**args)
1204
+ update!(**args)
1205
+ end
1206
+
1207
+ # Update properties of this object
1208
+ def update!(**args)
1209
+ @cpu_info = args[:cpu_info] if args.key?(:cpu_info)
1210
+ @memory_info = args[:memory_info] if args.key?(:memory_info)
1211
+ end
1212
+ end
1213
+
1214
+ # A summary of perf metrics collected and performance environment info
1215
+ class PerfMetricsSummary
1216
+ include Google::Apis::Core::Hashable
1217
+
1218
+ #
1219
+ # Corresponds to the JSON property `appStartTime`
1220
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::AppStartTime]
1221
+ attr_accessor :app_start_time
1222
+
1223
+ # A tool results execution ID.
1224
+ # Corresponds to the JSON property `executionId`
1225
+ # @return [String]
1226
+ attr_accessor :execution_id
1227
+
1228
+ # A tool results history ID.
1229
+ # Corresponds to the JSON property `historyId`
1230
+ # @return [String]
1231
+ attr_accessor :history_id
1232
+
1233
+ # Encapsulates performance environment info
1234
+ # Corresponds to the JSON property `perfEnvironment`
1235
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::PerfEnvironment]
1236
+ attr_accessor :perf_environment
1237
+
1238
+ # Set of resource collected
1239
+ # Corresponds to the JSON property `perfMetrics`
1240
+ # @return [Array<String>]
1241
+ attr_accessor :perf_metrics
1242
+
1243
+ # The cloud project
1244
+ # Corresponds to the JSON property `projectId`
1245
+ # @return [String]
1246
+ attr_accessor :project_id
1247
+
1248
+ # A tool results step ID.
1249
+ # Corresponds to the JSON property `stepId`
1250
+ # @return [String]
1251
+ attr_accessor :step_id
1252
+
1253
+ def initialize(**args)
1254
+ update!(**args)
1255
+ end
1256
+
1257
+ # Update properties of this object
1258
+ def update!(**args)
1259
+ @app_start_time = args[:app_start_time] if args.key?(:app_start_time)
1260
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
1261
+ @history_id = args[:history_id] if args.key?(:history_id)
1262
+ @perf_environment = args[:perf_environment] if args.key?(:perf_environment)
1263
+ @perf_metrics = args[:perf_metrics] if args.key?(:perf_metrics)
1264
+ @project_id = args[:project_id] if args.key?(:project_id)
1265
+ @step_id = args[:step_id] if args.key?(:step_id)
1266
+ end
1267
+ end
1268
+
1269
+ # Resource representing a single performance measure or data point
1270
+ class PerfSample
1271
+ include Google::Apis::Core::Hashable
1272
+
1273
+ # A Timestamp represents a point in time independent of any time zone or
1274
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1275
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1276
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1277
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1278
+ # smeared" so that no leap second table is needed for interpretation. Range is
1279
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1280
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1281
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1282
+ # txt).
1283
+ # # Examples
1284
+ # Example 1: Compute Timestamp from POSIX `time()`.
1285
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1286
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1287
+ # struct timeval tv; gettimeofday(&tv, NULL);
1288
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1289
+ # tv_usec * 1000);
1290
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1291
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1292
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1293
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1294
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1295
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1296
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1297
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1298
+ # long millis = System.currentTimeMillis();
1299
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1300
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1301
+ # Example 5: Compute Timestamp from current time in Python.
1302
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1303
+ # # JSON Mapping
1304
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1305
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1306
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1307
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1308
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1309
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1310
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1311
+ # indicated by "Z") is presently supported.
1312
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1313
+ # January 15, 2017.
1314
+ # In JavaScript, one can convert a Date object to this format using the standard
1315
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1316
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1317
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1318
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1319
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1320
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1321
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1322
+ # formatter capable of generating timestamps in this format.
1323
+ # Corresponds to the JSON property `sampleTime`
1324
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
1325
+ attr_accessor :sample_time
1326
+
1327
+ # Value observed
1328
+ # Corresponds to the JSON property `value`
1329
+ # @return [Float]
1330
+ attr_accessor :value
1331
+
1332
+ def initialize(**args)
1333
+ update!(**args)
1334
+ end
1335
+
1336
+ # Update properties of this object
1337
+ def update!(**args)
1338
+ @sample_time = args[:sample_time] if args.key?(:sample_time)
1339
+ @value = args[:value] if args.key?(:value)
1340
+ end
1341
+ end
1342
+
1343
+ # Resource representing a collection of performance samples (or data points)
1344
+ class PerfSampleSeries
1345
+ include Google::Apis::Core::Hashable
1346
+
1347
+ # Encapsulates the metadata for basic sample series represented by a line chart
1348
+ # Corresponds to the JSON property `basicPerfSampleSeries`
1349
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::BasicPerfSampleSeries]
1350
+ attr_accessor :basic_perf_sample_series
1351
+
1352
+ # A tool results execution ID.
1353
+ # Corresponds to the JSON property `executionId`
1354
+ # @return [String]
1355
+ attr_accessor :execution_id
1356
+
1357
+ # A tool results history ID.
1358
+ # Corresponds to the JSON property `historyId`
1359
+ # @return [String]
1360
+ attr_accessor :history_id
1361
+
1362
+ # The cloud project
1363
+ # Corresponds to the JSON property `projectId`
1364
+ # @return [String]
1365
+ attr_accessor :project_id
1366
+
1367
+ # A sample series id
1368
+ # Corresponds to the JSON property `sampleSeriesId`
1369
+ # @return [String]
1370
+ attr_accessor :sample_series_id
1371
+
1372
+ # A tool results step ID.
1373
+ # Corresponds to the JSON property `stepId`
1374
+ # @return [String]
1375
+ attr_accessor :step_id
1376
+
1377
+ def initialize(**args)
1378
+ update!(**args)
1379
+ end
1380
+
1381
+ # Update properties of this object
1382
+ def update!(**args)
1383
+ @basic_perf_sample_series = args[:basic_perf_sample_series] if args.key?(:basic_perf_sample_series)
1384
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
1385
+ @history_id = args[:history_id] if args.key?(:history_id)
1386
+ @project_id = args[:project_id] if args.key?(:project_id)
1387
+ @sample_series_id = args[:sample_series_id] if args.key?(:sample_series_id)
1388
+ @step_id = args[:step_id] if args.key?(:step_id)
1389
+ end
1390
+ end
1391
+
1392
+ # Per-project settings for the Tool Results service.
1393
+ class ProjectSettings
1394
+ include Google::Apis::Core::Hashable
1395
+
1396
+ # The name of the Google Cloud Storage bucket to which results are written.
1397
+ # By default, this is unset.
1398
+ # In update request: optional In response: optional
1399
+ # Corresponds to the JSON property `defaultBucket`
1400
+ # @return [String]
1401
+ attr_accessor :default_bucket
1402
+
1403
+ # The name of the project's settings.
1404
+ # Always of the form: projects/`project-id`/settings
1405
+ # In update request: never set In response: always set
1406
+ # Corresponds to the JSON property `name`
1407
+ # @return [String]
1408
+ attr_accessor :name
1409
+
1410
+ def initialize(**args)
1411
+ update!(**args)
1412
+ end
1413
+
1414
+ # Update properties of this object
1415
+ def update!(**args)
1416
+ @default_bucket = args[:default_bucket] if args.key?(:default_bucket)
1417
+ @name = args[:name] if args.key?(:name)
1418
+ end
1419
+ end
1420
+
1421
+ # Request message for StepService.PublishXunitXmlFiles.
1422
+ class PublishXunitXmlFilesRequest
1423
+ include Google::Apis::Core::Hashable
1424
+
1425
+ # URI of the Xunit XML files to publish.
1426
+ # The maximum size of the file this reference is pointing to is 50MB.
1427
+ # Required.
1428
+ # Corresponds to the JSON property `xunitXmlFiles`
1429
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::FileReference>]
1430
+ attr_accessor :xunit_xml_files
1431
+
1432
+ def initialize(**args)
1433
+ update!(**args)
1434
+ end
1435
+
1436
+ # Update properties of this object
1437
+ def update!(**args)
1438
+ @xunit_xml_files = args[:xunit_xml_files] if args.key?(:xunit_xml_files)
1439
+ end
1440
+ end
1441
+
1442
+ #
1443
+ class Screen
1444
+ include Google::Apis::Core::Hashable
1445
+
1446
+ # File reference of the png file. Required.
1447
+ # Corresponds to the JSON property `fileReference`
1448
+ # @return [String]
1449
+ attr_accessor :file_reference
1450
+
1451
+ # Locale of the device that the screenshot was taken on. Required.
1452
+ # Corresponds to the JSON property `locale`
1453
+ # @return [String]
1454
+ attr_accessor :locale
1455
+
1456
+ # Model of the device that the screenshot was taken on. Required.
1457
+ # Corresponds to the JSON property `model`
1458
+ # @return [String]
1459
+ attr_accessor :model
1460
+
1461
+ # OS version of the device that the screenshot was taken on. Required.
1462
+ # Corresponds to the JSON property `version`
1463
+ # @return [String]
1464
+ attr_accessor :version
1465
+
1466
+ def initialize(**args)
1467
+ update!(**args)
1468
+ end
1469
+
1470
+ # Update properties of this object
1471
+ def update!(**args)
1472
+ @file_reference = args[:file_reference] if args.key?(:file_reference)
1473
+ @locale = args[:locale] if args.key?(:locale)
1474
+ @model = args[:model] if args.key?(:model)
1475
+ @version = args[:version] if args.key?(:version)
1476
+ end
1477
+ end
1478
+
1479
+ #
1480
+ class ScreenshotCluster
1481
+ include Google::Apis::Core::Hashable
1482
+
1483
+ # A string that describes the activity of every screen in the cluster.
1484
+ # Corresponds to the JSON property `activity`
1485
+ # @return [String]
1486
+ attr_accessor :activity
1487
+
1488
+ # A unique identifier for the cluster.
1489
+ # Corresponds to the JSON property `clusterId`
1490
+ # @return [String]
1491
+ attr_accessor :cluster_id
1492
+
1493
+ # A singular screen that represents the cluster as a whole. This screen will act
1494
+ # as the "cover" of the entire cluster. When users look at the clusters, only
1495
+ # the key screen from each cluster will be shown. Which screen is the key screen
1496
+ # is determined by the ClusteringAlgorithm
1497
+ # Corresponds to the JSON property `keyScreen`
1498
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Screen]
1499
+ attr_accessor :key_screen
1500
+
1501
+ # Full list of screens.
1502
+ # Corresponds to the JSON property `screens`
1503
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::Screen>]
1504
+ attr_accessor :screens
1505
+
1506
+ def initialize(**args)
1507
+ update!(**args)
1508
+ end
1509
+
1510
+ # Update properties of this object
1511
+ def update!(**args)
1512
+ @activity = args[:activity] if args.key?(:activity)
1513
+ @cluster_id = args[:cluster_id] if args.key?(:cluster_id)
1514
+ @key_screen = args[:key_screen] if args.key?(:key_screen)
1515
+ @screens = args[:screens] if args.key?(:screens)
1516
+ end
1517
+ end
1518
+
1519
+ #
1520
+ class SkippedDetail
1521
+ include Google::Apis::Core::Hashable
1522
+
1523
+ # If the App doesn't support the specific API level.
1524
+ # Corresponds to the JSON property `incompatibleAppVersion`
1525
+ # @return [Boolean]
1526
+ attr_accessor :incompatible_app_version
1527
+ alias_method :incompatible_app_version?, :incompatible_app_version
1528
+
1529
+ # If the App doesn't run on the specific architecture, for example, x86.
1530
+ # Corresponds to the JSON property `incompatibleArchitecture`
1531
+ # @return [Boolean]
1532
+ attr_accessor :incompatible_architecture
1533
+ alias_method :incompatible_architecture?, :incompatible_architecture
1534
+
1535
+ # If the requested OS version doesn't run on the specific device model.
1536
+ # Corresponds to the JSON property `incompatibleDevice`
1537
+ # @return [Boolean]
1538
+ attr_accessor :incompatible_device
1539
+ alias_method :incompatible_device?, :incompatible_device
1540
+
1541
+ def initialize(**args)
1542
+ update!(**args)
1543
+ end
1544
+
1545
+ # Update properties of this object
1546
+ def update!(**args)
1547
+ @incompatible_app_version = args[:incompatible_app_version] if args.key?(:incompatible_app_version)
1548
+ @incompatible_architecture = args[:incompatible_architecture] if args.key?(:incompatible_architecture)
1549
+ @incompatible_device = args[:incompatible_device] if args.key?(:incompatible_device)
1550
+ end
1551
+ end
1552
+
1553
+ # The details about how to run the execution.
1554
+ class Specification
1555
+ include Google::Apis::Core::Hashable
1556
+
1557
+ # An Android mobile test specification.
1558
+ # Corresponds to the JSON property `androidTest`
1559
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::AndroidTest]
1560
+ attr_accessor :android_test
1561
+
1562
+ def initialize(**args)
1563
+ update!(**args)
1564
+ end
1565
+
1566
+ # Update properties of this object
1567
+ def update!(**args)
1568
+ @android_test = args[:android_test] if args.key?(:android_test)
1569
+ end
1570
+ end
1571
+
1572
+ # A stacktrace.
1573
+ class StackTrace
1574
+ include Google::Apis::Core::Hashable
1575
+
1576
+ # Exception cluster ID
1577
+ # Corresponds to the JSON property `clusterId`
1578
+ # @return [String]
1579
+ attr_accessor :cluster_id
1580
+
1581
+ # The stack trace message.
1582
+ # Required
1583
+ # Corresponds to the JSON property `exception`
1584
+ # @return [String]
1585
+ attr_accessor :exception
1586
+
1587
+ # Exception report ID
1588
+ # Corresponds to the JSON property `reportId`
1589
+ # @return [String]
1590
+ attr_accessor :report_id
1591
+
1592
+ def initialize(**args)
1593
+ update!(**args)
1594
+ end
1595
+
1596
+ # Update properties of this object
1597
+ def update!(**args)
1598
+ @cluster_id = args[:cluster_id] if args.key?(:cluster_id)
1599
+ @exception = args[:exception] if args.key?(:exception)
1600
+ @report_id = args[:report_id] if args.key?(:report_id)
1601
+ end
1602
+ end
1603
+
1604
+ # The `Status` type defines a logical error model that is suitable for different
1605
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1606
+ # gRPC](https://github.com/grpc). The error model is designed to be:
1607
+ # - Simple to use and understand for most users - Flexible enough to meet
1608
+ # unexpected needs
1609
+ # # Overview
1610
+ # The `Status` message contains three pieces of data: error code, error message,
1611
+ # and error details. The error code should be an enum value of [google.rpc.Code][
1612
+ # ], but it may accept additional error codes if needed. The error message
1613
+ # should be a developer-facing English message that helps developers *understand*
1614
+ # and *resolve* the error. If a localized user-facing error message is needed,
1615
+ # put the localized message in the error details or localize it in the client.
1616
+ # The optional error details may contain arbitrary information about the error.
1617
+ # There is a predefined set of error detail types in the package `google.rpc`
1618
+ # that can be used for common error conditions.
1619
+ # # Language mapping
1620
+ # The `Status` message is the logical representation of the error model, but it
1621
+ # is not necessarily the actual wire format. When the `Status` message is
1622
+ # exposed in different client libraries and different wire protocols, it can be
1623
+ # mapped differently. For example, it will likely be mapped to some exceptions
1624
+ # in Java, but more likely mapped to some error codes in C.
1625
+ # # Other uses
1626
+ # The error model and the `Status` message can be used in a variety of
1627
+ # environments, either with or without APIs, to provide a consistent developer
1628
+ # experience across different environments.
1629
+ # Example uses of this error model include:
1630
+ # - Partial errors. If a service needs to return partial errors to the client,
1631
+ # it may embed the `Status` in the normal response to indicate the partial
1632
+ # errors.
1633
+ # - Workflow errors. A typical workflow has multiple steps. Each step may have a
1634
+ # `Status` message for error reporting.
1635
+ # - Batch operations. If a client uses batch request and batch response, the `
1636
+ # Status` message should be used directly inside batch response, one for each
1637
+ # error sub-response.
1638
+ # - Asynchronous operations. If an API call embeds asynchronous operation
1639
+ # results in its response, the status of those operations should be represented
1640
+ # directly using the `Status` message.
1641
+ # - Logging. If some API errors are stored in logs, the message `Status` could
1642
+ # be used directly after any stripping needed for security/privacy reasons.
1643
+ class Status
1644
+ include Google::Apis::Core::Hashable
1645
+
1646
+ # The status code, which should be an enum value of [google.rpc.Code][].
1647
+ # Corresponds to the JSON property `code`
1648
+ # @return [Fixnum]
1649
+ attr_accessor :code
1650
+
1651
+ # A list of messages that carry the error details. There is a common set of
1652
+ # message types for APIs to use.
1653
+ # Corresponds to the JSON property `details`
1654
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::Any>]
1655
+ attr_accessor :details
1656
+
1657
+ # A developer-facing error message, which should be in English. Any user-facing
1658
+ # error message should be localized and sent in the [google.rpc.Status.details][]
1659
+ # field, or localized by the client.
1660
+ # Corresponds to the JSON property `message`
1661
+ # @return [String]
1662
+ attr_accessor :message
1663
+
1664
+ def initialize(**args)
1665
+ update!(**args)
1666
+ end
1667
+
1668
+ # Update properties of this object
1669
+ def update!(**args)
1670
+ @code = args[:code] if args.key?(:code)
1671
+ @details = args[:details] if args.key?(:details)
1672
+ @message = args[:message] if args.key?(:message)
1673
+ end
1674
+ end
1675
+
1676
+ # A Step represents a single operation performed as part of Execution. A step
1677
+ # can be used to represent the execution of a tool ( for example a test runner
1678
+ # execution or an execution of a compiler).
1679
+ # Steps can overlap (for instance two steps might have the same start time if
1680
+ # some operations are done in parallel).
1681
+ # Here is an example, let's consider that we have a continuous build is
1682
+ # executing a test runner for each iteration. The workflow would look like: -
1683
+ # user creates a Execution with id 1 - user creates an TestExecutionStep with id
1684
+ # 100 for Execution 1 - user update TestExecutionStep with id 100 to add a raw
1685
+ # xml log + the service parses the xml logs and returns a TestExecutionStep with
1686
+ # updated TestResult(s). - user update the status of TestExecutionStep with id
1687
+ # 100 to COMPLETE
1688
+ # A Step can be updated until its state is set to COMPLETE at which points it
1689
+ # becomes immutable.
1690
+ class Step
1691
+ include Google::Apis::Core::Hashable
1692
+
1693
+ # A Timestamp represents a point in time independent of any time zone or
1694
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1695
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1696
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1697
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1698
+ # smeared" so that no leap second table is needed for interpretation. Range is
1699
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1700
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1701
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1702
+ # txt).
1703
+ # # Examples
1704
+ # Example 1: Compute Timestamp from POSIX `time()`.
1705
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1706
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1707
+ # struct timeval tv; gettimeofday(&tv, NULL);
1708
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1709
+ # tv_usec * 1000);
1710
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1711
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1712
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1713
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1714
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1715
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1716
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1717
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1718
+ # long millis = System.currentTimeMillis();
1719
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1720
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1721
+ # Example 5: Compute Timestamp from current time in Python.
1722
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1723
+ # # JSON Mapping
1724
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1725
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1726
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1727
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1728
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1729
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1730
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1731
+ # indicated by "Z") is presently supported.
1732
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1733
+ # January 15, 2017.
1734
+ # In JavaScript, one can convert a Date object to this format using the standard
1735
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1736
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1737
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1738
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1739
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1740
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1741
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1742
+ # formatter capable of generating timestamps in this format.
1743
+ # Corresponds to the JSON property `completionTime`
1744
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
1745
+ attr_accessor :completion_time
1746
+
1747
+ # A Timestamp represents a point in time independent of any time zone or
1748
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1749
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1750
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1751
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1752
+ # smeared" so that no leap second table is needed for interpretation. Range is
1753
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1754
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1755
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1756
+ # txt).
1757
+ # # Examples
1758
+ # Example 1: Compute Timestamp from POSIX `time()`.
1759
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1760
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1761
+ # struct timeval tv; gettimeofday(&tv, NULL);
1762
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1763
+ # tv_usec * 1000);
1764
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1765
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1766
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1767
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1768
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1769
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1770
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1771
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1772
+ # long millis = System.currentTimeMillis();
1773
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1774
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1775
+ # Example 5: Compute Timestamp from current time in Python.
1776
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1777
+ # # JSON Mapping
1778
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1779
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1780
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1781
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1782
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1783
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1784
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1785
+ # indicated by "Z") is presently supported.
1786
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1787
+ # January 15, 2017.
1788
+ # In JavaScript, one can convert a Date object to this format using the standard
1789
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1790
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1791
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1792
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1793
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1794
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1795
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1796
+ # formatter capable of generating timestamps in this format.
1797
+ # Corresponds to the JSON property `creationTime`
1798
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
1799
+ attr_accessor :creation_time
1800
+
1801
+ # A description of this tool For example: mvn clean package -D skipTests=true
1802
+ # - In response: present if set by create/update request - In create/update
1803
+ # request: optional
1804
+ # Corresponds to the JSON property `description`
1805
+ # @return [String]
1806
+ attr_accessor :description
1807
+
1808
+ # A Duration represents a signed, fixed-length span of time represented as a
1809
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1810
+ # independent of any calendar and concepts like "day" or "month". It is related
1811
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1812
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1813
+ # 10,000 years.
1814
+ # # Examples
1815
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
1816
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
1817
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
1818
+ # start.nanos;
1819
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
1820
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
1821
+ # 1; duration.nanos += 1000000000; `
1822
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
1823
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
1824
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
1825
+ # duration.nanos;
1826
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
1827
+ # Example 3: Compute Duration from datetime.timedelta in Python.
1828
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
1829
+ # FromTimedelta(td)
1830
+ # # JSON Mapping
1831
+ # In JSON format, the Duration type is encoded as a string rather than an object,
1832
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
1833
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
1834
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
1835
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
1836
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
1837
+ # format as "3.000001s".
1838
+ # Corresponds to the JSON property `deviceUsageDuration`
1839
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
1840
+ attr_accessor :device_usage_duration
1841
+
1842
+ # If the execution containing this step has any dimension_definition set, then
1843
+ # this field allows the child to specify the values of the dimensions.
1844
+ # The keys must exactly match the dimension_definition of the execution.
1845
+ # For example, if the execution has `dimension_definition = ['attempt', 'device']
1846
+ # ` then a step must define values for those dimensions, eg. `dimension_value = [
1847
+ # 'attempt': '1', 'device': 'Nexus 6']`
1848
+ # If a step does not participate in one dimension of the matrix, the value for
1849
+ # that dimension should be empty string. For example, if one of the tests is
1850
+ # executed by a runner which does not support retries, the step could have `
1851
+ # dimension_value = ['attempt': '', 'device': 'Nexus 6']`
1852
+ # If the step does not participate in any dimensions of the matrix, it may leave
1853
+ # dimension_value unset.
1854
+ # A PRECONDITION_FAILED will be returned if any of the keys do not exist in the
1855
+ # dimension_definition of the execution.
1856
+ # A PRECONDITION_FAILED will be returned if another step in this execution
1857
+ # already has the same name and dimension_value, but differs on other data
1858
+ # fields, for example, step field is different.
1859
+ # A PRECONDITION_FAILED will be returned if dimension_value is set, and there is
1860
+ # a dimension_definition in the execution which is not specified as one of the
1861
+ # keys.
1862
+ # - In response: present if set by create - In create request: optional - In
1863
+ # update request: never set
1864
+ # Corresponds to the JSON property `dimensionValue`
1865
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::StepDimensionValueEntry>]
1866
+ attr_accessor :dimension_value
1867
+
1868
+ # Whether any of the outputs of this step are images whose thumbnails can be
1869
+ # fetched with ListThumbnails.
1870
+ # - In response: always set - In create/update request: never set
1871
+ # Corresponds to the JSON property `hasImages`
1872
+ # @return [Boolean]
1873
+ attr_accessor :has_images
1874
+ alias_method :has_images?, :has_images
1875
+
1876
+ # Arbitrary user-supplied key/value pairs that are associated with the step.
1877
+ # Users are responsible for managing the key namespace such that keys don't
1878
+ # accidentally collide.
1879
+ # An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if
1880
+ # the length of any of the keys or values exceeds 100 characters.
1881
+ # - In response: always set - In create request: optional - In update request:
1882
+ # optional; any new key/value pair will be added to the map, and any new value
1883
+ # for an existing key will update that key's value
1884
+ # Corresponds to the JSON property `labels`
1885
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::StepLabelsEntry>]
1886
+ attr_accessor :labels
1887
+
1888
+ # A short human-readable name to display in the UI. Maximum of 100 characters.
1889
+ # For example: Clean build
1890
+ # A PRECONDITION_FAILED will be returned upon creating a new step if it shares
1891
+ # its name and dimension_value with an existing step. If two steps represent a
1892
+ # similar action, but have different dimension values, they should share the
1893
+ # same name. For instance, if the same set of tests is run on two different
1894
+ # platforms, the two steps should have the same name.
1895
+ # - In response: always set - In create request: always set - In update request:
1896
+ # never set
1897
+ # Corresponds to the JSON property `name`
1898
+ # @return [String]
1899
+ attr_accessor :name
1900
+
1901
+ # Interprets a result so that humans and machines can act on it.
1902
+ # Corresponds to the JSON property `outcome`
1903
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Outcome]
1904
+ attr_accessor :outcome
1905
+
1906
+ # A Duration represents a signed, fixed-length span of time represented as a
1907
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1908
+ # independent of any calendar and concepts like "day" or "month". It is related
1909
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1910
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1911
+ # 10,000 years.
1912
+ # # Examples
1913
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
1914
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
1915
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
1916
+ # start.nanos;
1917
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
1918
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
1919
+ # 1; duration.nanos += 1000000000; `
1920
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
1921
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
1922
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
1923
+ # duration.nanos;
1924
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
1925
+ # Example 3: Compute Duration from datetime.timedelta in Python.
1926
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
1927
+ # FromTimedelta(td)
1928
+ # # JSON Mapping
1929
+ # In JSON format, the Duration type is encoded as a string rather than an object,
1930
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
1931
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
1932
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
1933
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
1934
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
1935
+ # format as "3.000001s".
1936
+ # Corresponds to the JSON property `runDuration`
1937
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
1938
+ attr_accessor :run_duration
1939
+
1940
+ # The initial state is IN_PROGRESS. The only legal state transitions are *
1941
+ # IN_PROGRESS -> COMPLETE
1942
+ # A PRECONDITION_FAILED will be returned if an invalid transition is requested.
1943
+ # It is valid to create Step with a state set to COMPLETE. The state can only be
1944
+ # set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is
1945
+ # set to COMPLETE multiple times.
1946
+ # - In response: always set - In create/update request: optional
1947
+ # Corresponds to the JSON property `state`
1948
+ # @return [String]
1949
+ attr_accessor :state
1950
+
1951
+ # A unique identifier within a Execution for this Step.
1952
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
1953
+ # - In response: always set - In create/update request: never set
1954
+ # Corresponds to the JSON property `stepId`
1955
+ # @return [String]
1956
+ attr_accessor :step_id
1957
+
1958
+ # A step that represents running tests.
1959
+ # It accepts ant-junit xml files which will be parsed into structured test
1960
+ # results by the service. Xml file paths are updated in order to append more
1961
+ # files, however they can't be deleted.
1962
+ # Users can also add test results manually by using the test_result field.
1963
+ # Corresponds to the JSON property `testExecutionStep`
1964
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::TestExecutionStep]
1965
+ attr_accessor :test_execution_step
1966
+
1967
+ # Generic tool step to be used for binaries we do not explicitly support. For
1968
+ # example: running cp to copy artifacts from one location to another.
1969
+ # Corresponds to the JSON property `toolExecutionStep`
1970
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::ToolExecutionStep]
1971
+ attr_accessor :tool_execution_step
1972
+
1973
+ def initialize(**args)
1974
+ update!(**args)
1975
+ end
1976
+
1977
+ # Update properties of this object
1978
+ def update!(**args)
1979
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
1980
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
1981
+ @description = args[:description] if args.key?(:description)
1982
+ @device_usage_duration = args[:device_usage_duration] if args.key?(:device_usage_duration)
1983
+ @dimension_value = args[:dimension_value] if args.key?(:dimension_value)
1984
+ @has_images = args[:has_images] if args.key?(:has_images)
1985
+ @labels = args[:labels] if args.key?(:labels)
1986
+ @name = args[:name] if args.key?(:name)
1987
+ @outcome = args[:outcome] if args.key?(:outcome)
1988
+ @run_duration = args[:run_duration] if args.key?(:run_duration)
1989
+ @state = args[:state] if args.key?(:state)
1990
+ @step_id = args[:step_id] if args.key?(:step_id)
1991
+ @test_execution_step = args[:test_execution_step] if args.key?(:test_execution_step)
1992
+ @tool_execution_step = args[:tool_execution_step] if args.key?(:tool_execution_step)
1993
+ end
1994
+ end
1995
+
1996
+ #
1997
+ class StepDimensionValueEntry
1998
+ include Google::Apis::Core::Hashable
1999
+
2000
+ #
2001
+ # Corresponds to the JSON property `key`
2002
+ # @return [String]
2003
+ attr_accessor :key
2004
+
2005
+ #
2006
+ # Corresponds to the JSON property `value`
2007
+ # @return [String]
2008
+ attr_accessor :value
2009
+
2010
+ def initialize(**args)
2011
+ update!(**args)
2012
+ end
2013
+
2014
+ # Update properties of this object
2015
+ def update!(**args)
2016
+ @key = args[:key] if args.key?(:key)
2017
+ @value = args[:value] if args.key?(:value)
2018
+ end
2019
+ end
2020
+
2021
+ #
2022
+ class StepLabelsEntry
2023
+ include Google::Apis::Core::Hashable
2024
+
2025
+ #
2026
+ # Corresponds to the JSON property `key`
2027
+ # @return [String]
2028
+ attr_accessor :key
2029
+
2030
+ #
2031
+ # Corresponds to the JSON property `value`
2032
+ # @return [String]
2033
+ attr_accessor :value
2034
+
2035
+ def initialize(**args)
2036
+ update!(**args)
2037
+ end
2038
+
2039
+ # Update properties of this object
2040
+ def update!(**args)
2041
+ @key = args[:key] if args.key?(:key)
2042
+ @value = args[:value] if args.key?(:value)
2043
+ end
2044
+ end
2045
+
2046
+ #
2047
+ class SuccessDetail
2048
+ include Google::Apis::Core::Hashable
2049
+
2050
+ # If a native process other than the app crashed.
2051
+ # Corresponds to the JSON property `otherNativeCrash`
2052
+ # @return [Boolean]
2053
+ attr_accessor :other_native_crash
2054
+ alias_method :other_native_crash?, :other_native_crash
2055
+
2056
+ def initialize(**args)
2057
+ update!(**args)
2058
+ end
2059
+
2060
+ # Update properties of this object
2061
+ def update!(**args)
2062
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
2063
+ end
2064
+ end
2065
+
2066
+ # A reference to a test case.
2067
+ # Test case references are canonically ordered lexicographically by these three
2068
+ # factors: * First, by test_suite_name. * Second, by class_name. * Third, by
2069
+ # name.
2070
+ class TestCaseReference
2071
+ include Google::Apis::Core::Hashable
2072
+
2073
+ # The name of the class.
2074
+ # Corresponds to the JSON property `className`
2075
+ # @return [String]
2076
+ attr_accessor :class_name
2077
+
2078
+ # The name of the test case.
2079
+ # Required.
2080
+ # Corresponds to the JSON property `name`
2081
+ # @return [String]
2082
+ attr_accessor :name
2083
+
2084
+ # The name of the test suite to which this test case belongs.
2085
+ # Corresponds to the JSON property `testSuiteName`
2086
+ # @return [String]
2087
+ attr_accessor :test_suite_name
2088
+
2089
+ def initialize(**args)
2090
+ update!(**args)
2091
+ end
2092
+
2093
+ # Update properties of this object
2094
+ def update!(**args)
2095
+ @class_name = args[:class_name] if args.key?(:class_name)
2096
+ @name = args[:name] if args.key?(:name)
2097
+ @test_suite_name = args[:test_suite_name] if args.key?(:test_suite_name)
2098
+ end
2099
+ end
2100
+
2101
+ # A step that represents running tests.
2102
+ # It accepts ant-junit xml files which will be parsed into structured test
2103
+ # results by the service. Xml file paths are updated in order to append more
2104
+ # files, however they can't be deleted.
2105
+ # Users can also add test results manually by using the test_result field.
2106
+ class TestExecutionStep
2107
+ include Google::Apis::Core::Hashable
2108
+
2109
+ # Issues observed during the test execution.
2110
+ # For example, if the mobile app under test crashed during the test, the error
2111
+ # message and the stack trace content can be recorded here to assist debugging.
2112
+ # - In response: present if set by create or update - In create/update request:
2113
+ # optional
2114
+ # Corresponds to the JSON property `testIssues`
2115
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::TestIssue>]
2116
+ attr_accessor :test_issues
2117
+
2118
+ # List of test suite overview contents. This could be parsed from xUnit XML log
2119
+ # by server, or uploaded directly by user. This references should only be called
2120
+ # when test suites are fully parsed or uploaded.
2121
+ # The maximum allowed number of test suite overviews per step is 1000.
2122
+ # - In response: always set - In create request: optional - In update request:
2123
+ # never (use publishXunitXmlFiles custom method instead)
2124
+ # Corresponds to the JSON property `testSuiteOverviews`
2125
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::TestSuiteOverview>]
2126
+ attr_accessor :test_suite_overviews
2127
+
2128
+ # Testing timing break down to know phases.
2129
+ # Corresponds to the JSON property `testTiming`
2130
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::TestTiming]
2131
+ attr_accessor :test_timing
2132
+
2133
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
2134
+ # artifacts or deploying code.
2135
+ # Corresponds to the JSON property `toolExecution`
2136
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::ToolExecution]
2137
+ attr_accessor :tool_execution
2138
+
2139
+ def initialize(**args)
2140
+ update!(**args)
2141
+ end
2142
+
2143
+ # Update properties of this object
2144
+ def update!(**args)
2145
+ @test_issues = args[:test_issues] if args.key?(:test_issues)
2146
+ @test_suite_overviews = args[:test_suite_overviews] if args.key?(:test_suite_overviews)
2147
+ @test_timing = args[:test_timing] if args.key?(:test_timing)
2148
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
2149
+ end
2150
+ end
2151
+
2152
+ # An issue detected occurring during a test execution.
2153
+ class TestIssue
2154
+ include Google::Apis::Core::Hashable
2155
+
2156
+ # A brief human-readable message describing the issue. Required.
2157
+ # Corresponds to the JSON property `errorMessage`
2158
+ # @return [String]
2159
+ attr_accessor :error_message
2160
+
2161
+ # Severity of issue. Required.
2162
+ # Corresponds to the JSON property `severity`
2163
+ # @return [String]
2164
+ attr_accessor :severity
2165
+
2166
+ # A stacktrace.
2167
+ # Corresponds to the JSON property `stackTrace`
2168
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::StackTrace]
2169
+ attr_accessor :stack_trace
2170
+
2171
+ # Type of issue. Required.
2172
+ # Corresponds to the JSON property `type`
2173
+ # @return [String]
2174
+ attr_accessor :type
2175
+
2176
+ # `Any` contains an arbitrary serialized protocol buffer message along with a
2177
+ # URL that describes the type of the serialized message.
2178
+ # Protobuf library provides support to pack/unpack Any values in the form of
2179
+ # utility functions or additional generated methods of the Any type.
2180
+ # Example 1: Pack and unpack a message in C++.
2181
+ # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) ` ... `
2182
+ # Example 2: Pack and unpack a message in Java.
2183
+ # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) ` foo = any.
2184
+ # unpack(Foo.class); `
2185
+ # Example 3: Pack and unpack a message in Python.
2186
+ # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.
2187
+ # Unpack(foo) ...
2188
+ # Example 4: Pack and unpack a message in Go
2189
+ # foo := &pb.Foo`...` any, err := ptypes.MarshalAny(foo) ... foo := &pb.Foo`` if
2190
+ # err := ptypes.UnmarshalAny(any, foo); err != nil ` ... `
2191
+ # The pack methods provided by protobuf library will by default use 'type.
2192
+ # googleapis.com/full.type.name' as the type URL and the unpack methods only use
2193
+ # the fully qualified type name after the last '/' in the type URL, for example "
2194
+ # foo.bar.com/x/y.z" will yield type name "y.z".
2195
+ # JSON ==== The JSON representation of an `Any` value uses the regular
2196
+ # representation of the deserialized, embedded message, with an additional field
2197
+ # `@type` which contains the type URL. Example:
2198
+ # package google.profile; message Person ` string first_name = 1; string
2199
+ # last_name = 2; `
2200
+ # ` "@type": "type.googleapis.com/google.profile.Person", "firstName": , "
2201
+ # lastName": `
2202
+ # If the embedded message type is well-known and has a custom JSON
2203
+ # representation, that representation will be embedded adding a field `value`
2204
+ # which holds the custom JSON in addition to the `@type` field. Example (for
2205
+ # message [google.protobuf.Duration][]):
2206
+ # ` "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" `
2207
+ # Corresponds to the JSON property `warning`
2208
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Any]
2209
+ attr_accessor :warning
2210
+
2211
+ def initialize(**args)
2212
+ update!(**args)
2213
+ end
2214
+
2215
+ # Update properties of this object
2216
+ def update!(**args)
2217
+ @error_message = args[:error_message] if args.key?(:error_message)
2218
+ @severity = args[:severity] if args.key?(:severity)
2219
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
2220
+ @type = args[:type] if args.key?(:type)
2221
+ @warning = args[:warning] if args.key?(:warning)
2222
+ end
2223
+ end
2224
+
2225
+ # A summary of a test suite result either parsed from XML or uploaded directly
2226
+ # by a user.
2227
+ # Note: the API related comments are for StepService only. This message is also
2228
+ # being used in ExecutionService in a read only mode for the corresponding step.
2229
+ class TestSuiteOverview
2230
+ include Google::Apis::Core::Hashable
2231
+
2232
+ # Number of test cases in error, typically set by the service by parsing the
2233
+ # xml_source.
2234
+ # - In create/response: always set - In update request: never
2235
+ # Corresponds to the JSON property `errorCount`
2236
+ # @return [Fixnum]
2237
+ attr_accessor :error_count
2238
+
2239
+ # Number of failed test cases, typically set by the service by parsing the
2240
+ # xml_source. May also be set by the user.
2241
+ # - In create/response: always set - In update request: never
2242
+ # Corresponds to the JSON property `failureCount`
2243
+ # @return [Fixnum]
2244
+ attr_accessor :failure_count
2245
+
2246
+ # The name of the test suite.
2247
+ # - In create/response: always set - In update request: never
2248
+ # Corresponds to the JSON property `name`
2249
+ # @return [String]
2250
+ attr_accessor :name
2251
+
2252
+ # Number of test cases not run, typically set by the service by parsing the
2253
+ # xml_source.
2254
+ # - In create/response: always set - In update request: never
2255
+ # Corresponds to the JSON property `skippedCount`
2256
+ # @return [Fixnum]
2257
+ attr_accessor :skipped_count
2258
+
2259
+ # Number of test cases, typically set by the service by parsing the xml_source.
2260
+ # - In create/response: always set - In update request: never
2261
+ # Corresponds to the JSON property `totalCount`
2262
+ # @return [Fixnum]
2263
+ attr_accessor :total_count
2264
+
2265
+ # A reference to a file.
2266
+ # Corresponds to the JSON property `xmlSource`
2267
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::FileReference]
2268
+ attr_accessor :xml_source
2269
+
2270
+ def initialize(**args)
2271
+ update!(**args)
2272
+ end
2273
+
2274
+ # Update properties of this object
2275
+ def update!(**args)
2276
+ @error_count = args[:error_count] if args.key?(:error_count)
2277
+ @failure_count = args[:failure_count] if args.key?(:failure_count)
2278
+ @name = args[:name] if args.key?(:name)
2279
+ @skipped_count = args[:skipped_count] if args.key?(:skipped_count)
2280
+ @total_count = args[:total_count] if args.key?(:total_count)
2281
+ @xml_source = args[:xml_source] if args.key?(:xml_source)
2282
+ end
2283
+ end
2284
+
2285
+ # Testing timing break down to know phases.
2286
+ class TestTiming
2287
+ include Google::Apis::Core::Hashable
2288
+
2289
+ # A Duration represents a signed, fixed-length span of time represented as a
2290
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
2291
+ # independent of any calendar and concepts like "day" or "month". It is related
2292
+ # to Timestamp in that the difference between two Timestamp values is a Duration
2293
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
2294
+ # 10,000 years.
2295
+ # # Examples
2296
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
2297
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
2298
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
2299
+ # start.nanos;
2300
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
2301
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
2302
+ # 1; duration.nanos += 1000000000; `
2303
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
2304
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
2305
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
2306
+ # duration.nanos;
2307
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
2308
+ # Example 3: Compute Duration from datetime.timedelta in Python.
2309
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
2310
+ # FromTimedelta(td)
2311
+ # # JSON Mapping
2312
+ # In JSON format, the Duration type is encoded as a string rather than an object,
2313
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
2314
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
2315
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
2316
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
2317
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
2318
+ # format as "3.000001s".
2319
+ # Corresponds to the JSON property `testProcessDuration`
2320
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Duration]
2321
+ attr_accessor :test_process_duration
2322
+
2323
+ def initialize(**args)
2324
+ update!(**args)
2325
+ end
2326
+
2327
+ # Update properties of this object
2328
+ def update!(**args)
2329
+ @test_process_duration = args[:test_process_duration] if args.key?(:test_process_duration)
2330
+ end
2331
+ end
2332
+
2333
+ # A single thumbnail, with its size and format.
2334
+ class Thumbnail
2335
+ include Google::Apis::Core::Hashable
2336
+
2337
+ # The thumbnail's content type, i.e. "image/png".
2338
+ # Always set.
2339
+ # Corresponds to the JSON property `contentType`
2340
+ # @return [String]
2341
+ attr_accessor :content_type
2342
+
2343
+ # The thumbnail file itself.
2344
+ # That is, the bytes here are precisely the bytes that make up the thumbnail
2345
+ # file; they can be served as an image as-is (with the appropriate content type.)
2346
+ # Always set.
2347
+ # Corresponds to the JSON property `data`
2348
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2349
+ # @return [String]
2350
+ attr_accessor :data
2351
+
2352
+ # The height of the thumbnail, in pixels.
2353
+ # Always set.
2354
+ # Corresponds to the JSON property `heightPx`
2355
+ # @return [Fixnum]
2356
+ attr_accessor :height_px
2357
+
2358
+ # The width of the thumbnail, in pixels.
2359
+ # Always set.
2360
+ # Corresponds to the JSON property `widthPx`
2361
+ # @return [Fixnum]
2362
+ attr_accessor :width_px
2363
+
2364
+ def initialize(**args)
2365
+ update!(**args)
2366
+ end
2367
+
2368
+ # Update properties of this object
2369
+ def update!(**args)
2370
+ @content_type = args[:content_type] if args.key?(:content_type)
2371
+ @data = args[:data] if args.key?(:data)
2372
+ @height_px = args[:height_px] if args.key?(:height_px)
2373
+ @width_px = args[:width_px] if args.key?(:width_px)
2374
+ end
2375
+ end
2376
+
2377
+ # A Timestamp represents a point in time independent of any time zone or
2378
+ # calendar, represented as seconds and fractions of seconds at nanosecond
2379
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
2380
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
2381
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
2382
+ # smeared" so that no leap second table is needed for interpretation. Range is
2383
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2384
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
2385
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
2386
+ # txt).
2387
+ # # Examples
2388
+ # Example 1: Compute Timestamp from POSIX `time()`.
2389
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
2390
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
2391
+ # struct timeval tv; gettimeofday(&tv, NULL);
2392
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
2393
+ # tv_usec * 1000);
2394
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
2395
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
2396
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
2397
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
2398
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
2399
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
2400
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
2401
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
2402
+ # long millis = System.currentTimeMillis();
2403
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
2404
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
2405
+ # Example 5: Compute Timestamp from current time in Python.
2406
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
2407
+ # # JSON Mapping
2408
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
2409
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
2410
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
2411
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
2412
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
2413
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
2414
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
2415
+ # indicated by "Z") is presently supported.
2416
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
2417
+ # January 15, 2017.
2418
+ # In JavaScript, one can convert a Date object to this format using the standard
2419
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
2420
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
2421
+ # datetime.datetime` object can be converted to this format using [`strftime`](
2422
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
2423
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
2424
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
2425
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
2426
+ # formatter capable of generating timestamps in this format.
2427
+ class Timestamp
2428
+ include Google::Apis::Core::Hashable
2429
+
2430
+ # Non-negative fractions of a second at nanosecond resolution. Negative second
2431
+ # values with fractions must still have non-negative nanos values that count
2432
+ # forward in time. Must be from 0 to 999,999,999 inclusive.
2433
+ # Corresponds to the JSON property `nanos`
2434
+ # @return [Fixnum]
2435
+ attr_accessor :nanos
2436
+
2437
+ # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be
2438
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
2439
+ # Corresponds to the JSON property `seconds`
2440
+ # @return [Fixnum]
2441
+ attr_accessor :seconds
2442
+
2443
+ def initialize(**args)
2444
+ update!(**args)
2445
+ end
2446
+
2447
+ # Update properties of this object
2448
+ def update!(**args)
2449
+ @nanos = args[:nanos] if args.key?(:nanos)
2450
+ @seconds = args[:seconds] if args.key?(:seconds)
2451
+ end
2452
+ end
2453
+
2454
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
2455
+ # artifacts or deploying code.
2456
+ class ToolExecution
2457
+ include Google::Apis::Core::Hashable
2458
+
2459
+ # The full tokenized command line including the program name (equivalent to argv
2460
+ # in a C program).
2461
+ # - In response: present if set by create request - In create request: optional -
2462
+ # In update request: never set
2463
+ # Corresponds to the JSON property `commandLineArguments`
2464
+ # @return [Array<String>]
2465
+ attr_accessor :command_line_arguments
2466
+
2467
+ # Exit code from a tool execution.
2468
+ # Corresponds to the JSON property `exitCode`
2469
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::ToolExitCode]
2470
+ attr_accessor :exit_code
2471
+
2472
+ # References to any plain text logs output the tool execution.
2473
+ # This field can be set before the tool has exited in order to be able to have
2474
+ # access to a live view of the logs while the tool is running.
2475
+ # The maximum allowed number of tool logs per step is 1000.
2476
+ # - In response: present if set by create/update request - In create request:
2477
+ # optional - In update request: optional, any value provided will be appended to
2478
+ # the existing list
2479
+ # Corresponds to the JSON property `toolLogs`
2480
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::FileReference>]
2481
+ attr_accessor :tool_logs
2482
+
2483
+ # References to opaque files of any format output by the tool execution.
2484
+ # The maximum allowed number of tool outputs per step is 1000.
2485
+ # - In response: present if set by create/update request - In create request:
2486
+ # optional - In update request: optional, any value provided will be appended to
2487
+ # the existing list
2488
+ # Corresponds to the JSON property `toolOutputs`
2489
+ # @return [Array<Google::Apis::ToolresultsV1beta3firstparty::ToolOutputReference>]
2490
+ attr_accessor :tool_outputs
2491
+
2492
+ def initialize(**args)
2493
+ update!(**args)
2494
+ end
2495
+
2496
+ # Update properties of this object
2497
+ def update!(**args)
2498
+ @command_line_arguments = args[:command_line_arguments] if args.key?(:command_line_arguments)
2499
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
2500
+ @tool_logs = args[:tool_logs] if args.key?(:tool_logs)
2501
+ @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs)
2502
+ end
2503
+ end
2504
+
2505
+ # Generic tool step to be used for binaries we do not explicitly support. For
2506
+ # example: running cp to copy artifacts from one location to another.
2507
+ class ToolExecutionStep
2508
+ include Google::Apis::Core::Hashable
2509
+
2510
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
2511
+ # artifacts or deploying code.
2512
+ # Corresponds to the JSON property `toolExecution`
2513
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::ToolExecution]
2514
+ attr_accessor :tool_execution
2515
+
2516
+ def initialize(**args)
2517
+ update!(**args)
2518
+ end
2519
+
2520
+ # Update properties of this object
2521
+ def update!(**args)
2522
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
2523
+ end
2524
+ end
2525
+
2526
+ # Exit code from a tool execution.
2527
+ class ToolExitCode
2528
+ include Google::Apis::Core::Hashable
2529
+
2530
+ # Tool execution exit code. A value of 0 means that the execution was successful.
2531
+ # - In response: always set - In create/update request: always set
2532
+ # Corresponds to the JSON property `number`
2533
+ # @return [Fixnum]
2534
+ attr_accessor :number
2535
+
2536
+ def initialize(**args)
2537
+ update!(**args)
2538
+ end
2539
+
2540
+ # Update properties of this object
2541
+ def update!(**args)
2542
+ @number = args[:number] if args.key?(:number)
2543
+ end
2544
+ end
2545
+
2546
+ # A reference to a ToolExecution output file.
2547
+ class ToolOutputReference
2548
+ include Google::Apis::Core::Hashable
2549
+
2550
+ # A Timestamp represents a point in time independent of any time zone or
2551
+ # calendar, represented as seconds and fractions of seconds at nanosecond
2552
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
2553
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
2554
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
2555
+ # smeared" so that no leap second table is needed for interpretation. Range is
2556
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2557
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
2558
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
2559
+ # txt).
2560
+ # # Examples
2561
+ # Example 1: Compute Timestamp from POSIX `time()`.
2562
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
2563
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
2564
+ # struct timeval tv; gettimeofday(&tv, NULL);
2565
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
2566
+ # tv_usec * 1000);
2567
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
2568
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
2569
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
2570
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
2571
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
2572
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
2573
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
2574
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
2575
+ # long millis = System.currentTimeMillis();
2576
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
2577
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
2578
+ # Example 5: Compute Timestamp from current time in Python.
2579
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
2580
+ # # JSON Mapping
2581
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
2582
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
2583
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
2584
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
2585
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
2586
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
2587
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
2588
+ # indicated by "Z") is presently supported.
2589
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
2590
+ # January 15, 2017.
2591
+ # In JavaScript, one can convert a Date object to this format using the standard
2592
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
2593
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
2594
+ # datetime.datetime` object can be converted to this format using [`strftime`](
2595
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
2596
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
2597
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
2598
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
2599
+ # formatter capable of generating timestamps in this format.
2600
+ # Corresponds to the JSON property `creationTime`
2601
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::Timestamp]
2602
+ attr_accessor :creation_time
2603
+
2604
+ # A reference to a file.
2605
+ # Corresponds to the JSON property `output`
2606
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::FileReference]
2607
+ attr_accessor :output
2608
+
2609
+ # A reference to a test case.
2610
+ # Test case references are canonically ordered lexicographically by these three
2611
+ # factors: * First, by test_suite_name. * Second, by class_name. * Third, by
2612
+ # name.
2613
+ # Corresponds to the JSON property `testCase`
2614
+ # @return [Google::Apis::ToolresultsV1beta3firstparty::TestCaseReference]
2615
+ attr_accessor :test_case
2616
+
2617
+ def initialize(**args)
2618
+ update!(**args)
2619
+ end
2620
+
2621
+ # Update properties of this object
2622
+ def update!(**args)
2623
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
2624
+ @output = args[:output] if args.key?(:output)
2625
+ @test_case = args[:test_case] if args.key?(:test_case)
2626
+ end
2627
+ end
2628
+ end
2629
+ end
2630
+ end