hubspot-api-client 6.0.0 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +41 -0
  4. data/lib/hubspot-api-client.rb +55 -0
  5. data/lib/hubspot/codegen/cms/audit-logs/configuration.rb +0 -7
  6. data/lib/hubspot/codegen/cms/domains/configuration.rb +0 -7
  7. data/lib/hubspot/codegen/cms/performance/configuration.rb +0 -14
  8. data/lib/hubspot/codegen/cms/site-search/configuration.rb +0 -7
  9. data/lib/hubspot/codegen/cms/url-redirects/configuration.rb +0 -7
  10. data/lib/hubspot/codegen/crm/associations/configuration.rb +0 -7
  11. data/lib/hubspot/codegen/crm/companies/configuration.rb +0 -7
  12. data/lib/hubspot/codegen/crm/contacts/configuration.rb +0 -7
  13. data/lib/hubspot/codegen/crm/deals/configuration.rb +0 -7
  14. data/lib/hubspot/codegen/crm/extensions/cards/configuration.rb +0 -14
  15. data/lib/hubspot/codegen/crm/imports/configuration.rb +0 -7
  16. data/lib/hubspot/codegen/crm/line_items/configuration.rb +0 -7
  17. data/lib/hubspot/codegen/crm/objects/api/associations_api.rb +278 -0
  18. data/lib/hubspot/codegen/crm/objects/api/basic_api.rb +405 -0
  19. data/lib/hubspot/codegen/crm/objects/api/batch_api.rb +309 -0
  20. data/lib/hubspot/codegen/crm/objects/api/search_api.rb +96 -0
  21. data/lib/hubspot/codegen/crm/objects/api_client.rb +424 -0
  22. data/lib/hubspot/codegen/crm/objects/api_error.rb +61 -0
  23. data/lib/hubspot/codegen/crm/objects/configuration.rb +258 -0
  24. data/lib/hubspot/codegen/crm/objects/models/associated_id.rb +229 -0
  25. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_batch_input.rb +217 -0
  26. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_id.rb +217 -0
  27. data/lib/hubspot/codegen/crm/objects/models/batch_input_simple_public_object_input.rb +217 -0
  28. data/lib/hubspot/codegen/crm/objects/models/batch_read_input_simple_public_object_id.rb +242 -0
  29. data/lib/hubspot/codegen/crm/objects/models/batch_response_simple_public_object.rb +313 -0
  30. data/lib/hubspot/codegen/crm/objects/models/batch_response_simple_public_object_with_errors.rb +333 -0
  31. data/lib/hubspot/codegen/crm/objects/models/collection_response_associated_id.rb +226 -0
  32. data/lib/hubspot/codegen/crm/objects/models/collection_response_simple_public_object.rb +226 -0
  33. data/lib/hubspot/codegen/crm/objects/models/collection_response_with_total_simple_public_object.rb +241 -0
  34. data/lib/hubspot/codegen/crm/objects/models/error.rb +292 -0
  35. data/lib/hubspot/codegen/crm/objects/models/error_detail.rb +258 -0
  36. data/lib/hubspot/codegen/crm/objects/models/filter.rb +272 -0
  37. data/lib/hubspot/codegen/crm/objects/models/filter_group.rb +217 -0
  38. data/lib/hubspot/codegen/crm/objects/models/next_page.rb +224 -0
  39. data/lib/hubspot/codegen/crm/objects/models/paging.rb +219 -0
  40. data/lib/hubspot/codegen/crm/objects/models/previous_page.rb +224 -0
  41. data/lib/hubspot/codegen/crm/objects/models/public_object_search_request.rb +286 -0
  42. data/lib/hubspot/codegen/crm/objects/models/simple_public_object.rb +288 -0
  43. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_batch_input.rb +231 -0
  44. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_id.rb +215 -0
  45. data/lib/hubspot/codegen/crm/objects/models/simple_public_object_input.rb +217 -0
  46. data/lib/hubspot/codegen/crm/owners/configuration.rb +0 -7
  47. data/lib/hubspot/codegen/crm/pipelines/configuration.rb +0 -7
  48. data/lib/hubspot/codegen/crm/products/configuration.rb +0 -7
  49. data/lib/hubspot/codegen/crm/properties/configuration.rb +0 -7
  50. data/lib/hubspot/codegen/crm/quotes/configuration.rb +0 -7
  51. data/lib/hubspot/codegen/crm/schemas/api/core_api.rb +478 -0
  52. data/lib/hubspot/codegen/crm/schemas/api/default_api.rb +84 -0
  53. data/lib/hubspot/codegen/crm/schemas/api_client.rb +424 -0
  54. data/lib/hubspot/codegen/crm/schemas/api_error.rb +61 -0
  55. data/lib/hubspot/codegen/crm/schemas/configuration.rb +258 -0
  56. data/lib/hubspot/codegen/crm/schemas/models/association_definition.rb +350 -0
  57. data/lib/hubspot/codegen/crm/schemas/models/association_definition_egg.rb +315 -0
  58. data/lib/hubspot/codegen/crm/schemas/models/collection_response_object_schema.rb +226 -0
  59. data/lib/hubspot/codegen/crm/schemas/models/error.rb +292 -0
  60. data/lib/hubspot/codegen/crm/schemas/models/error_detail.rb +258 -0
  61. data/lib/hubspot/codegen/crm/schemas/models/next_page.rb +224 -0
  62. data/lib/hubspot/codegen/crm/schemas/models/object_schema.rb +389 -0
  63. data/lib/hubspot/codegen/crm/schemas/models/object_schema_egg.rb +325 -0
  64. data/lib/hubspot/codegen/crm/schemas/models/object_type_definition.rb +364 -0
  65. data/lib/hubspot/codegen/crm/schemas/models/object_type_definition_labels.rb +221 -0
  66. data/lib/hubspot/codegen/crm/schemas/models/object_type_definition_patch.rb +265 -0
  67. data/lib/hubspot/codegen/crm/schemas/models/object_type_property_create.rb +356 -0
  68. data/lib/hubspot/codegen/crm/schemas/models/option.rb +266 -0
  69. data/lib/hubspot/codegen/crm/schemas/models/option_input.rb +271 -0
  70. data/lib/hubspot/codegen/crm/schemas/models/paging.rb +219 -0
  71. data/lib/hubspot/codegen/crm/schemas/models/previous_page.rb +224 -0
  72. data/lib/hubspot/codegen/crm/schemas/models/property.rb +465 -0
  73. data/lib/hubspot/codegen/crm/schemas/models/property_modification_metadata.rb +252 -0
  74. data/lib/hubspot/codegen/crm/tickets/configuration.rb +0 -7
  75. data/lib/hubspot/codegen/crm/timeline/configuration.rb +0 -7
  76. data/lib/hubspot/codegen/oauth/configuration.rb +0 -21
  77. data/lib/hubspot/codegen/webhooks/api/subscriptions_api.rb +16 -12
  78. data/lib/hubspot/codegen/webhooks/configuration.rb +0 -14
  79. data/lib/hubspot/codegen/webhooks/models/batch_response_subscription_response.rb +1 -21
  80. data/lib/hubspot/codegen/webhooks/models/batch_response_subscription_response_with_errors.rb +331 -0
  81. data/lib/hubspot/codegen/webhooks/models/settings_response.rb +28 -28
  82. data/lib/hubspot/codegen/webhooks/models/subscription_create_request.rb +16 -13
  83. data/lib/hubspot/codegen/webhooks/models/subscription_patch_request.rb +7 -7
  84. data/lib/hubspot/codegen/webhooks/models/subscription_response.rb +45 -39
  85. data/lib/hubspot/version.rb +1 -1
  86. data/sample-apps/companies-app/Gemfile.lock +2 -2
  87. data/sample-apps/companies-app/app/lib/services/hubspot/associations/create.rb +1 -1
  88. data/sample-apps/companies-app/app/lib/services/hubspot/associations/delete.rb +1 -1
  89. data/sample-apps/companies-app/app/lib/services/hubspot/associations/get_by_id.rb +2 -2
  90. data/sample-apps/companies-app/app/lib/services/hubspot/companies/create.rb +1 -1
  91. data/sample-apps/companies-app/app/lib/services/hubspot/companies/search.rb +1 -1
  92. data/sample-apps/companies-app/app/lib/services/hubspot/companies/update.rb +1 -2
  93. data/sample-apps/companies-app/app/lib/services/hubspot/contacts/search.rb +1 -1
  94. data/sample-apps/contacts-app/Gemfile.lock +2 -2
  95. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/create.rb +1 -1
  96. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/search.rb +1 -1
  97. data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/update.rb +1 -2
  98. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/create.rb +1 -2
  99. data/sample-apps/contacts-app/app/lib/services/hubspot/properties/update.rb +1 -2
  100. data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/archive_batch.rb +1 -1
  101. data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/create_batch.rb +1 -1
  102. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/create.rb +1 -1
  103. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/search.rb +1 -1
  104. data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/update.rb +1 -2
  105. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/archive_batch.rb +1 -1
  106. data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/create_batch.rb +1 -1
  107. data/sample-apps/search-result-paging-app/app/lib/services/hubspot/contacts/search.rb +1 -1
  108. data/sample-apps/search-result-paging-app/app/lib/services/hubspot/properties/create.rb +1 -2
  109. data/sample-apps/timeline-events-app/.env.template +5 -0
  110. data/sample-apps/timeline-events-app/.gitignore +35 -0
  111. data/sample-apps/timeline-events-app/.rspec +1 -0
  112. data/sample-apps/timeline-events-app/.ruby-version +1 -0
  113. data/sample-apps/timeline-events-app/Dockerfile +22 -0
  114. data/sample-apps/timeline-events-app/Gemfile +33 -0
  115. data/sample-apps/timeline-events-app/Gemfile.lock +271 -0
  116. data/sample-apps/timeline-events-app/README.md +0 -0
  117. data/sample-apps/timeline-events-app/Rakefile +6 -0
  118. data/sample-apps/timeline-events-app/app/assets/config/manifest.js +3 -0
  119. data/sample-apps/timeline-events-app/app/assets/images/.keep +0 -0
  120. data/sample-apps/timeline-events-app/app/assets/javascripts/application.js +15 -0
  121. data/sample-apps/timeline-events-app/app/assets/javascripts/cable.js +13 -0
  122. data/sample-apps/timeline-events-app/app/assets/javascripts/channels/.keep +0 -0
  123. data/sample-apps/timeline-events-app/app/assets/stylesheets/application.css +101 -0
  124. data/sample-apps/timeline-events-app/app/controllers/application_controller.rb +12 -0
  125. data/sample-apps/timeline-events-app/app/controllers/concerns/.keep +0 -0
  126. data/sample-apps/timeline-events-app/app/controllers/concerns/exception_handler.rb +12 -0
  127. data/sample-apps/timeline-events-app/app/controllers/oauth/authorization_controller.rb +19 -0
  128. data/sample-apps/timeline-events-app/app/controllers/timeline_events_controller.rb +37 -0
  129. data/sample-apps/timeline-events-app/app/helpers/application_helper.rb +2 -0
  130. data/sample-apps/timeline-events-app/app/lib/services/authorization/authorize_hubspot.rb +15 -0
  131. data/sample-apps/timeline-events-app/app/lib/services/authorization/get_authorization_uri.rb +33 -0
  132. data/sample-apps/timeline-events-app/app/lib/services/authorization/tokens/base.rb +19 -0
  133. data/sample-apps/timeline-events-app/app/lib/services/authorization/tokens/generate.rb +26 -0
  134. data/sample-apps/timeline-events-app/app/lib/services/authorization/tokens/refresh.rb +33 -0
  135. data/sample-apps/timeline-events-app/app/lib/services/hubspot/contacts/search.rb +37 -0
  136. data/sample-apps/timeline-events-app/app/lib/services/hubspot/timeline/create_event.rb +20 -0
  137. data/sample-apps/timeline-events-app/app/lib/services/hubspot/timeline/create_template.rb +39 -0
  138. data/sample-apps/timeline-events-app/app/models/application_record.rb +3 -0
  139. data/sample-apps/timeline-events-app/app/models/concerns/.keep +0 -0
  140. data/sample-apps/timeline-events-app/app/views/layouts/application.html.erb +23 -0
  141. data/sample-apps/timeline-events-app/app/views/oauth/authorization/login.html.erb +15 -0
  142. data/sample-apps/timeline-events-app/app/views/shared/_header.html.erb +12 -0
  143. data/sample-apps/timeline-events-app/app/views/timeline_events/index.html.erb +55 -0
  144. data/sample-apps/timeline-events-app/bin/bundle +3 -0
  145. data/sample-apps/timeline-events-app/bin/rails +9 -0
  146. data/sample-apps/timeline-events-app/bin/rake +9 -0
  147. data/sample-apps/timeline-events-app/bin/setup +36 -0
  148. data/sample-apps/timeline-events-app/bin/spring +17 -0
  149. data/sample-apps/timeline-events-app/bin/update +31 -0
  150. data/sample-apps/timeline-events-app/bin/yarn +11 -0
  151. data/sample-apps/timeline-events-app/config.ru +5 -0
  152. data/sample-apps/timeline-events-app/config/application.rb +19 -0
  153. data/sample-apps/timeline-events-app/config/boot.rb +3 -0
  154. data/sample-apps/timeline-events-app/config/database.yml +25 -0
  155. data/sample-apps/timeline-events-app/config/environment.rb +5 -0
  156. data/sample-apps/timeline-events-app/config/environments/development.rb +61 -0
  157. data/sample-apps/timeline-events-app/config/environments/production.rb +94 -0
  158. data/sample-apps/timeline-events-app/config/environments/test.rb +46 -0
  159. data/sample-apps/timeline-events-app/config/initializers/assets.rb +14 -0
  160. data/sample-apps/timeline-events-app/config/initializers/filter_parameter_logging.rb +4 -0
  161. data/sample-apps/timeline-events-app/config/initializers/hubspot-api-client.rb +3 -0
  162. data/sample-apps/timeline-events-app/config/initializers/mime_types.rb +1 -0
  163. data/sample-apps/timeline-events-app/config/initializers/wrap_parameters.rb +14 -0
  164. data/sample-apps/timeline-events-app/config/locales/en.yml +33 -0
  165. data/sample-apps/timeline-events-app/config/puma.rb +34 -0
  166. data/sample-apps/timeline-events-app/config/routes.rb +7 -0
  167. data/sample-apps/timeline-events-app/config/spring.rb +6 -0
  168. data/sample-apps/timeline-events-app/db/seeds.rb +7 -0
  169. data/sample-apps/timeline-events-app/docker-compose.yml +11 -0
  170. data/sample-apps/timeline-events-app/docker-entrypoint.sh +8 -0
  171. data/sample-apps/timeline-events-app/lib/assets/.keep +0 -0
  172. data/sample-apps/timeline-events-app/lib/tasks/.keep +0 -0
  173. data/sample-apps/timeline-events-app/log/.keep +0 -0
  174. data/sample-apps/timeline-events-app/package.json +5 -0
  175. data/sample-apps/timeline-events-app/public/404.html +67 -0
  176. data/sample-apps/timeline-events-app/public/422.html +67 -0
  177. data/sample-apps/timeline-events-app/public/500.html +66 -0
  178. data/sample-apps/timeline-events-app/public/apple-touch-icon-precomposed.png +0 -0
  179. data/sample-apps/timeline-events-app/public/apple-touch-icon.png +0 -0
  180. data/sample-apps/timeline-events-app/public/favicon.ico +0 -0
  181. data/sample-apps/timeline-events-app/public/robots.txt +1 -0
  182. data/sample-apps/timeline-events-app/spec/rails_helper.rb +42 -0
  183. data/sample-apps/timeline-events-app/spec/spec_helper.rb +11 -0
  184. data/sample-apps/timeline-events-app/tmp/.keep +0 -0
  185. data/sample-apps/trello-integration-app/.env.template +7 -0
  186. data/sample-apps/trello-integration-app/.gitignore +35 -0
  187. data/sample-apps/trello-integration-app/.rspec +1 -0
  188. data/sample-apps/trello-integration-app/.ruby-version +1 -0
  189. data/sample-apps/trello-integration-app/Dockerfile +22 -0
  190. data/sample-apps/trello-integration-app/Gemfile +38 -0
  191. data/sample-apps/trello-integration-app/Gemfile.lock +314 -0
  192. data/sample-apps/trello-integration-app/README.md +31 -0
  193. data/sample-apps/trello-integration-app/Rakefile +6 -0
  194. data/sample-apps/trello-integration-app/app/assets/config/manifest.js +3 -0
  195. data/sample-apps/trello-integration-app/app/assets/images/.keep +0 -0
  196. data/sample-apps/trello-integration-app/app/assets/images/right-arrow.png +0 -0
  197. data/sample-apps/trello-integration-app/app/assets/javascripts/application.js +22 -0
  198. data/sample-apps/trello-integration-app/app/assets/javascripts/cable.js +13 -0
  199. data/sample-apps/trello-integration-app/app/assets/javascripts/channels/.keep +0 -0
  200. data/sample-apps/trello-integration-app/app/assets/javascripts/jquery-spinner.min.js +11071 -0
  201. data/sample-apps/trello-integration-app/app/assets/javascripts/lodash.js +15972 -0
  202. data/sample-apps/trello-integration-app/app/assets/javascripts/mappings.js +78 -0
  203. data/sample-apps/trello-integration-app/app/assets/javascripts/typeahead.bundle.min.js +8 -0
  204. data/sample-apps/trello-integration-app/app/assets/stylesheets/application.css +46 -0
  205. data/sample-apps/trello-integration-app/app/assets/stylesheets/authorization.scss +34 -0
  206. data/sample-apps/trello-integration-app/app/assets/stylesheets/jquery-spinner.css +33 -0
  207. data/sample-apps/trello-integration-app/app/assets/stylesheets/mappings.scss +55 -0
  208. data/sample-apps/trello-integration-app/app/assets/stylesheets/navigation.scss +43 -0
  209. data/sample-apps/trello-integration-app/app/assets/stylesheets/search_frame.scss +81 -0
  210. data/sample-apps/trello-integration-app/app/controllers/application_controller.rb +38 -0
  211. data/sample-apps/trello-integration-app/app/controllers/concerns/.keep +0 -0
  212. data/sample-apps/trello-integration-app/app/controllers/concerns/exception_handler.rb +12 -0
  213. data/sample-apps/trello-integration-app/app/controllers/home_controller.rb +20 -0
  214. data/sample-apps/trello-integration-app/app/controllers/mappings_controller.rb +64 -0
  215. data/sample-apps/trello-integration-app/app/controllers/oauth/authorization_controller.rb +28 -0
  216. data/sample-apps/trello-integration-app/app/controllers/trello/cards_controller.rb +94 -0
  217. data/sample-apps/trello-integration-app/app/controllers/trello/webhooks_controller.rb +30 -0
  218. data/sample-apps/trello-integration-app/app/helpers/application_helper.rb +2 -0
  219. data/sample-apps/trello-integration-app/app/helpers/oauth/authorization_helper.rb +11 -0
  220. data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/authorize.rb +17 -0
  221. data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/get_authorization_uri.rb +35 -0
  222. data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/base.rb +21 -0
  223. data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/generate.rb +28 -0
  224. data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/refresh.rb +35 -0
  225. data/sample-apps/trello-integration-app/app/lib/services/hubspot/deals/get_by_id.rb +15 -0
  226. data/sample-apps/trello-integration-app/app/lib/services/hubspot/deals/update.rb +17 -0
  227. data/sample-apps/trello-integration-app/app/lib/services/hubspot/extensions_cards/create.rb +82 -0
  228. data/sample-apps/trello-integration-app/app/lib/services/hubspot/pipelines/get_all.rb +11 -0
  229. data/sample-apps/trello-integration-app/app/lib/services/hubspot/pipelines/get_by_id.rb +15 -0
  230. data/sample-apps/trello-integration-app/app/lib/services/trello/authorization/authorize.rb +20 -0
  231. data/sample-apps/trello-integration-app/app/lib/services/trello/boards/get_all.rb +11 -0
  232. data/sample-apps/trello-integration-app/app/lib/services/trello/boards/get_by_id.rb +19 -0
  233. data/sample-apps/trello-integration-app/app/lib/services/trello/cards/format.rb +78 -0
  234. data/sample-apps/trello-integration-app/app/lib/services/trello/cards/get_by_id.rb +15 -0
  235. data/sample-apps/trello-integration-app/app/lib/services/trello/cards/search.rb +15 -0
  236. data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/create.rb +31 -0
  237. data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/delete.rb +17 -0
  238. data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/update.rb +19 -0
  239. data/sample-apps/trello-integration-app/app/models/application_record.rb +3 -0
  240. data/sample-apps/trello-integration-app/app/models/concerns/.keep +0 -0
  241. data/sample-apps/trello-integration-app/app/models/deal_association.rb +2 -0
  242. data/sample-apps/trello-integration-app/app/models/extension_card.rb +4 -0
  243. data/sample-apps/trello-integration-app/app/models/hubspot_token.rb +19 -0
  244. data/sample-apps/trello-integration-app/app/models/mapping.rb +2 -0
  245. data/sample-apps/trello-integration-app/app/models/trello_token.rb +19 -0
  246. data/sample-apps/trello-integration-app/app/models/webhook.rb +2 -0
  247. data/sample-apps/trello-integration-app/app/views/home/index.html.erb +23 -0
  248. data/sample-apps/trello-integration-app/app/views/home/success.html.erb +11 -0
  249. data/sample-apps/trello-integration-app/app/views/layouts/application.html.erb +23 -0
  250. data/sample-apps/trello-integration-app/app/views/mappings/_mapping.html.erb +13 -0
  251. data/sample-apps/trello-integration-app/app/views/mappings/index.html.erb +44 -0
  252. data/sample-apps/trello-integration-app/app/views/oauth/authorization/login.html.erb +42 -0
  253. data/sample-apps/trello-integration-app/app/views/shared/_header.html.erb +15 -0
  254. data/sample-apps/trello-integration-app/app/views/trello/cards/search_frame.html.erb +69 -0
  255. data/sample-apps/trello-integration-app/app/views/trello/cards/search_frame_success.html.erb +7 -0
  256. data/sample-apps/trello-integration-app/bin/bundle +3 -0
  257. data/sample-apps/trello-integration-app/bin/rails +9 -0
  258. data/sample-apps/trello-integration-app/bin/rake +9 -0
  259. data/sample-apps/trello-integration-app/bin/setup +36 -0
  260. data/sample-apps/trello-integration-app/bin/spring +17 -0
  261. data/sample-apps/trello-integration-app/bin/update +31 -0
  262. data/sample-apps/trello-integration-app/bin/yarn +11 -0
  263. data/sample-apps/trello-integration-app/config.ru +5 -0
  264. data/sample-apps/trello-integration-app/config/application.rb +20 -0
  265. data/sample-apps/trello-integration-app/config/boot.rb +3 -0
  266. data/sample-apps/trello-integration-app/config/cable.yml +10 -0
  267. data/sample-apps/trello-integration-app/config/database.yml +16 -0
  268. data/sample-apps/trello-integration-app/config/environment.rb +5 -0
  269. data/sample-apps/trello-integration-app/config/environments/development.rb +61 -0
  270. data/sample-apps/trello-integration-app/config/environments/production.rb +94 -0
  271. data/sample-apps/trello-integration-app/config/environments/test.rb +46 -0
  272. data/sample-apps/trello-integration-app/config/initializers/assets.rb +14 -0
  273. data/sample-apps/trello-integration-app/config/initializers/filter_parameter_logging.rb +4 -0
  274. data/sample-apps/trello-integration-app/config/initializers/hubspot-api-client.rb +3 -0
  275. data/sample-apps/trello-integration-app/config/initializers/mime_types.rb +1 -0
  276. data/sample-apps/trello-integration-app/config/initializers/omniauth.rb +11 -0
  277. data/sample-apps/trello-integration-app/config/initializers/trello.rb +1 -0
  278. data/sample-apps/trello-integration-app/config/initializers/wrap_parameters.rb +14 -0
  279. data/sample-apps/trello-integration-app/config/locales/en.yml +33 -0
  280. data/sample-apps/trello-integration-app/config/puma.rb +34 -0
  281. data/sample-apps/trello-integration-app/config/routes.rb +29 -0
  282. data/sample-apps/trello-integration-app/config/spring.rb +6 -0
  283. data/sample-apps/trello-integration-app/config/storage.yml +34 -0
  284. data/sample-apps/trello-integration-app/db/migrate/20200624132327_create_hubspot_tokens.rb +10 -0
  285. data/sample-apps/trello-integration-app/db/migrate/20200624132336_create_trello_tokens.rb +8 -0
  286. data/sample-apps/trello-integration-app/db/migrate/20200624132337_create_deal_associations.rb +8 -0
  287. data/sample-apps/trello-integration-app/db/migrate/20200702130530_create_extension_cards.rb +8 -0
  288. data/sample-apps/trello-integration-app/db/migrate/20200715143913_create_mappings.rb +12 -0
  289. data/sample-apps/trello-integration-app/db/migrate/20200727083656_create_webhooks.rb +9 -0
  290. data/sample-apps/trello-integration-app/db/schema.rb +52 -0
  291. data/sample-apps/trello-integration-app/db/seeds.rb +7 -0
  292. data/sample-apps/trello-integration-app/docker-compose.yml +41 -0
  293. data/sample-apps/trello-integration-app/docker-entrypoint.sh +8 -0
  294. data/sample-apps/trello-integration-app/lib/assets/.keep +0 -0
  295. data/sample-apps/trello-integration-app/lib/middlewares/trello_payload_params_handler.rb +18 -0
  296. data/sample-apps/trello-integration-app/lib/tasks/.keep +0 -0
  297. data/sample-apps/trello-integration-app/log/.keep +0 -0
  298. data/sample-apps/trello-integration-app/package.json +5 -0
  299. data/sample-apps/trello-integration-app/public/404.html +67 -0
  300. data/sample-apps/trello-integration-app/public/422.html +67 -0
  301. data/sample-apps/trello-integration-app/public/500.html +66 -0
  302. data/sample-apps/trello-integration-app/public/favicon.ico +0 -0
  303. data/sample-apps/trello-integration-app/public/robots.txt +1 -0
  304. data/sample-apps/trello-integration-app/tmp/.keep +0 -0
  305. data/sample-apps/webhooks-contacts-app/app/lib/services/hubspot/contacts/get_batch.rb +1 -4
  306. metadata +466 -2
