hubspot-api-client 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (632) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -23
  3. data/lib/hubspot-api-client.rb +1 -1
  4. data/lib/hubspot/codegen/crm/associations/api/batch_api.rb +222 -226
  5. data/lib/hubspot/codegen/crm/associations/api_client.rb +349 -351
  6. data/lib/hubspot/codegen/crm/associations/api_error.rb +35 -37
  7. data/lib/hubspot/codegen/crm/associations/configuration.rb +221 -223
  8. data/lib/hubspot/codegen/crm/associations/models/batch_input_public_association.rb +174 -178
  9. data/lib/hubspot/codegen/crm/associations/models/batch_input_public_object_id.rb +174 -178
  10. data/lib/hubspot/codegen/crm/associations/models/batch_response_public_association.rb +262 -266
  11. data/lib/hubspot/codegen/crm/associations/models/batch_response_public_association_multi.rb +262 -266
  12. data/lib/hubspot/codegen/crm/associations/models/error.rb +229 -233
  13. data/lib/hubspot/codegen/crm/associations/models/error_detail.rb +210 -214
  14. data/lib/hubspot/codegen/crm/associations/models/public_association.rb +184 -188
  15. data/lib/hubspot/codegen/crm/associations/models/public_association_multi.rb +186 -190
  16. data/lib/hubspot/codegen/crm/associations/models/public_object_id.rb +173 -177
  17. data/lib/hubspot/codegen/crm/companies/api/associations_api.rb +216 -220
  18. data/lib/hubspot/codegen/crm/companies/api/basic_api.rb +338 -340
  19. data/lib/hubspot/codegen/crm/companies/api/batch_api.rb +249 -253
  20. data/lib/hubspot/codegen/crm/companies/api/search_api.rb +66 -70
  21. data/lib/hubspot/codegen/crm/companies/api_client.rb +349 -351
  22. data/lib/hubspot/codegen/crm/companies/api_error.rb +35 -37
  23. data/lib/hubspot/codegen/crm/companies/configuration.rb +221 -223
  24. data/lib/hubspot/codegen/crm/companies/models/batch_input_simple_public_object_batch_input.rb +174 -178
  25. data/lib/hubspot/codegen/crm/companies/models/batch_input_simple_public_object_id.rb +174 -178
  26. data/lib/hubspot/codegen/crm/companies/models/batch_input_simple_public_object_input.rb +174 -178
  27. data/lib/hubspot/codegen/crm/companies/models/batch_read_input_simple_public_object_id.rb +188 -192
  28. data/lib/hubspot/codegen/crm/companies/models/batch_response_simple_public_object.rb +261 -265
  29. data/lib/hubspot/codegen/crm/companies/models/collection_response_simple_public_object.rb +182 -186
  30. data/lib/hubspot/codegen/crm/companies/models/collection_response_simple_public_object_id.rb +182 -186
  31. data/lib/hubspot/codegen/crm/companies/models/collection_response_with_total_simple_public_object.rb +195 -199
  32. data/lib/hubspot/codegen/crm/companies/models/error.rb +229 -233
  33. data/lib/hubspot/codegen/crm/companies/models/error_detail.rb +210 -214
  34. data/lib/hubspot/codegen/crm/companies/models/filter.rb +219 -223
  35. data/lib/hubspot/codegen/crm/companies/models/filter_group.rb +174 -178
  36. data/lib/hubspot/codegen/crm/companies/models/next_page.rb +180 -184
  37. data/lib/hubspot/codegen/crm/companies/models/paging.rb +168 -172
  38. data/lib/hubspot/codegen/crm/companies/models/public_object_search_request.rb +227 -231
  39. data/lib/hubspot/codegen/crm/companies/models/simple_public_object.rb +235 -239
  40. data/lib/hubspot/codegen/crm/companies/models/simple_public_object_batch_input.rb +185 -189
  41. data/lib/hubspot/codegen/crm/companies/models/simple_public_object_id.rb +172 -176
  42. data/lib/hubspot/codegen/crm/companies/models/simple_public_object_input.rb +174 -178
  43. data/lib/hubspot/codegen/crm/contacts/api/associations_api.rb +216 -220
  44. data/lib/hubspot/codegen/crm/contacts/api/basic_api.rb +338 -340
  45. data/lib/hubspot/codegen/crm/contacts/api/batch_api.rb +249 -253
  46. data/lib/hubspot/codegen/crm/contacts/api/search_api.rb +66 -70
  47. data/lib/hubspot/codegen/crm/contacts/api_client.rb +349 -351
  48. data/lib/hubspot/codegen/crm/contacts/api_error.rb +35 -37
  49. data/lib/hubspot/codegen/crm/contacts/configuration.rb +221 -223
  50. data/lib/hubspot/codegen/crm/contacts/models/batch_input_simple_public_object_batch_input.rb +174 -178
  51. data/lib/hubspot/codegen/crm/contacts/models/batch_input_simple_public_object_id.rb +174 -178
  52. data/lib/hubspot/codegen/crm/contacts/models/batch_input_simple_public_object_input.rb +174 -178
  53. data/lib/hubspot/codegen/crm/contacts/models/batch_read_input_simple_public_object_id.rb +188 -192
  54. data/lib/hubspot/codegen/crm/contacts/models/batch_response_simple_public_object.rb +261 -265
  55. data/lib/hubspot/codegen/crm/contacts/models/collection_response_simple_public_object.rb +182 -186
  56. data/lib/hubspot/codegen/crm/contacts/models/collection_response_simple_public_object_id.rb +182 -186
  57. data/lib/hubspot/codegen/crm/contacts/models/collection_response_with_total_simple_public_object.rb +195 -199
  58. data/lib/hubspot/codegen/crm/contacts/models/error.rb +229 -233
  59. data/lib/hubspot/codegen/crm/contacts/models/error_detail.rb +210 -214
  60. data/lib/hubspot/codegen/crm/contacts/models/filter.rb +219 -223
  61. data/lib/hubspot/codegen/crm/contacts/models/filter_group.rb +174 -178
  62. data/lib/hubspot/codegen/crm/contacts/models/next_page.rb +180 -184
  63. data/lib/hubspot/codegen/crm/contacts/models/paging.rb +168 -172
  64. data/lib/hubspot/codegen/crm/contacts/models/public_object_search_request.rb +227 -231
  65. data/lib/hubspot/codegen/crm/contacts/models/simple_public_object.rb +235 -239
  66. data/lib/hubspot/codegen/crm/contacts/models/simple_public_object_batch_input.rb +185 -189
  67. data/lib/hubspot/codegen/crm/contacts/models/simple_public_object_id.rb +172 -176
  68. data/lib/hubspot/codegen/crm/contacts/models/simple_public_object_input.rb +174 -178
  69. data/lib/hubspot/codegen/crm/deals/api/associations_api.rb +216 -220
  70. data/lib/hubspot/codegen/crm/deals/api/basic_api.rb +338 -340
  71. data/lib/hubspot/codegen/crm/deals/api/batch_api.rb +249 -253
  72. data/lib/hubspot/codegen/crm/deals/api/search_api.rb +66 -70
  73. data/lib/hubspot/codegen/crm/deals/api_client.rb +349 -351
  74. data/lib/hubspot/codegen/crm/deals/api_error.rb +35 -37
  75. data/lib/hubspot/codegen/crm/deals/configuration.rb +221 -223
  76. data/lib/hubspot/codegen/crm/deals/models/batch_input_simple_public_object_batch_input.rb +174 -178
  77. data/lib/hubspot/codegen/crm/deals/models/batch_input_simple_public_object_id.rb +174 -178
  78. data/lib/hubspot/codegen/crm/deals/models/batch_input_simple_public_object_input.rb +174 -178
  79. data/lib/hubspot/codegen/crm/deals/models/batch_read_input_simple_public_object_id.rb +188 -192
  80. data/lib/hubspot/codegen/crm/deals/models/batch_response_simple_public_object.rb +261 -265
  81. data/lib/hubspot/codegen/crm/deals/models/collection_response_simple_public_object.rb +182 -186
  82. data/lib/hubspot/codegen/crm/deals/models/collection_response_simple_public_object_id.rb +182 -186
  83. data/lib/hubspot/codegen/crm/deals/models/collection_response_with_total_simple_public_object.rb +195 -199
  84. data/lib/hubspot/codegen/crm/deals/models/error.rb +229 -233
  85. data/lib/hubspot/codegen/crm/deals/models/error_detail.rb +210 -214
  86. data/lib/hubspot/codegen/crm/deals/models/filter.rb +219 -223
  87. data/lib/hubspot/codegen/crm/deals/models/filter_group.rb +174 -178
  88. data/lib/hubspot/codegen/crm/deals/models/next_page.rb +180 -184
  89. data/lib/hubspot/codegen/crm/deals/models/paging.rb +168 -172
  90. data/lib/hubspot/codegen/crm/deals/models/public_object_search_request.rb +227 -231
  91. data/lib/hubspot/codegen/crm/deals/models/simple_public_object.rb +235 -239
  92. data/lib/hubspot/codegen/crm/deals/models/simple_public_object_batch_input.rb +185 -189
  93. data/lib/hubspot/codegen/crm/deals/models/simple_public_object_id.rb +172 -176
  94. data/lib/hubspot/codegen/crm/deals/models/simple_public_object_input.rb +174 -178
  95. data/lib/hubspot/codegen/crm/extensions/cards/api/cards_api.rb +342 -316
  96. data/lib/hubspot/codegen/crm/extensions/cards/api/sample_response_api.rb +84 -0
  97. data/lib/hubspot/codegen/crm/extensions/cards/api_client.rb +350 -352
  98. data/lib/hubspot/codegen/crm/extensions/cards/api_error.rb +36 -38
  99. data/lib/hubspot/codegen/crm/extensions/cards/configuration.rb +222 -224
  100. data/lib/hubspot/codegen/crm/extensions/cards/models/action_confirmation_body.rb +245 -0
  101. data/lib/hubspot/codegen/crm/extensions/cards/models/action_hook_action_body.rb +327 -0
  102. data/lib/hubspot/codegen/crm/extensions/cards/models/card_actions.rb +175 -179
  103. data/lib/hubspot/codegen/crm/extensions/cards/models/card_create_request.rb +208 -212
  104. data/lib/hubspot/codegen/crm/extensions/cards/models/card_display_body.rb +175 -179
  105. data/lib/hubspot/codegen/crm/extensions/cards/models/card_display_property.rb +237 -241
  106. data/lib/hubspot/codegen/crm/extensions/cards/models/card_fetch_body.rb +186 -190
  107. data/lib/hubspot/codegen/crm/extensions/cards/models/card_fetch_body_patch.rb +182 -186
  108. data/lib/hubspot/codegen/crm/extensions/cards/models/card_list_response.rb +175 -179
  109. data/lib/hubspot/codegen/crm/extensions/cards/models/card_object_type_body.rb +214 -218
  110. data/lib/hubspot/codegen/crm/extensions/cards/models/card_patch_request.rb +193 -197
  111. data/lib/hubspot/codegen/crm/extensions/cards/models/card_response.rb +228 -232
  112. data/lib/hubspot/codegen/crm/extensions/cards/models/display_option.rb +224 -228
  113. data/lib/hubspot/codegen/crm/extensions/cards/models/error.rb +230 -234
  114. data/lib/hubspot/codegen/crm/extensions/cards/models/error_detail.rb +193 -197
  115. data/lib/hubspot/codegen/crm/extensions/cards/models/i_frame_action_body.rb +320 -0
  116. data/lib/hubspot/codegen/crm/extensions/cards/models/integrator_card_payload_response.rb +303 -0
  117. data/lib/hubspot/codegen/crm/extensions/cards/models/integrator_object_result.rb +272 -0
  118. data/lib/hubspot/codegen/crm/extensions/cards/models/object_token.rb +278 -0
  119. data/lib/hubspot/codegen/crm/extensions/cards/models/top_level_actions.rb +237 -0
  120. data/lib/hubspot/codegen/crm/line_items/api/associations_api.rb +216 -220
  121. data/lib/hubspot/codegen/crm/line_items/api/basic_api.rb +338 -340
  122. data/lib/hubspot/codegen/crm/line_items/api/batch_api.rb +249 -253
  123. data/lib/hubspot/codegen/crm/line_items/api/search_api.rb +66 -70
  124. data/lib/hubspot/codegen/crm/line_items/api_client.rb +349 -351
  125. data/lib/hubspot/codegen/crm/line_items/api_error.rb +35 -37
  126. data/lib/hubspot/codegen/crm/line_items/configuration.rb +221 -223
  127. data/lib/hubspot/codegen/crm/line_items/models/batch_input_simple_public_object_batch_input.rb +174 -178
  128. data/lib/hubspot/codegen/crm/line_items/models/batch_input_simple_public_object_id.rb +174 -178
  129. data/lib/hubspot/codegen/crm/line_items/models/batch_input_simple_public_object_input.rb +174 -178
  130. data/lib/hubspot/codegen/crm/line_items/models/batch_read_input_simple_public_object_id.rb +188 -192
  131. data/lib/hubspot/codegen/crm/line_items/models/batch_response_simple_public_object.rb +261 -265
  132. data/lib/hubspot/codegen/crm/line_items/models/collection_response_simple_public_object.rb +182 -186
  133. data/lib/hubspot/codegen/crm/line_items/models/collection_response_simple_public_object_id.rb +182 -186
  134. data/lib/hubspot/codegen/crm/line_items/models/collection_response_with_total_simple_public_object.rb +195 -199
  135. data/lib/hubspot/codegen/crm/line_items/models/error.rb +229 -233
  136. data/lib/hubspot/codegen/crm/line_items/models/error_detail.rb +210 -214
  137. data/lib/hubspot/codegen/crm/line_items/models/filter.rb +219 -223
  138. data/lib/hubspot/codegen/crm/line_items/models/filter_group.rb +174 -178
  139. data/lib/hubspot/codegen/crm/line_items/models/next_page.rb +180 -184
  140. data/lib/hubspot/codegen/crm/line_items/models/paging.rb +168 -172
  141. data/lib/hubspot/codegen/crm/line_items/models/public_object_search_request.rb +227 -231
  142. data/lib/hubspot/codegen/crm/line_items/models/simple_public_object.rb +235 -239
  143. data/lib/hubspot/codegen/crm/line_items/models/simple_public_object_batch_input.rb +185 -189
  144. data/lib/hubspot/codegen/crm/line_items/models/simple_public_object_id.rb +172 -176
  145. data/lib/hubspot/codegen/crm/line_items/models/simple_public_object_input.rb +174 -178
  146. data/lib/hubspot/codegen/crm/objects/api/associations_api.rb +233 -237
  147. data/lib/hubspot/codegen/crm/objects/api/basic_api.rb +368 -369
  148. data/lib/hubspot/codegen/crm/objects/api/batch_api.rb +273 -277
  149. data/lib/hubspot/codegen/crm/objects/api/search_api.rb +72 -76
  150. data/lib/hubspot/codegen/crm/objects/api_client.rb +349 -351
  151. data/lib/hubspot/codegen/crm/objects/api_error.rb +35 -37
  152. data/lib/hubspot/codegen/crm/objects/configuration.rb +220 -222
  153. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_batch_input.rb +174 -178
  154. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_id.rb +174 -178
  155. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_input.rb +174 -178
  156. data/lib/hubspot/codegen/crm/objects/models/batch_read_input_simple_public_object_id.rb +196 -191
  157. data/lib/hubspot/codegen/crm/objects/models/batch_response_simple_public_object.rb +261 -265
  158. data/lib/hubspot/codegen/crm/objects/models/collection_response_simple_public_object.rb +182 -186
  159. data/lib/hubspot/codegen/crm/objects/models/collection_response_simple_public_object_id.rb +182 -186
  160. data/lib/hubspot/codegen/crm/objects/models/collection_response_with_total_simple_public_object.rb +195 -199
  161. data/lib/hubspot/codegen/crm/objects/models/error.rb +229 -233
  162. data/lib/hubspot/codegen/crm/objects/models/error_detail.rb +210 -214
  163. data/lib/hubspot/codegen/crm/objects/models/filter.rb +219 -223
  164. data/lib/hubspot/codegen/crm/objects/models/filter_group.rb +174 -178
  165. data/lib/hubspot/codegen/crm/objects/models/next_page.rb +180 -184
  166. data/lib/hubspot/codegen/crm/objects/models/paging.rb +168 -172
  167. data/lib/hubspot/codegen/crm/objects/models/public_object_search_request.rb +227 -231
  168. data/lib/hubspot/codegen/crm/objects/models/simple_public_object.rb +235 -239
  169. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_batch_input.rb +185 -189
  170. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_id.rb +172 -176
  171. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_input.rb +174 -178
  172. data/lib/hubspot/codegen/crm/owners/api/default_api.rb +138 -140
  173. data/lib/hubspot/codegen/crm/owners/api_client.rb +349 -351
  174. data/lib/hubspot/codegen/crm/owners/api_error.rb +35 -37
  175. data/lib/hubspot/codegen/crm/owners/configuration.rb +220 -222
  176. data/lib/hubspot/codegen/crm/owners/models/collection_response_public_owner.rb +182 -186
  177. data/lib/hubspot/codegen/crm/owners/models/error.rb +229 -233
  178. data/lib/hubspot/codegen/crm/owners/models/error_detail.rb +192 -196
  179. data/lib/hubspot/codegen/crm/owners/models/next_page.rb +180 -184
  180. data/lib/hubspot/codegen/crm/owners/models/paging.rb +168 -172
  181. data/lib/hubspot/codegen/crm/owners/models/public_owner.rb +242 -246
  182. data/lib/hubspot/codegen/crm/owners/models/public_team.rb +219 -223
  183. data/lib/hubspot/codegen/crm/pipelines/api/pipeline_stages_api.rb +458 -462
  184. data/lib/hubspot/codegen/crm/pipelines/api/pipelines_api.rb +422 -426
  185. data/lib/hubspot/codegen/crm/pipelines/api_client.rb +349 -351
  186. data/lib/hubspot/codegen/crm/pipelines/api_error.rb +35 -37
  187. data/lib/hubspot/codegen/crm/pipelines/configuration.rb +220 -222
  188. data/lib/hubspot/codegen/crm/pipelines/models/collection_response_pipeline.rb +182 -186
  189. data/lib/hubspot/codegen/crm/pipelines/models/collection_response_pipeline_stage.rb +182 -186
  190. data/lib/hubspot/codegen/crm/pipelines/models/error.rb +229 -254
  191. data/lib/hubspot/codegen/crm/pipelines/models/error_detail.rb +192 -196
  192. data/lib/hubspot/codegen/crm/pipelines/models/next_page.rb +180 -184
  193. data/lib/hubspot/codegen/crm/pipelines/models/paging.rb +168 -172
  194. data/lib/hubspot/codegen/crm/pipelines/models/pipeline.rb +262 -266
  195. data/lib/hubspot/codegen/crm/pipelines/models/pipeline_input.rb +203 -207
  196. data/lib/hubspot/codegen/crm/pipelines/models/pipeline_patch_input.rb +188 -192
  197. data/lib/hubspot/codegen/crm/pipelines/models/pipeline_stage.rb +261 -265
  198. data/lib/hubspot/codegen/crm/pipelines/models/pipeline_stage_input.rb +201 -205
  199. data/lib/hubspot/codegen/crm/pipelines/models/pipeline_stage_patch_input.rb +202 -206
  200. data/lib/hubspot/codegen/crm/products/api/associations_api.rb +215 -219
  201. data/lib/hubspot/codegen/crm/products/api/basic_api.rb +337 -339
  202. data/lib/hubspot/codegen/crm/products/api/batch_api.rb +248 -252
  203. data/lib/hubspot/codegen/crm/products/api/search_api.rb +65 -69
  204. data/lib/hubspot/codegen/crm/products/api_client.rb +349 -351
  205. data/lib/hubspot/codegen/crm/products/api_error.rb +35 -37
  206. data/lib/hubspot/codegen/crm/products/configuration.rb +220 -222
  207. data/lib/hubspot/codegen/crm/products/models/batch_input_simple_public_object_batch_input.rb +174 -178
  208. data/lib/hubspot/codegen/crm/products/models/batch_input_simple_public_object_id.rb +174 -178
  209. data/lib/hubspot/codegen/crm/products/models/batch_input_simple_public_object_input.rb +174 -178
  210. data/lib/hubspot/codegen/crm/products/models/batch_read_input_simple_public_object_id.rb +188 -192
  211. data/lib/hubspot/codegen/crm/products/models/batch_response_simple_public_object.rb +261 -265
  212. data/lib/hubspot/codegen/crm/products/models/collection_response_simple_public_object.rb +182 -186
  213. data/lib/hubspot/codegen/crm/products/models/collection_response_simple_public_object_id.rb +182 -186
  214. data/lib/hubspot/codegen/crm/products/models/collection_response_with_total_simple_public_object.rb +195 -199
  215. data/lib/hubspot/codegen/crm/products/models/error.rb +229 -233
  216. data/lib/hubspot/codegen/crm/products/models/error_detail.rb +210 -214
  217. data/lib/hubspot/codegen/crm/products/models/filter.rb +219 -223
  218. data/lib/hubspot/codegen/crm/products/models/filter_group.rb +174 -178
  219. data/lib/hubspot/codegen/crm/products/models/next_page.rb +180 -184
  220. data/lib/hubspot/codegen/crm/products/models/paging.rb +168 -172
  221. data/lib/hubspot/codegen/crm/products/models/public_object_search_request.rb +227 -231
  222. data/lib/hubspot/codegen/crm/products/models/simple_public_object.rb +235 -239
  223. data/lib/hubspot/codegen/crm/products/models/simple_public_object_batch_input.rb +185 -189
  224. data/lib/hubspot/codegen/crm/products/models/simple_public_object_id.rb +172 -176
  225. data/lib/hubspot/codegen/crm/products/models/simple_public_object_input.rb +174 -178
  226. data/lib/hubspot/codegen/crm/properties/api/batch_api.rb +203 -207
  227. data/lib/hubspot/codegen/crm/properties/api/core_api.rb +347 -351
  228. data/lib/hubspot/codegen/crm/properties/api/groups_api.rb +341 -345
  229. data/lib/hubspot/codegen/crm/properties/api_client.rb +349 -351
  230. data/lib/hubspot/codegen/crm/properties/api_error.rb +35 -37
  231. data/lib/hubspot/codegen/crm/properties/configuration.rb +220 -222
  232. data/lib/hubspot/codegen/crm/properties/models/batch_input_property_create.rb +174 -178
  233. data/lib/hubspot/codegen/crm/properties/models/batch_input_property_name.rb +174 -178
  234. data/lib/hubspot/codegen/crm/properties/models/batch_read_input_property_name.rb +185 -189
  235. data/lib/hubspot/codegen/crm/properties/models/batch_response_property.rb +261 -265
  236. data/lib/hubspot/codegen/crm/properties/models/collection_response_property.rb +182 -186
  237. data/lib/hubspot/codegen/crm/properties/models/collection_response_property_group.rb +182 -186
  238. data/lib/hubspot/codegen/crm/properties/models/error.rb +229 -233
  239. data/lib/hubspot/codegen/crm/properties/models/error_detail.rb +210 -214
  240. data/lib/hubspot/codegen/crm/properties/models/next_page.rb +180 -184
  241. data/lib/hubspot/codegen/crm/properties/models/option.rb +215 -219
  242. data/lib/hubspot/codegen/crm/properties/models/option_input.rb +215 -219
  243. data/lib/hubspot/codegen/crm/properties/models/paging.rb +168 -172
  244. data/lib/hubspot/codegen/crm/properties/models/property.rb +393 -397
  245. data/lib/hubspot/codegen/crm/properties/models/property_create.rb +309 -313
  246. data/lib/hubspot/codegen/crm/properties/models/property_group.rb +210 -214
  247. data/lib/hubspot/codegen/crm/properties/models/property_group_create.rb +195 -199
  248. data/lib/hubspot/codegen/crm/properties/models/property_group_update.rb +178 -182
  249. data/lib/hubspot/codegen/crm/properties/models/property_modification_metadata.rb +203 -207
  250. data/lib/hubspot/codegen/crm/properties/models/property_name.rb +173 -177
  251. data/lib/hubspot/codegen/crm/properties/models/property_update.rb +271 -275
  252. data/lib/hubspot/codegen/crm/quotes/api/associations_api.rb +215 -219
  253. data/lib/hubspot/codegen/crm/quotes/api/basic_api.rb +337 -339
  254. data/lib/hubspot/codegen/crm/quotes/api/batch_api.rb +248 -252
  255. data/lib/hubspot/codegen/crm/quotes/api/search_api.rb +65 -69
  256. data/lib/hubspot/codegen/crm/quotes/api_client.rb +349 -351
  257. data/lib/hubspot/codegen/crm/quotes/api_error.rb +35 -37
  258. data/lib/hubspot/codegen/crm/quotes/configuration.rb +220 -222
  259. data/lib/hubspot/codegen/crm/quotes/models/batch_input_simple_public_object_batch_input.rb +174 -178
  260. data/lib/hubspot/codegen/crm/quotes/models/batch_input_simple_public_object_id.rb +174 -178
  261. data/lib/hubspot/codegen/crm/quotes/models/batch_input_simple_public_object_input.rb +174 -178
  262. data/lib/hubspot/codegen/crm/quotes/models/batch_read_input_simple_public_object_id.rb +188 -192
  263. data/lib/hubspot/codegen/crm/quotes/models/batch_response_simple_public_object.rb +261 -265
  264. data/lib/hubspot/codegen/crm/quotes/models/collection_response_simple_public_object.rb +182 -186
  265. data/lib/hubspot/codegen/crm/quotes/models/collection_response_simple_public_object_id.rb +182 -186
  266. data/lib/hubspot/codegen/crm/quotes/models/collection_response_with_total_simple_public_object.rb +195 -199
  267. data/lib/hubspot/codegen/crm/quotes/models/error.rb +229 -233
  268. data/lib/hubspot/codegen/crm/quotes/models/error_detail.rb +210 -214
  269. data/lib/hubspot/codegen/crm/quotes/models/filter.rb +220 -224
  270. data/lib/hubspot/codegen/crm/quotes/models/filter_group.rb +174 -178
  271. data/lib/hubspot/codegen/crm/quotes/models/next_page.rb +181 -185
  272. data/lib/hubspot/codegen/crm/quotes/models/paging.rb +169 -173
  273. data/lib/hubspot/codegen/crm/quotes/models/public_object_search_request.rb +228 -232
  274. data/lib/hubspot/codegen/crm/quotes/models/simple_public_object.rb +236 -240
  275. data/lib/hubspot/codegen/crm/quotes/models/simple_public_object_batch_input.rb +186 -190
  276. data/lib/hubspot/codegen/crm/quotes/models/simple_public_object_id.rb +173 -177
  277. data/lib/hubspot/codegen/crm/quotes/models/simple_public_object_input.rb +175 -179
  278. data/lib/hubspot/codegen/crm/tickets/api/associations_api.rb +216 -220
  279. data/lib/hubspot/codegen/crm/tickets/api/basic_api.rb +338 -340
  280. data/lib/hubspot/codegen/crm/tickets/api/batch_api.rb +249 -253
  281. data/lib/hubspot/codegen/crm/tickets/api/search_api.rb +66 -70
  282. data/lib/hubspot/codegen/crm/tickets/api_client.rb +350 -352
  283. data/lib/hubspot/codegen/crm/tickets/api_error.rb +36 -38
  284. data/lib/hubspot/codegen/crm/tickets/configuration.rb +220 -222
  285. data/lib/hubspot/codegen/crm/tickets/models/batch_input_simple_public_object_batch_input.rb +175 -179
  286. data/lib/hubspot/codegen/crm/tickets/models/batch_input_simple_public_object_id.rb +175 -179
  287. data/lib/hubspot/codegen/crm/tickets/models/batch_input_simple_public_object_input.rb +175 -179
  288. data/lib/hubspot/codegen/crm/tickets/models/batch_read_input_simple_public_object_id.rb +189 -193
  289. data/lib/hubspot/codegen/crm/tickets/models/batch_response_simple_public_object.rb +262 -266
  290. data/lib/hubspot/codegen/crm/tickets/models/collection_response_simple_public_object.rb +183 -187
  291. data/lib/hubspot/codegen/crm/tickets/models/collection_response_simple_public_object_id.rb +183 -187
  292. data/lib/hubspot/codegen/crm/tickets/models/collection_response_with_total_simple_public_object.rb +196 -200
  293. data/lib/hubspot/codegen/crm/tickets/models/error.rb +230 -234
  294. data/lib/hubspot/codegen/crm/tickets/models/error_detail.rb +211 -215
  295. data/lib/hubspot/codegen/crm/tickets/models/filter.rb +220 -224
  296. data/lib/hubspot/codegen/crm/tickets/models/filter_group.rb +175 -179
  297. data/lib/hubspot/codegen/crm/tickets/models/next_page.rb +181 -185
  298. data/lib/hubspot/codegen/crm/tickets/models/paging.rb +169 -173
  299. data/lib/hubspot/codegen/crm/tickets/models/public_object_search_request.rb +228 -232
  300. data/lib/hubspot/codegen/crm/tickets/models/simple_public_object.rb +236 -240
  301. data/lib/hubspot/codegen/crm/tickets/models/simple_public_object_batch_input.rb +186 -190
  302. data/lib/hubspot/codegen/crm/tickets/models/simple_public_object_id.rb +172 -176
  303. data/lib/hubspot/codegen/crm/tickets/models/simple_public_object_input.rb +174 -178
  304. data/lib/hubspot/codegen/oauth/api/access_tokens_api.rb +64 -68
  305. data/lib/hubspot/codegen/oauth/api/refresh_tokens_api.rb +316 -320
  306. data/lib/hubspot/codegen/oauth/api/tokens_api.rb +78 -82
  307. data/lib/hubspot/codegen/oauth/api_client.rb +350 -352
  308. data/lib/hubspot/codegen/oauth/api_error.rb +34 -36
  309. data/lib/hubspot/codegen/oauth/configuration.rb +219 -221
  310. data/lib/hubspot/codegen/oauth/models/access_token_info_response.rb +250 -254
  311. data/lib/hubspot/codegen/oauth/models/error.rb +245 -249
  312. data/lib/hubspot/codegen/oauth/models/error_detail.rb +191 -195
  313. data/lib/hubspot/codegen/oauth/models/json_node.rb +333 -337
  314. data/lib/hubspot/codegen/oauth/models/refresh_token.rb +206 -210
  315. data/lib/hubspot/codegen/oauth/models/refresh_token_info_response.rb +239 -243
  316. data/lib/hubspot/configuration.rb +1 -1
  317. data/lib/hubspot/helpers/get_all_helper.rb +27 -0
  318. data/lib/hubspot/{oauth.rb → oauth_helper.rb} +1 -1
  319. data/lib/hubspot/version.rb +1 -1
  320. data/sample-apps/companies-app/Gemfile +1 -1
  321. data/sample-apps/companies-app/Gemfile.lock +4 -3
  322. data/sample-apps/companies-app/app/controllers/companies_controller.rb +2 -2
  323. data/sample-apps/companies-app/app/controllers/contacts_controller.rb +1 -1
  324. data/sample-apps/companies-app/app/lib/services/authorization/get_authorization_uri.rb +1 -1
  325. data/sample-apps/companies-app/app/lib/services/authorization/tokens/generate.rb +1 -1
  326. data/sample-apps/companies-app/app/lib/services/authorization/tokens/refresh.rb +1 -1
  327. data/sample-apps/companies-app/app/lib/services/hubspot/associations/create.rb +5 -5
  328. data/sample-apps/companies-app/app/lib/services/hubspot/associations/delete.rb +5 -5
  329. data/sample-apps/companies-app/app/lib/services/hubspot/associations/get_by_id.rb +4 -4
  330. data/sample-apps/companies-app/app/lib/services/hubspot/companies/create.rb +2 -2
  331. data/sample-apps/companies-app/app/lib/services/hubspot/companies/destroy.rb +1 -1
  332. data/sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb +1 -1
  333. data/sample-apps/companies-app/app/lib/services/hubspot/companies/get_all.rb +1 -1
  334. data/sample-apps/companies-app/app/lib/services/hubspot/companies/get_by_id.rb +1 -1
  335. data/sample-apps/companies-app/app/lib/services/hubspot/companies/search.rb +4 -4
  336. data/sample-apps/companies-app/app/lib/services/hubspot/companies/update.rb +2 -2
  337. data/sample-apps/{oauth-app/app/lib/services/hubspot/contacts/get_all.rb → companies-app/app/lib/services/hubspot/contacts/get_page.rb} +3 -3
  338. data/sample-apps/companies-app/app/lib/services/hubspot/contacts/search.rb +4 -4
  339. data/sample-apps/companies-app/app/views/oauth/authorization/login.html.erb +1 -1
  340. data/sample-apps/contacts-app/Gemfile +1 -1
  341. data/sample-apps/contacts-app/Gemfile.lock +4 -3
  342. data/sample-apps/contacts-app/app/controllers/contacts_controller.rb +3 -3
  343. data/sample-apps/contacts-app/app/controllers/properties_controller.rb +3 -3
  344. data/sample-apps/contacts-app/app/lib/services/authorization/get_authorization_uri.rb +1 -1
  345. data/sample-apps/contacts-app/app/lib/services/authorization/tokens/generate.rb +1 -1
  346. data/sample-apps/contacts-app/app/lib/services/authorization/tokens/refresh.rb +1 -1
  347. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/create.rb +2 -2
  348. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/destroy.rb +2 -2
  349. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/export.rb +2 -15
  350. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/get_by_id.rb +2 -2
  351. data/sample-apps/{companies-app/app/lib/services/hubspot/contacts/get_all.rb → contacts-app/app/lib/services/hubspot/contacts/get_page.rb} +3 -3
  352. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/search.rb +4 -4
  353. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/update.rb +2 -2
  354. data/sample-apps/contacts-app/app/lib/services/hubspot/owners/get_all.rb +1 -1
  355. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/create.rb +2 -2
  356. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/destroy.rb +1 -1
  357. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/get_all.rb +1 -1
  358. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/get_by_name.rb +1 -1
  359. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/update.rb +3 -3
  360. data/sample-apps/contacts-app/app/views/oauth/authorization/login.html.erb +1 -1
  361. data/sample-apps/leaky-bucket-app/.env.template +3 -0
  362. data/sample-apps/leaky-bucket-app/.gitignore +34 -0
  363. data/sample-apps/leaky-bucket-app/.ruby-version +1 -0
  364. data/sample-apps/leaky-bucket-app/Dockerfile +22 -0
  365. data/sample-apps/leaky-bucket-app/Gemfile +39 -0
  366. data/sample-apps/leaky-bucket-app/Gemfile.lock +307 -0
  367. data/sample-apps/leaky-bucket-app/README.md +34 -0
  368. data/sample-apps/leaky-bucket-app/Rakefile +6 -0
  369. data/sample-apps/leaky-bucket-app/app/assets/config/manifest.js +3 -0
  370. data/sample-apps/leaky-bucket-app/app/assets/images/.keep +0 -0
  371. data/sample-apps/leaky-bucket-app/app/assets/javascripts/application.js +25 -0
  372. data/sample-apps/leaky-bucket-app/app/assets/javascripts/cable.js +13 -0
  373. data/sample-apps/leaky-bucket-app/app/assets/javascripts/channels/.keep +0 -0
  374. data/sample-apps/leaky-bucket-app/app/assets/stylesheets/application.css +90 -0
  375. data/sample-apps/leaky-bucket-app/app/controllers/application_controller.rb +12 -0
  376. data/sample-apps/leaky-bucket-app/app/controllers/concerns/.keep +0 -0
  377. data/sample-apps/leaky-bucket-app/app/controllers/concerns/exception_handler.rb +12 -0
  378. data/sample-apps/leaky-bucket-app/app/controllers/home_controller.rb +15 -0
  379. data/sample-apps/leaky-bucket-app/app/controllers/oauth/authorization_controller.rb +19 -0
  380. data/sample-apps/leaky-bucket-app/app/helpers/application_helper.rb +2 -0
  381. data/sample-apps/leaky-bucket-app/app/lib/services/authorization/authorize_hubspot.rb +15 -0
  382. data/sample-apps/leaky-bucket-app/app/lib/services/authorization/get_authorization_uri.rb +33 -0
  383. data/sample-apps/leaky-bucket-app/app/lib/services/authorization/tokens/base.rb +19 -0
  384. data/sample-apps/leaky-bucket-app/app/lib/services/authorization/tokens/generate.rb +26 -0
  385. data/sample-apps/leaky-bucket-app/app/lib/services/authorization/tokens/refresh.rb +33 -0
  386. data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/archive_batch.rb +29 -0
  387. data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/create_batch.rb +37 -0
  388. data/sample-apps/leaky-bucket-app/app/models/application_record.rb +3 -0
  389. data/sample-apps/leaky-bucket-app/app/models/concerns/.keep +0 -0
  390. data/sample-apps/leaky-bucket-app/app/views/home/index.html.erb +13 -0
  391. data/sample-apps/leaky-bucket-app/app/views/layouts/application.html.erb +23 -0
  392. data/sample-apps/leaky-bucket-app/app/views/oauth/authorization/login.html.erb +15 -0
  393. data/sample-apps/leaky-bucket-app/app/views/shared/_header.html.erb +12 -0
  394. data/sample-apps/leaky-bucket-app/app/workers/leaky_bucket_worker.rb +25 -0
  395. data/sample-apps/leaky-bucket-app/bin/bundle +3 -0
  396. data/sample-apps/leaky-bucket-app/bin/rails +9 -0
  397. data/sample-apps/leaky-bucket-app/bin/rake +9 -0
  398. data/sample-apps/leaky-bucket-app/bin/setup +36 -0
  399. data/sample-apps/leaky-bucket-app/bin/spring +17 -0
  400. data/sample-apps/leaky-bucket-app/bin/update +31 -0
  401. data/sample-apps/leaky-bucket-app/bin/yarn +11 -0
  402. data/sample-apps/leaky-bucket-app/config.ru +5 -0
  403. data/sample-apps/leaky-bucket-app/config/application.rb +20 -0
  404. data/sample-apps/leaky-bucket-app/config/boot.rb +3 -0
  405. data/sample-apps/leaky-bucket-app/config/cable.yml +10 -0
  406. data/sample-apps/leaky-bucket-app/config/database.yml +25 -0
  407. data/sample-apps/leaky-bucket-app/config/environment.rb +5 -0
  408. data/sample-apps/leaky-bucket-app/config/environments/development.rb +65 -0
  409. data/sample-apps/leaky-bucket-app/config/environments/production.rb +94 -0
  410. data/sample-apps/leaky-bucket-app/config/environments/test.rb +46 -0
  411. data/sample-apps/leaky-bucket-app/config/initializers/assets.rb +14 -0
  412. data/sample-apps/leaky-bucket-app/config/initializers/filter_parameter_logging.rb +4 -0
  413. data/sample-apps/leaky-bucket-app/config/initializers/hubspot-api-ruby.rb +3 -0
  414. data/sample-apps/leaky-bucket-app/config/initializers/mime_types.rb +1 -0
  415. data/sample-apps/leaky-bucket-app/config/initializers/resque.rb +7 -0
  416. data/sample-apps/leaky-bucket-app/config/initializers/wrap_parameters.rb +14 -0
  417. data/sample-apps/leaky-bucket-app/config/locales/en.yml +33 -0
  418. data/sample-apps/leaky-bucket-app/config/puma.rb +34 -0
  419. data/sample-apps/leaky-bucket-app/config/routes.rb +10 -0
  420. data/sample-apps/leaky-bucket-app/config/spring.rb +6 -0
  421. data/sample-apps/leaky-bucket-app/db/seeds.rb +7 -0
  422. data/sample-apps/leaky-bucket-app/docker-compose.yml +25 -0
  423. data/sample-apps/leaky-bucket-app/docker-entrypoint.sh +8 -0
  424. data/sample-apps/leaky-bucket-app/lib/assets/.keep +0 -0
  425. data/sample-apps/leaky-bucket-app/lib/tasks/.keep +0 -0
  426. data/sample-apps/leaky-bucket-app/lib/tasks/leaky_bucket.rake +11 -0
  427. data/sample-apps/leaky-bucket-app/lib/tasks/resque.rake +11 -0
  428. data/sample-apps/leaky-bucket-app/log/.keep +0 -0
  429. data/sample-apps/leaky-bucket-app/package.json +5 -0
  430. data/sample-apps/leaky-bucket-app/public/404.html +67 -0
  431. data/sample-apps/leaky-bucket-app/public/422.html +67 -0
  432. data/sample-apps/leaky-bucket-app/public/500.html +66 -0
  433. data/sample-apps/leaky-bucket-app/public/apple-touch-icon-precomposed.png +0 -0
  434. data/sample-apps/leaky-bucket-app/public/apple-touch-icon.png +0 -0
  435. data/sample-apps/leaky-bucket-app/public/favicon.ico +0 -0
  436. data/sample-apps/leaky-bucket-app/public/robots.txt +1 -0
  437. data/sample-apps/leaky-bucket-app/resque-entrypoint.sh +9 -0
  438. data/sample-apps/leaky-bucket-app/tmp/.keep +0 -0
  439. data/sample-apps/oauth-app/app/controllers/contacts_controller.rb +3 -3
  440. data/sample-apps/oauth-app/app/lib/services/authorization/get_authorization_uri.rb +1 -1
  441. data/sample-apps/oauth-app/app/lib/services/authorization/tokens/generate.rb +1 -1
  442. data/sample-apps/oauth-app/app/lib/services/authorization/tokens/refresh.rb +1 -1
  443. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/create.rb +2 -2
  444. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/destroy.rb +2 -2
  445. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/export.rb +2 -15
  446. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/get_by_id.rb +2 -2
  447. data/sample-apps/{contacts-app/app/lib/services/hubspot/contacts/get_all.rb → oauth-app/app/lib/services/hubspot/contacts/get_page.rb} +3 -3
  448. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/search.rb +4 -4
  449. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/update.rb +2 -2
  450. data/sample-apps/oauth-app/app/lib/services/hubspot/owners/get_all.rb +1 -1
  451. data/sample-apps/oauth-app/app/views/oauth/authorization/login.html.erb +1 -1
  452. data/sample-apps/rate-limits-redis-sample-app/.env.template +3 -0
  453. data/sample-apps/rate-limits-redis-sample-app/.gitignore +34 -0
  454. data/sample-apps/rate-limits-redis-sample-app/.ruby-version +1 -0
  455. data/sample-apps/rate-limits-redis-sample-app/Dockerfile +22 -0
  456. data/sample-apps/rate-limits-redis-sample-app/Gemfile +39 -0
  457. data/sample-apps/rate-limits-redis-sample-app/Gemfile.lock +307 -0
  458. data/sample-apps/rate-limits-redis-sample-app/README.md +35 -0
  459. data/sample-apps/rate-limits-redis-sample-app/Rakefile +6 -0
  460. data/sample-apps/rate-limits-redis-sample-app/app/assets/config/manifest.js +3 -0
  461. data/sample-apps/rate-limits-redis-sample-app/app/assets/images/.keep +0 -0
  462. data/sample-apps/rate-limits-redis-sample-app/app/assets/javascripts/application.js +25 -0
  463. data/sample-apps/rate-limits-redis-sample-app/app/assets/javascripts/cable.js +13 -0
  464. data/sample-apps/rate-limits-redis-sample-app/app/assets/javascripts/channels/.keep +0 -0
  465. data/sample-apps/rate-limits-redis-sample-app/app/assets/stylesheets/application.css +90 -0
  466. data/sample-apps/rate-limits-redis-sample-app/app/controllers/application_controller.rb +12 -0
  467. data/sample-apps/rate-limits-redis-sample-app/app/controllers/concerns/.keep +0 -0
  468. data/sample-apps/rate-limits-redis-sample-app/app/controllers/concerns/exception_handler.rb +12 -0
  469. data/sample-apps/rate-limits-redis-sample-app/app/controllers/home_controller.rb +15 -0
  470. data/sample-apps/rate-limits-redis-sample-app/app/controllers/oauth/authorization_controller.rb +19 -0
  471. data/sample-apps/rate-limits-redis-sample-app/app/helpers/application_helper.rb +2 -0
  472. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/authorization/authorize_hubspot.rb +15 -0
  473. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/authorization/get_authorization_uri.rb +33 -0
  474. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/authorization/tokens/base.rb +19 -0
  475. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/authorization/tokens/generate.rb +26 -0
  476. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/authorization/tokens/refresh.rb +33 -0
  477. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/archive_batch.rb +29 -0
  478. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/create_batch.rb +37 -0
  479. data/sample-apps/rate-limits-redis-sample-app/app/models/application_record.rb +3 -0
  480. data/sample-apps/rate-limits-redis-sample-app/app/models/concerns/.keep +0 -0
  481. data/sample-apps/rate-limits-redis-sample-app/app/views/home/index.html.erb +13 -0
  482. data/sample-apps/rate-limits-redis-sample-app/app/views/layouts/application.html.erb +23 -0
  483. data/sample-apps/rate-limits-redis-sample-app/app/views/oauth/authorization/login.html.erb +15 -0
  484. data/sample-apps/rate-limits-redis-sample-app/app/views/shared/_header.html.erb +12 -0
  485. data/sample-apps/rate-limits-redis-sample-app/app/workers/redis_rate_limits_worker.rb +51 -0
  486. data/sample-apps/rate-limits-redis-sample-app/bin/bundle +3 -0
  487. data/sample-apps/rate-limits-redis-sample-app/bin/rails +9 -0
  488. data/sample-apps/rate-limits-redis-sample-app/bin/rake +9 -0
  489. data/sample-apps/rate-limits-redis-sample-app/bin/setup +36 -0
  490. data/sample-apps/rate-limits-redis-sample-app/bin/spring +17 -0
  491. data/sample-apps/rate-limits-redis-sample-app/bin/update +31 -0
  492. data/sample-apps/rate-limits-redis-sample-app/bin/yarn +11 -0
  493. data/sample-apps/rate-limits-redis-sample-app/config.ru +5 -0
  494. data/sample-apps/rate-limits-redis-sample-app/config/application.rb +20 -0
  495. data/sample-apps/rate-limits-redis-sample-app/config/boot.rb +3 -0
  496. data/sample-apps/rate-limits-redis-sample-app/config/cable.yml +10 -0
  497. data/sample-apps/rate-limits-redis-sample-app/config/database.yml +25 -0
  498. data/sample-apps/rate-limits-redis-sample-app/config/environment.rb +5 -0
  499. data/sample-apps/rate-limits-redis-sample-app/config/environments/development.rb +63 -0
  500. data/sample-apps/rate-limits-redis-sample-app/config/environments/production.rb +94 -0
  501. data/sample-apps/rate-limits-redis-sample-app/config/environments/test.rb +46 -0
  502. data/sample-apps/rate-limits-redis-sample-app/config/initializers/assets.rb +14 -0
  503. data/sample-apps/rate-limits-redis-sample-app/config/initializers/filter_parameter_logging.rb +4 -0
  504. data/sample-apps/rate-limits-redis-sample-app/config/initializers/hubspot-api-ruby.rb +3 -0
  505. data/sample-apps/rate-limits-redis-sample-app/config/initializers/mime_types.rb +1 -0
  506. data/sample-apps/rate-limits-redis-sample-app/config/initializers/resque.rb +7 -0
  507. data/sample-apps/rate-limits-redis-sample-app/config/initializers/wrap_parameters.rb +14 -0
  508. data/sample-apps/rate-limits-redis-sample-app/config/locales/en.yml +33 -0
  509. data/sample-apps/rate-limits-redis-sample-app/config/puma.rb +34 -0
  510. data/sample-apps/rate-limits-redis-sample-app/config/routes.rb +10 -0
  511. data/sample-apps/rate-limits-redis-sample-app/config/spring.rb +6 -0
  512. data/sample-apps/rate-limits-redis-sample-app/db/seeds.rb +7 -0
  513. data/sample-apps/rate-limits-redis-sample-app/docker-compose.yml +25 -0
  514. data/sample-apps/rate-limits-redis-sample-app/docker-entrypoint.sh +8 -0
  515. data/sample-apps/rate-limits-redis-sample-app/lib/assets/.keep +0 -0
  516. data/sample-apps/rate-limits-redis-sample-app/lib/tasks/.keep +0 -0
  517. data/sample-apps/rate-limits-redis-sample-app/lib/tasks/redis_rate_limits.rake +11 -0
  518. data/sample-apps/rate-limits-redis-sample-app/lib/tasks/resque.rake +11 -0
  519. data/sample-apps/rate-limits-redis-sample-app/log/.keep +0 -0
  520. data/sample-apps/rate-limits-redis-sample-app/package.json +5 -0
  521. data/sample-apps/rate-limits-redis-sample-app/public/404.html +67 -0
  522. data/sample-apps/rate-limits-redis-sample-app/public/422.html +67 -0
  523. data/sample-apps/rate-limits-redis-sample-app/public/500.html +66 -0
  524. data/sample-apps/rate-limits-redis-sample-app/public/apple-touch-icon-precomposed.png +0 -0
  525. data/sample-apps/rate-limits-redis-sample-app/public/apple-touch-icon.png +0 -0
  526. data/sample-apps/rate-limits-redis-sample-app/public/favicon.ico +0 -0
  527. data/sample-apps/rate-limits-redis-sample-app/public/robots.txt +1 -0
  528. data/sample-apps/rate-limits-redis-sample-app/resque-entrypoint.sh +9 -0
  529. data/sample-apps/rate-limits-redis-sample-app/tmp/.keep +0 -0
  530. data/sample-apps/retry-middleware-sample-app/Gemfile +1 -1
  531. data/sample-apps/retry-middleware-sample-app/Gemfile.lock +4 -3
  532. data/sample-apps/retry-middleware-sample-app/app/lib/services/authorization/get_authorization_uri.rb +1 -1
  533. data/sample-apps/retry-middleware-sample-app/app/lib/services/authorization/tokens/generate.rb +1 -1
  534. data/sample-apps/retry-middleware-sample-app/app/lib/services/authorization/tokens/refresh.rb +1 -1
  535. data/sample-apps/retry-middleware-sample-app/app/views/oauth/authorization/login.html.erb +1 -1
  536. data/sample-apps/retry-middleware-sample-app/lib/tasks/retry_middleware.rake +7 -7
  537. data/sample-apps/webhooks-contacts-app/Gemfile +1 -1
  538. data/sample-apps/webhooks-contacts-app/Gemfile.lock +4 -3
  539. data/sample-apps/webhooks-contacts-app/app/lib/services/authorization/get_authorization_uri.rb +1 -1
  540. data/sample-apps/webhooks-contacts-app/app/lib/services/authorization/tokens/generate.rb +1 -1
  541. data/sample-apps/webhooks-contacts-app/app/lib/services/authorization/tokens/refresh.rb +1 -1
  542. data/sample-apps/webhooks-contacts-app/app/lib/services/hubspot/contacts/get_batch.rb +3 -3
  543. data/sample-apps/webhooks-contacts-app/app/views/oauth/authorization/login.html.erb +1 -1
  544. data/spec/oauth/api/access_tokens_api_spec.rb +3 -3
  545. data/spec/oauth/api/refresh_tokens_api_spec.rb +3 -3
  546. data/spec/oauth/api/tokens_api_spec.rb +3 -3
  547. data/spec/oauth/api_client_spec.rb +23 -23
  548. data/spec/oauth/configuration_spec.rb +2 -2
  549. data/spec/oauth/models/access_token_info_response_spec.rb +3 -3
  550. data/spec/oauth/models/error_detail_spec.rb +3 -3
  551. data/spec/oauth/models/error_spec.rb +3 -3
  552. data/spec/oauth/models/json_node_spec.rb +3 -3
  553. data/spec/oauth/models/refresh_token_info_response_spec.rb +3 -3
  554. data/spec/oauth/models/refresh_token_spec.rb +3 -3
  555. data/spec/objects/api/associations_api_spec.rb +3 -3
  556. data/spec/objects/api/basic_api_spec.rb +3 -3
  557. data/spec/objects/api/batch_api_spec.rb +3 -3
  558. data/spec/objects/api/search_api_spec.rb +3 -3
  559. data/spec/objects/api_client_spec.rb +23 -23
  560. data/spec/objects/configuration_spec.rb +2 -2
  561. data/spec/objects/models/batch_input_simple_public_object_batch_input_spec.rb +3 -3
  562. data/spec/objects/models/batch_input_simple_public_object_id_spec.rb +3 -3
  563. data/spec/objects/models/batch_input_simple_public_object_input_spec.rb +3 -3
  564. data/spec/objects/models/batch_read_input_simple_public_object_id_spec.rb +3 -3
  565. data/spec/objects/models/batch_response_simple_public_object_spec.rb +3 -3
  566. data/spec/objects/models/collection_response_simple_public_object_id_spec.rb +3 -3
  567. data/spec/objects/models/collection_response_simple_public_object_spec.rb +3 -3
  568. data/spec/objects/models/collection_response_with_total_simple_public_object_spec.rb +3 -3
  569. data/spec/objects/models/error_detail_spec.rb +3 -3
  570. data/spec/objects/models/error_spec.rb +3 -3
  571. data/spec/objects/models/filter_group_spec.rb +3 -3
  572. data/spec/objects/models/filter_spec.rb +3 -3
  573. data/spec/objects/models/next_page_spec.rb +3 -3
  574. data/spec/objects/models/paging_spec.rb +3 -3
  575. data/spec/objects/models/public_object_search_request_spec.rb +3 -3
  576. data/spec/objects/models/simple_public_object_batch_input_spec.rb +3 -3
  577. data/spec/objects/models/simple_public_object_id_spec.rb +3 -3
  578. data/spec/objects/models/simple_public_object_input_spec.rb +3 -3
  579. data/spec/objects/models/simple_public_object_spec.rb +3 -3
  580. data/spec/owners/api/default_api_spec.rb +3 -3
  581. data/spec/owners/api_client_spec.rb +23 -23
  582. data/spec/owners/configuration_spec.rb +2 -2
  583. data/spec/owners/models/collection_response_public_owner_spec.rb +3 -3
  584. data/spec/owners/models/error_detail_spec.rb +3 -3
  585. data/spec/owners/models/error_spec.rb +3 -3
  586. data/spec/owners/models/next_page_spec.rb +3 -3
  587. data/spec/owners/models/paging_spec.rb +3 -3
  588. data/spec/owners/models/public_owner_spec.rb +3 -3
  589. data/spec/owners/models/public_team_spec.rb +3 -3
  590. data/spec/pipelines/api/pipeline_stages_api_spec.rb +3 -3
  591. data/spec/pipelines/api/pipelines_api_spec.rb +3 -3
  592. data/spec/pipelines/api_client_spec.rb +23 -23
  593. data/spec/pipelines/configuration_spec.rb +2 -2
  594. data/spec/pipelines/models/collection_response_pipeline_spec.rb +3 -3
  595. data/spec/pipelines/models/collection_response_pipeline_stage_spec.rb +3 -3
  596. data/spec/pipelines/models/error_detail_spec.rb +3 -3
  597. data/spec/pipelines/models/error_spec.rb +3 -3
  598. data/spec/pipelines/models/next_page_spec.rb +3 -3
  599. data/spec/pipelines/models/paging_spec.rb +3 -3
  600. data/spec/pipelines/models/pipeline_input_spec.rb +3 -3
  601. data/spec/pipelines/models/pipeline_patch_input_spec.rb +3 -3
  602. data/spec/pipelines/models/pipeline_spec.rb +3 -3
  603. data/spec/pipelines/models/pipeline_stage_input_spec.rb +3 -3
  604. data/spec/pipelines/models/pipeline_stage_patch_input_spec.rb +3 -3
  605. data/spec/pipelines/models/pipeline_stage_spec.rb +3 -3
  606. data/spec/properties/api/batch_api_spec.rb +3 -3
  607. data/spec/properties/api/core_api_spec.rb +3 -3
  608. data/spec/properties/api/groups_api_spec.rb +3 -3
  609. data/spec/properties/api_client_spec.rb +23 -23
  610. data/spec/properties/configuration_spec.rb +2 -2
  611. data/spec/properties/models/batch_input_property_create_spec.rb +3 -3
  612. data/spec/properties/models/batch_input_property_name_spec.rb +3 -3
  613. data/spec/properties/models/batch_read_input_property_name_spec.rb +3 -3
  614. data/spec/properties/models/batch_response_property_spec.rb +3 -3
  615. data/spec/properties/models/collection_response_property_group_spec.rb +3 -3
  616. data/spec/properties/models/collection_response_property_spec.rb +3 -3
  617. data/spec/properties/models/error_detail_spec.rb +3 -3
  618. data/spec/properties/models/error_spec.rb +3 -3
  619. data/spec/properties/models/next_page_spec.rb +3 -3
  620. data/spec/properties/models/option_input_spec.rb +3 -3
  621. data/spec/properties/models/option_spec.rb +3 -3
  622. data/spec/properties/models/paging_spec.rb +3 -3
  623. data/spec/properties/models/property_create_spec.rb +3 -3
  624. data/spec/properties/models/property_group_create_spec.rb +3 -3
  625. data/spec/properties/models/property_group_spec.rb +3 -3
  626. data/spec/properties/models/property_group_update_spec.rb +3 -3
  627. data/spec/properties/models/property_modification_metadata_spec.rb +3 -3
  628. data/spec/properties/models/property_name_spec.rb +3 -3
  629. data/spec/properties/models/property_spec.rb +3 -3
  630. data/spec/properties/models/property_update_spec.rb +3 -3
  631. metadata +544 -7
  632. data/lib/hubspot/codegen/crm/extensions/cards/api/default_api.rb +0 -318
