wefunder 0.1.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +263 -0
  4. data/lib/wefunder/client.rb +283 -0
  5. data/lib/wefunder/errors.rb +87 -0
  6. data/lib/wefunder/oauth.rb +135 -0
  7. data/lib/wefunder/pagination.rb +52 -0
  8. data/lib/wefunder/token_manager.rb +80 -0
  9. data/lib/wefunder/transport.rb +93 -0
  10. data/lib/wefunder/version.rb +5 -0
  11. data/lib/wefunder/webhooks.rb +238 -0
  12. data/lib/wefunder.rb +26 -0
  13. data/lib/wefunder_generated/api/activity_api.rb +234 -0
  14. data/lib/wefunder_generated/api/attribution_api.rb +182 -0
  15. data/lib/wefunder_generated/api/attribution_partners_api.rb +392 -0
  16. data/lib/wefunder_generated/api/attribution_webhooks_api.rb +504 -0
  17. data/lib/wefunder_generated/api/campaigns_api.rb +82 -0
  18. data/lib/wefunder_generated/api/companies_api.rb +101 -0
  19. data/lib/wefunder_generated/api/explore_api.rb +633 -0
  20. data/lib/wefunder_generated/api/installations_api.rb +405 -0
  21. data/lib/wefunder_generated/api/intents_api.rb +301 -0
  22. data/lib/wefunder_generated/api/investment_delta_api.rb +99 -0
  23. data/lib/wefunder_generated/api/investments_api.rb +238 -0
  24. data/lib/wefunder_generated/api/portfolio_api.rb +166 -0
  25. data/lib/wefunder_generated/api/syndicate_deals_api.rb +381 -0
  26. data/lib/wefunder_generated/api/syndicate_members_api.rb +976 -0
  27. data/lib/wefunder_generated/api/syndicate_portfolio_api.rb +178 -0
  28. data/lib/wefunder_generated/api/syndicate_statistics_api.rb +85 -0
  29. data/lib/wefunder_generated/api/syndicates_api.rb +226 -0
  30. data/lib/wefunder_generated/api/users_api.rb +329 -0
  31. data/lib/wefunder_generated/api/webhook_endpoints_api.rb +539 -0
  32. data/lib/wefunder_generated/api_client.rb +437 -0
  33. data/lib/wefunder_generated/api_error.rb +58 -0
  34. data/lib/wefunder_generated/configuration.rb +392 -0
  35. data/lib/wefunder_generated/models/anonymized_attribution.rb +298 -0
  36. data/lib/wefunder_generated/models/anonymized_attribution_attribution.rb +330 -0
  37. data/lib/wefunder_generated/models/anonymized_attribution_status.rb +260 -0
  38. data/lib/wefunder_generated/models/attributed_investment_list_envelope.rb +226 -0
  39. data/lib/wefunder_generated/models/attributed_investment_list_envelope_data_inner.rb +105 -0
  40. data/lib/wefunder_generated/models/attributed_investment_list_envelope_meta.rb +295 -0
  41. data/lib/wefunder_generated/models/attribution_campaign_access.rb +241 -0
  42. data/lib/wefunder_generated/models/attribution_campaign_summary.rb +251 -0
  43. data/lib/wefunder_generated/models/attribution_campaign_summary_list_envelope.rb +216 -0
  44. data/lib/wefunder_generated/models/attribution_me.rb +235 -0
  45. data/lib/wefunder_generated/models/attribution_me_envelope.rb +214 -0
  46. data/lib/wefunder_generated/models/attribution_partner.rb +275 -0
  47. data/lib/wefunder_generated/models/attribution_stats.rb +266 -0
  48. data/lib/wefunder_generated/models/attribution_stats_by_campaign_inner.rb +232 -0
  49. data/lib/wefunder_generated/models/attribution_stats_by_source_inner.rb +232 -0
  50. data/lib/wefunder_generated/models/attribution_stats_envelope.rb +214 -0
  51. data/lib/wefunder_generated/models/attribution_stats_period.rb +223 -0
  52. data/lib/wefunder_generated/models/attribution_stats_quality_breakdown.rb +236 -0
  53. data/lib/wefunder_generated/models/attribution_stats_totals.rb +245 -0
  54. data/lib/wefunder_generated/models/attribution_user.rb +232 -0
  55. data/lib/wefunder_generated/models/audit_event.rb +234 -0
  56. data/lib/wefunder_generated/models/audit_event_attributes.rb +391 -0
  57. data/lib/wefunder_generated/models/audit_event_list_envelope.rb +225 -0
  58. data/lib/wefunder_generated/models/bulk_invite_link_create_input.rb +243 -0
  59. data/lib/wefunder_generated/models/bulk_invite_link_envelope.rb +237 -0
  60. data/lib/wefunder_generated/models/bulk_invite_link_envelope_errors_inner.rb +233 -0
  61. data/lib/wefunder_generated/models/bulk_invite_link_envelope_meta.rb +232 -0
  62. data/lib/wefunder_generated/models/campaign.rb +232 -0
  63. data/lib/wefunder_generated/models/campaign_attributes.rb +301 -0
  64. data/lib/wefunder_generated/models/campaign_list_envelope.rb +225 -0
  65. data/lib/wefunder_generated/models/comment_proposal_envelope.rb +274 -0
  66. data/lib/wefunder_generated/models/comment_proposal_envelope_draft.rb +260 -0
  67. data/lib/wefunder_generated/models/comment_proposal_envelope_proposal.rb +286 -0
  68. data/lib/wefunder_generated/models/comment_proposal_envelope_related_questions_inner.rb +264 -0
  69. data/lib/wefunder_generated/models/company.rb +234 -0
  70. data/lib/wefunder_generated/models/company_attributes.rb +318 -0
  71. data/lib/wefunder_generated/models/company_attributes_location.rb +235 -0
  72. data/lib/wefunder_generated/models/company_disclosures.rb +268 -0
  73. data/lib/wefunder_generated/models/company_disclosures_attributes.rb +434 -0
  74. data/lib/wefunder_generated/models/company_disclosures_attributes_business.rb +255 -0
  75. data/lib/wefunder_generated/models/company_disclosures_attributes_capital_structure_inner.rb +255 -0
  76. data/lib/wefunder_generated/models/company_disclosures_attributes_current_position.rb +281 -0
  77. data/lib/wefunder_generated/models/company_disclosures_attributes_filing.rb +256 -0
  78. data/lib/wefunder_generated/models/company_disclosures_attributes_financial_statements.rb +233 -0
  79. data/lib/wefunder_generated/models/company_disclosures_attributes_outstanding_debts.rb +227 -0
  80. data/lib/wefunder_generated/models/company_disclosures_attributes_outstanding_debts_items_inner.rb +255 -0
  81. data/lib/wefunder_generated/models/company_disclosures_attributes_outstanding_notes_inner.rb +284 -0
  82. data/lib/wefunder_generated/models/company_disclosures_attributes_prior_offerings_inner.rb +266 -0
  83. data/lib/wefunder_generated/models/company_disclosures_attributes_ratios.rb +272 -0
  84. data/lib/wefunder_generated/models/company_disclosures_attributes_related_parties.rb +226 -0
  85. data/lib/wefunder_generated/models/company_disclosures_attributes_related_parties_parties_inner.rb +265 -0
  86. data/lib/wefunder_generated/models/company_disclosures_attributes_use_of_funds_inner.rb +226 -0
  87. data/lib/wefunder_generated/models/company_disclosures_attributes_voting_power_inner.rb +236 -0
  88. data/lib/wefunder_generated/models/company_disclosures_envelope.rb +214 -0
  89. data/lib/wefunder_generated/models/company_envelope.rb +214 -0
  90. data/lib/wefunder_generated/models/company_pitch.rb +268 -0
  91. data/lib/wefunder_generated/models/company_pitch_attributes.rb +311 -0
  92. data/lib/wefunder_generated/models/company_pitch_attributes_perks.rb +248 -0
  93. data/lib/wefunder_generated/models/company_pitch_attributes_story.rb +255 -0
  94. data/lib/wefunder_generated/models/company_pitch_envelope.rb +214 -0
  95. data/lib/wefunder_generated/models/company_question.rb +268 -0
  96. data/lib/wefunder_generated/models/company_question_attributes.rb +329 -0
  97. data/lib/wefunder_generated/models/company_question_attributes_answers_inner.rb +253 -0
  98. data/lib/wefunder_generated/models/company_question_list_envelope.rb +225 -0
  99. data/lib/wefunder_generated/models/company_question_list_envelope_meta.rb +301 -0
  100. data/lib/wefunder_generated/models/company_question_person.rb +247 -0
  101. data/lib/wefunder_generated/models/company_search_result.rb +268 -0
  102. data/lib/wefunder_generated/models/company_search_result_attributes.rb +266 -0
  103. data/lib/wefunder_generated/models/company_search_result_list_envelope.rb +225 -0
  104. data/lib/wefunder_generated/models/company_search_result_list_envelope_meta.rb +223 -0
  105. data/lib/wefunder_generated/models/company_totals.rb +249 -0
  106. data/lib/wefunder_generated/models/company_update.rb +269 -0
  107. data/lib/wefunder_generated/models/company_update_attributes.rb +350 -0
  108. data/lib/wefunder_generated/models/company_update_attributes_author.rb +215 -0
  109. data/lib/wefunder_generated/models/company_update_envelope.rb +214 -0
  110. data/lib/wefunder_generated/models/company_update_list_envelope.rb +225 -0
  111. data/lib/wefunder_generated/models/company_update_list_envelope_meta.rb +243 -0
  112. data/lib/wefunder_generated/models/connected_app.rb +233 -0
  113. data/lib/wefunder_generated/models/connected_app_attributes.rb +258 -0
  114. data/lib/wefunder_generated/models/connected_app_list_envelope.rb +216 -0
  115. data/lib/wefunder_generated/models/connected_app_revocation.rb +223 -0
  116. data/lib/wefunder_generated/models/connected_app_revocation_envelope.rb +214 -0
  117. data/lib/wefunder_generated/models/convertible_note_security.rb +266 -0
  118. data/lib/wefunder_generated/models/convertible_note_security_terms.rb +266 -0
  119. data/lib/wefunder_generated/models/create_installation_request.rb +294 -0
  120. data/lib/wefunder_generated/models/create_installation_token_request.rb +216 -0
  121. data/lib/wefunder_generated/models/create_intent_request.rb +320 -0
  122. data/lib/wefunder_generated/models/create_partner_invite_request.rb +287 -0
  123. data/lib/wefunder_generated/models/create_webhook_endpoint_request.rb +291 -0
  124. data/lib/wefunder_generated/models/create_webhook_subscription_request.rb +263 -0
  125. data/lib/wefunder_generated/models/current_raise.rb +288 -0
  126. data/lib/wefunder_generated/models/deal_investor.rb +234 -0
  127. data/lib/wefunder_generated/models/deal_investor_attributes.rb +321 -0
  128. data/lib/wefunder_generated/models/deal_investor_list_envelope.rb +225 -0
  129. data/lib/wefunder_generated/models/deal_investor_list_envelope_meta.rb +252 -0
  130. data/lib/wefunder_generated/models/debt_security.rb +266 -0
  131. data/lib/wefunder_generated/models/debt_security_terms.rb +235 -0
  132. data/lib/wefunder_generated/models/delete_webhook_endpoint200_response.rb +214 -0
  133. data/lib/wefunder_generated/models/delete_webhook_endpoint200_response_data.rb +232 -0
  134. data/lib/wefunder_generated/models/disclosure_document.rb +224 -0
  135. data/lib/wefunder_generated/models/disclosure_person.rb +254 -0
  136. data/lib/wefunder_generated/models/eligible_target_list_envelope.rb +225 -0
  137. data/lib/wefunder_generated/models/eligible_target_list_envelope_data_inner.rb +295 -0
  138. data/lib/wefunder_generated/models/equity_security.rb +266 -0
  139. data/lib/wefunder_generated/models/equity_security_terms.rb +271 -0
  140. data/lib/wefunder_generated/models/error.rb +214 -0
  141. data/lib/wefunder_generated/models/error_error.rb +254 -0
  142. data/lib/wefunder_generated/models/exemption.rb +271 -0
  143. data/lib/wefunder_generated/models/fiscal_year_financials.rb +296 -0
  144. data/lib/wefunder_generated/models/follow_state_envelope.rb +214 -0
  145. data/lib/wefunder_generated/models/follow_state_envelope_data.rb +268 -0
  146. data/lib/wefunder_generated/models/follow_state_envelope_data_attributes.rb +225 -0
  147. data/lib/wefunder_generated/models/followed_company.rb +268 -0
  148. data/lib/wefunder_generated/models/followed_company_attributes.rb +275 -0
  149. data/lib/wefunder_generated/models/followed_company_list_envelope.rb +225 -0
  150. data/lib/wefunder_generated/models/full_attribution.rb +272 -0
  151. data/lib/wefunder_generated/models/full_attribution_attribution.rb +326 -0
  152. data/lib/wefunder_generated/models/full_attribution_investor.rb +242 -0
  153. data/lib/wefunder_generated/models/full_attribution_status.rb +257 -0
  154. data/lib/wefunder_generated/models/fund_security.rb +267 -0
  155. data/lib/wefunder_generated/models/installation.rb +233 -0
  156. data/lib/wefunder_generated/models/installation_attributes.rb +307 -0
  157. data/lib/wefunder_generated/models/installation_attributes_target.rb +267 -0
  158. data/lib/wefunder_generated/models/installation_envelope.rb +223 -0
  159. data/lib/wefunder_generated/models/installation_list_envelope.rb +225 -0
  160. data/lib/wefunder_generated/models/installation_list_envelope_meta.rb +214 -0
  161. data/lib/wefunder_generated/models/installation_token_envelope.rb +232 -0
  162. data/lib/wefunder_generated/models/installation_token_envelope_token.rb +252 -0
  163. data/lib/wefunder_generated/models/intent.rb +234 -0
  164. data/lib/wefunder_generated/models/intent_attributes.rb +375 -0
  165. data/lib/wefunder_generated/models/intent_attributes_resource_id.rb +106 -0
  166. data/lib/wefunder_generated/models/intent_envelope.rb +214 -0
  167. data/lib/wefunder_generated/models/intent_list_envelope.rb +225 -0
  168. data/lib/wefunder_generated/models/intent_preview_envelope.rb +214 -0
  169. data/lib/wefunder_generated/models/intent_preview_envelope_data.rb +257 -0
  170. data/lib/wefunder_generated/models/intent_preview_envelope_data_attributes.rb +262 -0
  171. data/lib/wefunder_generated/models/intent_review.rb +234 -0
  172. data/lib/wefunder_generated/models/investment_change_list_envelope.rb +225 -0
  173. data/lib/wefunder_generated/models/investment_change_list_envelope_meta.rb +285 -0
  174. data/lib/wefunder_generated/models/investment_delta_record.rb +504 -0
  175. data/lib/wefunder_generated/models/investment_delta_record_amounts.rb +251 -0
  176. data/lib/wefunder_generated/models/investment_delta_record_blockers_inner.rb +224 -0
  177. data/lib/wefunder_generated/models/investment_delta_record_contracts_inner.rb +234 -0
  178. data/lib/wefunder_generated/models/investment_delta_record_investor.rb +286 -0
  179. data/lib/wefunder_generated/models/investment_envelope.rb +223 -0
  180. data/lib/wefunder_generated/models/investment_envelope_meta.rb +270 -0
  181. data/lib/wefunder_generated/models/investment_list_envelope.rb +225 -0
  182. data/lib/wefunder_generated/models/investment_list_envelope_meta.rb +288 -0
  183. data/lib/wefunder_generated/models/investment_session.rb +232 -0
  184. data/lib/wefunder_generated/models/investment_session_attributes.rb +384 -0
  185. data/lib/wefunder_generated/models/investment_session_attributes_events_inner.rb +232 -0
  186. data/lib/wefunder_generated/models/investment_session_create_input.rb +331 -0
  187. data/lib/wefunder_generated/models/investment_session_envelope.rb +223 -0
  188. data/lib/wefunder_generated/models/investment_session_list_envelope.rb +225 -0
  189. data/lib/wefunder_generated/models/investment_session_list_envelope_meta.rb +242 -0
  190. data/lib/wefunder_generated/models/investor.rb +233 -0
  191. data/lib/wefunder_generated/models/investor_attributes.rb +262 -0
  192. data/lib/wefunder_generated/models/investor_envelope.rb +214 -0
  193. data/lib/wefunder_generated/models/investor_list_envelope.rb +225 -0
  194. data/lib/wefunder_generated/models/invite_link.rb +233 -0
  195. data/lib/wefunder_generated/models/invite_link_attributes.rb +375 -0
  196. data/lib/wefunder_generated/models/invite_link_attributes_events_inner.rb +243 -0
  197. data/lib/wefunder_generated/models/invite_link_create_input.rb +295 -0
  198. data/lib/wefunder_generated/models/invite_link_envelope.rb +223 -0
  199. data/lib/wefunder_generated/models/invite_link_list_envelope.rb +225 -0
  200. data/lib/wefunder_generated/models/invite_link_update_input.rb +227 -0
  201. data/lib/wefunder_generated/models/invite_syndicate_member_request.rb +277 -0
  202. data/lib/wefunder_generated/models/marketing_partner.rb +295 -0
  203. data/lib/wefunder_generated/models/marketing_partner_envelope.rb +214 -0
  204. data/lib/wefunder_generated/models/member_investment.rb +234 -0
  205. data/lib/wefunder_generated/models/member_investment_attributes.rb +301 -0
  206. data/lib/wefunder_generated/models/member_investment_list_envelope.rb +225 -0
  207. data/lib/wefunder_generated/models/member_investment_list_envelope_meta.rb +225 -0
  208. data/lib/wefunder_generated/models/my_company.rb +268 -0
  209. data/lib/wefunder_generated/models/my_company_attributes.rb +257 -0
  210. data/lib/wefunder_generated/models/my_company_list_envelope.rb +225 -0
  211. data/lib/wefunder_generated/models/offering.rb +267 -0
  212. data/lib/wefunder_generated/models/offering_attributes.rb +469 -0
  213. data/lib/wefunder_generated/models/offering_attributes_intended_security.rb +258 -0
  214. data/lib/wefunder_generated/models/offering_attributes_security.rb +105 -0
  215. data/lib/wefunder_generated/models/offering_envelope.rb +214 -0
  216. data/lib/wefunder_generated/models/offering_list_envelope.rb +225 -0
  217. data/lib/wefunder_generated/models/offering_list_envelope_meta.rb +265 -0
  218. data/lib/wefunder_generated/models/offering_stats_envelope.rb +223 -0
  219. data/lib/wefunder_generated/models/offering_stats_envelope_data.rb +253 -0
  220. data/lib/wefunder_generated/models/offering_stats_envelope_data_by_status_value.rb +232 -0
  221. data/lib/wefunder_generated/models/offering_stats_envelope_data_total.rb +233 -0
  222. data/lib/wefunder_generated/models/offering_stats_envelope_meta.rb +258 -0
  223. data/lib/wefunder_generated/models/offering_warnings_inner.rb +257 -0
  224. data/lib/wefunder_generated/models/other_security.rb +267 -0
  225. data/lib/wefunder_generated/models/other_security_terms.rb +235 -0
  226. data/lib/wefunder_generated/models/pagination_meta.rb +234 -0
  227. data/lib/wefunder_generated/models/pagination_meta_next_cursor.rb +106 -0
  228. data/lib/wefunder_generated/models/partner_investment.rb +232 -0
  229. data/lib/wefunder_generated/models/partner_investment_attributes.rb +305 -0
  230. data/lib/wefunder_generated/models/partner_investment_attributes_accreditation.rb +289 -0
  231. data/lib/wefunder_generated/models/partner_investment_envelope.rb +214 -0
  232. data/lib/wefunder_generated/models/partner_investment_list_envelope.rb +225 -0
  233. data/lib/wefunder_generated/models/partner_investor.rb +233 -0
  234. data/lib/wefunder_generated/models/partner_investor_attributes.rb +264 -0
  235. data/lib/wefunder_generated/models/partner_investor_list_envelope.rb +225 -0
  236. data/lib/wefunder_generated/models/partner_invite.rb +360 -0
  237. data/lib/wefunder_generated/models/partner_invite_envelope.rb +214 -0
  238. data/lib/wefunder_generated/models/partner_invite_list_envelope.rb +216 -0
  239. data/lib/wefunder_generated/models/partner_webhook_event.rb +257 -0
  240. data/lib/wefunder_generated/models/partner_webhook_event_envelope.rb +214 -0
  241. data/lib/wefunder_generated/models/partner_webhook_subscription.rb +232 -0
  242. data/lib/wefunder_generated/models/partner_webhook_subscription_attributes.rb +243 -0
  243. data/lib/wefunder_generated/models/partner_webhook_subscription_create_input.rb +239 -0
  244. data/lib/wefunder_generated/models/partner_webhook_subscription_envelope.rb +214 -0
  245. data/lib/wefunder_generated/models/partner_webhook_subscription_list_envelope.rb +216 -0
  246. data/lib/wefunder_generated/models/partner_webhook_subscription_with_secret.rb +239 -0
  247. data/lib/wefunder_generated/models/partner_webhook_subscription_with_secret_all_of_attributes.rb +215 -0
  248. data/lib/wefunder_generated/models/partner_webhook_subscription_with_secret_envelope.rb +214 -0
  249. data/lib/wefunder_generated/models/past_round.rb +309 -0
  250. data/lib/wefunder_generated/models/perk_tier.rb +226 -0
  251. data/lib/wefunder_generated/models/pitch_block.rb +375 -0
  252. data/lib/wefunder_generated/models/pitch_block_links_inner.rb +226 -0
  253. data/lib/wefunder_generated/models/portfolio_company_ref.rb +235 -0
  254. data/lib/wefunder_generated/models/portfolio_holding.rb +258 -0
  255. data/lib/wefunder_generated/models/portfolio_position.rb +268 -0
  256. data/lib/wefunder_generated/models/portfolio_position_attributes.rb +456 -0
  257. data/lib/wefunder_generated/models/portfolio_position_list_envelope.rb +225 -0
  258. data/lib/wefunder_generated/models/portfolio_position_list_envelope_meta.rb +234 -0
  259. data/lib/wefunder_generated/models/portfolio_security.rb +323 -0
  260. data/lib/wefunder_generated/models/portfolio_security_owner.rb +258 -0
  261. data/lib/wefunder_generated/models/portfolio_security_terms.rb +257 -0
  262. data/lib/wefunder_generated/models/portfolio_summary_envelope.rb +214 -0
  263. data/lib/wefunder_generated/models/portfolio_summary_envelope_data.rb +223 -0
  264. data/lib/wefunder_generated/models/portfolio_summary_envelope_data_attributes.rb +292 -0
  265. data/lib/wefunder_generated/models/portfolio_summary_envelope_data_attributes_position_counts.rb +242 -0
  266. data/lib/wefunder_generated/models/preview_intent_request.rb +262 -0
  267. data/lib/wefunder_generated/models/register_as_partner_request.rb +232 -0
  268. data/lib/wefunder_generated/models/reorder_syndicate_members_request.rb +224 -0
  269. data/lib/wefunder_generated/models/revenue_share_security.rb +266 -0
  270. data/lib/wefunder_generated/models/revenue_share_security_terms.rb +300 -0
  271. data/lib/wefunder_generated/models/safe_security.rb +266 -0
  272. data/lib/wefunder_generated/models/safe_security_terms.rb +257 -0
  273. data/lib/wefunder_generated/models/security.rb +66 -0
  274. data/lib/wefunder_generated/models/security_summary.rb +272 -0
  275. data/lib/wefunder_generated/models/spv.rb +232 -0
  276. data/lib/wefunder_generated/models/spv_attributes.rb +353 -0
  277. data/lib/wefunder_generated/models/spv_attributes_target_company.rb +223 -0
  278. data/lib/wefunder_generated/models/spv_cancel_intent_envelope.rb +224 -0
  279. data/lib/wefunder_generated/models/spv_cancel_intent_envelope_meta.rb +214 -0
  280. data/lib/wefunder_generated/models/spv_close_intent_envelope.rb +224 -0
  281. data/lib/wefunder_generated/models/spv_close_intent_envelope_meta.rb +214 -0
  282. data/lib/wefunder_generated/models/spv_create_input.rb +274 -0
  283. data/lib/wefunder_generated/models/spv_envelope.rb +214 -0
  284. data/lib/wefunder_generated/models/spv_list_envelope.rb +225 -0
  285. data/lib/wefunder_generated/models/spv_metrics.rb +261 -0
  286. data/lib/wefunder_generated/models/spv_settings.rb +275 -0
  287. data/lib/wefunder_generated/models/spv_status.rb +232 -0
  288. data/lib/wefunder_generated/models/spv_status_attributes.rb +289 -0
  289. data/lib/wefunder_generated/models/spv_status_envelope.rb +223 -0
  290. data/lib/wefunder_generated/models/spv_terms.rb +348 -0
  291. data/lib/wefunder_generated/models/spv_with_meta_envelope.rb +223 -0
  292. data/lib/wefunder_generated/models/spv_with_meta_envelope_meta.rb +214 -0
  293. data/lib/wefunder_generated/models/syndicate.rb +234 -0
  294. data/lib/wefunder_generated/models/syndicate_attributes.rb +412 -0
  295. data/lib/wefunder_generated/models/syndicate_attributes_annual_subscription.rb +236 -0
  296. data/lib/wefunder_generated/models/syndicate_attributes_traditional_fund.rb +225 -0
  297. data/lib/wefunder_generated/models/syndicate_deal.rb +234 -0
  298. data/lib/wefunder_generated/models/syndicate_deal_attributes.rb +435 -0
  299. data/lib/wefunder_generated/models/syndicate_deal_attributes_exemption.rb +105 -0
  300. data/lib/wefunder_generated/models/syndicate_deal_attributes_security.rb +105 -0
  301. data/lib/wefunder_generated/models/syndicate_deal_close_intent_envelope.rb +224 -0
  302. data/lib/wefunder_generated/models/syndicate_deal_close_intent_envelope_meta.rb +214 -0
  303. data/lib/wefunder_generated/models/syndicate_deal_detail_envelope.rb +214 -0
  304. data/lib/wefunder_generated/models/syndicate_deal_envelope.rb +214 -0
  305. data/lib/wefunder_generated/models/syndicate_deal_finalize_intent_envelope.rb +224 -0
  306. data/lib/wefunder_generated/models/syndicate_deal_finalize_intent_envelope_meta.rb +214 -0
  307. data/lib/wefunder_generated/models/syndicate_deal_list_envelope.rb +225 -0
  308. data/lib/wefunder_generated/models/syndicate_detail_envelope.rb +214 -0
  309. data/lib/wefunder_generated/models/syndicate_list_envelope.rb +225 -0
  310. data/lib/wefunder_generated/models/syndicate_member.rb +234 -0
  311. data/lib/wefunder_generated/models/syndicate_member_attributes.rb +650 -0
  312. data/lib/wefunder_generated/models/syndicate_member_envelope.rb +214 -0
  313. data/lib/wefunder_generated/models/syndicate_member_list_envelope.rb +225 -0
  314. data/lib/wefunder_generated/models/syndicate_portfolio_summary_envelope.rb +214 -0
  315. data/lib/wefunder_generated/models/syndicate_portfolio_summary_envelope_data.rb +223 -0
  316. data/lib/wefunder_generated/models/syndicate_portfolio_summary_envelope_data_attributes.rb +302 -0
  317. data/lib/wefunder_generated/models/syndicate_portfolio_summary_envelope_data_attributes_deal_counts.rb +242 -0
  318. data/lib/wefunder_generated/models/syndicate_statistics.rb +224 -0
  319. data/lib/wefunder_generated/models/syndicate_statistics_attributes.rb +277 -0
  320. data/lib/wefunder_generated/models/syndicate_statistics_envelope.rb +214 -0
  321. data/lib/wefunder_generated/models/tag_ref.rb +238 -0
  322. data/lib/wefunder_generated/models/target_company_input.rb +258 -0
  323. data/lib/wefunder_generated/models/test_webhook_endpoint_request.rb +249 -0
  324. data/lib/wefunder_generated/models/update_syndicate_member_request.rb +221 -0
  325. data/lib/wefunder_generated/models/update_syndicate_member_request_member.rb +251 -0
  326. data/lib/wefunder_generated/models/update_syndicate_request.rb +221 -0
  327. data/lib/wefunder_generated/models/update_syndicate_request_syndicate.rb +232 -0
  328. data/lib/wefunder_generated/models/update_webhook_endpoint_request.rb +252 -0
  329. data/lib/wefunder_generated/models/user.rb +233 -0
  330. data/lib/wefunder_generated/models/user_attributes.rb +300 -0
  331. data/lib/wefunder_generated/models/user_envelope.rb +214 -0
  332. data/lib/wefunder_generated/models/validation_error.rb +215 -0
  333. data/lib/wefunder_generated/models/validation_error_error.rb +234 -0
  334. data/lib/wefunder_generated/models/validation_error_error_details_inner.rb +232 -0
  335. data/lib/wefunder_generated/models/webhook_delivery.rb +318 -0
  336. data/lib/wefunder_generated/models/webhook_endpoint.rb +232 -0
  337. data/lib/wefunder_generated/models/webhook_endpoint_attributes.rb +327 -0
  338. data/lib/wefunder_generated/models/webhook_endpoint_envelope.rb +223 -0
  339. data/lib/wefunder_generated/models/webhook_endpoint_envelope_meta.rb +214 -0
  340. data/lib/wefunder_generated/models/webhook_endpoint_list_envelope.rb +225 -0
  341. data/lib/wefunder_generated/models/webhook_endpoint_list_envelope_meta.rb +233 -0
  342. data/lib/wefunder_generated/models/webhook_endpoint_test_result_envelope.rb +223 -0
  343. data/lib/wefunder_generated/models/webhook_endpoint_test_result_envelope_data.rb +306 -0
  344. data/lib/wefunder_generated/models/webhook_subscription.rb +304 -0
  345. data/lib/wefunder_generated/models/webhook_subscription_envelope.rb +214 -0
  346. data/lib/wefunder_generated/models/webhook_subscription_list_envelope.rb +225 -0
  347. data/lib/wefunder_generated/models/webhook_subscription_list_envelope_meta.rb +225 -0
  348. data/lib/wefunder_generated/models/webhook_subscription_with_recent_deliveries_envelope.rb +214 -0
  349. data/lib/wefunder_generated/models/webhook_subscription_with_recent_deliveries_envelope_data.rb +322 -0
  350. data/lib/wefunder_generated/models/webhook_subscription_with_secret2_envelope.rb +214 -0
  351. data/lib/wefunder_generated/models/webhook_subscription_with_secret2_envelope_data.rb +320 -0
  352. data/lib/wefunder_generated/models/webhook_subscription_with_secret_envelope.rb +214 -0
  353. data/lib/wefunder_generated/models/webhook_subscription_with_secret_envelope_data.rb +320 -0
  354. data/lib/wefunder_generated/models/webhook_test_result.rb +233 -0
  355. data/lib/wefunder_generated/models/webhook_test_result_envelope.rb +214 -0
  356. data/lib/wefunder_generated/models/wefunder_round.rb +330 -0
  357. data/lib/wefunder_generated/models/wefunder_round_exemption.rb +104 -0
  358. data/lib/wefunder_generated/models/wefunder_round_security.rb +104 -0
  359. data/lib/wefunder_generated/version.rb +15 -0
  360. data/lib/wefunder_generated.rb +382 -0
  361. metadata +456 -0