@@ -0,0 +1,84 @@
1
+ =begin
2
+ #Schemas
3
+
4
+ #The CRM uses schemas to define how custom objects should store and represent information in the HubSpot CRM. Schemas define details about an object's type, properties, and associations. The schema can be uniquely identified by its **object type ID**.
5
+
6
+ The version of the OpenAPI document: v3
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module Hubspot
16
+ module Crm
17
+ module Schemas
18
+ class DefaultApi
19
+ attr_accessor :api_client
20
+
21
+ def initialize(api_client = ApiClient.default)
22
+ @api_client = api_client
23
+ end
24
+ # @param object_type [String]
25
+ # @param [Hash] opts the optional parameters
26
+ # @return [nil]
27
+ def purge(object_type, opts = {})
28
+ purge_with_http_info(object_type, opts)
29
+ nil
30
+ end
31
+
32
+ # @param object_type [String]
33
+ # @param [Hash] opts the optional parameters
34
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
35
+ def purge_with_http_info(object_type, opts = {})
36
+ if @api_client.config.debugging
37
+ @api_client.config.logger.debug 'Calling API: DefaultApi.purge ...'
38
+ end
39
+ # verify the required parameter 'object_type' is set
40
+ if @api_client.config.client_side_validation && object_type.nil?
41
+ fail ArgumentError, "Missing the required parameter 'object_type' when calling DefaultApi.purge"
42
+ end
43
+ # resource path
44
+ local_var_path = '/crm-object-schemas/v3/schemas/{objectType}/purge'.sub('{' + 'objectType' + '}', CGI.escape(object_type.to_s))
45
+
46
+ # query parameters
47
+ query_params = opts[:query_params] || {}
48
+
49
+ # header parameters
50
+ header_params = opts[:header_params] || {}
51
+ # HTTP header 'Accept' (if needed)
52
+ header_params['Accept'] = @api_client.select_header_accept(['*/*'])
53
+
54
+ # form parameters
55
+ form_params = opts[:form_params] || {}
56
+
57
+ # http body (model)
58
+ post_body = opts[:body]
59
+
60
+ # return_type
61
+ return_type = opts[:return_type]
62
+
63
+ # auth_names
64
+ auth_names = opts[:auth_names] || ['hapikey']
65
+
66
+ new_options = opts.merge(
67
+ :header_params => header_params,
68
+ :query_params => query_params,
69
+ :form_params => form_params,
70
+ :body => post_body,
71
+ :auth_names => auth_names,
72
+ :return_type => return_type
73
+ )
74
+
75
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
76
+ if @api_client.config.debugging
77
+ @api_client.config.logger.debug "API called: DefaultApi#purge\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
78
+ end
79
+ return data, status_code, headers
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,424 @@
1
+ =begin
2
+ #Schemas
3
+
4
+ #The CRM uses schemas to define how custom objects should store and represent information in the HubSpot CRM. Schemas define details about an object's type, properties, and associations. The schema can be uniquely identified by its **object type ID**.
5
+
6
+ The version of the OpenAPI document: v3
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'json'
15
+ require 'logger'
16
+ require 'tempfile'
17
+ require 'faraday'
18
+
19
+ module Hubspot
20
+ module Crm
21
+ module Schemas
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 = "hubspot-api-client-ruby; #{VERSION}"
36
+ @default_headers = {
37
+ 'Content-Type' => 'application/json',
38
+ 'User-Agent' => @user_agent
39
+ }
40
+ end
41
+
42
+ def self.default
43
+ @@default ||= ApiClient.new
44
+ end
45
+
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
+ conn.options[:params_encoder] = Faraday::FlatParamsEncoder
67
+
68
+ # Errors handler settings
69
+ if !config.error_handler.empty?
70
+ config.error_handler.each do |statuses, opts|
71
+ statuses = statuses.is_a?(Integer) ? [statuses] : statuses
72
+ retry_options = {
73
+ max: opts[:max_retries],
74
+ interval: opts[:seconds_delay],
75
+ retry_statuses: statuses,
76
+ methods: %i[post delete get head options put],
77
+ retry_block: -> (env, options, retries, exc) { opts[:retry_block].call }
78
+ }
79
+ conn.request :retry, retry_options
80
+ end
81
+ end
82
+ end
83
+
84
+ begin
85
+ response = connection.public_send(http_method.to_sym.downcase) do |req|
86
+ build_request(http_method, path, req, opts)
87
+ end
88
+
89
+ if @config.debugging
90
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
91
+ end
92
+
93
+ unless response.success?
94
+ if response.status == 0
95
+ # Errors from libcurl will be made visible here
96
+ fail ApiError.new(:code => 0,
97
+ :message => response.return_message)
98
+ else
99
+ fail ApiError.new(:code => response.status,
100
+ :response_headers => response.headers,
101
+ :response_body => response.body),
102
+ response.reason_phrase
103
+ end
104
+ end
105
+ rescue Faraday::TimeoutError
106
+ fail ApiError.new('Connection timed out')
107
+ end
108
+
109
+ if opts[:return_type]
110
+ data = deserialize(response, opts[:return_type])
111
+ else
112
+ data = nil
113
+ end
114
+ return data, response.status, response.headers
115
+ end
116
+
117
+ # Builds the HTTP request
118
+ #
119
+ # @param [String] http_method HTTP method/verb (e.g. POST)
120
+ # @param [String] path URL path (e.g. /account/new)
121
+ # @option opts [Hash] :header_params Header parameters
122
+ # @option opts [Hash] :query_params Query parameters
123
+ # @option opts [Hash] :form_params Query parameters
124
+ # @option opts [Object] :body HTTP body (JSON/XML)
125
+ # @return [Typhoeus::Request] A Typhoeus Request
126
+ def build_request(http_method, path, request, opts = {})
127
+ url = build_request_url(path)
128
+ http_method = http_method.to_sym.downcase
129
+
130
+ header_params = @default_headers.merge(opts[:header_params] || {})
131
+ query_params = opts[:query_params] || {}
132
+ form_params = opts[:form_params] || {}
133
+
134
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
135
+
136
+ req_opts = {
137
+ :method => http_method,
138
+ :headers => header_params,
139
+ :params => query_params,
140
+ :params_encoding => @config.params_encoding,
141
+ :timeout => @config.timeout,
142
+ :verbose => @config.debugging
143
+ }
144
+
145
+ if [:post, :patch, :put, :delete].include?(http_method)
146
+ req_body = build_request_body(header_params, form_params, opts[:body])
147
+ req_opts.update :body => req_body
148
+ if @config.debugging
149
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
150
+ end
151
+ end
152
+ request.headers = header_params
153
+ request.body = req_body
154
+ request.url url
155
+ request.params = query_params
156
+ download_file(request) if opts[:return_type] == 'File'
157
+ request
158
+ end
159
+
160
+ # Builds the HTTP request body
161
+ #
162
+ # @param [Hash] header_params Header parameters
163
+ # @param [Hash] form_params Query parameters
164
+ # @param [Object] body HTTP body (JSON/XML)
165
+ # @return [String] HTTP body data in the form of string
166
+ def build_request_body(header_params, form_params, body)
167
+ # http form
168
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
169
+ data = URI.encode_www_form(form_params)
170
+ elsif header_params['Content-Type'] == 'multipart/form-data'
171
+ data = {}
172
+ form_params.each do |key, value|
173
+ case value
174
+ when ::File, ::Tempfile
175
+ # TODO hardcode to application/octet-stream, need better way to detect content type
176
+ data[key] = Faraday::UploadIO.new(value.path, 'application/octet-stream', value.path)
177
+ when ::Array, nil
178
+ # let Faraday handle Array and nil parameters
179
+ data[key] = value
180
+ else
181
+ data[key] = value.to_s
182
+ end
183
+ end
184
+ elsif body
185
+ data = body.is_a?(String) ? body : body.to_json
186
+ else
187
+ data = nil
188
+ end
189
+ data
190
+ end
191
+
192
+ # Check if the given MIME is a JSON MIME.
193
+ # JSON MIME examples:
194
+ # application/json
195
+ # application/json; charset=UTF8
196
+ # APPLICATION/JSON
197
+ # */*
198
+ # @param [String] mime MIME
199
+ # @return [Boolean] True if the MIME is application/json
200
+ def json_mime?(mime)
201
+ (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
202
+ end
203
+
204
+ # Deserialize the response to the given return type.
205
+ #
206
+ # @param [Response] response HTTP response
207
+ # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
208
+ def deserialize(response, return_type)
209
+ body = response.body
210
+
211
+ # handle file downloading - return the File instance processed in request callbacks
212
+ # note that response body is empty when the file is written in chunks in request on_body callback
213
+ return @tempfile if return_type == 'File'
214
+
215
+ return nil if body.nil? || body.empty?
216
+
217
+ # return response body directly for String return type
218
+ return body if return_type == 'String'
219
+
220
+ # ensuring a default content type
221
+ content_type = response.headers['Content-Type'] || 'application/json'
222
+
223
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
224
+
225
+ begin
226
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
227
+ rescue JSON::ParserError => e
228
+ if %w(String Date DateTime).include?(return_type)
229
+ data = body
230
+ else
231
+ raise e
232
+ end
233
+ end
234
+
235
+ convert_to_type data, return_type
236
+ end
237
+
238
+ # Convert data to the given return type.
239
+ # @param [Object] data Data to be converted
240
+ # @param [String] return_type Return type
241
+ # @return [Mixed] Data in a particular type
242
+ def convert_to_type(data, return_type)
243
+ return nil if data.nil?
244
+ case return_type
245
+ when 'String'
246
+ data.to_s
247
+ when 'Integer'
248
+ data.to_i
249
+ when 'Float'
250
+ data.to_f
251
+ when 'Boolean'
252
+ data == true
253
+ when 'DateTime'
254
+ # parse date time (expecting ISO 8601 format)
255
+ DateTime.parse data
256
+ when 'Date'
257
+ # parse date time (expecting ISO 8601 format)
258
+ Date.parse data
259
+ when 'Object'
260
+ # generic object (usually a Hash), return directly
261
+ data
262
+ when /\AArray<(.+)>\z/
263
+ # e.g. Array<Pet>
264
+ sub_type = $1
265
+ data.map { |item| convert_to_type(item, sub_type) }
266
+ when /\AHash\<String, (.+)\>\z/
267
+ # e.g. Hash<String, Integer>
268
+ sub_type = $1
269
+ {}.tap do |hash|
270
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
271
+ end
272
+ else
273
+ # models, e.g. Pet
274
+ Hubspot::Crm::Schemas.const_get(return_type).build_from_hash(data)
275
+ end
276
+ end
277
+
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
300
+ end
301
+ request.on_body do |chunk|
302
+ chunk.force_encoding(encoding)
303
+ tempfile.write(chunk)
304
+ end
305
+ request.on_complete do |response|
306
+ if tempfile
307
+ tempfile.close
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`"
312
+ end
313
+ end
314
+ end
315
+
316
+ # Sanitize filename by removing path.
317
+ # e.g. ../../sun.gif becomes sun.gif
318
+ #
319
+ # @param [String] filename the filename to be sanitized
320
+ # @return [String] the sanitized filename
321
+ def sanitize_filename(filename)
322
+ filename.gsub(/.*[\/\\]/, '')
323
+ end
324
+
325
+ def build_request_url(path)
326
+ # Add leading and trailing slashes to path
327
+ path = "/#{path}".gsub(/\/+/, '/')
328
+ @config.base_url + path
329
+ end
330
+
331
+ # Update hearder and query params based on authentication settings.
332
+ #
333
+ # @param [Hash] header_params Header parameters
334
+ # @param [Hash] query_params Query parameters
335
+ # @param [String] auth_names Authentication scheme name
336
+ def update_params_for_auth!(header_params, query_params, auth_names)
337
+ Array(auth_names).each do |auth_name|
338
+ auth_setting = @config.auth_settings[auth_name]
339
+ next unless auth_setting
340
+ case auth_setting[:in]
341
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
342
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
343
+ else fail ArgumentError, 'Authentication token must be in `query` of `header`'
344
+ end
345
+ end
346
+ end
347
+
348
+ # Sets user agent in HTTP header
349
+ #
350
+ # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
351
+ def user_agent=(user_agent)
352
+ @user_agent = user_agent
353
+ @default_headers['User-Agent'] = @user_agent
354
+ end
355
+
356
+ # Return Accept header based on an array of accepts provided.
357
+ # @param [Array] accepts array for Accept
358
+ # @return [String] the Accept header (e.g. application/json)
359
+ def select_header_accept(accepts)
360
+ return nil if accepts.nil? || accepts.empty?
361
+ # use JSON when present, otherwise use all of the provided
362
+ json_accept = accepts.find { |s| json_mime?(s) }
363
+ json_accept || accepts.join(',')
364
+ end
365
+
366
+ # Return Content-Type header based on an array of content types provided.
367
+ # @param [Array] content_types array for Content-Type
368
+ # @return [String] the Content-Type header (e.g. application/json)
369
+ def select_header_content_type(content_types)
370
+ # use application/json by default
371
+ return 'application/json' if content_types.nil? || content_types.empty?
372
+ # use JSON when present, otherwise use the first one
373
+ json_content_type = content_types.find { |s| json_mime?(s) }
374
+ json_content_type || content_types.first
375
+ end
376
+
377
+ # Convert object (array, hash, object, etc) to JSON string.
378
+ # @param [Object] model object to be converted into JSON string
379
+ # @return [String] JSON string representation of the object
380
+ def object_to_http_body(model)
381
+ return model if model.nil? || model.is_a?(String)
382
+ local_body = nil
383
+ if model.is_a?(Array)
384
+ local_body = model.map { |m| object_to_hash(m) }
385
+ else
386
+ local_body = object_to_hash(model)
387
+ end
388
+ local_body.to_json
389
+ end
390
+
391
+ # Convert object(non-array) to hash.
392
+ # @param [Object] obj object to be converted into JSON string
393
+ # @return [String] JSON string representation of the object
394
+ def object_to_hash(obj)
395
+ if obj.respond_to?(:to_hash)
396
+ obj.to_hash
397
+ else
398
+ obj
399
+ end
400
+ end
401
+
402
+ # Build parameter value according to the given collection format.
403
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
404
+ def build_collection_param(param, collection_format)
405
+ case collection_format
406
+ when :csv
407
+ param.join(',')
408
+ when :ssv
409
+ param.join(' ')
410
+ when :tsv
411
+ param.join("\t")
412
+ when :pipes
413
+ param.join('|')
414
+ when :multi
415
+ # return the array directly as typhoeus will handle it as expected
416
+ param
417
+ else
418
+ fail "unknown collection format: #{collection_format.inspect}"
419
+ end
420
+ end
421
+ end
422
+ end
423
+ end
424
+ end