@@ -13,89 +13,85 @@ OpenAPI Generator version: 4.2.2
13
13
  require 'cgi'
14
14
 
15
15
  module Hubspot
16
- module Client
17
- module OAuth
18
- module Api
19
- class TokensApi
20
- attr_accessor :api_client
21
-
22
- def initialize(api_client = ApiClient.default)
23
- @api_client = api_client
24
- end
25
- # Auth Level: none ([Docs](https://product.hubteam.com/docs/appsystems/auth-and-rest/auth-levels.html)) [Source Code](https://private.hubteam.com/opengrok/search?project=all&path=TokensResource%20OR%20Object&defs=requestAccessToken)&nbsp;|&nbsp;[API Goggles](https://tools.hubteam.com/api/post/api.hubapi.com%2Foauth%2Fv1%2Ftoken?showRequestDetails=true)&nbsp;|&nbsp;<a href='#operations-Tokens-post-%2Foauth%2Fv1%2Ftoken'>Permalink</a>
26
- # @param [Hash] opts the optional parameters
27
- # @option opts [String] :grant_type
28
- # @option opts [String] :code
29
- # @option opts [String] :redirect_uri
30
- # @option opts [String] :client_id
31
- # @option opts [String] :client_secret
32
- # @option opts [String] :refresh_token
33
- # @return [Error]
34
- def post_oauth_v1_token(opts = {})
35
- data, _status_code, _headers = post_oauth_v1_token_with_http_info(opts)
36
- data
37
- end
38
-
39
- # Auth Level: none ([Docs](https://product.hubteam.com/docs/appsystems/auth-and-rest/auth-levels.html)) [Source Code](https://private.hubteam.com/opengrok/search?project&#x3D;all&amp;path&#x3D;TokensResource%20OR%20Object&amp;defs&#x3D;requestAccessToken)&amp;nbsp;|&amp;nbsp;[API Goggles](https://tools.hubteam.com/api/post/api.hubapi.com%2Foauth%2Fv1%2Ftoken?showRequestDetails&#x3D;true)&amp;nbsp;|&amp;nbsp;&lt;a href&#x3D;&#39;#operations-Tokens-post-%2Foauth%2Fv1%2Ftoken&#39;&gt;Permalink&lt;/a&gt;
40
- # @param [Hash] opts the optional parameters
41
- # @option opts [String] :grant_type
42
- # @option opts [String] :code
43
- # @option opts [String] :redirect_uri
44
- # @option opts [String] :client_id
45
- # @option opts [String] :client_secret
46
- # @option opts [String] :refresh_token
47
- # @return [Array<(Error, Integer, Hash)>] Error data, response status code and response headers
48
- def post_oauth_v1_token_with_http_info(opts = {})
49
- if @api_client.config.debugging
50
- @api_client.config.logger.debug 'Calling API: TokensApi.post_oauth_v1_token ...'
51
- end
52
- # resource path
53
- local_var_path = '/v1/token'
54
-
55
- # query parameters
56
- query_params = opts[:query_params] || {}
57
-
58
- # header parameters
59
- header_params = opts[:header_params] || {}
60
- # HTTP header 'Accept' (if needed)
61
- header_params['Accept'] = @api_client.select_header_accept(['*/*'])
62
- # HTTP header 'Content-Type'
63
- header_params['Content-Type'] = @api_client.select_header_content_type(['application/x-www-form-urlencoded'])
64
-
65
- # form parameters
66
- form_params = opts[:form_params] || {}
67
- form_params['grant_type'] = opts[:'grant_type'] if !opts[:'grant_type'].nil?
68
- form_params['code'] = opts[:'code'] if !opts[:'code'].nil?
69
- form_params['redirect_uri'] = opts[:'redirect_uri'] if !opts[:'redirect_uri'].nil?
70
- form_params['client_id'] = opts[:'client_id'] if !opts[:'client_id'].nil?
71
- form_params['client_secret'] = opts[:'client_secret'] if !opts[:'client_secret'].nil?
72
- form_params['refresh_token'] = opts[:'refresh_token'] if !opts[:'refresh_token'].nil?
73
-
74
- # http body (model)
75
- post_body = opts[:body]
76
-
77
- # return_type
78
- return_type = opts[:return_type] || 'Error'
79
-
80
- # auth_names
81
- auth_names = opts[:auth_names] || []
82
-
83
- new_options = opts.merge(
84
- :header_params => header_params,
85
- :query_params => query_params,
86
- :form_params => form_params,
87
- :body => post_body,
88
- :auth_names => auth_names,
89
- :return_type => return_type
90
- )
91
-
92
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
93
- if @api_client.config.debugging
94
- @api_client.config.logger.debug "API called: TokensApi#post_oauth_v1_token\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
95
- end
96
- return data, status_code, headers
97
- end
16
+ module OAuth
17
+ class TokensApi
18
+ attr_accessor :api_client
19
+
20
+ def initialize(api_client = ApiClient.default)
21
+ @api_client = api_client
22
+ end
23
+ # Auth Level: none ([Docs](https://product.hubteam.com/docs/appsystems/auth-and-rest/auth-levels.html)) [Source Code](https://private.hubteam.com/opengrok/search?project=all&path=TokensResource%20OR%20Object&defs=requestAccessToken)&nbsp;|&nbsp;[API Goggles](https://tools.hubteam.com/api/post/api.hubapi.com%2Foauth%2Fv1%2Ftoken?showRequestDetails=true)&nbsp;|&nbsp;<a href='#operations-Tokens-post-%2Foauth%2Fv1%2Ftoken'>Permalink</a>
24
+ # @param [Hash] opts the optional parameters
25
+ # @option opts [String] :grant_type
26
+ # @option opts [String] :code
27
+ # @option opts [String] :redirect_uri
28
+ # @option opts [String] :client_id
29
+ # @option opts [String] :client_secret
30
+ # @option opts [String] :refresh_token
31
+ # @return [Error]
32
+ def post_oauth_v1_token(opts = {})
33
+ data, _status_code, _headers = post_oauth_v1_token_with_http_info(opts)
34
+ data
35
+ end
36
+
37
+ # Auth Level: none ([Docs](https://product.hubteam.com/docs/appsystems/auth-and-rest/auth-levels.html)) [Source Code](https://private.hubteam.com/opengrok/search?project&#x3D;all&amp;path&#x3D;TokensResource%20OR%20Object&amp;defs&#x3D;requestAccessToken)&amp;nbsp;|&amp;nbsp;[API Goggles](https://tools.hubteam.com/api/post/api.hubapi.com%2Foauth%2Fv1%2Ftoken?showRequestDetails&#x3D;true)&amp;nbsp;|&amp;nbsp;&lt;a href&#x3D;&#39;#operations-Tokens-post-%2Foauth%2Fv1%2Ftoken&#39;&gt;Permalink&lt;/a&gt;
38
+ # @param [Hash] opts the optional parameters
39
+ # @option opts [String] :grant_type
40
+ # @option opts [String] :code
41
+ # @option opts [String] :redirect_uri
42
+ # @option opts [String] :client_id
43
+ # @option opts [String] :client_secret
44
+ # @option opts [String] :refresh_token
45
+ # @return [Array<(Error, Integer, Hash)>] Error data, response status code and response headers
46
+ def post_oauth_v1_token_with_http_info(opts = {})
47
+ if @api_client.config.debugging
48
+ @api_client.config.logger.debug 'Calling API: TokensApi.post_oauth_v1_token ...'
49
+ end
50
+ # resource path
51
+ local_var_path = '/v1/token'
52
+
53
+ # query parameters
54
+ query_params = opts[:query_params] || {}
55
+
56
+ # header parameters
57
+ header_params = opts[:header_params] || {}
58
+ # HTTP header 'Accept' (if needed)
59
+ header_params['Accept'] = @api_client.select_header_accept(['*/*'])
60
+ # HTTP header 'Content-Type'
61
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/x-www-form-urlencoded'])
62
+
63
+ # form parameters
64
+ form_params = opts[:form_params] || {}
65
+ form_params['grant_type'] = opts[:'grant_type'] if !opts[:'grant_type'].nil?
66
+ form_params['code'] = opts[:'code'] if !opts[:'code'].nil?
67
+ form_params['redirect_uri'] = opts[:'redirect_uri'] if !opts[:'redirect_uri'].nil?
68
+ form_params['client_id'] = opts[:'client_id'] if !opts[:'client_id'].nil?
69
+ form_params['client_secret'] = opts[:'client_secret'] if !opts[:'client_secret'].nil?
70
+ form_params['refresh_token'] = opts[:'refresh_token'] if !opts[:'refresh_token'].nil?
71
+
72
+ # http body (model)
73
+ post_body = opts[:body]
74
+
75
+ # return_type
76
+ return_type = opts[:return_type] || 'Error'
77
+
78
+ # auth_names
79
+ auth_names = opts[:auth_names] || []
80
+
81
+ new_options = opts.merge(
82
+ :header_params => header_params,
83
+ :query_params => query_params,
84
+ :form_params => form_params,
85
+ :body => post_body,
86
+ :auth_names => auth_names,
87
+ :return_type => return_type
88
+ )
89
+
90
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
91
+ if @api_client.config.debugging
92
+ @api_client.config.logger.debug "API called: TokensApi#post_oauth_v1_token\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
98
93
  end