@@ -0,0 +1,301 @@
1
+ =begin
2
+ #Wefunder API v2
3
+
4
+ #OAuth 2.0 API for accessing Wefunder data programmatically. ## Authentication This API uses OAuth 2.0 for authentication. To get started: 1. Create an OAuth application at `/oauth/applications` 2. Get your Client ID and Client Secret 3. Implement the OAuth 2.0 Authorization Code flow 4. Use the access token to make API requests ## Versioning The API is versioned by the dated `Wefunder-Version` request header (`YYYY-MM-DD`), never by the URL. Resolution is header → your application's pinned version → latest; every response carries `Wefunder-Version` (the version that handled it) and `Wefunder-Version-Latest`. An unknown value returns `400 invalid_request` naming the valid versions. Current: `2026-10-01`. ## Rate Limits - Standard API: 1,000 requests/hour per token - Admin API: 10,000 requests/hour per token ## Base URL All API requests should be made to: `https://api.wefunder.com` (no version in the path).
5
+
6
+ The version of the OpenAPI document: 2.0
7
+ Contact: api@wefunder.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module WefunderGenerated
16
+ class IntentsApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Propose an intent
23
+ # Propose a dangerous or irreversible action for human approval. Returns a `review_url` where a human must review the impact and approve before the action executes. The entity that proposes an intent can never approve it. Approval always happens on Wefunder's UI by a user with permission on the resource. Each action names the scope that may propose it and the resource type it targets (`syndicates.*` → `write:syndicates` on a syndicate; `comments.create` → `write:comments` on a `Company`). The token must hold that action's scope; holding another proposing scope is not enough (403 `insufficient_scope`). `comments.create` posts a question on a company's Ask tab, or an answer to one, as the requesting user once they approve on wefunder.com. `resource_id` is the company (`co_...`); `params` is `{ target_type: \"company\" | \"comment\", target: \"co_...\" | \"cmt_...\", body, disclosure_key? }` (`disclosure_key` ∈ investor, stockholder, promoter, financial_stakeholder). Who may post is the site's own rule: anyone the page is available to may ask (unless the company has closed questions); only the company's team may answer. Only the requester can approve. 20 proposals per user per day (429). An `idempotency_key` names one operation. Reusing it for the same operation returns the existing intent (200) while that intent is pending, approved, executing, or executed; reusing it for a different action, resource, or params is a 409 `idempotency_conflict`. An action still rolling out per account returns 403 `feature_disabled` for a user who is not yet enabled. `POST /intents/preview` runs the same checks without minting. See [Intents documentation](/concepts/intents) for the full pattern.
24
+ # @param create_intent_request [CreateIntentRequest]
25
+ # @param [Hash] opts the optional parameters
26
+ # @return [IntentEnvelope]
27
+ def create_intent(create_intent_request, opts = {})
28
+ data, _status_code, _headers = create_intent_with_http_info(create_intent_request, opts)
29
+ data
30
+ end
31
+
32
+ # Propose an intent
33
+ # Propose a dangerous or irreversible action for human approval. Returns a `review_url` where a human must review the impact and approve before the action executes. The entity that proposes an intent can never approve it. Approval always happens on Wefunder's UI by a user with permission on the resource. Each action names the scope that may propose it and the resource type it targets (`syndicates.*` → `write:syndicates` on a syndicate; `comments.create` → `write:comments` on a `Company`). The token must hold that action's scope; holding another proposing scope is not enough (403 `insufficient_scope`). `comments.create` posts a question on a company's Ask tab, or an answer to one, as the requesting user once they approve on wefunder.com. `resource_id` is the company (`co_...`); `params` is `{ target_type: \"company\" | \"comment\", target: \"co_...\" | \"cmt_...\", body, disclosure_key? }` (`disclosure_key` ∈ investor, stockholder, promoter, financial_stakeholder). Who may post is the site's own rule: anyone the page is available to may ask (unless the company has closed questions); only the company's team may answer. Only the requester can approve. 20 proposals per user per day (429). An `idempotency_key` names one operation. Reusing it for the same operation returns the existing intent (200) while that intent is pending, approved, executing, or executed; reusing it for a different action, resource, or params is a 409 `idempotency_conflict`. An action still rolling out per account returns 403 `feature_disabled` for a user who is not yet enabled. `POST /intents/preview` runs the same checks without minting. See [Intents documentation](/concepts/intents) for the full pattern.
34
+ # @param create_intent_request [CreateIntentRequest]
35
+ # @param [Hash] opts the optional parameters
36
+ # @return [Array<(IntentEnvelope, Integer, Hash)>] IntentEnvelope data, response status code and response headers
37
+ def create_intent_with_http_info(create_intent_request, opts = {})
38
+ if @api_client.config.debugging
39
+ @api_client.config.logger.debug 'Calling API: IntentsApi.create_intent ...'
40
+ end
41
+ # verify the required parameter 'create_intent_request' is set
42
+ if @api_client.config.client_side_validation && create_intent_request.nil?
43
+ fail ArgumentError, "Missing the required parameter 'create_intent_request' when calling IntentsApi.create_intent"
44
+ end
45
+ # resource path
46
+ local_var_path = '/intents'
47
+
48
+ # query parameters
49
+ query_params = opts[:query_params] || {}
50
+
51
+ # header parameters
52
+ header_params = opts[:header_params] || {}
53
+ # HTTP header 'Accept' (if needed)
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
+ # HTTP header 'Content-Type'
56
+ content_type = @api_client.select_header_content_type(['application/json'])
57
+ if !content_type.nil?
58
+ header_params['Content-Type'] = content_type
59
+ end
60
+
61
+ # form parameters
62
+ form_params = opts[:form_params] || {}
63
+
64
+ # http body (model)
65
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(create_intent_request)
66
+
67
+ # return_type
68
+ return_type = opts[:debug_return_type] || 'IntentEnvelope'
69
+
70
+ # auth_names
71
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
72
+
73
+ new_options = opts.merge(
74
+ :operation => :"IntentsApi.create_intent",
75
+ :header_params => header_params,
76
+ :query_params => query_params,
77
+ :form_params => form_params,
78
+ :body => post_body,
79
+ :auth_names => auth_names,
80
+ :return_type => return_type
81
+ )
82
+
83
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
84
+ if @api_client.config.debugging
85
+ @api_client.config.logger.debug "API called: IntentsApi#create_intent\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
86
+ end
87
+ return data, status_code, headers
88
+ end
89
+
90
+ # Get intent status
91
+ # Check the current status of an intent. Use this to poll for approval after proposing an intent, or subscribe to `intent.*` webhook events instead.
92
+ # @param intent_id [String] The intent&#39;s id (&#x60;int_...&#x60;), as returned when the intent was minted (&#x60;data.id&#x60; / &#x60;meta.*_intent.id&#x60;). The legacy UUID form is still accepted.
93
+ # @param [Hash] opts the optional parameters
94
+ # @return [IntentEnvelope]
95
+ def get_intent(intent_id, opts = {})
96
+ data, _status_code, _headers = get_intent_with_http_info(intent_id, opts)
97
+ data
98
+ end
99
+
100
+ # Get intent status
101
+ # Check the current status of an intent. Use this to poll for approval after proposing an intent, or subscribe to &#x60;intent.*&#x60; webhook events instead.
102
+ # @param intent_id [String] The intent&#39;s id (&#x60;int_...&#x60;), as returned when the intent was minted (&#x60;data.id&#x60; / &#x60;meta.*_intent.id&#x60;). The legacy UUID form is still accepted.
103
+ # @param [Hash] opts the optional parameters
104
+ # @return [Array<(IntentEnvelope, Integer, Hash)>] IntentEnvelope data, response status code and response headers
105
+ def get_intent_with_http_info(intent_id, opts = {})
106
+ if @api_client.config.debugging
107
+ @api_client.config.logger.debug 'Calling API: IntentsApi.get_intent ...'
108
+ end
109
+ # verify the required parameter 'intent_id' is set
110
+ if @api_client.config.client_side_validation && intent_id.nil?
111
+ fail ArgumentError, "Missing the required parameter 'intent_id' when calling IntentsApi.get_intent"
112
+ end
113
+ # resource path
114
+ local_var_path = '/intents/{intent_id}'.sub('{' + 'intent_id' + '}', CGI.escape(intent_id.to_s))
115
+
116
+ # query parameters
117
+ query_params = opts[:query_params] || {}
118
+
119
+ # header parameters
120
+ header_params = opts[:header_params] || {}
121
+ # HTTP header 'Accept' (if needed)
122
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
123
+
124
+ # form parameters
125
+ form_params = opts[:form_params] || {}
126
+
127
+ # http body (model)
128
+ post_body = opts[:debug_body]
129
+
130
+ # return_type
131
+ return_type = opts[:debug_return_type] || 'IntentEnvelope'
132
+
133
+ # auth_names
134
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
135
+
136
+ new_options = opts.merge(
137
+ :operation => :"IntentsApi.get_intent",
138
+ :header_params => header_params,
139
+ :query_params => query_params,
140
+ :form_params => form_params,
141
+ :body => post_body,
142
+ :auth_names => auth_names,
143
+ :return_type => return_type
144
+ )
145
+
146
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
147
+ if @api_client.config.debugging
148
+ @api_client.config.logger.debug "API called: IntentsApi#get_intent\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
149
+ end
150
+ return data, status_code, headers
151
+ end
152
+
153
+ # List intents
154
+ # List intents created by the current token, optionally filtered by status or resource.
155
+ # @param [Hash] opts the optional parameters
156
+ # @option opts [String] :status
157
+ # @option opts [String] :resource_type
158
+ # @option opts [String] :resource_id For Club resources, the syndicate&#39;s id (&#x60;syn_...&#x60;).
159
+ # @option opts [String] :cursor Opaque cursor from the previous response&#39;s &#x60;meta.next_cursor&#x60;.
160
+ # @option opts [Integer] :per_page (default to 25)
161
+ # @return [IntentListEnvelope]
162
+ def list_intents(opts = {})
163
+ data, _status_code, _headers = list_intents_with_http_info(opts)
164
+ data
165
+ end
166
+
167
+ # List intents
168
+ # List intents created by the current token, optionally filtered by status or resource.
169
+ # @param [Hash] opts the optional parameters
170
+ # @option opts [String] :status
171
+ # @option opts [String] :resource_type
172
+ # @option opts [String] :resource_id For Club resources, the syndicate&#39;s id (&#x60;syn_...&#x60;).
173
+ # @option opts [String] :cursor Opaque cursor from the previous response&#39;s &#x60;meta.next_cursor&#x60;.
174
+ # @option opts [Integer] :per_page (default to 25)
175
+ # @return [Array<(IntentListEnvelope, Integer, Hash)>] IntentListEnvelope data, response status code and response headers
176
+ def list_intents_with_http_info(opts = {})
177
+ if @api_client.config.debugging
178
+ @api_client.config.logger.debug 'Calling API: IntentsApi.list_intents ...'
179
+ end
180
+ allowable_values = ["pending", "approved", "executed", "expired", "rejected", "failed"]
181
+ if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
182
+ fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
183
+ end
184
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] > 100
185
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling IntentsApi.list_intents, must be smaller than or equal to 100.'
186
+ end
187
+
188
+ # resource path
189
+ local_var_path = '/intents'
190
+
191
+ # query parameters
192
+ query_params = opts[:query_params] || {}
193
+ query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
194
+ query_params[:'resource_type'] = opts[:'resource_type'] if !opts[:'resource_type'].nil?
195
+ query_params[:'resource_id'] = opts[:'resource_id'] if !opts[:'resource_id'].nil?
196
+ query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
197
+ query_params[:'per_page'] = opts[:'per_page'] if !opts[:'per_page'].nil?
198
+
199
+ # header parameters
200
+ header_params = opts[:header_params] || {}
201
+ # HTTP header 'Accept' (if needed)
202
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
203
+
204
+ # form parameters
205
+ form_params = opts[:form_params] || {}
206
+
207
+ # http body (model)
208
+ post_body = opts[:debug_body]
209
+
210
+ # return_type
211
+ return_type = opts[:debug_return_type] || 'IntentListEnvelope'
212
+
213
+ # auth_names
214
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
215
+
216
+ new_options = opts.merge(
217
+ :operation => :"IntentsApi.list_intents",
218
+ :header_params => header_params,
219
+ :query_params => query_params,
220
+ :form_params => form_params,
221
+ :body => post_body,
222
+ :auth_names => auth_names,
223
+ :return_type => return_type
224
+ )
225
+
226
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
227
+ if @api_client.config.debugging
228
+ @api_client.config.logger.debug "API called: IntentsApi#list_intents\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
229
+ end
230
+ return data, status_code, headers
231
+ end
232
+
233
+ # Preview an intent without proposing it
234
+ # Runs every check `POST /intents` runs — the action's feature flag, resource type and id, token binding, who may propose, and the handler's own validation — and returns what the reviewer would read, without minting anything. The draft step for agents: admitted by any proposing scope **or** `read:explore`, and the action's own scope is not required on the token, so a user can shape the text before granting the write permission. The caller must still be allowed to propose on the resource, and for a syndicate-owned token the application's Installation scope ceiling still applies (an install granted only `read:syndicates` cannot preview a `write:syndicates` action: `403 insufficient_scope`). Same request body as `POST /intents` (without `idempotency_key`). Errors are the same as `POST /intents` would give.
235
+ # @param preview_intent_request [PreviewIntentRequest]
236
+ # @param [Hash] opts the optional parameters
237
+ # @return [IntentPreviewEnvelope]
238
+ def preview_intent(preview_intent_request, opts = {})
239
+ data, _status_code, _headers = preview_intent_with_http_info(preview_intent_request, opts)
240
+ data
241
+ end
242
+
243
+ # Preview an intent without proposing it
244
+ # Runs every check &#x60;POST /intents&#x60; runs — the action&#39;s feature flag, resource type and id, token binding, who may propose, and the handler&#39;s own validation — and returns what the reviewer would read, without minting anything. The draft step for agents: admitted by any proposing scope **or** &#x60;read:explore&#x60;, and the action&#39;s own scope is not required on the token, so a user can shape the text before granting the write permission. The caller must still be allowed to propose on the resource, and for a syndicate-owned token the application&#39;s Installation scope ceiling still applies (an install granted only &#x60;read:syndicates&#x60; cannot preview a &#x60;write:syndicates&#x60; action: &#x60;403 insufficient_scope&#x60;). Same request body as &#x60;POST /intents&#x60; (without &#x60;idempotency_key&#x60;). Errors are the same as &#x60;POST /intents&#x60; would give.
245
+ # @param preview_intent_request [PreviewIntentRequest]
246
+ # @param [Hash] opts the optional parameters
247
+ # @return [Array<(IntentPreviewEnvelope, Integer, Hash)>] IntentPreviewEnvelope data, response status code and response headers
248
+ def preview_intent_with_http_info(preview_intent_request, opts = {})
249
+ if @api_client.config.debugging
250
+ @api_client.config.logger.debug 'Calling API: IntentsApi.preview_intent ...'
251
+ end
252
+ # verify the required parameter 'preview_intent_request' is set
253
+ if @api_client.config.client_side_validation && preview_intent_request.nil?
254
+ fail ArgumentError, "Missing the required parameter 'preview_intent_request' when calling IntentsApi.preview_intent"
255
+ end
256
+ # resource path
257
+ local_var_path = '/intents/preview'
258
+
259
+ # query parameters
260
+ query_params = opts[:query_params] || {}
261
+
262
+ # header parameters
263
+ header_params = opts[:header_params] || {}
264
+ # HTTP header 'Accept' (if needed)
265
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
266
+ # HTTP header 'Content-Type'
267
+ content_type = @api_client.select_header_content_type(['application/json'])
268
+ if !content_type.nil?
269
+ header_params['Content-Type'] = content_type
270
+ end
271
+
272
+ # form parameters
273
+ form_params = opts[:form_params] || {}
274
+
275
+ # http body (model)
276
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(preview_intent_request)
277
+
278
+ # return_type
279
+ return_type = opts[:debug_return_type] || 'IntentPreviewEnvelope'
280
+
281
+ # auth_names
282
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
283
+
284
+ new_options = opts.merge(
285
+ :operation => :"IntentsApi.preview_intent",
286
+ :header_params => header_params,
287
+ :query_params => query_params,
288
+ :form_params => form_params,
289
+ :body => post_body,
290
+ :auth_names => auth_names,
291
+ :return_type => return_type
292
+ )
293
+
294
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
295
+ if @api_client.config.debugging
296
+ @api_client.config.logger.debug "API called: IntentsApi#preview_intent\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
297
+ end
298
+ return data, status_code, headers
299
+ end
300
+ end
301
+ end
@@ -0,0 +1,99 @@
1
+ =begin
2
+ #Wefunder API v2
3
+
4
+ #OAuth 2.0 API for accessing Wefunder data programmatically. ## Authentication This API uses OAuth 2.0 for authentication. To get started: 1. Create an OAuth application at `/oauth/applications` 2. Get your Client ID and Client Secret 3. Implement the OAuth 2.0 Authorization Code flow 4. Use the access token to make API requests ## Versioning The API is versioned by the dated `Wefunder-Version` request header (`YYYY-MM-DD`), never by the URL. Resolution is header → your application's pinned version → latest; every response carries `Wefunder-Version` (the version that handled it) and `Wefunder-Version-Latest`. An unknown value returns `400 invalid_request` naming the valid versions. Current: `2026-10-01`. ## Rate Limits - Standard API: 1,000 requests/hour per token - Admin API: 10,000 requests/hour per token ## Base URL All API requests should be made to: `https://api.wefunder.com` (no version in the path).
5
+
6
+ The version of the OpenAPI document: 2.0
7
+ Contact: api@wefunder.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module WefunderGenerated
16
+ class InvestmentDeltaApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Bootstrap or page investment changes for a company
23
+ # The Investment Delta API: keep a copy of a company's investment records in sync by polling. Call without `cursor` to **bootstrap** (list every current record for the company); every response carries `meta.next_cursor`; call again with that cursor to receive only the records whose published state changed since. Records are the same shape in both modes. - Records are **published state**, not live rows: Wefunder publishes a record when the investment's founder-visible state changes, and serves exactly what was published. - `visible: false` records are **tombstones**: the investment is no longer visible to the company (canceled, converted to another round, hidden, or deleted). Delete your copy. - Apply records in `cursor` order. `observed_at` is when the payload was observed, not a version; a record you read late carries the *current* published state. - **410 Gone** means your cursor predates the 90-day retention window. Bootstrap again and **replace** your dataset for the company from the result (records absent from the bootstrap are deleted). - Investor identity fields (`investor.name`, `investor.legal_name`, `investor.email`, `investor.address`, `investor.bio`, `message`, `external_username`) are **omitted** unless the token carries `read:investors:pii`. - Money is integer minor units plus `amounts.currency` (`committed_cents`, `investment_size_cents`, `in_escrow_cents`, `contracts[].override_amount_cents`). `shares` and `average_share_price` are decimal strings, `null` on rounds without shares. `amounts.raised_cents` is the row's contribution to the public raised figure (0 while `needs_whitelisting`); sum it, not `committed_cents`, to match the deal page.
24
+ # @param company_id [String] The company&#39;s external id (&#x60;co_…&#x60;).
25
+ # @param [Hash] opts the optional parameters
26
+ # @option opts [String] :cursor Opaque cursor from a previous response&#39;s &#x60;meta.next_cursor&#x60;. Omit to bootstrap.
27
+ # @option opts [Integer] :per_page Records per page, 1–100 (default 25). Delta pages count distinct investments. (default to 25)
28
+ # @return [InvestmentChangeListEnvelope]
29
+ def list_company_investment_changes(company_id, opts = {})
30
+ data, _status_code, _headers = list_company_investment_changes_with_http_info(company_id, opts)
31
+ data
32
+ end
33
+
34
+ # Bootstrap or page investment changes for a company
35
+ # The Investment Delta API: keep a copy of a company&#39;s investment records in sync by polling. Call without &#x60;cursor&#x60; to **bootstrap** (list every current record for the company); every response carries &#x60;meta.next_cursor&#x60;; call again with that cursor to receive only the records whose published state changed since. Records are the same shape in both modes. - Records are **published state**, not live rows: Wefunder publishes a record when the investment&#39;s founder-visible state changes, and serves exactly what was published. - &#x60;visible: false&#x60; records are **tombstones**: the investment is no longer visible to the company (canceled, converted to another round, hidden, or deleted). Delete your copy. - Apply records in &#x60;cursor&#x60; order. &#x60;observed_at&#x60; is when the payload was observed, not a version; a record you read late carries the *current* published state. - **410 Gone** means your cursor predates the 90-day retention window. Bootstrap again and **replace** your dataset for the company from the result (records absent from the bootstrap are deleted). - Investor identity fields (&#x60;investor.name&#x60;, &#x60;investor.legal_name&#x60;, &#x60;investor.email&#x60;, &#x60;investor.address&#x60;, &#x60;investor.bio&#x60;, &#x60;message&#x60;, &#x60;external_username&#x60;) are **omitted** unless the token carries &#x60;read:investors:pii&#x60;. - Money is integer minor units plus &#x60;amounts.currency&#x60; (&#x60;committed_cents&#x60;, &#x60;investment_size_cents&#x60;, &#x60;in_escrow_cents&#x60;, &#x60;contracts[].override_amount_cents&#x60;). &#x60;shares&#x60; and &#x60;average_share_price&#x60; are decimal strings, &#x60;null&#x60; on rounds without shares. &#x60;amounts.raised_cents&#x60; is the row&#39;s contribution to the public raised figure (0 while &#x60;needs_whitelisting&#x60;); sum it, not &#x60;committed_cents&#x60;, to match the deal page.
36
+ # @param company_id [String] The company&#39;s external id (&#x60;co_…&#x60;).
37
+ # @param [Hash] opts the optional parameters
38
+ # @option opts [String] :cursor Opaque cursor from a previous response&#39;s &#x60;meta.next_cursor&#x60;. Omit to bootstrap.
39
+ # @option opts [Integer] :per_page Records per page, 1–100 (default 25). Delta pages count distinct investments. (default to 25)
40
+ # @return [Array<(InvestmentChangeListEnvelope, Integer, Hash)>] InvestmentChangeListEnvelope data, response status code and response headers
41
+ def list_company_investment_changes_with_http_info(company_id, opts = {})
42
+ if @api_client.config.debugging
43
+ @api_client.config.logger.debug 'Calling API: InvestmentDeltaApi.list_company_investment_changes ...'
44
+ end
45
+ # verify the required parameter 'company_id' is set
46
+ if @api_client.config.client_side_validation && company_id.nil?
47
+ fail ArgumentError, "Missing the required parameter 'company_id' when calling InvestmentDeltaApi.list_company_investment_changes"
48
+ end
49
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] > 100
50
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling InvestmentDeltaApi.list_company_investment_changes, must be smaller than or equal to 100.'
51
+ end
52
+
53
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] < 1
54
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling InvestmentDeltaApi.list_company_investment_changes, must be greater than or equal to 1.'
55
+ end
56
+
57
+ # resource path
58
+ local_var_path = '/companies/{company_id}/investments/changes'.sub('{' + 'company_id' + '}', CGI.escape(company_id.to_s))
59
+
60
+ # query parameters
61
+ query_params = opts[:query_params] || {}
62
+ query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
63
+ query_params[:'per_page'] = opts[:'per_page'] if !opts[:'per_page'].nil?
64
+
65
+ # header parameters
66
+ header_params = opts[:header_params] || {}
67
+ # HTTP header 'Accept' (if needed)
68
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
69
+
70
+ # form parameters
71
+ form_params = opts[:form_params] || {}
72
+
73
+ # http body (model)
74
+ post_body = opts[:debug_body]
75
+
76
+ # return_type
77
+ return_type = opts[:debug_return_type] || 'InvestmentChangeListEnvelope'
78
+
79
+ # auth_names
80
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
81
+
82
+ new_options = opts.merge(
83
+ :operation => :"InvestmentDeltaApi.list_company_investment_changes",
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(:GET, local_var_path, new_options)
93
+ if @api_client.config.debugging
94
+ @api_client.config.logger.debug "API called: InvestmentDeltaApi#list_company_investment_changes\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
95
+ end
96
+ return data, status_code, headers
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,238 @@
1
+ =begin
2
+ #Wefunder API v2
3
+
4
+ #OAuth 2.0 API for accessing Wefunder data programmatically. ## Authentication This API uses OAuth 2.0 for authentication. To get started: 1. Create an OAuth application at `/oauth/applications` 2. Get your Client ID and Client Secret 3. Implement the OAuth 2.0 Authorization Code flow 4. Use the access token to make API requests ## Versioning The API is versioned by the dated `Wefunder-Version` request header (`YYYY-MM-DD`), never by the URL. Resolution is header → your application's pinned version → latest; every response carries `Wefunder-Version` (the version that handled it) and `Wefunder-Version-Latest`. An unknown value returns `400 invalid_request` naming the valid versions. Current: `2026-10-01`. ## Rate Limits - Standard API: 1,000 requests/hour per token - Admin API: 10,000 requests/hour per token ## Base URL All API requests should be made to: `https://api.wefunder.com` (no version in the path).
5
+
6
+ The version of the OpenAPI document: 2.0
7
+ Contact: api@wefunder.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module WefunderGenerated
16
+ class InvestmentsApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Retrieve an investment (current)
23
+ # The same record shape as the list, derived **now** from the investment rather than read from published state, so an investor who just acted sees the change at once. Available for any investment in the token's audience: the user's own (any status) or a founder-visible investment on a company the user edits. `meta.published_matches` says whether the published record already agrees; the sync stream converges within its interval.
24
+ # @param id [String] Investment external id (&#x60;inv_…&#x60;).
25
+ # @param [Hash] opts the optional parameters
26
+ # @return [InvestmentEnvelope]
27
+ def get_investment(id, opts = {})
28
+ data, _status_code, _headers = get_investment_with_http_info(id, opts)
29
+ data
30
+ end
31
+
32
+ # Retrieve an investment (current)
33
+ # The same record shape as the list, derived **now** from the investment rather than read from published state, so an investor who just acted sees the change at once. Available for any investment in the token&#39;s audience: the user&#39;s own (any status) or a founder-visible investment on a company the user edits. &#x60;meta.published_matches&#x60; says whether the published record already agrees; the sync stream converges within its interval.
34
+ # @param id [String] Investment external id (&#x60;inv_…&#x60;).
35
+ # @param [Hash] opts the optional parameters
36
+ # @return [Array<(InvestmentEnvelope, Integer, Hash)>] InvestmentEnvelope data, response status code and response headers
37
+ def get_investment_with_http_info(id, opts = {})
38
+ if @api_client.config.debugging
39
+ @api_client.config.logger.debug 'Calling API: InvestmentsApi.get_investment ...'
40
+ end
41
+ # verify the required parameter 'id' is set
42
+ if @api_client.config.client_side_validation && id.nil?
43
+ fail ArgumentError, "Missing the required parameter 'id' when calling InvestmentsApi.get_investment"
44
+ end
45
+ # resource path
46
+ local_var_path = '/investments/{id}'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
47
+
48
+ # query parameters
49
+ query_params = opts[:query_params] || {}
50
+
51
+ # header parameters
52
+ header_params = opts[:header_params] || {}
53
+ # HTTP header 'Accept' (if needed)
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
+
56
+ # form parameters
57
+ form_params = opts[:form_params] || {}
58
+
59
+ # http body (model)
60
+ post_body = opts[:debug_body]
61
+
62
+ # return_type
63
+ return_type = opts[:debug_return_type] || 'InvestmentEnvelope'
64
+
65
+ # auth_names
66
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
67
+
68
+ new_options = opts.merge(
69
+ :operation => :"InvestmentsApi.get_investment",
70
+ :header_params => header_params,
71
+ :query_params => query_params,
72
+ :form_params => form_params,
73
+ :body => post_body,
74
+ :auth_names => auth_names,
75
+ :return_type => return_type
76
+ )
77
+
78
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
79
+ if @api_client.config.debugging
80
+ @api_client.config.logger.debug "API called: InvestmentsApi#get_investment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
81
+ end
82
+ return data, status_code, headers
83
+ end
84
+
85
+ # Investment totals for an offering
86
+ # Count and committed amount of the founder-visible published records for one offering, by status, from the same rows `GET /investments?offering_id=…` lists, so the two reconcile. These are **not** the public campaign figures (the progress bar has its own rules and sources); they are the sum of the records you can list. Requires the token's user to edit the offering's company.
87
+ # @param offering_id [String] Offering external id (&#x60;ofr_…&#x60;).
88
+ # @param [Hash] opts the optional parameters
89
+ # @return [OfferingStatsEnvelope]
90
+ def get_offering_stats(offering_id, opts = {})
91
+ data, _status_code, _headers = get_offering_stats_with_http_info(offering_id, opts)
92
+ data
93
+ end
94
+
95
+ # Investment totals for an offering
96
+ # Count and committed amount of the founder-visible published records for one offering, by status, from the same rows &#x60;GET /investments?offering_id&#x3D;…&#x60; lists, so the two reconcile. These are **not** the public campaign figures (the progress bar has its own rules and sources); they are the sum of the records you can list. Requires the token&#39;s user to edit the offering&#39;s company.
97
+ # @param offering_id [String] Offering external id (&#x60;ofr_…&#x60;).
98
+ # @param [Hash] opts the optional parameters
99
+ # @return [Array<(OfferingStatsEnvelope, Integer, Hash)>] OfferingStatsEnvelope data, response status code and response headers
100
+ def get_offering_stats_with_http_info(offering_id, opts = {})
101
+ if @api_client.config.debugging
102
+ @api_client.config.logger.debug 'Calling API: InvestmentsApi.get_offering_stats ...'
103
+ end
104
+ # verify the required parameter 'offering_id' is set
105
+ if @api_client.config.client_side_validation && offering_id.nil?
106
+ fail ArgumentError, "Missing the required parameter 'offering_id' when calling InvestmentsApi.get_offering_stats"
107
+ end
108
+ # resource path
109
+ local_var_path = '/offerings/{offering_id}/stats'.sub('{' + 'offering_id' + '}', CGI.escape(offering_id.to_s))
110
+
111
+ # query parameters
112
+ query_params = opts[:query_params] || {}
113
+
114
+ # header parameters
115
+ header_params = opts[:header_params] || {}
116
+ # HTTP header 'Accept' (if needed)
117
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
118
+
119
+ # form parameters
120
+ form_params = opts[:form_params] || {}
121
+
122
+ # http body (model)
123
+ post_body = opts[:debug_body]
124
+
125
+ # return_type
126
+ return_type = opts[:debug_return_type] || 'OfferingStatsEnvelope'
127
+
128
+ # auth_names
129
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
130
+
131
+ new_options = opts.merge(
132
+ :operation => :"InvestmentsApi.get_offering_stats",
133
+ :header_params => header_params,
134
+ :query_params => query_params,
135
+ :form_params => form_params,
136
+ :body => post_body,
137
+ :auth_names => auth_names,
138
+ :return_type => return_type
139
+ )
140
+
141
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
142
+ if @api_client.config.debugging
143
+ @api_client.config.logger.debug "API called: InvestmentsApi#get_offering_stats\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
144
+ end
145
+ return data, status_code, headers
146
+ end
147
+
148
+ # List or sync investments
149
+ # The investment records the token may see, served from **published** state (docs: *Investments: list, sync, retrieve*). The audience is the union of the companies the token's user edits (their founder-visible records) and the user's own investments (every applied record of theirs, whatever its status). Filters narrow within that audience; they never widen it. Three ways to call it: - **List** (no `cursor`, no `updated_since`): the current records, tombstones excluded, ordered by investment. Page with `meta.next_cursor` while `meta.has_more`; the final page's cursor is a sync cursor positioned at the moment the listing started. - **Sync by cursor**: only the records whose published state changed since the cursor, one record per investment, tombstones (`visible: false`, only `id`) included. Apply in `cursor` order; always store `meta.next_cursor`. - **Sync by time**: `updated_since=<ISO 8601>` is sugar for a cursor at the ledger position just before that time (with a 60 s safety margin). The response is a normal sync page, so continue with its `meta.next_cursor`. Records are eventually consistent (about ten minutes on the common paths); each carries `observed_at`. `GET /investments/{id}` returns the same shape derived now. Investor identity fields on other investors' records require `read:investors:pii`; a user always sees their own. Money is integer minor units plus `amounts.currency`. **410 Gone** means the cursor or `updated_since` predates the 90-day retention window: list again and replace your dataset. `status` cannot be combined with sync (a record leaving the status would never be delivered).
150
+ # @param [Hash] opts the optional parameters
151
+ # @option opts [String] :company_id Company external id (&#x60;co_…&#x60;).
152
+ # @option opts [String] :offering_id Offering external id (&#x60;ofr_…&#x60;). In sync mode an investment that moved to another offering is delivered once more as a tombstone under this filter.
153
+ # @option opts [String] :investor_id Investor external id (&#x60;usr_…&#x60;).
154
+ # @option opts [String] :status List mode only.
155
+ # @option opts [Time] :updated_since ISO 8601 timestamp; switches to sync mode. Mutually exclusive with &#x60;cursor&#x60; (cursor wins).
156
+ # @option opts [String] :cursor Opaque cursor from a previous response&#39;s &#x60;meta.next_cursor&#x60;.
157
+ # @option opts [Integer] :per_page Records per page, 1–100 (default 25). Sync pages count distinct investments. (default to 25)
158
+ # @return [InvestmentListEnvelope]
159
+ def list_investments(opts = {})
160
+ data, _status_code, _headers = list_investments_with_http_info(opts)
161
+ data
162
+ end
163
+
164
+ # List or sync investments
165
+ # The investment records the token may see, served from **published** state (docs: *Investments: list, sync, retrieve*). The audience is the union of the companies the token&#39;s user edits (their founder-visible records) and the user&#39;s own investments (every applied record of theirs, whatever its status). Filters narrow within that audience; they never widen it. Three ways to call it: - **List** (no &#x60;cursor&#x60;, no &#x60;updated_since&#x60;): the current records, tombstones excluded, ordered by investment. Page with &#x60;meta.next_cursor&#x60; while &#x60;meta.has_more&#x60;; the final page&#39;s cursor is a sync cursor positioned at the moment the listing started. - **Sync by cursor**: only the records whose published state changed since the cursor, one record per investment, tombstones (&#x60;visible: false&#x60;, only &#x60;id&#x60;) included. Apply in &#x60;cursor&#x60; order; always store &#x60;meta.next_cursor&#x60;. - **Sync by time**: &#x60;updated_since&#x3D;&lt;ISO 8601&gt;&#x60; is sugar for a cursor at the ledger position just before that time (with a 60 s safety margin). The response is a normal sync page, so continue with its &#x60;meta.next_cursor&#x60;. Records are eventually consistent (about ten minutes on the common paths); each carries &#x60;observed_at&#x60;. &#x60;GET /investments/{id}&#x60; returns the same shape derived now. Investor identity fields on other investors&#39; records require &#x60;read:investors:pii&#x60;; a user always sees their own. Money is integer minor units plus &#x60;amounts.currency&#x60;. **410 Gone** means the cursor or &#x60;updated_since&#x60; predates the 90-day retention window: list again and replace your dataset. &#x60;status&#x60; cannot be combined with sync (a record leaving the status would never be delivered).
166
+ # @param [Hash] opts the optional parameters
167
+ # @option opts [String] :company_id Company external id (&#x60;co_…&#x60;).
168
+ # @option opts [String] :offering_id Offering external id (&#x60;ofr_…&#x60;). In sync mode an investment that moved to another offering is delivered once more as a tombstone under this filter.
169
+ # @option opts [String] :investor_id Investor external id (&#x60;usr_…&#x60;).
170
+ # @option opts [String] :status List mode only.
171
+ # @option opts [Time] :updated_since ISO 8601 timestamp; switches to sync mode. Mutually exclusive with &#x60;cursor&#x60; (cursor wins).
172
+ # @option opts [String] :cursor Opaque cursor from a previous response&#39;s &#x60;meta.next_cursor&#x60;.
173
+ # @option opts [Integer] :per_page Records per page, 1–100 (default 25). Sync pages count distinct investments. (default to 25)
174
+ # @return [Array<(InvestmentListEnvelope, Integer, Hash)>] InvestmentListEnvelope data, response status code and response headers
175
+ def list_investments_with_http_info(opts = {})
176
+ if @api_client.config.debugging
177
+ @api_client.config.logger.debug 'Calling API: InvestmentsApi.list_investments ...'
178
+ end
179
+ allowable_values = ["reserved", "active", "executed", "canceled", "converted"]
180
+ if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
181
+ fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
182
+ end
183
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] > 100
184
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling InvestmentsApi.list_investments, must be smaller than or equal to 100.'
185
+ end
186
+
187
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] < 1
188
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling InvestmentsApi.list_investments, must be greater than or equal to 1.'
189
+ end
190
+
191
+ # resource path
192
+ local_var_path = '/investments'
193
+
194
+ # query parameters
195
+ query_params = opts[:query_params] || {}
196
+ query_params[:'company_id'] = opts[:'company_id'] if !opts[:'company_id'].nil?
197
+ query_params[:'offering_id'] = opts[:'offering_id'] if !opts[:'offering_id'].nil?
198
+ query_params[:'investor_id'] = opts[:'investor_id'] if !opts[:'investor_id'].nil?
199
+ query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
200
+ query_params[:'updated_since'] = opts[:'updated_since'] if !opts[:'updated_since'].nil?
201
+ query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
202
+ query_params[:'per_page'] = opts[:'per_page'] if !opts[:'per_page'].nil?
203
+
204
+ # header parameters
205
+ header_params = opts[:header_params] || {}
206
+ # HTTP header 'Accept' (if needed)
207
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
208
+
209
+ # form parameters
210
+ form_params = opts[:form_params] || {}
211
+
212
+ # http body (model)
213
+ post_body = opts[:debug_body]
214
+
215
+ # return_type
216
+ return_type = opts[:debug_return_type] || 'InvestmentListEnvelope'
217
+
218
+ # auth_names
219
+ auth_names = opts[:debug_auth_names] || ['bearerAuth', 'bearerAuth']
220
+
221
+ new_options = opts.merge(
222
+ :operation => :"InvestmentsApi.list_investments",
223
+ :header_params => header_params,
224
+ :query_params => query_params,
225
+ :form_params => form_params,
226
+ :body => post_body,
227
+ :auth_names => auth_names,
228
+ :return_type => return_type
229
+ )
230
+
231
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
232
+ if @api_client.config.debugging
233
+ @api_client.config.logger.debug "API called: InvestmentsApi#list_investments\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
234
+ end
235
+ return data, status_code, headers
236
+ end
237
+ end
238
+ end