94
+ return data, status_code, headers
99
95
  end
100
96
  end
101
97
  end
@@ -17,405 +17,403 @@ require 'tempfile'
17
17
  require 'faraday'
18
18
 
19
19
  module Hubspot
20
- module Client
21
- module OAuth
22
- class ApiClient
23
- # The Configuration object holding settings to be used in the API client.
24
- attr_accessor :config
25
-
26
- # Defines the headers to be used in HTTP requests of all API calls by default.
27
- #
28
- # @return [Hash]
29
- attr_accessor :default_headers
30
-
31
- # Initializes the ApiClient
32
- # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
33
- def initialize(config = Configuration.default)
34
- @config = config
35
- @user_agent = "OpenAPI-Generator/#{VERSION}/ruby"
36
- @default_headers = {
37
- 'Content-Type' => 'application/json',
38
- 'User-Agent' => @user_agent
39
- }
40
- end
20
+ module OAuth
21
+ class ApiClient
22
+ # The Configuration object holding settings to be used in the API client.
23
+ attr_accessor :config
24
+
25
+ # Defines the headers to be used in HTTP requests of all API calls by default.
26
+ #
27
+ # @return [Hash]
28
+ attr_accessor :default_headers
29
+
30
+ # Initializes the ApiClient
31
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
32
+ def initialize(config = Configuration.default)
33
+ @config = config
34
+ @user_agent = "OpenAPI-Generator/#{VERSION}/ruby"
35
+ @default_headers = {
36
+ 'Content-Type' => 'application/json',
37
+ 'User-Agent' => @user_agent
38
+ }
39
+ end
41
40
 
42
- def self.default
43
- @@default ||= ApiClient.new
44
- end
41
+ def self.default
42
+ @@default ||= ApiClient.new
43
+ end
45
44
 
46
- # Call an API with given options.
47
- #
48
- # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
49
- # the data deserialized from response body (could be nil), response status code and response headers.
50
- def call_api(http_method, path, opts = {})
51
- ssl_options = {
52
- :ca_file => @config.ssl_ca_file,
53
- :verify => @config.ssl_verify,
54
- :verify_mode => @config.ssl_verify_mode,
55
- :client_cert => @config.ssl_client_cert,
56
- :client_key => @config.ssl_client_key
57
- }
58
-
59
- connection = Faraday.new(:url => config.base_url, :ssl => ssl_options) do |conn|
60
- conn.basic_auth(config.username, config.password)
61
- if opts[:header_params]["Content-Type"] == "multipart/form-data"
62
- conn.request :multipart
63
- conn.request :url_encoded
64
- end
65
- conn.adapter(Faraday.default_adapter)
66
-
67
- # Errors handler settings
68
- if !config.error_handler.empty?
69
- config.error_handler.each do |statuses, opts|
70
- statuses = statuses.is_a?(Integer) ? [statuses] : statuses
71
- retry_options = {
72
- max: opts[:max_retries],
73
- interval: opts[:seconds_delay],
74
- retry_statuses: statuses,
75
- methods: %i[post delete get head options put],
76
- retry_block: -> (env, options, retries, exc) { opts[:retry_block].call }
77
- }
78
- conn.request :retry, retry_options
79
- end
45
+ # Call an API with given options.
46
+ #
47
+ # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
48
+ # the data deserialized from response body (could be nil), response status code and response headers.
49
+ def call_api(http_method, path, opts = {})
50
+ ssl_options = {
51
+ :ca_file => @config.ssl_ca_file,
52
+ :verify => @config.ssl_verify,
53
+ :verify_mode => @config.ssl_verify_mode,
54
+ :client_cert => @config.ssl_client_cert,
55
+ :client_key => @config.ssl_client_key
56
+ }
57
+
58
+ connection = Faraday.new(:url => config.base_url, :ssl => ssl_options) do |conn|
59
+ conn.basic_auth(config.username, config.password)
60
+ if opts[:header_params]["Content-Type"] == "multipart/form-data"
61
+ conn.request :multipart
62
+ conn.request :url_encoded
63
+ end
64
+ conn.adapter(Faraday.default_adapter)
65
+
66
+ # Errors handler settings
67
+ if !config.error_handler.empty?
68
+ config.error_handler.each do |statuses, opts|
69
+ statuses = statuses.is_a?(Integer) ? [statuses] : statuses
70
+ retry_options = {
71
+ max: opts[:max_retries],
72
+ interval: opts[:seconds_delay],
73
+ retry_statuses: statuses,
74
+ methods: %i[post delete get head options put],
75
+ retry_block: -> (env, options, retries, exc) { opts[:retry_block].call }
76
+ }
77
+ conn.request :retry, retry_options
80
78
  end
81
79
  end
80
+ end
82
81
 
83
- begin
84
- response = connection.public_send(http_method.to_sym.downcase) do |req|
85
- build_request(http_method, path, req, opts)
86
- end
82
+ begin
83
+ response = connection.public_send(http_method.to_sym.downcase) do |req|
84
+ build_request(http_method, path, req, opts)
85
+ end
87
86
 
88
- if @config.debugging
89
- @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
90
- end
87
+ if @config.debugging
88
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
89
+ end
91
90
 
92
- unless response.success?
93
- if response.status == 0
94
- # Errors from libcurl will be made visible here
95
- fail ApiError.new(:code => 0,
96
- :message => response.return_message)
97
- else
98
- fail ApiError.new(:code => response.status,
99
- :response_headers => response.headers,
100
- :response_body => response.body),
101
- response.reason_phrase
102
- end
91
+ unless response.success?
92
+ if response.status == 0
93
+ # Errors from libcurl will be made visible here
94
+ fail ApiError.new(:code => 0,
95
+ :message => response.return_message)
96
+ else
97
+ fail ApiError.new(:code => response.status,
98
+ :response_headers => response.headers,
99
+ :response_body => response.body),
100
+ response.reason_phrase
103
101
  end
104
- rescue Faraday::TimeoutError
105
- fail ApiError.new('Connection timed out')
106
102
  end
103
+ rescue Faraday::TimeoutError
104
+ fail ApiError.new('Connection timed out')
105
+ end
107
106
 
108
- if opts[:return_type]
109
- data = deserialize(response, opts[:return_type])
110
- else
111
- data = nil
112
- end
113
- return data, response.status, response.headers
107
+ if opts[:return_type]
108
+ data = deserialize(response, opts[:return_type])
109
+ else
110
+ data = nil
114
111
  end
112
+ return data, response.status, response.headers
113
+ end
115
114
 
116
- # Builds the HTTP request
117
- #
118
- # @param [String] http_method HTTP method/verb (e.g. POST)
119
- # @param [String] path URL path (e.g. /account/new)
120
- # @option opts [Hash] :header_params Header parameters
121
- # @option opts [Hash] :query_params Query parameters
122
- # @option opts [Hash] :form_params Query parameters
123
- # @option opts [Object] :body HTTP body (JSON/XML)
124
- # @return [Typhoeus::Request] A Typhoeus Request
125
- def build_request(http_method, path, request, opts = {})
126
- url = build_request_url(path)
127
- http_method = http_method.to_sym.downcase
128
-
129
- header_params = @default_headers.merge(opts[:header_params] || {})
130
- query_params = opts[:query_params] || {}
131
- form_params = opts[:form_params] || {}
132
-
133
- update_params_for_auth! header_params, query_params, opts[:auth_names]
134
-
135
- req_opts = {
136
- :method => http_method,
137
- :headers => header_params,
138
- :params => query_params,
139
- :params_encoding => @config.params_encoding,
140
- :timeout => @config.timeout,
141
- :verbose => @config.debugging
142
- }
143
-
144
- if [:post, :patch, :put, :delete].include?(http_method)
145
- req_body = build_request_body(header_params, form_params, opts[:body])
146
- req_opts.update :body => req_body
147
- if @config.debugging
148
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
149
- end
115
+ # Builds the HTTP request
116
+ #
117
+ # @param [String] http_method HTTP method/verb (e.g. POST)
118
+ # @param [String] path URL path (e.g. /account/new)
119
+ # @option opts [Hash] :header_params Header parameters
120
+ # @option opts [Hash] :query_params Query parameters
121
+ # @option opts [Hash] :form_params Query parameters
122
+ # @option opts [Object] :body HTTP body (JSON/XML)
123
+ # @return [Typhoeus::Request] A Typhoeus Request
124
+ def build_request(http_method, path, request, opts = {})
125
+ url = build_request_url(path)
126
+ http_method = http_method.to_sym.downcase
127
+
128
+ header_params = @default_headers.merge(opts[:header_params] || {})
129
+ query_params = opts[:query_params] || {}
130
+ form_params = opts[:form_params] || {}
131
+
132
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
133
+
134
+ req_opts = {
135
+ :method => http_method,
136
+ :headers => header_params,
137
+ :params => query_params,
138
+ :params_encoding => @config.params_encoding,
139
+ :timeout => @config.timeout,
140
+ :verbose => @config.debugging
141
+ }
142
+
143
+ if [:post, :patch, :put, :delete].include?(http_method)
144
+ req_body = build_request_body(header_params, form_params, opts[:body])
145
+ req_opts.update :body => req_body
146
+ if @config.debugging
147
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
150
148
  end
151
- request.headers = header_params
152
- request.body = req_body
153
- request.url url
154
- request.params = query_params
155
- download_file(request) if opts[:return_type] == 'File'
156
- request
157
149
  end
150
+ request.headers = header_params
151
+ request.body = req_body
152
+ request.url url
153
+ request.params = query_params
154
+ download_file(request) if opts[:return_type] == 'File'
155
+ request
156
+ end
158
157
 
159
- # Builds the HTTP request body
160
- #
161
- # @param [Hash] header_params Header parameters
162
- # @param [Hash] form_params Query parameters
163
- # @param [Object] body HTTP body (JSON/XML)
164
- # @return [String] HTTP body data in the form of string
165
- def build_request_body(header_params, form_params, body)
166
- # http form
167
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
168
- data = URI.encode_www_form(form_params)
169
- elsif header_params['Content-Type'] == 'multipart/form-data'
170
- data = {}
171
- form_params.each do |key, value|
172
- case value
173
- when ::File, ::Tempfile
174
- # TODO hardcode to application/octet-stream, need better way to detect content type
175
- data[key] = Faraday::UploadIO.new(value.path, 'application/octet-stream', value.path)
176
- when ::Array, nil
177
- # let Faraday handle Array and nil parameters
178
- data[key] = value
179
- else
180
- data[key] = value.to_s
181
- end
158
+ # Builds the HTTP request body
159
+ #
160
+ # @param [Hash] header_params Header parameters
161
+ # @param [Hash] form_params Query parameters
162
+ # @param [Object] body HTTP body (JSON/XML)
163
+ # @return [String] HTTP body data in the form of string
164
+ def build_request_body(header_params, form_params, body)
165
+ # http form
166
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
167
+ data = URI.encode_www_form(form_params)
168
+ elsif header_params['Content-Type'] == 'multipart/form-data'
169
+ data = {}
170
+ form_params.each do |key, value|
171
+ case value
172
+ when ::File, ::Tempfile
173
+ # TODO hardcode to application/octet-stream, need better way to detect content type
174
+ data[key] = Faraday::UploadIO.new(value.path, 'application/octet-stream', value.path)
175
+ when ::Array, nil
176
+ # let Faraday handle Array and nil parameters
177
+ data[key] = value
178
+ else
179
+ data[key] = value.to_s
182
180
  end
183
- elsif body
184
- data = body.is_a?(String) ? body : body.to_json
185
- else
186
- data = nil
187
181
  end
188
- data
189
- end
190
-
191
- # Check if the given MIME is a JSON MIME.
192
- # JSON MIME examples:
193
- # application/json
194
- # application/json; charset=UTF8
195
- # APPLICATION/JSON
196
- # */*
197
- # @param [String] mime MIME
198
- # @return [Boolean] True if the MIME is application/json
199
- def json_mime?(mime)
200
- (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
182
+ elsif body
183
+ data = body.is_a?(String) ? body : body.to_json
184
+ else
185
+ data = nil
201
186
  end
187
+ data
188
+ end
202
189
 
203
- # Deserialize the response to the given return type.
204
- #
205
- # @param [Response] response HTTP response
206
- # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
207
- def deserialize(response, return_type)
208
- body = response.body
209
-
210
- # handle file downloading - return the File instance processed in request callbacks
211
- # note that response body is empty when the file is written in chunks in request on_body callback
212
- return @tempfile if return_type == 'File'
190
+ # Check if the given MIME is a JSON MIME.
191
+ # JSON MIME examples:
192
+ # application/json
193
+ # application/json; charset=UTF8
194
+ # APPLICATION/JSON
195
+ # */*
196
+ # @param [String] mime MIME
197
+ # @return [Boolean] True if the MIME is application/json
198
+ def json_mime?(mime)
199
+ (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
200
+ end
213
201
 
214
- return nil if body.nil? || body.empty?
202
+ # Deserialize the response to the given return type.
203
+ #
204
+ # @param [Response] response HTTP response
205
+ # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
206
+ def deserialize(response, return_type)
207
+ body = response.body
215
208
 
216
- # return response body directly for String return type
217
- return body if return_type == 'String'
209
+ # handle file downloading - return the File instance processed in request callbacks
210
+ # note that response body is empty when the file is written in chunks in request on_body callback
211
+ return @tempfile if return_type == 'File'
218
212
 
219
- # ensuring a default content type
220
- content_type = response.headers['Content-Type'] || 'application/json'
213
+ return nil if body.nil? || body.empty?
221
214
 
222
- fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
215
+ # return response body directly for String return type
216
+ return body if return_type == 'String'
223
217
 
224
- begin
225
- data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
226
- rescue JSON::ParserError => e
227
- if %w(String Date DateTime).include?(return_type)
228
- data = body
229
- else
230
- raise e
231
- end
232
- end
218
+ # ensuring a default content type
219
+ content_type = response.headers['Content-Type'] || 'application/json'
233
220
 
234
- convert_to_type data, return_type
235
- end
221
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
236
222
 
237
- # Convert data to the given return type.
238
- # @param [Object] data Data to be converted
239
- # @param [String] return_type Return type
240
- # @return [Mixed] Data in a particular type
241
- def convert_to_type(data, return_type)
242
- return nil if data.nil?
243
- case return_type
244
- when 'String'
245
- data.to_s
246
- when 'Integer'
247
- data.to_i
248
- when 'Float'
249
- data.to_f
250
- when 'Boolean'
251
- data == true
252
- when 'DateTime'
253
- # parse date time (expecting ISO 8601 format)
254
- DateTime.parse data
255
- when 'Date'
256
- # parse date time (expecting ISO 8601 format)
257
- Date.parse data
258
- when 'Object'
259
- # generic object (usually a Hash), return directly
260
- data
261
- when /\AArray<(.+)>\z/
262
- # e.g. Array<Pet>
263
- sub_type = $1
264
- data.map { |item| convert_to_type(item, sub_type) }
265
- when /\AHash\<String, (.+)\>\z/
266
- # e.g. Hash<String, Integer>
267
- sub_type = $1
268
- {}.tap do |hash|
269
- data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
270
- end
223
+ begin
224
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
225
+ rescue JSON::ParserError => e
226
+ if %w(String Date DateTime).include?(return_type)
227
+ data = body
271
228
  else
272
- # models, e.g. Pet
273
- Hubspot::Client::OAuth::Models.const_get(return_type).new.tap do |model|
274
- model.build_from_hash data
275
- end
229
+ raise e
276
230
  end
277
231
  end
278
232
 
279
- # Save response body into a file in (the defined) temporary folder, using the filename
280
- # from the "Content-Disposition" header if provided, otherwise a random filename.
281
- # The response body is written to the file in chunks in order to handle files which
282
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
283
- # process can use.
284
- #
285
- # @see Configuration#temp_folder_path
286
- def download_file(request)
287
- tempfile = nil
288
- encoding = nil
289
- request.on_headers do |response|
290
- content_disposition = response.headers['Content-Disposition']
291
- if content_disposition && content_disposition =~ /filename=/i
292
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
293
- prefix = sanitize_filename(filename)
294
- else
295
- prefix = 'download-'
296
- end
297
- prefix = prefix + '-' unless prefix.end_with?('-')
298
- encoding = response.body.encoding
299
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
300
- @tempfile = tempfile
301
- end
302
- request.on_body do |chunk|
303
- chunk.force_encoding(encoding)
304
- tempfile.write(chunk)
233
+ convert_to_type data, return_type
234
+ end
235
+
236
+ # Convert data to the given return type.
237
+ # @param [Object] data Data to be converted
238
+ # @param [String] return_type Return type
239
+ # @return [Mixed] Data in a particular type
240
+ def convert_to_type(data, return_type)
241
+ return nil if data.nil?
242
+ case return_type
243
+ when 'String'
244
+ data.to_s
245
+ when 'Integer'
246
+ data.to_i
247
+ when 'Float'
248
+ data.to_f
249
+ when 'Boolean'
250
+ data == true
251
+ when 'DateTime'
252
+ # parse date time (expecting ISO 8601 format)
253
+ DateTime.parse data
254
+ when 'Date'
255
+ # parse date time (expecting ISO 8601 format)
256
+ Date.parse data
257
+ when 'Object'
258
+ # generic object (usually a Hash), return directly
259
+ data
260
+ when /\AArray<(.+)>\z/
261
+ # e.g. Array<Pet>
262
+ sub_type = $1
263
+ data.map { |item| convert_to_type(item, sub_type) }
264
+ when /\AHash\<String, (.+)\>\z/
265
+ # e.g. Hash<String, Integer>
266
+ sub_type = $1
267
+ {}.tap do |hash|
268
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
305
269
  end
306
- request.on_complete do |response|
307
- tempfile.close if tempfile
308
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
309
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
310
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
311
- "explicitly with `tempfile.delete`"
270
+ else
271
+ # models, e.g. Pet
272
+ Hubspot::OAuth.const_get(return_type).new.tap do |model|
273
+ model.build_from_hash data
312
274
  end
313
275
  end
276
+ end
314
277
 
315
- # Sanitize filename by removing path.
316
- # e.g. ../../sun.gif becomes sun.gif
317
- #
318
- # @param [String] filename the filename to be sanitized
319
- # @return [String] the sanitized filename
320
- def sanitize_filename(filename)
321
- filename.gsub(/.*[\/\\]/, '')
278
+ # Save response body into a file in (the defined) temporary folder, using the filename
279
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
280
+ # The response body is written to the file in chunks in order to handle files which
281
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
282
+ # process can use.
283
+ #
284
+ # @see Configuration#temp_folder_path
285
+ def download_file(request)
286
+ tempfile = nil
287
+ encoding = nil
288
+ request.on_headers do |response|
289
+ content_disposition = response.headers['Content-Disposition']
290
+ if content_disposition && content_disposition =~ /filename=/i
291
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
292
+ prefix = sanitize_filename(filename)
293
+ else
294
+ prefix = 'download-'
295
+ end
296
+ prefix = prefix + '-' unless prefix.end_with?('-')
297
+ encoding = response.body.encoding
298
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
299
+ @tempfile = tempfile
322
300
  end
323
-
324
- def build_request_url(path)
325
- # Add leading and trailing slashes to path
326
- path = "/#{path}".gsub(/\/+/, '/')
327
- @config.base_url + path
301
+ request.on_body do |chunk|
302
+ chunk.force_encoding(encoding)
303
+ tempfile.write(chunk)
328
304
  end
305
+ request.on_complete do |response|
306
+ tempfile.close if tempfile
307
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
308
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
309
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
310
+ "explicitly with `tempfile.delete`"
311
+ end
312
+ end
329
313
 
330
- # Update hearder and query params based on authentication settings.
331
- #
332
- # @param [Hash] header_params Header parameters
333
- # @param [Hash] query_params Query parameters
334
- # @param [String] auth_names Authentication scheme name
335
- def update_params_for_auth!(header_params, query_params, auth_names)
336
- Array(auth_names).each do |auth_name|
337
- auth_setting = @config.auth_settings[auth_name]
338
- next unless auth_setting
339
- case auth_setting[:in]
340
- when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
341
- when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
342
- else fail ArgumentError, 'Authentication token must be in `query` of `header`'
343
- end
314
+ # Sanitize filename by removing path.
315
+ # e.g. ../../sun.gif becomes sun.gif
316
+ #
317
+ # @param [String] filename the filename to be sanitized
318
+ # @return [String] the sanitized filename
319
+ def sanitize_filename(filename)
320
+ filename.gsub(/.*[\/\\]/, '')
321
+ end
322
+
323
+ def build_request_url(path)
324
+ # Add leading and trailing slashes to path
325
+ path = "/#{path}".gsub(/\/+/, '/')
326
+ @config.base_url + path
327
+ end
328
+
329
+ # Update hearder and query params based on authentication settings.
330
+ #
331
+ # @param [Hash] header_params Header parameters
332
+ # @param [Hash] query_params Query parameters
333
+ # @param [String] auth_names Authentication scheme name
334
+ def update_params_for_auth!(header_params, query_params, auth_names)
335
+ Array(auth_names).each do |auth_name|
336
+ auth_setting = @config.auth_settings[auth_name]
337
+ next unless auth_setting
338
+ case auth_setting[:in]
339
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
340
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
341
+ else fail ArgumentError, 'Authentication token must be in `query` of `header`'
344
342
  end
345
343
  end
344
+ end
346
345
 
347
- # Sets user agent in HTTP header
348
- #
349
- # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
350
- def user_agent=(user_agent)
351
- @user_agent = user_agent
352
- @default_headers['User-Agent'] = @user_agent
353
- end
346
+ # Sets user agent in HTTP header
347
+ #
348
+ # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
349
+ def user_agent=(user_agent)
350
+ @user_agent = user_agent
351
+ @default_headers['User-Agent'] = @user_agent
352
+ end
354
353
 
355
- # Return Accept header based on an array of accepts provided.
356
- # @param [Array] accepts array for Accept
357
- # @return [String] the Accept header (e.g. application/json)
358
- def select_header_accept(accepts)
359
- return nil if accepts.nil? || accepts.empty?
360
- # use JSON when present, otherwise use all of the provided
361
- json_accept = accepts.find { |s| json_mime?(s) }
362
- json_accept || accepts.join(',')
363
- end
354
+ # Return Accept header based on an array of accepts provided.
355
+ # @param [Array] accepts array for Accept
356
+ # @return [String] the Accept header (e.g. application/json)
357
+ def select_header_accept(accepts)
358
+ return nil if accepts.nil? || accepts.empty?
359
+ # use JSON when present, otherwise use all of the provided
360
+ json_accept = accepts.find { |s| json_mime?(s) }
361
+ json_accept || accepts.join(',')
362
+ end
364
363
 
365
- # Return Content-Type header based on an array of content types provided.
366
- # @param [Array] content_types array for Content-Type
367
- # @return [String] the Content-Type header (e.g. application/json)
368
- def select_header_content_type(content_types)
369
- # use application/json by default
370
- return 'application/json' if content_types.nil? || content_types.empty?
371
- # use JSON when present, otherwise use the first one
372
- json_content_type = content_types.find { |s| json_mime?(s) }
373
- json_content_type || content_types.first
374
- end
364
+ # Return Content-Type header based on an array of content types provided.
365
+ # @param [Array] content_types array for Content-Type
366
+ # @return [String] the Content-Type header (e.g. application/json)
367
+ def select_header_content_type(content_types)
368
+ # use application/json by default
369
+ return 'application/json' if content_types.nil? || content_types.empty?
370
+ # use JSON when present, otherwise use the first one
371
+ json_content_type = content_types.find { |s| json_mime?(s) }
372
+ json_content_type || content_types.first
373
+ end
375
374
 
376
- # Convert object (array, hash, object, etc) to JSON string.
377
- # @param [Object] model object to be converted into JSON string
378
- # @return [String] JSON string representation of the object
379
- def object_to_http_body(model)
380
- return model if model.nil? || model.is_a?(String)
381
- local_body = nil
382
- if model.is_a?(Array)
383
- local_body = model.map { |m| object_to_hash(m) }
384
- else
385
- local_body = object_to_hash(model)
386
- end
387
- local_body.to_json
375
+ # Convert object (array, hash, object, etc) to JSON string.
376
+ # @param [Object] model object to be converted into JSON string
377
+ # @return [String] JSON string representation of the object
378
+ def object_to_http_body(model)
379
+ return model if model.nil? || model.is_a?(String)
380
+ local_body = nil
381
+ if model.is_a?(Array)
382
+ local_body = model.map { |m| object_to_hash(m) }
383
+ else
384
+ local_body = object_to_hash(model)
388
385
  end
386
+ local_body.to_json
387
+ end
389
388
 
390
- # Convert object(non-array) to hash.
391
- # @param [Object] obj object to be converted into JSON string
392
- # @return [String] JSON string representation of the object
393
- def object_to_hash(obj)
394
- if obj.respond_to?(:to_hash)
395
- obj.to_hash
396
- else
397
- obj
398
- end
389
+ # Convert object(non-array) to hash.
390
+ # @param [Object] obj object to be converted into JSON string
391
+ # @return [String] JSON string representation of the object
392
+ def object_to_hash(obj)
393
+ if obj.respond_to?(:to_hash)
394
+ obj.to_hash
395
+ else
396
+ obj
399
397
  end
398
+ end
400
399
 
401
- # Build parameter value according to the given collection format.
402
- # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
403
- def build_collection_param(param, collection_format)
404
- case collection_format
405
- when :csv
406
- param.join(',')
407
- when :ssv
408
- param.join(' ')
409
- when :tsv
410
- param.join("\t")
411
- when :pipes
412
- param.join('|')
413
- when :multi
414
- # return the array directly as typhoeus will handle it as expected
415
- param
416
- else
417
- fail "unknown collection format: #{collection_format.inspect}"
418
- end
400
+ # Build parameter value according to the given collection format.
401
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
402
+ def build_collection_param(param, collection_format)
403
+ case collection_format
404
+ when :csv
405
+ param.join(',')
406
+ when :ssv
407
+ param.join(' ')
408
+ when :tsv
409
+ param.join("\t")
410
+ when :pipes
411
+ param.join('|')
412
+ when :multi
413
+ # return the array directly as typhoeus will handle it as expected
414
+ param
415
+ else
416
+ fail "unknown collection format: #{collection_format.inspect}"
419
417
  end
420
418
  end
421
419
  end