tungo-sdk 0.2.0

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 (1029) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +34 -0
  3. data/LICENSE +21 -0
  4. data/README.md +316 -0
  5. data/SECURITY.md +19 -0
  6. data/lib/tungo/api_response.rb +52 -0
  7. data/lib/tungo/client.rb +426 -0
  8. data/lib/tungo/contract.rb +37 -0
  9. data/lib/tungo/errors.rb +266 -0
  10. data/lib/tungo/helpers.rb +146 -0
  11. data/lib/tungo/internal/model.rb +432 -0
  12. data/lib/tungo/internal/sse.rb +122 -0
  13. data/lib/tungo/internal/util.rb +223 -0
  14. data/lib/tungo/models/api_key.rb +132 -0
  15. data/lib/tungo/models/api_key_create.rb +75 -0
  16. data/lib/tungo/models/api_key_create_write_kind_item.rb +26 -0
  17. data/lib/tungo/models/api_key_created.rb +154 -0
  18. data/lib/tungo/models/api_key_created_permission_item.rb +22 -0
  19. data/lib/tungo/models/api_key_created_status.rb +21 -0
  20. data/lib/tungo/models/api_key_details.rb +139 -0
  21. data/lib/tungo/models/api_key_details_blocked_reason.rb +27 -0
  22. data/lib/tungo/models/api_key_details_permission_item.rb +22 -0
  23. data/lib/tungo/models/api_key_details_status.rb +21 -0
  24. data/lib/tungo/models/api_key_month.rb +28 -0
  25. data/lib/tungo/models/api_key_patch.rb +78 -0
  26. data/lib/tungo/models/api_key_patch_write_kind_item.rb +26 -0
  27. data/lib/tungo/models/api_key_permission_item.rb +22 -0
  28. data/lib/tungo/models/api_key_person.rb +25 -0
  29. data/lib/tungo/models/api_key_roll.rb +16 -0
  30. data/lib/tungo/models/api_key_rolled.rb +147 -0
  31. data/lib/tungo/models/api_key_rolled_permission_item.rb +22 -0
  32. data/lib/tungo/models/api_key_rolled_status.rb +21 -0
  33. data/lib/tungo/models/api_key_self.rb +154 -0
  34. data/lib/tungo/models/api_key_self_blocked_reason.rb +27 -0
  35. data/lib/tungo/models/api_key_self_permission_item.rb +22 -0
  36. data/lib/tungo/models/api_key_self_rate_limit.rb +26 -0
  37. data/lib/tungo/models/api_key_self_status.rb +21 -0
  38. data/lib/tungo/models/api_key_self_workspace.rb +25 -0
  39. data/lib/tungo/models/api_key_self_workspace_kind.rb +18 -0
  40. data/lib/tungo/models/api_key_status.rb +21 -0
  41. data/lib/tungo/models/api_key_transfer.rb +16 -0
  42. data/lib/tungo/models/api_key_updated.rb +139 -0
  43. data/lib/tungo/models/api_key_updated_permission_item.rb +22 -0
  44. data/lib/tungo/models/api_key_updated_status.rb +21 -0
  45. data/lib/tungo/models/api_key_usage.rb +49 -0
  46. data/lib/tungo/models/api_key_usage_by_company_item.rb +25 -0
  47. data/lib/tungo/models/api_key_usage_by_day_item.rb +25 -0
  48. data/lib/tungo/models/api_key_usage_by_model_item.rb +25 -0
  49. data/lib/tungo/models/api_key_usage_totals.rb +40 -0
  50. data/lib/tungo/models/api_key_warning.rb +22 -0
  51. data/lib/tungo/models/api_key_warning_code.rb +21 -0
  52. data/lib/tungo/models/approve_batch_company_proposals_response.rb +20 -0
  53. data/lib/tungo/models/approve_error.rb +25 -0
  54. data/lib/tungo/models/approve_error_error.rb +96 -0
  55. data/lib/tungo/models/approve_request.rb +26 -0
  56. data/lib/tungo/models/audit_entry.rb +64 -0
  57. data/lib/tungo/models/audit_entry_action.rb +148 -0
  58. data/lib/tungo/models/audit_entry_actor.rb +26 -0
  59. data/lib/tungo/models/audit_entry_actor_type.rb +18 -0
  60. data/lib/tungo/models/audit_entry_target.rb +20 -0
  61. data/lib/tungo/models/automation_auto_approve.rb +40 -0
  62. data/lib/tungo/models/automation_auto_approve_kind_item.rb +25 -0
  63. data/lib/tungo/models/automation_deleted.rb +20 -0
  64. data/lib/tungo/models/automation_event_filter.rb +16 -0
  65. data/lib/tungo/models/automation_filter_condition.rb +30 -0
  66. data/lib/tungo/models/automation_filter_condition_op.rb +26 -0
  67. data/lib/tungo/models/automation_filter_condition_value.rb +23 -0
  68. data/lib/tungo/models/automation_filter_condition_value_option4_item.rb +20 -0
  69. data/lib/tungo/models/automation_hook.rb +65 -0
  70. data/lib/tungo/models/automation_hook_accepted.rb +34 -0
  71. data/lib/tungo/models/automation_hook_create.rb +38 -0
  72. data/lib/tungo/models/automation_hook_event.rb +64 -0
  73. data/lib/tungo/models/automation_hook_event_encoding.rb +17 -0
  74. data/lib/tungo/models/automation_hook_event_source.rb +17 -0
  75. data/lib/tungo/models/automation_hook_patch.rb +44 -0
  76. data/lib/tungo/models/automation_hook_test_input.rb +30 -0
  77. data/lib/tungo/models/automation_hook_test_result.rb +63 -0
  78. data/lib/tungo/models/automation_hook_test_result_external_id_source.rb +20 -0
  79. data/lib/tungo/models/automation_hook_test_scenario.rb +46 -0
  80. data/lib/tungo/models/automation_hook_test_scenario_failed_condition.rb +26 -0
  81. data/lib/tungo/models/automation_hook_with_token.rb +85 -0
  82. data/lib/tungo/models/automation_manual_run.rb +189 -0
  83. data/lib/tungo/models/automation_manual_run_output_error.rb +18 -0
  84. data/lib/tungo/models/automation_manual_run_output_value.rb +20 -0
  85. data/lib/tungo/models/automation_manual_run_state.rb +23 -0
  86. data/lib/tungo/models/automation_manual_run_trigger.rb +22 -0
  87. data/lib/tungo/models/automation_output_field.rb +31 -0
  88. data/lib/tungo/models/automation_output_field_option1.rb +20 -0
  89. data/lib/tungo/models/automation_output_field_option2.rb +20 -0
  90. data/lib/tungo/models/automation_output_field_option3.rb +20 -0
  91. data/lib/tungo/models/automation_output_field_option4.rb +20 -0
  92. data/lib/tungo/models/automation_output_field_option5.rb +25 -0
  93. data/lib/tungo/models/automation_output_spec.rb +16 -0
  94. data/lib/tungo/models/automation_run.rb +183 -0
  95. data/lib/tungo/models/automation_run_detail.rb +189 -0
  96. data/lib/tungo/models/automation_run_detail_output_error.rb +18 -0
  97. data/lib/tungo/models/automation_run_detail_output_value.rb +20 -0
  98. data/lib/tungo/models/automation_run_detail_state.rb +23 -0
  99. data/lib/tungo/models/automation_run_detail_trigger.rb +22 -0
  100. data/lib/tungo/models/automation_run_output_error.rb +18 -0
  101. data/lib/tungo/models/automation_run_output_value.rb +20 -0
  102. data/lib/tungo/models/automation_run_proposal.rb +52 -0
  103. data/lib/tungo/models/automation_run_proposal_auto.rb +21 -0
  104. data/lib/tungo/models/automation_run_proposal_code.rb +23 -0
  105. data/lib/tungo/models/automation_run_proposal_status.rb +59 -0
  106. data/lib/tungo/models/automation_run_proposal_status_auto.rb +21 -0
  107. data/lib/tungo/models/automation_run_proposal_status_code.rb +23 -0
  108. data/lib/tungo/models/automation_run_state.rb +23 -0
  109. data/lib/tungo/models/automation_run_step.rb +79 -0
  110. data/lib/tungo/models/automation_run_step_action.rb +20 -0
  111. data/lib/tungo/models/automation_run_step_output_error.rb +17 -0
  112. data/lib/tungo/models/automation_run_step_output_value.rb +20 -0
  113. data/lib/tungo/models/automation_run_step_skipped_by.rb +19 -0
  114. data/lib/tungo/models/automation_run_step_state.rb +22 -0
  115. data/lib/tungo/models/automation_run_trigger.rb +22 -0
  116. data/lib/tungo/models/automation_scenario.rb +82 -0
  117. data/lib/tungo/models/automation_scenario_action.rb +20 -0
  118. data/lib/tungo/models/automation_scenario_enabled.rb +16 -0
  119. data/lib/tungo/models/automation_scenario_input.rb +62 -0
  120. data/lib/tungo/models/automation_scenario_input_action.rb +20 -0
  121. data/lib/tungo/models/automation_scenario_input_auto_approve.rb +40 -0
  122. data/lib/tungo/models/automation_scenario_input_auto_approve_kind_item.rb +25 -0
  123. data/lib/tungo/models/automation_scenario_input_trigger.rb +30 -0
  124. data/lib/tungo/models/automation_scenario_input_trigger_option1.rb +24 -0
  125. data/lib/tungo/models/automation_scenario_input_trigger_option2.rb +19 -0
  126. data/lib/tungo/models/automation_scenario_input_trigger_option3.rb +26 -0
  127. data/lib/tungo/models/automation_scenario_input_trigger_option3_event.rb +26 -0
  128. data/lib/tungo/models/automation_scenario_input_trigger_option4.rb +15 -0
  129. data/lib/tungo/models/automation_scenario_run_input.rb +17 -0
  130. data/lib/tungo/models/automation_scenario_saved.rb +89 -0
  131. data/lib/tungo/models/automation_scenario_saved_action.rb +20 -0
  132. data/lib/tungo/models/automation_scenario_step.rb +32 -0
  133. data/lib/tungo/models/automation_scenario_step_action.rb +20 -0
  134. data/lib/tungo/models/automation_scenario_step_when.rb +19 -0
  135. data/lib/tungo/models/automation_schedule.rb +30 -0
  136. data/lib/tungo/models/automation_schedule_daily.rb +21 -0
  137. data/lib/tungo/models/automation_schedule_interval.rb +36 -0
  138. data/lib/tungo/models/automation_schedule_monthly.rb +40 -0
  139. data/lib/tungo/models/automation_schedule_weekly.rb +27 -0
  140. data/lib/tungo/models/automation_state.rb +36 -0
  141. data/lib/tungo/models/automation_state_input.rb +22 -0
  142. data/lib/tungo/models/automation_step.rb +34 -0
  143. data/lib/tungo/models/automation_step_action.rb +21 -0
  144. data/lib/tungo/models/automation_step_when.rb +21 -0
  145. data/lib/tungo/models/automation_trigger.rb +29 -0
  146. data/lib/tungo/models/automation_trigger_event.rb +27 -0
  147. data/lib/tungo/models/automation_trigger_event_event.rb +26 -0
  148. data/lib/tungo/models/automation_trigger_hook.rb +24 -0
  149. data/lib/tungo/models/automation_trigger_manual.rb +15 -0
  150. data/lib/tungo/models/automation_trigger_schedule.rb +24 -0
  151. data/lib/tungo/models/autonomy_level.rb +24 -0
  152. data/lib/tungo/models/bank_statement_job_request.rb +32 -0
  153. data/lib/tungo/models/batch_approve_job.rb +71 -0
  154. data/lib/tungo/models/batch_approve_job_kind.rb +21 -0
  155. data/lib/tungo/models/batch_approve_request.rb +47 -0
  156. data/lib/tungo/models/batch_approve_response.rb +72 -0
  157. data/lib/tungo/models/batch_approve_response_stopped.rb +21 -0
  158. data/lib/tungo/models/batch_approve_result.rb +54 -0
  159. data/lib/tungo/models/batch_approve_result_outcome.rb +30 -0
  160. data/lib/tungo/models/batch_job.rb +56 -0
  161. data/lib/tungo/models/batch_job_kind.rb +21 -0
  162. data/lib/tungo/models/batch_job_list.rb +22 -0
  163. data/lib/tungo/models/batch_job_report.rb +78 -0
  164. data/lib/tungo/models/batch_job_report_gateway.rb +20 -0
  165. data/lib/tungo/models/batch_job_row.rb +56 -0
  166. data/lib/tungo/models/batch_job_row_status.rb +21 -0
  167. data/lib/tungo/models/batch_manual_row.rb +30 -0
  168. data/lib/tungo/models/batch_row_question.rb +25 -0
  169. data/lib/tungo/models/batch_row_question_option_item.rb +20 -0
  170. data/lib/tungo/models/batch_stop_result.rb +20 -0
  171. data/lib/tungo/models/batch_summary.rb +65 -0
  172. data/lib/tungo/models/batch_summary_approve.rb +25 -0
  173. data/lib/tungo/models/batch_summary_approve_body.rb +20 -0
  174. data/lib/tungo/models/batch_summary_kind.rb +19 -0
  175. data/lib/tungo/models/batch_summary_proposal.rb +56 -0
  176. data/lib/tungo/models/batch_summary_proposal_outcome.rb +23 -0
  177. data/lib/tungo/models/batch_summary_totals.rb +63 -0
  178. data/lib/tungo/models/card_session.rb +29 -0
  179. data/lib/tungo/models/chat_answer_request.rb +25 -0
  180. data/lib/tungo/models/chat_assistant_message.rb +51 -0
  181. data/lib/tungo/models/chat_assistant_message_state.rb +18 -0
  182. data/lib/tungo/models/chat_attachment.rb +25 -0
  183. data/lib/tungo/models/chat_attachment_meta.rb +25 -0
  184. data/lib/tungo/models/chat_choice_answer.rb +21 -0
  185. data/lib/tungo/models/chat_choice_option.rb +25 -0
  186. data/lib/tungo/models/chat_choice_question.rb +30 -0
  187. data/lib/tungo/models/chat_citation.rb +30 -0
  188. data/lib/tungo/models/chat_dialog.rb +72 -0
  189. data/lib/tungo/models/chat_dialog_closed.rb +20 -0
  190. data/lib/tungo/models/chat_dialog_deleted.rb +21 -0
  191. data/lib/tungo/models/chat_dialog_list.rb +22 -0
  192. data/lib/tungo/models/chat_dialog_patch.rb +15 -0
  193. data/lib/tungo/models/chat_dialog_renamed.rb +21 -0
  194. data/lib/tungo/models/chat_dialog_summary.rb +37 -0
  195. data/lib/tungo/models/chat_event.rb +49 -0
  196. data/lib/tungo/models/chat_event_batch.rb +46 -0
  197. data/lib/tungo/models/chat_event_batch_outcome.rb +21 -0
  198. data/lib/tungo/models/chat_event_batch_report.rb +24 -0
  199. data/lib/tungo/models/chat_event_batch_stage.rb +18 -0
  200. data/lib/tungo/models/chat_event_choice.rb +26 -0
  201. data/lib/tungo/models/chat_event_citation.rb +35 -0
  202. data/lib/tungo/models/chat_event_done.rb +42 -0
  203. data/lib/tungo/models/chat_event_error.rb +24 -0
  204. data/lib/tungo/models/chat_event_progress.rb +26 -0
  205. data/lib/tungo/models/chat_event_proposal.rb +24 -0
  206. data/lib/tungo/models/chat_event_question.rb +25 -0
  207. data/lib/tungo/models/chat_event_status.rb +27 -0
  208. data/lib/tungo/models/chat_event_status_code.rb +20 -0
  209. data/lib/tungo/models/chat_event_text.rb +26 -0
  210. data/lib/tungo/models/chat_event_thinking.rb +20 -0
  211. data/lib/tungo/models/chat_event_tool.rb +35 -0
  212. data/lib/tungo/models/chat_event_tool_status.rb +18 -0
  213. data/lib/tungo/models/chat_history_block.rb +32 -0
  214. data/lib/tungo/models/chat_history_error.rb +27 -0
  215. data/lib/tungo/models/chat_history_error_code.rb +32 -0
  216. data/lib/tungo/models/chat_history_proposal.rb +20 -0
  217. data/lib/tungo/models/chat_history_question.rb +25 -0
  218. data/lib/tungo/models/chat_history_text.rb +20 -0
  219. data/lib/tungo/models/chat_history_tool.rb +35 -0
  220. data/lib/tungo/models/chat_history_tool_status.rb +17 -0
  221. data/lib/tungo/models/chat_message.rb +25 -0
  222. data/lib/tungo/models/chat_message_request.rb +64 -0
  223. data/lib/tungo/models/chat_message_request_mode.rb +19 -0
  224. data/lib/tungo/models/chat_pending_question.rb +20 -0
  225. data/lib/tungo/models/chat_question.rb +20 -0
  226. data/lib/tungo/models/chat_stop_result.rb +26 -0
  227. data/lib/tungo/models/chat_token_count.rb +35 -0
  228. data/lib/tungo/models/chat_token_count_request.rb +32 -0
  229. data/lib/tungo/models/chat_token_count_request_mode.rb +18 -0
  230. data/lib/tungo/models/chat_turn_error.rb +41 -0
  231. data/lib/tungo/models/chat_turn_error_code.rb +32 -0
  232. data/lib/tungo/models/chat_turn_error_limit_kind.rb +17 -0
  233. data/lib/tungo/models/chat_turn_proposal.rb +19 -0
  234. data/lib/tungo/models/chat_turn_result.rb +61 -0
  235. data/lib/tungo/models/chat_turn_usage.rb +36 -0
  236. data/lib/tungo/models/chat_usage.rb +31 -0
  237. data/lib/tungo/models/chat_user_message.rb +41 -0
  238. data/lib/tungo/models/company.rb +61 -0
  239. data/lib/tungo/models/company_autonomy.rb +43 -0
  240. data/lib/tungo/models/company_autonomy_custom.rb +20 -0
  241. data/lib/tungo/models/company_autonomy_defaults.rb +20 -0
  242. data/lib/tungo/models/company_autonomy_input.rb +29 -0
  243. data/lib/tungo/models/company_autonomy_input_levels.rb +72 -0
  244. data/lib/tungo/models/company_autonomy_input_levels_advance_report.rb +19 -0
  245. data/lib/tungo/models/company_autonomy_input_levels_bank_payment.rb +19 -0
  246. data/lib/tungo/models/company_autonomy_input_levels_bank_receipt.rb +19 -0
  247. data/lib/tungo/models/company_autonomy_input_levels_cash_order_in.rb +19 -0
  248. data/lib/tungo/models/company_autonomy_input_levels_cash_order_out.rb +19 -0
  249. data/lib/tungo/models/company_autonomy_input_levels_contract.rb +19 -0
  250. data/lib/tungo/models/company_autonomy_input_levels_counterparty.rb +19 -0
  251. data/lib/tungo/models/company_autonomy_input_levels_inventory_writeoff.rb +19 -0
  252. data/lib/tungo/models/company_autonomy_input_levels_purchase.rb +19 -0
  253. data/lib/tungo/models/company_autonomy_input_levels_sale.rb +19 -0
  254. data/lib/tungo/models/company_autonomy_levels.rb +71 -0
  255. data/lib/tungo/models/company_autonomy_levels_advance_report.rb +19 -0
  256. data/lib/tungo/models/company_autonomy_levels_bank_payment.rb +19 -0
  257. data/lib/tungo/models/company_autonomy_levels_bank_receipt.rb +19 -0
  258. data/lib/tungo/models/company_autonomy_levels_cash_order_in.rb +19 -0
  259. data/lib/tungo/models/company_autonomy_levels_cash_order_out.rb +19 -0
  260. data/lib/tungo/models/company_autonomy_levels_contract.rb +19 -0
  261. data/lib/tungo/models/company_autonomy_levels_counterparty.rb +19 -0
  262. data/lib/tungo/models/company_autonomy_levels_inventory_writeoff.rb +19 -0
  263. data/lib/tungo/models/company_autonomy_levels_purchase.rb +19 -0
  264. data/lib/tungo/models/company_autonomy_levels_sale.rb +19 -0
  265. data/lib/tungo/models/company_counts.rb +23 -0
  266. data/lib/tungo/models/company_legal_form.rb +19 -0
  267. data/lib/tungo/models/company_list_item.rb +65 -0
  268. data/lib/tungo/models/company_permission.rb +26 -0
  269. data/lib/tungo/models/company_status.rb +19 -0
  270. data/lib/tungo/models/data_gap_form.rb +30 -0
  271. data/lib/tungo/models/data_gap_form_status.rb +66 -0
  272. data/lib/tungo/models/data_gap_item.rb +49 -0
  273. data/lib/tungo/models/data_gap_object.rb +25 -0
  274. data/lib/tungo/models/data_gaps.rb +41 -0
  275. data/lib/tungo/models/data_gaps_summary.rb +40 -0
  276. data/lib/tungo/models/direct_bank_poll_result.rb +25 -0
  277. data/lib/tungo/models/epay_return_links.rb +21 -0
  278. data/lib/tungo/models/error.rb +28 -0
  279. data/lib/tungo/models/error_detail.rb +74 -0
  280. data/lib/tungo/models/error_detail_allowed_method_item.rb +20 -0
  281. data/lib/tungo/models/error_detail_type.rb +27 -0
  282. data/lib/tungo/models/esf_incoming_action.rb +22 -0
  283. data/lib/tungo/models/esf_incoming_item.rb +76 -0
  284. data/lib/tungo/models/esf_incoming_match.rb +32 -0
  285. data/lib/tungo/models/esf_incoming_match_document.rb +29 -0
  286. data/lib/tungo/models/esf_incoming_match_status.rb +21 -0
  287. data/lib/tungo/models/esf_incoming_report.rb +41 -0
  288. data/lib/tungo/models/esf_outgoing_item.rb +53 -0
  289. data/lib/tungo/models/esf_outgoing_item_esf.rb +35 -0
  290. data/lib/tungo/models/esf_outgoing_item_tax_invoice.rb +25 -0
  291. data/lib/tungo/models/esf_outgoing_report.rb +36 -0
  292. data/lib/tungo/models/esf_purchases_job_request.rb +26 -0
  293. data/lib/tungo/models/esf_sale.rb +44 -0
  294. data/lib/tungo/models/esf_verdict.rb +20 -0
  295. data/lib/tungo/models/feed_action.rb +49 -0
  296. data/lib/tungo/models/feed_action_action.rb +23 -0
  297. data/lib/tungo/models/feed_action_method.rb +17 -0
  298. data/lib/tungo/models/feed_item.rb +91 -0
  299. data/lib/tungo/models/feed_page.rb +30 -0
  300. data/lib/tungo/models/feed_section.rb +20 -0
  301. data/lib/tungo/models/feed_section_counts.rb +25 -0
  302. data/lib/tungo/models/feed_section_titles.rb +25 -0
  303. data/lib/tungo/models/field_error.rb +28 -0
  304. data/lib/tungo/models/field_error_code.rb +28 -0
  305. data/lib/tungo/models/financial_notes.rb +50 -0
  306. data/lib/tungo/models/financial_notes_organization.rb +20 -0
  307. data/lib/tungo/models/financial_notes_section.rb +55 -0
  308. data/lib/tungo/models/financial_notes_table.rb +25 -0
  309. data/lib/tungo/models/financial_notes_table_row_item_item.rb +20 -0
  310. data/lib/tungo/models/financial_notes_to_fill.rb +29 -0
  311. data/lib/tungo/models/form_missing_action.rb +23 -0
  312. data/lib/tungo/models/form_missing_data.rb +39 -0
  313. data/lib/tungo/models/form_onec_object.rb +20 -0
  314. data/lib/tungo/models/get_workspace_platform_audit_response.rb +22 -0
  315. data/lib/tungo/models/get_workspace_platform_ledger_response.rb +22 -0
  316. data/lib/tungo/models/isna_file.rb +12 -0
  317. data/lib/tungo/models/isna_response.rb +20 -0
  318. data/lib/tungo/models/isna_summary.rb +95 -0
  319. data/lib/tungo/models/isna_summary_download.rb +20 -0
  320. data/lib/tungo/models/isna_summary_format.rb +25 -0
  321. data/lib/tungo/models/isna_summary_period.rb +31 -0
  322. data/lib/tungo/models/isna_summary_reconciliation.rb +19 -0
  323. data/lib/tungo/models/list_companies_response.rb +16 -0
  324. data/lib/tungo/models/list_company_automations_hooks_response.rb +15 -0
  325. data/lib/tungo/models/list_company_automations_runs_response.rb +22 -0
  326. data/lib/tungo/models/list_company_automations_scenarios_response.rb +15 -0
  327. data/lib/tungo/models/list_usage_rates_response.rb +15 -0
  328. data/lib/tungo/models/list_workspace_platform_requests_response.rb +22 -0
  329. data/lib/tungo/models/list_workspace_webhooks_endpoint_attempts_response.rb +22 -0
  330. data/lib/tungo/models/list_workspace_webhooks_endpoint_attempts_status.rb +20 -0
  331. data/lib/tungo/models/list_workspace_webhooks_endpoints_response.rb +22 -0
  332. data/lib/tungo/models/list_workspace_webhooks_event_types_response.rb +15 -0
  333. data/lib/tungo/models/list_workspace_webhooks_message_attempts_response.rb +22 -0
  334. data/lib/tungo/models/list_workspace_webhooks_messages_response.rb +22 -0
  335. data/lib/tungo/models/list_workspaces_response.rb +15 -0
  336. data/lib/tungo/models/money.rb +27 -0
  337. data/lib/tungo/models/my_workspace.rb +37 -0
  338. data/lib/tungo/models/my_workspace_kind.rb +19 -0
  339. data/lib/tungo/models/one_c_capability.rb +33 -0
  340. data/lib/tungo/models/one_c_capability_id.rb +26 -0
  341. data/lib/tungo/models/one_c_capability_status.rb +20 -0
  342. data/lib/tungo/models/one_c_gateway.rb +21 -0
  343. data/lib/tungo/models/one_c_status.rb +32 -0
  344. data/lib/tungo/models/one_c_status_last_check.rb +36 -0
  345. data/lib/tungo/models/one_c_status_last_check_verdict.rb +18 -0
  346. data/lib/tungo/models/pay_form.rb +34 -0
  347. data/lib/tungo/models/payment_method.rb +42 -0
  348. data/lib/tungo/models/platform_account.rb +60 -0
  349. data/lib/tungo/models/platform_account_blocked_reason.rb +19 -0
  350. data/lib/tungo/models/platform_account_purchase_limits.rb +25 -0
  351. data/lib/tungo/models/platform_auto_reload.rb +32 -0
  352. data/lib/tungo/models/platform_ledger_entry.rb +63 -0
  353. data/lib/tungo/models/platform_ledger_entry_kind.rb +20 -0
  354. data/lib/tungo/models/platform_limits.rb +25 -0
  355. data/lib/tungo/models/platform_limits_concurrent_turns.rb +20 -0
  356. data/lib/tungo/models/platform_limits_files.rb +56 -0
  357. data/lib/tungo/models/platform_limits_rate.rb +20 -0
  358. data/lib/tungo/models/platform_limits_rate_key.rb +26 -0
  359. data/lib/tungo/models/platform_limits_rate_workspace.rb +26 -0
  360. data/lib/tungo/models/platform_purchase.rb +33 -0
  361. data/lib/tungo/models/platform_purchase_input.rb +22 -0
  362. data/lib/tungo/models/platform_purchase_status.rb +26 -0
  363. data/lib/tungo/models/platform_request.rb +71 -0
  364. data/lib/tungo/models/platform_settings_input.rb +26 -0
  365. data/lib/tungo/models/platform_settings_input_auto_reload.rb +31 -0
  366. data/lib/tungo/models/platform_usage.rb +45 -0
  367. data/lib/tungo/models/platform_usage_by_company_item.rb +45 -0
  368. data/lib/tungo/models/platform_usage_by_day_item.rb +45 -0
  369. data/lib/tungo/models/platform_usage_by_key_item.rb +45 -0
  370. data/lib/tungo/models/platform_usage_by_model_item.rb +45 -0
  371. data/lib/tungo/models/platform_usage_totals.rb +40 -0
  372. data/lib/tungo/models/proposal_account.rb +32 -0
  373. data/lib/tungo/models/proposal_action.rb +52 -0
  374. data/lib/tungo/models/proposal_action_action.rb +19 -0
  375. data/lib/tungo/models/proposal_advance_offset.rb +33 -0
  376. data/lib/tungo/models/proposal_approval.rb +32 -0
  377. data/lib/tungo/models/proposal_card.rb +158 -0
  378. data/lib/tungo/models/proposal_contract.rb +35 -0
  379. data/lib/tungo/models/proposal_decision.rb +43 -0
  380. data/lib/tungo/models/proposal_document.rb +26 -0
  381. data/lib/tungo/models/proposal_header.rb +71 -0
  382. data/lib/tungo/models/proposal_history_event.rb +35 -0
  383. data/lib/tungo/models/proposal_kind.rb +28 -0
  384. data/lib/tungo/models/proposal_line.rb +66 -0
  385. data/lib/tungo/models/proposal_line_item.rb +20 -0
  386. data/lib/tungo/models/proposal_line_section.rb +17 -0
  387. data/lib/tungo/models/proposal_list_item.rb +100 -0
  388. data/lib/tungo/models/proposal_page.rb +33 -0
  389. data/lib/tungo/models/proposal_party.rb +26 -0
  390. data/lib/tungo/models/proposal_posting.rb +38 -0
  391. data/lib/tungo/models/proposal_result.rb +31 -0
  392. data/lib/tungo/models/proposal_source.rb +21 -0
  393. data/lib/tungo/models/proposal_source_channel.rb +21 -0
  394. data/lib/tungo/models/proposal_status.rb +25 -0
  395. data/lib/tungo/models/reject_request.rb +23 -0
  396. data/lib/tungo/models/statement_day.rb +66 -0
  397. data/lib/tungo/models/statement_day_counts.rb +40 -0
  398. data/lib/tungo/models/statement_day_kind.rb +21 -0
  399. data/lib/tungo/models/statement_day_list.rb +22 -0
  400. data/lib/tungo/models/tax_form_cell.rb +77 -0
  401. data/lib/tungo/models/tax_form_cell_cause.rb +44 -0
  402. data/lib/tungo/models/tax_form_cell_diff.rb +20 -0
  403. data/lib/tungo/models/tax_form_cell_one_c_value.rb +22 -0
  404. data/lib/tungo/models/tax_form_cell_ours_value.rb +22 -0
  405. data/lib/tungo/models/tax_form_cell_status.rb +21 -0
  406. data/lib/tungo/models/tax_form_cell_type.rb +22 -0
  407. data/lib/tungo/models/tax_form_due.rb +57 -0
  408. data/lib/tungo/models/tax_form_list_item.rb +67 -0
  409. data/lib/tungo/models/tax_form_list_item_coverage.rb +17 -0
  410. data/lib/tungo/models/tax_form_list_item_group.rb +20 -0
  411. data/lib/tungo/models/tax_form_list_item_required.rb +19 -0
  412. data/lib/tungo/models/tax_form_only_in_one_c.rb +20 -0
  413. data/lib/tungo/models/tax_form_period.rb +36 -0
  414. data/lib/tungo/models/tax_form_reference.rb +30 -0
  415. data/lib/tungo/models/tax_form_totals.rb +30 -0
  416. data/lib/tungo/models/tax_form_view.rb +83 -0
  417. data/lib/tungo/models/tax_form_view_coverage.rb +17 -0
  418. data/lib/tungo/models/tax_form_view_uncovered.rb +20 -0
  419. data/lib/tungo/models/tax_form_view_uncovered_cell_item.rb +20 -0
  420. data/lib/tungo/models/tax_forms_year.rb +31 -0
  421. data/lib/tungo/models/tax_period_kind.rb +21 -0
  422. data/lib/tungo/models/tax_period_ref.rb +21 -0
  423. data/lib/tungo/models/usage_rate.rb +42 -0
  424. data/lib/tungo/models/webhook_attempt.rb +56 -0
  425. data/lib/tungo/models/webhook_attempt_status.rb +20 -0
  426. data/lib/tungo/models/webhook_attempt_trigger.rb +17 -0
  427. data/lib/tungo/models/webhook_endpoint.rb +51 -0
  428. data/lib/tungo/models/webhook_endpoint_create.rb +39 -0
  429. data/lib/tungo/models/webhook_endpoint_created.rb +66 -0
  430. data/lib/tungo/models/webhook_endpoint_patch.rb +39 -0
  431. data/lib/tungo/models/webhook_envelope.rb +41 -0
  432. data/lib/tungo/models/webhook_event.rb +65 -0
  433. data/lib/tungo/models/webhook_event_api_key_cap_reached.rb +42 -0
  434. data/lib/tungo/models/webhook_event_api_key_cap_reached_data.rb +40 -0
  435. data/lib/tungo/models/webhook_event_api_key_expiring.rb +42 -0
  436. data/lib/tungo/models/webhook_event_api_key_expiring_data.rb +30 -0
  437. data/lib/tungo/models/webhook_event_automation_run_completed.rb +42 -0
  438. data/lib/tungo/models/webhook_event_automation_run_completed_data.rb +110 -0
  439. data/lib/tungo/models/webhook_event_automation_run_completed_data_output_error.rb +18 -0
  440. data/lib/tungo/models/webhook_event_automation_run_completed_data_output_value.rb +20 -0
  441. data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item.rb +53 -0
  442. data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto.rb +20 -0
  443. data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto_code.rb +22 -0
  444. data/lib/tungo/models/webhook_event_automation_run_failed.rb +42 -0
  445. data/lib/tungo/models/webhook_event_automation_run_failed_data.rb +110 -0
  446. data/lib/tungo/models/webhook_event_automation_run_failed_data_output_error.rb +18 -0
  447. data/lib/tungo/models/webhook_event_automation_run_failed_data_output_value.rb +20 -0
  448. data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item.rb +53 -0
  449. data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto.rb +20 -0
  450. data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto_code.rb +22 -0
  451. data/lib/tungo/models/webhook_event_automation_run_notice.rb +42 -0
  452. data/lib/tungo/models/webhook_event_automation_run_notice_data.rb +60 -0
  453. data/lib/tungo/models/webhook_event_automation_run_notice_data_reason.rb +19 -0
  454. data/lib/tungo/models/webhook_event_automation_write_unknown.rb +42 -0
  455. data/lib/tungo/models/webhook_event_automation_write_unknown_data.rb +37 -0
  456. data/lib/tungo/models/webhook_event_bank_statement_received.rb +41 -0
  457. data/lib/tungo/models/webhook_event_bank_statement_received_data.rb +40 -0
  458. data/lib/tungo/models/webhook_event_bank_statement_received_data_source.rb +17 -0
  459. data/lib/tungo/models/webhook_event_batch_completed.rb +42 -0
  460. data/lib/tungo/models/webhook_event_batch_completed_data.rb +65 -0
  461. data/lib/tungo/models/webhook_event_batch_completed_data_kind.rb +17 -0
  462. data/lib/tungo/models/webhook_event_batch_failed.rb +41 -0
  463. data/lib/tungo/models/webhook_event_batch_failed_data.rb +25 -0
  464. data/lib/tungo/models/webhook_event_batch_failed_data_kind.rb +17 -0
  465. data/lib/tungo/models/webhook_event_chat_turn_completed.rb +42 -0
  466. data/lib/tungo/models/webhook_event_chat_turn_completed_data.rb +41 -0
  467. data/lib/tungo/models/webhook_event_chat_turn_completed_data_usage.rb +35 -0
  468. data/lib/tungo/models/webhook_event_esf_incoming_received.rb +41 -0
  469. data/lib/tungo/models/webhook_event_esf_incoming_received_data.rb +40 -0
  470. data/lib/tungo/models/webhook_event_onec_connection_changed.rb +42 -0
  471. data/lib/tungo/models/webhook_event_onec_connection_changed_data.rb +35 -0
  472. data/lib/tungo/models/webhook_event_onec_connection_changed_data_reason.rb +24 -0
  473. data/lib/tungo/models/webhook_event_onec_connection_changed_data_state.rb +17 -0
  474. data/lib/tungo/models/webhook_event_payment_failed.rb +40 -0
  475. data/lib/tungo/models/webhook_event_payment_failed_data.rb +41 -0
  476. data/lib/tungo/models/webhook_event_payment_succeeded.rb +40 -0
  477. data/lib/tungo/models/webhook_event_payment_succeeded_data.rb +41 -0
  478. data/lib/tungo/models/webhook_event_ping.rb +42 -0
  479. data/lib/tungo/models/webhook_event_ping_data.rb +11 -0
  480. data/lib/tungo/models/webhook_event_platform_balance_exhausted.rb +41 -0
  481. data/lib/tungo/models/webhook_event_platform_balance_exhausted_data.rb +20 -0
  482. data/lib/tungo/models/webhook_event_platform_balance_low.rb +41 -0
  483. data/lib/tungo/models/webhook_event_platform_balance_low_data.rb +20 -0
  484. data/lib/tungo/models/webhook_event_platform_cap_threshold_reached.rb +41 -0
  485. data/lib/tungo/models/webhook_event_platform_cap_threshold_reached_data.rb +30 -0
  486. data/lib/tungo/models/webhook_event_proposal_awaiting_approval.rb +40 -0
  487. data/lib/tungo/models/webhook_event_proposal_awaiting_approval_data.rb +40 -0
  488. data/lib/tungo/models/webhook_event_proposal_failed.rb +41 -0
  489. data/lib/tungo/models/webhook_event_proposal_failed_data.rb +30 -0
  490. data/lib/tungo/models/webhook_event_proposal_rejected.rb +41 -0
  491. data/lib/tungo/models/webhook_event_proposal_rejected_data.rb +30 -0
  492. data/lib/tungo/models/webhook_event_proposal_written.rb +41 -0
  493. data/lib/tungo/models/webhook_event_proposal_written_data.rb +35 -0
  494. data/lib/tungo/models/webhook_event_type.rb +30 -0
  495. data/lib/tungo/models/webhook_message.rb +31 -0
  496. data/lib/tungo/models/webhook_resend.rb +15 -0
  497. data/lib/tungo/models/webhook_secret.rb +24 -0
  498. data/lib/tungo/models/webhook_secret_rotated.rb +29 -0
  499. data/lib/tungo/models/webhook_usage.rb +31 -0
  500. data/lib/tungo/models/workspace_plan.rb +25 -0
  501. data/lib/tungo/models.rb +497 -0
  502. data/lib/tungo/money.rb +112 -0
  503. data/lib/tungo/page.rb +94 -0
  504. data/lib/tungo/request_options.rb +57 -0
  505. data/lib/tungo/resources/api_keys.rb +74 -0
  506. data/lib/tungo/resources/automations.rb +681 -0
  507. data/lib/tungo/resources/batches.rb +242 -0
  508. data/lib/tungo/resources/chat.rb +355 -0
  509. data/lib/tungo/resources/companies.rb +48 -0
  510. data/lib/tungo/resources/esf.rb +148 -0
  511. data/lib/tungo/resources/feed.rb +91 -0
  512. data/lib/tungo/resources/forms.rb +118 -0
  513. data/lib/tungo/resources/onec.rb +33 -0
  514. data/lib/tungo/resources/platform.rb +316 -0
  515. data/lib/tungo/resources/proposals.rb +230 -0
  516. data/lib/tungo/resources/webhooks.rb +423 -0
  517. data/lib/tungo/resources/workspaces.rb +31 -0
  518. data/lib/tungo/resources.rb +88 -0
  519. data/lib/tungo/stream.rb +189 -0
  520. data/lib/tungo/transport.rb +373 -0
  521. data/lib/tungo/version.rb +6 -0
  522. data/lib/tungo/webhooks.rb +155 -0
  523. data/lib/tungo-sdk.rb +4 -0
  524. data/lib/tungo.rb +34 -0
  525. data/sig/manifest.yaml +8 -0
  526. data/sig/tungo/contract.rbs +8 -0
  527. data/sig/tungo/models/api_key.rbs +32 -0
  528. data/sig/tungo/models/api_key_create.rbs +21 -0
  529. data/sig/tungo/models/api_key_create_write_kind_item.rbs +22 -0
  530. data/sig/tungo/models/api_key_created.rbs +35 -0
  531. data/sig/tungo/models/api_key_created_permission_item.rbs +18 -0
  532. data/sig/tungo/models/api_key_created_status.rbs +15 -0
  533. data/sig/tungo/models/api_key_details.rbs +33 -0
  534. data/sig/tungo/models/api_key_details_blocked_reason.rbs +21 -0
  535. data/sig/tungo/models/api_key_details_permission_item.rbs +18 -0
  536. data/sig/tungo/models/api_key_details_status.rbs +15 -0
  537. data/sig/tungo/models/api_key_month.rbs +14 -0
  538. data/sig/tungo/models/api_key_patch.rbs +21 -0
  539. data/sig/tungo/models/api_key_patch_write_kind_item.rbs +22 -0
  540. data/sig/tungo/models/api_key_permission_item.rbs +18 -0
  541. data/sig/tungo/models/api_key_person.rbs +14 -0
  542. data/sig/tungo/models/api_key_roll.rbs +12 -0
  543. data/sig/tungo/models/api_key_rolled.rbs +34 -0
  544. data/sig/tungo/models/api_key_rolled_permission_item.rbs +18 -0
  545. data/sig/tungo/models/api_key_rolled_status.rbs +15 -0
  546. data/sig/tungo/models/api_key_self.rbs +36 -0
  547. data/sig/tungo/models/api_key_self_blocked_reason.rbs +21 -0
  548. data/sig/tungo/models/api_key_self_permission_item.rbs +18 -0
  549. data/sig/tungo/models/api_key_self_rate_limit.rbs +14 -0
  550. data/sig/tungo/models/api_key_self_status.rbs +15 -0
  551. data/sig/tungo/models/api_key_self_workspace.rbs +14 -0
  552. data/sig/tungo/models/api_key_self_workspace_kind.rbs +14 -0
  553. data/sig/tungo/models/api_key_status.rbs +15 -0
  554. data/sig/tungo/models/api_key_transfer.rbs +12 -0
  555. data/sig/tungo/models/api_key_updated.rbs +33 -0
  556. data/sig/tungo/models/api_key_updated_permission_item.rbs +18 -0
  557. data/sig/tungo/models/api_key_updated_status.rbs +15 -0
  558. data/sig/tungo/models/api_key_usage.rbs +19 -0
  559. data/sig/tungo/models/api_key_usage_by_company_item.rbs +14 -0
  560. data/sig/tungo/models/api_key_usage_by_day_item.rbs +14 -0
  561. data/sig/tungo/models/api_key_usage_by_model_item.rbs +14 -0
  562. data/sig/tungo/models/api_key_usage_totals.rbs +17 -0
  563. data/sig/tungo/models/api_key_warning.rbs +13 -0
  564. data/sig/tungo/models/api_key_warning_code.rbs +15 -0
  565. data/sig/tungo/models/approve_batch_company_proposals_response.rbs +12 -0
  566. data/sig/tungo/models/approve_error.rbs +14 -0
  567. data/sig/tungo/models/approve_error_error.rbs +27 -0
  568. data/sig/tungo/models/approve_request.rbs +14 -0
  569. data/sig/tungo/models/audit_entry.rbs +21 -0
  570. data/sig/tungo/models/audit_entry_action.rbs +142 -0
  571. data/sig/tungo/models/audit_entry_actor.rbs +14 -0
  572. data/sig/tungo/models/audit_entry_actor_type.rbs +14 -0
  573. data/sig/tungo/models/audit_entry_target.rbs +13 -0
  574. data/sig/tungo/models/automation_auto_approve.rbs +15 -0
  575. data/sig/tungo/models/automation_auto_approve_kind_item.rbs +21 -0
  576. data/sig/tungo/models/automation_deleted.rbs +13 -0
  577. data/sig/tungo/models/automation_event_filter.rbs +12 -0
  578. data/sig/tungo/models/automation_filter_condition.rbs +14 -0
  579. data/sig/tungo/models/automation_filter_condition_op.rbs +20 -0
  580. data/sig/tungo/models/automation_filter_condition_value.rbs +12 -0
  581. data/sig/tungo/models/automation_filter_condition_value_option4_item.rbs +12 -0
  582. data/sig/tungo/models/automation_hook.rbs +21 -0
  583. data/sig/tungo/models/automation_hook_accepted.rbs +15 -0
  584. data/sig/tungo/models/automation_hook_create.rbs +15 -0
  585. data/sig/tungo/models/automation_hook_event.rbs +21 -0
  586. data/sig/tungo/models/automation_hook_event_encoding.rbs +13 -0
  587. data/sig/tungo/models/automation_hook_event_source.rbs +13 -0
  588. data/sig/tungo/models/automation_hook_patch.rbs +16 -0
  589. data/sig/tungo/models/automation_hook_test_input.rbs +14 -0
  590. data/sig/tungo/models/automation_hook_test_result.rbs +21 -0
  591. data/sig/tungo/models/automation_hook_test_result_external_id_source.rbs +15 -0
  592. data/sig/tungo/models/automation_hook_test_scenario.rbs +18 -0
  593. data/sig/tungo/models/automation_hook_test_scenario_failed_condition.rbs +14 -0
  594. data/sig/tungo/models/automation_hook_with_token.rbs +24 -0
  595. data/sig/tungo/models/automation_manual_run.rbs +42 -0
  596. data/sig/tungo/models/automation_manual_run_output_error.rbs +13 -0
  597. data/sig/tungo/models/automation_manual_run_output_value.rbs +12 -0
  598. data/sig/tungo/models/automation_manual_run_state.rbs +17 -0
  599. data/sig/tungo/models/automation_manual_run_trigger.rbs +16 -0
  600. data/sig/tungo/models/automation_output_field.rbs +12 -0
  601. data/sig/tungo/models/automation_output_field_option1.rbs +13 -0
  602. data/sig/tungo/models/automation_output_field_option2.rbs +13 -0
  603. data/sig/tungo/models/automation_output_field_option3.rbs +13 -0
  604. data/sig/tungo/models/automation_output_field_option4.rbs +13 -0
  605. data/sig/tungo/models/automation_output_field_option5.rbs +14 -0
  606. data/sig/tungo/models/automation_output_spec.rbs +11 -0
  607. data/sig/tungo/models/automation_run.rbs +41 -0
  608. data/sig/tungo/models/automation_run_detail.rbs +42 -0
  609. data/sig/tungo/models/automation_run_detail_output_error.rbs +13 -0
  610. data/sig/tungo/models/automation_run_detail_output_value.rbs +12 -0
  611. data/sig/tungo/models/automation_run_detail_state.rbs +17 -0
  612. data/sig/tungo/models/automation_run_detail_trigger.rbs +16 -0
  613. data/sig/tungo/models/automation_run_output_error.rbs +13 -0
  614. data/sig/tungo/models/automation_run_output_value.rbs +12 -0
  615. data/sig/tungo/models/automation_run_proposal.rbs +18 -0
  616. data/sig/tungo/models/automation_run_proposal_auto.rbs +15 -0
  617. data/sig/tungo/models/automation_run_proposal_code.rbs +17 -0
  618. data/sig/tungo/models/automation_run_proposal_status.rbs +19 -0
  619. data/sig/tungo/models/automation_run_proposal_status_auto.rbs +15 -0
  620. data/sig/tungo/models/automation_run_proposal_status_code.rbs +17 -0
  621. data/sig/tungo/models/automation_run_state.rbs +17 -0
  622. data/sig/tungo/models/automation_run_step.rbs +24 -0
  623. data/sig/tungo/models/automation_run_step_action.rbs +15 -0
  624. data/sig/tungo/models/automation_run_step_output_error.rbs +13 -0
  625. data/sig/tungo/models/automation_run_step_output_value.rbs +12 -0
  626. data/sig/tungo/models/automation_run_step_skipped_by.rbs +15 -0
  627. data/sig/tungo/models/automation_run_step_state.rbs +16 -0
  628. data/sig/tungo/models/automation_run_trigger.rbs +16 -0
  629. data/sig/tungo/models/automation_scenario.rbs +24 -0
  630. data/sig/tungo/models/automation_scenario_action.rbs +14 -0
  631. data/sig/tungo/models/automation_scenario_enabled.rbs +12 -0
  632. data/sig/tungo/models/automation_scenario_input.rbs +19 -0
  633. data/sig/tungo/models/automation_scenario_input_action.rbs +14 -0
  634. data/sig/tungo/models/automation_scenario_input_auto_approve.rbs +15 -0
  635. data/sig/tungo/models/automation_scenario_input_auto_approve_kind_item.rbs +21 -0
  636. data/sig/tungo/models/automation_scenario_input_trigger.rbs +12 -0
  637. data/sig/tungo/models/automation_scenario_input_trigger_option1.rbs +14 -0
  638. data/sig/tungo/models/automation_scenario_input_trigger_option2.rbs +13 -0
  639. data/sig/tungo/models/automation_scenario_input_trigger_option3.rbs +14 -0
  640. data/sig/tungo/models/automation_scenario_input_trigger_option3_event.rbs +20 -0
  641. data/sig/tungo/models/automation_scenario_input_trigger_option4.rbs +12 -0
  642. data/sig/tungo/models/automation_scenario_run_input.rbs +12 -0
  643. data/sig/tungo/models/automation_scenario_saved.rbs +25 -0
  644. data/sig/tungo/models/automation_scenario_saved_action.rbs +14 -0
  645. data/sig/tungo/models/automation_scenario_step.rbs +15 -0
  646. data/sig/tungo/models/automation_scenario_step_action.rbs +15 -0
  647. data/sig/tungo/models/automation_scenario_step_when.rbs +15 -0
  648. data/sig/tungo/models/automation_schedule.rbs +12 -0
  649. data/sig/tungo/models/automation_schedule_daily.rbs +13 -0
  650. data/sig/tungo/models/automation_schedule_interval.rbs +16 -0
  651. data/sig/tungo/models/automation_schedule_monthly.rbs +16 -0
  652. data/sig/tungo/models/automation_schedule_weekly.rbs +14 -0
  653. data/sig/tungo/models/automation_state.rbs +16 -0
  654. data/sig/tungo/models/automation_state_input.rbs +13 -0
  655. data/sig/tungo/models/automation_step.rbs +15 -0
  656. data/sig/tungo/models/automation_step_action.rbs +15 -0
  657. data/sig/tungo/models/automation_step_when.rbs +15 -0
  658. data/sig/tungo/models/automation_trigger.rbs +12 -0
  659. data/sig/tungo/models/automation_trigger_event.rbs +14 -0
  660. data/sig/tungo/models/automation_trigger_event_event.rbs +20 -0
  661. data/sig/tungo/models/automation_trigger_hook.rbs +14 -0
  662. data/sig/tungo/models/automation_trigger_manual.rbs +12 -0
  663. data/sig/tungo/models/automation_trigger_schedule.rbs +14 -0
  664. data/sig/tungo/models/autonomy_level.rbs +18 -0
  665. data/sig/tungo/models/bank_statement_job_request.rbs +15 -0
  666. data/sig/tungo/models/batch_approve_job.rbs +23 -0
  667. data/sig/tungo/models/batch_approve_job_kind.rbs +15 -0
  668. data/sig/tungo/models/batch_approve_request.rbs +18 -0
  669. data/sig/tungo/models/batch_approve_response.rbs +23 -0
  670. data/sig/tungo/models/batch_approve_response_stopped.rbs +13 -0
  671. data/sig/tungo/models/batch_approve_result.rbs +19 -0
  672. data/sig/tungo/models/batch_approve_result_outcome.rbs +24 -0
  673. data/sig/tungo/models/batch_job.rbs +20 -0
  674. data/sig/tungo/models/batch_job_kind.rbs +15 -0
  675. data/sig/tungo/models/batch_job_list.rbs +13 -0
  676. data/sig/tungo/models/batch_job_report.rbs +24 -0
  677. data/sig/tungo/models/batch_job_report_gateway.rbs +13 -0
  678. data/sig/tungo/models/batch_job_row.rbs +20 -0
  679. data/sig/tungo/models/batch_job_row_status.rbs +16 -0
  680. data/sig/tungo/models/batch_manual_row.rbs +15 -0
  681. data/sig/tungo/models/batch_row_question.rbs +14 -0
  682. data/sig/tungo/models/batch_row_question_option_item.rbs +13 -0
  683. data/sig/tungo/models/batch_stop_result.rbs +13 -0
  684. data/sig/tungo/models/batch_summary.rbs +22 -0
  685. data/sig/tungo/models/batch_summary_approve.rbs +14 -0
  686. data/sig/tungo/models/batch_summary_approve_body.rbs +13 -0
  687. data/sig/tungo/models/batch_summary_kind.rbs +15 -0
  688. data/sig/tungo/models/batch_summary_proposal.rbs +20 -0
  689. data/sig/tungo/models/batch_summary_proposal_outcome.rbs +17 -0
  690. data/sig/tungo/models/batch_summary_totals.rbs +22 -0
  691. data/sig/tungo/models/card_session.rbs +14 -0
  692. data/sig/tungo/models/chat_answer_request.rbs +14 -0
  693. data/sig/tungo/models/chat_assistant_message.rbs +19 -0
  694. data/sig/tungo/models/chat_assistant_message_state.rbs +14 -0
  695. data/sig/tungo/models/chat_attachment.rbs +14 -0
  696. data/sig/tungo/models/chat_attachment_meta.rbs +14 -0
  697. data/sig/tungo/models/chat_choice_answer.rbs +13 -0
  698. data/sig/tungo/models/chat_choice_option.rbs +14 -0
  699. data/sig/tungo/models/chat_choice_question.rbs +15 -0
  700. data/sig/tungo/models/chat_citation.rbs +15 -0
  701. data/sig/tungo/models/chat_dialog.rbs +23 -0
  702. data/sig/tungo/models/chat_dialog_closed.rbs +13 -0
  703. data/sig/tungo/models/chat_dialog_deleted.rbs +13 -0
  704. data/sig/tungo/models/chat_dialog_list.rbs +13 -0
  705. data/sig/tungo/models/chat_dialog_patch.rbs +12 -0
  706. data/sig/tungo/models/chat_dialog_renamed.rbs +13 -0
  707. data/sig/tungo/models/chat_dialog_summary.rbs +16 -0
  708. data/sig/tungo/models/chat_event.rbs +12 -0
  709. data/sig/tungo/models/chat_event_batch.rbs +18 -0
  710. data/sig/tungo/models/chat_event_batch_outcome.rbs +16 -0
  711. data/sig/tungo/models/chat_event_batch_report.rbs +14 -0
  712. data/sig/tungo/models/chat_event_batch_stage.rbs +14 -0
  713. data/sig/tungo/models/chat_event_choice.rbs +14 -0
  714. data/sig/tungo/models/chat_event_citation.rbs +16 -0
  715. data/sig/tungo/models/chat_event_done.rbs +17 -0
  716. data/sig/tungo/models/chat_event_error.rbs +14 -0
  717. data/sig/tungo/models/chat_event_progress.rbs +14 -0
  718. data/sig/tungo/models/chat_event_proposal.rbs +14 -0
  719. data/sig/tungo/models/chat_event_question.rbs +14 -0
  720. data/sig/tungo/models/chat_event_status.rbs +14 -0
  721. data/sig/tungo/models/chat_event_status_code.rbs +14 -0
  722. data/sig/tungo/models/chat_event_text.rbs +14 -0
  723. data/sig/tungo/models/chat_event_thinking.rbs +13 -0
  724. data/sig/tungo/models/chat_event_tool.rbs +16 -0
  725. data/sig/tungo/models/chat_event_tool_status.rbs +14 -0
  726. data/sig/tungo/models/chat_history_block.rbs +12 -0
  727. data/sig/tungo/models/chat_history_error.rbs +14 -0
  728. data/sig/tungo/models/chat_history_error_code.rbs +26 -0
  729. data/sig/tungo/models/chat_history_proposal.rbs +13 -0
  730. data/sig/tungo/models/chat_history_question.rbs +14 -0
  731. data/sig/tungo/models/chat_history_text.rbs +13 -0
  732. data/sig/tungo/models/chat_history_tool.rbs +16 -0
  733. data/sig/tungo/models/chat_history_tool_status.rbs +13 -0
  734. data/sig/tungo/models/chat_message.rbs +12 -0
  735. data/sig/tungo/models/chat_message_request.rbs +20 -0
  736. data/sig/tungo/models/chat_message_request_mode.rbs +14 -0
  737. data/sig/tungo/models/chat_pending_question.rbs +13 -0
  738. data/sig/tungo/models/chat_question.rbs +13 -0
  739. data/sig/tungo/models/chat_stop_result.rbs +14 -0
  740. data/sig/tungo/models/chat_token_count.rbs +16 -0
  741. data/sig/tungo/models/chat_token_count_request.rbs +15 -0
  742. data/sig/tungo/models/chat_token_count_request_mode.rbs +14 -0
  743. data/sig/tungo/models/chat_turn_error.rbs +16 -0
  744. data/sig/tungo/models/chat_turn_error_code.rbs +26 -0
  745. data/sig/tungo/models/chat_turn_error_limit_kind.rbs +13 -0
  746. data/sig/tungo/models/chat_turn_proposal.rbs +13 -0
  747. data/sig/tungo/models/chat_turn_result.rbs +21 -0
  748. data/sig/tungo/models/chat_turn_usage.rbs +16 -0
  749. data/sig/tungo/models/chat_usage.rbs +15 -0
  750. data/sig/tungo/models/chat_user_message.rbs +17 -0
  751. data/sig/tungo/models/company.rbs +21 -0
  752. data/sig/tungo/models/company_autonomy.rbs +17 -0
  753. data/sig/tungo/models/company_autonomy_custom.rbs +13 -0
  754. data/sig/tungo/models/company_autonomy_defaults.rbs +13 -0
  755. data/sig/tungo/models/company_autonomy_input.rbs +14 -0
  756. data/sig/tungo/models/company_autonomy_input_levels.rbs +21 -0
  757. data/sig/tungo/models/company_autonomy_input_levels_advance_report.rbs +14 -0
  758. data/sig/tungo/models/company_autonomy_input_levels_bank_payment.rbs +14 -0
  759. data/sig/tungo/models/company_autonomy_input_levels_bank_receipt.rbs +14 -0
  760. data/sig/tungo/models/company_autonomy_input_levels_cash_order_in.rbs +14 -0
  761. data/sig/tungo/models/company_autonomy_input_levels_cash_order_out.rbs +14 -0
  762. data/sig/tungo/models/company_autonomy_input_levels_contract.rbs +14 -0
  763. data/sig/tungo/models/company_autonomy_input_levels_counterparty.rbs +14 -0
  764. data/sig/tungo/models/company_autonomy_input_levels_inventory_writeoff.rbs +14 -0
  765. data/sig/tungo/models/company_autonomy_input_levels_purchase.rbs +14 -0
  766. data/sig/tungo/models/company_autonomy_input_levels_sale.rbs +14 -0
  767. data/sig/tungo/models/company_autonomy_levels.rbs +21 -0
  768. data/sig/tungo/models/company_autonomy_levels_advance_report.rbs +14 -0
  769. data/sig/tungo/models/company_autonomy_levels_bank_payment.rbs +14 -0
  770. data/sig/tungo/models/company_autonomy_levels_bank_receipt.rbs +14 -0
  771. data/sig/tungo/models/company_autonomy_levels_cash_order_in.rbs +14 -0
  772. data/sig/tungo/models/company_autonomy_levels_cash_order_out.rbs +14 -0
  773. data/sig/tungo/models/company_autonomy_levels_contract.rbs +14 -0
  774. data/sig/tungo/models/company_autonomy_levels_counterparty.rbs +14 -0
  775. data/sig/tungo/models/company_autonomy_levels_inventory_writeoff.rbs +14 -0
  776. data/sig/tungo/models/company_autonomy_levels_purchase.rbs +14 -0
  777. data/sig/tungo/models/company_autonomy_levels_sale.rbs +14 -0
  778. data/sig/tungo/models/company_counts.rbs +13 -0
  779. data/sig/tungo/models/company_legal_form.rbs +15 -0
  780. data/sig/tungo/models/company_list_item.rbs +22 -0
  781. data/sig/tungo/models/company_permission.rbs +20 -0
  782. data/sig/tungo/models/company_status.rbs +14 -0
  783. data/sig/tungo/models/data_gap_form.rbs +15 -0
  784. data/sig/tungo/models/data_gap_form_status.rbs +22 -0
  785. data/sig/tungo/models/data_gap_item.rbs +19 -0
  786. data/sig/tungo/models/data_gap_object.rbs +14 -0
  787. data/sig/tungo/models/data_gaps.rbs +17 -0
  788. data/sig/tungo/models/data_gaps_summary.rbs +17 -0
  789. data/sig/tungo/models/direct_bank_poll_result.rbs +14 -0
  790. data/sig/tungo/models/epay_return_links.rbs +13 -0
  791. data/sig/tungo/models/error.rbs +14 -0
  792. data/sig/tungo/models/error_detail.rbs +20 -0
  793. data/sig/tungo/models/error_detail_allowed_method_item.rbs +16 -0
  794. data/sig/tungo/models/error_detail_type.rbs +21 -0
  795. data/sig/tungo/models/esf_incoming_action.rbs +16 -0
  796. data/sig/tungo/models/esf_incoming_item.rbs +25 -0
  797. data/sig/tungo/models/esf_incoming_match.rbs +15 -0
  798. data/sig/tungo/models/esf_incoming_match_document.rbs +15 -0
  799. data/sig/tungo/models/esf_incoming_match_status.rbs +16 -0
  800. data/sig/tungo/models/esf_incoming_report.rbs +17 -0
  801. data/sig/tungo/models/esf_outgoing_item.rbs +20 -0
  802. data/sig/tungo/models/esf_outgoing_item_esf.rbs +16 -0
  803. data/sig/tungo/models/esf_outgoing_item_tax_invoice.rbs +14 -0
  804. data/sig/tungo/models/esf_outgoing_report.rbs +16 -0
  805. data/sig/tungo/models/esf_purchases_job_request.rbs +14 -0
  806. data/sig/tungo/models/esf_sale.rbs +18 -0
  807. data/sig/tungo/models/esf_verdict.rbs +14 -0
  808. data/sig/tungo/models/feed_action.rbs +18 -0
  809. data/sig/tungo/models/feed_action_action.rbs +17 -0
  810. data/sig/tungo/models/feed_action_method.rbs +13 -0
  811. data/sig/tungo/models/feed_item.rbs +27 -0
  812. data/sig/tungo/models/feed_page.rbs +15 -0
  813. data/sig/tungo/models/feed_section.rbs +14 -0
  814. data/sig/tungo/models/feed_section_counts.rbs +14 -0
  815. data/sig/tungo/models/feed_section_titles.rbs +14 -0
  816. data/sig/tungo/models/field_error.rbs +14 -0
  817. data/sig/tungo/models/field_error_code.rbs +22 -0
  818. data/sig/tungo/models/financial_notes.rbs +19 -0
  819. data/sig/tungo/models/financial_notes_organization.rbs +13 -0
  820. data/sig/tungo/models/financial_notes_section.rbs +20 -0
  821. data/sig/tungo/models/financial_notes_table.rbs +14 -0
  822. data/sig/tungo/models/financial_notes_table_row_item_item.rbs +12 -0
  823. data/sig/tungo/models/financial_notes_to_fill.rbs +15 -0
  824. data/sig/tungo/models/form_missing_action.rbs +17 -0
  825. data/sig/tungo/models/form_missing_data.rbs +17 -0
  826. data/sig/tungo/models/form_onec_object.rbs +13 -0
  827. data/sig/tungo/models/get_workspace_platform_audit_response.rbs +13 -0
  828. data/sig/tungo/models/get_workspace_platform_ledger_response.rbs +13 -0
  829. data/sig/tungo/models/isna_file.rbs +11 -0
  830. data/sig/tungo/models/isna_response.rbs +12 -0
  831. data/sig/tungo/models/isna_summary.rbs +28 -0
  832. data/sig/tungo/models/isna_summary_download.rbs +13 -0
  833. data/sig/tungo/models/isna_summary_format.rbs +14 -0
  834. data/sig/tungo/models/isna_summary_period.rbs +15 -0
  835. data/sig/tungo/models/isna_summary_reconciliation.rbs +13 -0
  836. data/sig/tungo/models/list_companies_response.rbs +12 -0
  837. data/sig/tungo/models/list_company_automations_hooks_response.rbs +12 -0
  838. data/sig/tungo/models/list_company_automations_runs_response.rbs +13 -0
  839. data/sig/tungo/models/list_company_automations_scenarios_response.rbs +12 -0
  840. data/sig/tungo/models/list_usage_rates_response.rbs +12 -0
  841. data/sig/tungo/models/list_workspace_platform_requests_response.rbs +13 -0
  842. data/sig/tungo/models/list_workspace_webhooks_endpoint_attempts_response.rbs +13 -0
  843. data/sig/tungo/models/list_workspace_webhooks_endpoint_attempts_status.rbs +15 -0
  844. data/sig/tungo/models/list_workspace_webhooks_endpoints_response.rbs +13 -0
  845. data/sig/tungo/models/list_workspace_webhooks_event_types_response.rbs +12 -0
  846. data/sig/tungo/models/list_workspace_webhooks_message_attempts_response.rbs +13 -0
  847. data/sig/tungo/models/list_workspace_webhooks_messages_response.rbs +13 -0
  848. data/sig/tungo/models/list_workspaces_response.rbs +12 -0
  849. data/sig/tungo/models/money.rbs +14 -0
  850. data/sig/tungo/models/my_workspace.rbs +16 -0
  851. data/sig/tungo/models/my_workspace_kind.rbs +14 -0
  852. data/sig/tungo/models/one_c_capability.rbs +15 -0
  853. data/sig/tungo/models/one_c_capability_id.rbs +20 -0
  854. data/sig/tungo/models/one_c_capability_status.rbs +15 -0
  855. data/sig/tungo/models/one_c_gateway.rbs +15 -0
  856. data/sig/tungo/models/one_c_status.rbs +15 -0
  857. data/sig/tungo/models/one_c_status_last_check.rbs +16 -0
  858. data/sig/tungo/models/one_c_status_last_check_verdict.rbs +14 -0
  859. data/sig/tungo/models/pay_form.rbs +15 -0
  860. data/sig/tungo/models/payment_method.rbs +17 -0
  861. data/sig/tungo/models/platform_account.rbs +20 -0
  862. data/sig/tungo/models/platform_account_blocked_reason.rbs +14 -0
  863. data/sig/tungo/models/platform_account_purchase_limits.rbs +14 -0
  864. data/sig/tungo/models/platform_auto_reload.rbs +15 -0
  865. data/sig/tungo/models/platform_ledger_entry.rbs +21 -0
  866. data/sig/tungo/models/platform_ledger_entry_kind.rbs +15 -0
  867. data/sig/tungo/models/platform_limits.rbs +14 -0
  868. data/sig/tungo/models/platform_limits_concurrent_turns.rbs +13 -0
  869. data/sig/tungo/models/platform_limits_files.rbs +20 -0
  870. data/sig/tungo/models/platform_limits_rate.rbs +13 -0
  871. data/sig/tungo/models/platform_limits_rate_key.rbs +14 -0
  872. data/sig/tungo/models/platform_limits_rate_workspace.rbs +14 -0
  873. data/sig/tungo/models/platform_purchase.rbs +15 -0
  874. data/sig/tungo/models/platform_purchase_input.rbs +13 -0
  875. data/sig/tungo/models/platform_purchase_status.rbs +21 -0
  876. data/sig/tungo/models/platform_request.rbs +23 -0
  877. data/sig/tungo/models/platform_settings_input.rbs +14 -0
  878. data/sig/tungo/models/platform_settings_input_auto_reload.rbs +15 -0
  879. data/sig/tungo/models/platform_usage.rbs +18 -0
  880. data/sig/tungo/models/platform_usage_by_company_item.rbs +18 -0
  881. data/sig/tungo/models/platform_usage_by_day_item.rbs +18 -0
  882. data/sig/tungo/models/platform_usage_by_key_item.rbs +18 -0
  883. data/sig/tungo/models/platform_usage_by_model_item.rbs +18 -0
  884. data/sig/tungo/models/platform_usage_totals.rbs +17 -0
  885. data/sig/tungo/models/proposal_account.rbs +15 -0
  886. data/sig/tungo/models/proposal_action.rbs +19 -0
  887. data/sig/tungo/models/proposal_action_action.rbs +14 -0
  888. data/sig/tungo/models/proposal_advance_offset.rbs +16 -0
  889. data/sig/tungo/models/proposal_approval.rbs +15 -0
  890. data/sig/tungo/models/proposal_card.rbs +42 -0
  891. data/sig/tungo/models/proposal_contract.rbs +16 -0
  892. data/sig/tungo/models/proposal_decision.rbs +18 -0
  893. data/sig/tungo/models/proposal_document.rbs +14 -0
  894. data/sig/tungo/models/proposal_header.rbs +24 -0
  895. data/sig/tungo/models/proposal_history_event.rbs +16 -0
  896. data/sig/tungo/models/proposal_kind.rbs +22 -0
  897. data/sig/tungo/models/proposal_line.rbs +23 -0
  898. data/sig/tungo/models/proposal_line_item.rbs +13 -0
  899. data/sig/tungo/models/proposal_line_section.rbs +13 -0
  900. data/sig/tungo/models/proposal_list_item.rbs +30 -0
  901. data/sig/tungo/models/proposal_page.rbs +15 -0
  902. data/sig/tungo/models/proposal_party.rbs +14 -0
  903. data/sig/tungo/models/proposal_posting.rbs +16 -0
  904. data/sig/tungo/models/proposal_result.rbs +15 -0
  905. data/sig/tungo/models/proposal_source.rbs +13 -0
  906. data/sig/tungo/models/proposal_source_channel.rbs +16 -0
  907. data/sig/tungo/models/proposal_status.rbs +19 -0
  908. data/sig/tungo/models/reject_request.rbs +13 -0
  909. data/sig/tungo/models/statement_day.rbs +22 -0
  910. data/sig/tungo/models/statement_day_counts.rbs +17 -0
  911. data/sig/tungo/models/statement_day_kind.rbs +15 -0
  912. data/sig/tungo/models/statement_day_list.rbs +13 -0
  913. data/sig/tungo/models/tax_form_cell.rbs +23 -0
  914. data/sig/tungo/models/tax_form_cell_cause.rbs +18 -0
  915. data/sig/tungo/models/tax_form_cell_diff.rbs +12 -0
  916. data/sig/tungo/models/tax_form_cell_one_c_value.rbs +12 -0
  917. data/sig/tungo/models/tax_form_cell_ours_value.rbs +12 -0
  918. data/sig/tungo/models/tax_form_cell_status.rbs +15 -0
  919. data/sig/tungo/models/tax_form_cell_type.rbs +16 -0
  920. data/sig/tungo/models/tax_form_due.rbs +20 -0
  921. data/sig/tungo/models/tax_form_list_item.rbs +22 -0
  922. data/sig/tungo/models/tax_form_list_item_coverage.rbs +13 -0
  923. data/sig/tungo/models/tax_form_list_item_group.rbs +15 -0
  924. data/sig/tungo/models/tax_form_list_item_required.rbs +12 -0
  925. data/sig/tungo/models/tax_form_only_in_one_c.rbs +13 -0
  926. data/sig/tungo/models/tax_form_period.rbs +16 -0
  927. data/sig/tungo/models/tax_form_reference.rbs +15 -0
  928. data/sig/tungo/models/tax_form_totals.rbs +15 -0
  929. data/sig/tungo/models/tax_form_view.rbs +26 -0
  930. data/sig/tungo/models/tax_form_view_coverage.rbs +13 -0
  931. data/sig/tungo/models/tax_form_view_uncovered.rbs +13 -0
  932. data/sig/tungo/models/tax_form_view_uncovered_cell_item.rbs +13 -0
  933. data/sig/tungo/models/tax_forms_year.rbs +15 -0
  934. data/sig/tungo/models/tax_period_kind.rbs +16 -0
  935. data/sig/tungo/models/tax_period_ref.rbs +13 -0
  936. data/sig/tungo/models/usage_rate.rbs +17 -0
  937. data/sig/tungo/models/webhook_attempt.rbs +20 -0
  938. data/sig/tungo/models/webhook_attempt_status.rbs +15 -0
  939. data/sig/tungo/models/webhook_attempt_trigger.rbs +13 -0
  940. data/sig/tungo/models/webhook_endpoint.rbs +19 -0
  941. data/sig/tungo/models/webhook_endpoint_create.rbs +16 -0
  942. data/sig/tungo/models/webhook_endpoint_created.rbs +21 -0
  943. data/sig/tungo/models/webhook_endpoint_patch.rbs +16 -0
  944. data/sig/tungo/models/webhook_envelope.rbs +17 -0
  945. data/sig/tungo/models/webhook_event.rbs +12 -0
  946. data/sig/tungo/models/webhook_event_api_key_cap_reached.rbs +17 -0
  947. data/sig/tungo/models/webhook_event_api_key_cap_reached_data.rbs +17 -0
  948. data/sig/tungo/models/webhook_event_api_key_expiring.rbs +17 -0
  949. data/sig/tungo/models/webhook_event_api_key_expiring_data.rbs +15 -0
  950. data/sig/tungo/models/webhook_event_automation_run_completed.rbs +17 -0
  951. data/sig/tungo/models/webhook_event_automation_run_completed_data.rbs +29 -0
  952. data/sig/tungo/models/webhook_event_automation_run_completed_data_output_error.rbs +13 -0
  953. data/sig/tungo/models/webhook_event_automation_run_completed_data_output_value.rbs +12 -0
  954. data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item.rbs +19 -0
  955. data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto.rbs +15 -0
  956. data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto_code.rbs +17 -0
  957. data/sig/tungo/models/webhook_event_automation_run_failed.rbs +17 -0
  958. data/sig/tungo/models/webhook_event_automation_run_failed_data.rbs +29 -0
  959. data/sig/tungo/models/webhook_event_automation_run_failed_data_output_error.rbs +13 -0
  960. data/sig/tungo/models/webhook_event_automation_run_failed_data_output_value.rbs +12 -0
  961. data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item.rbs +19 -0
  962. data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto.rbs +15 -0
  963. data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto_code.rbs +17 -0
  964. data/sig/tungo/models/webhook_event_automation_run_notice.rbs +17 -0
  965. data/sig/tungo/models/webhook_event_automation_run_notice_data.rbs +21 -0
  966. data/sig/tungo/models/webhook_event_automation_run_notice_data_reason.rbs +15 -0
  967. data/sig/tungo/models/webhook_event_automation_write_unknown.rbs +17 -0
  968. data/sig/tungo/models/webhook_event_automation_write_unknown_data.rbs +16 -0
  969. data/sig/tungo/models/webhook_event_bank_statement_received.rbs +17 -0
  970. data/sig/tungo/models/webhook_event_bank_statement_received_data.rbs +17 -0
  971. data/sig/tungo/models/webhook_event_bank_statement_received_data_source.rbs +13 -0
  972. data/sig/tungo/models/webhook_event_batch_completed.rbs +17 -0
  973. data/sig/tungo/models/webhook_event_batch_completed_data.rbs +22 -0
  974. data/sig/tungo/models/webhook_event_batch_completed_data_kind.rbs +13 -0
  975. data/sig/tungo/models/webhook_event_batch_failed.rbs +17 -0
  976. data/sig/tungo/models/webhook_event_batch_failed_data.rbs +14 -0
  977. data/sig/tungo/models/webhook_event_batch_failed_data_kind.rbs +13 -0
  978. data/sig/tungo/models/webhook_event_chat_turn_completed.rbs +17 -0
  979. data/sig/tungo/models/webhook_event_chat_turn_completed_data.rbs +17 -0
  980. data/sig/tungo/models/webhook_event_chat_turn_completed_data_usage.rbs +16 -0
  981. data/sig/tungo/models/webhook_event_esf_incoming_received.rbs +17 -0
  982. data/sig/tungo/models/webhook_event_esf_incoming_received_data.rbs +17 -0
  983. data/sig/tungo/models/webhook_event_onec_connection_changed.rbs +17 -0
  984. data/sig/tungo/models/webhook_event_onec_connection_changed_data.rbs +16 -0
  985. data/sig/tungo/models/webhook_event_onec_connection_changed_data_reason.rbs +20 -0
  986. data/sig/tungo/models/webhook_event_onec_connection_changed_data_state.rbs +13 -0
  987. data/sig/tungo/models/webhook_event_payment_failed.rbs +17 -0
  988. data/sig/tungo/models/webhook_event_payment_failed_data.rbs +17 -0
  989. data/sig/tungo/models/webhook_event_payment_succeeded.rbs +17 -0
  990. data/sig/tungo/models/webhook_event_payment_succeeded_data.rbs +17 -0
  991. data/sig/tungo/models/webhook_event_ping.rbs +17 -0
  992. data/sig/tungo/models/webhook_event_ping_data.rbs +11 -0
  993. data/sig/tungo/models/webhook_event_platform_balance_exhausted.rbs +17 -0
  994. data/sig/tungo/models/webhook_event_platform_balance_exhausted_data.rbs +13 -0
  995. data/sig/tungo/models/webhook_event_platform_balance_low.rbs +17 -0
  996. data/sig/tungo/models/webhook_event_platform_balance_low_data.rbs +13 -0
  997. data/sig/tungo/models/webhook_event_platform_cap_threshold_reached.rbs +17 -0
  998. data/sig/tungo/models/webhook_event_platform_cap_threshold_reached_data.rbs +15 -0
  999. data/sig/tungo/models/webhook_event_proposal_awaiting_approval.rbs +17 -0
  1000. data/sig/tungo/models/webhook_event_proposal_awaiting_approval_data.rbs +17 -0
  1001. data/sig/tungo/models/webhook_event_proposal_failed.rbs +17 -0
  1002. data/sig/tungo/models/webhook_event_proposal_failed_data.rbs +15 -0
  1003. data/sig/tungo/models/webhook_event_proposal_rejected.rbs +17 -0
  1004. data/sig/tungo/models/webhook_event_proposal_rejected_data.rbs +15 -0
  1005. data/sig/tungo/models/webhook_event_proposal_written.rbs +17 -0
  1006. data/sig/tungo/models/webhook_event_proposal_written_data.rbs +16 -0
  1007. data/sig/tungo/models/webhook_event_type.rbs +15 -0
  1008. data/sig/tungo/models/webhook_message.rbs +15 -0
  1009. data/sig/tungo/models/webhook_resend.rbs +12 -0
  1010. data/sig/tungo/models/webhook_secret.rbs +13 -0
  1011. data/sig/tungo/models/webhook_secret_rotated.rbs +14 -0
  1012. data/sig/tungo/models/webhook_usage.rbs +15 -0
  1013. data/sig/tungo/models/workspace_plan.rbs +14 -0
  1014. data/sig/tungo/resources/api_keys.rbs +12 -0
  1015. data/sig/tungo/resources/automations.rbs +33 -0
  1016. data/sig/tungo/resources/batches.rbs +20 -0
  1017. data/sig/tungo/resources/chat.rbs +21 -0
  1018. data/sig/tungo/resources/companies.rbs +11 -0
  1019. data/sig/tungo/resources/esf.rbs +13 -0
  1020. data/sig/tungo/resources/feed.rbs +12 -0
  1021. data/sig/tungo/resources/forms.rbs +14 -0
  1022. data/sig/tungo/resources/onec.rbs +10 -0
  1023. data/sig/tungo/resources/platform.rbs +19 -0
  1024. data/sig/tungo/resources/proposals.rbs +15 -0
  1025. data/sig/tungo/resources/webhooks.rbs +26 -0
  1026. data/sig/tungo/resources/workspaces.rbs +10 -0
  1027. data/sig/tungo/resources.rbs +25 -0
  1028. data/sig/tungo/runtime.rbs +392 -0
  1029. metadata +1110 -0
@@ -0,0 +1,189 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tungo
4
+ # A server-sent event stream that delivers typed events as they arrive.
5
+ #
6
+ # stream = client.feed.list_events
7
+ # stream.each { |item| puts item.title }
8
+ #
9
+ # The connection is closed when the block finishes, when it is left early (+break+, an
10
+ # exception) or when {#close} is called. A stream can be iterated once. It may be handed to
11
+ # another thread and read or closed there; it must not be read by two threads at once.
12
+ class Stream
13
+ include Enumerable
14
+
15
+ # @api private
16
+ SKIP = Object.new.freeze
17
+
18
+ # @return [Tungo::APIResponse] status and headers of the response
19
+ attr_reader :api_response
20
+ # @return [String, nil] id of the last event received, for reconnecting with +last_event_id:+
21
+ attr_reader :last_event_id
22
+
23
+ # @api private
24
+ def initialize(response:, decode:)
25
+ @response = response
26
+ @api_response = APIResponse.new(status: response.status, headers: response.headers)
27
+ @decode = decode
28
+ @started = false
29
+ @last_event_id = nil
30
+ end
31
+
32
+ # Yields every typed event as it arrives; heart-beats (+ping+) are skipped.
33
+ #
34
+ # @yieldparam event [Tungo::Model]
35
+ # @return [Enumerator] when no block is given
36
+ # @raise [Tungo::DecodeError] when an event does not carry valid JSON
37
+ def each
38
+ return enum_for(:each) unless block_given?
39
+
40
+ each_sse do |sse|
41
+ event = @decode.call(sse)
42
+ yield event unless SKIP.equal?(event)
43
+ end
44
+ end
45
+
46
+ # Yields the raw server-sent events, heart-beats included.
47
+ #
48
+ # @yieldparam event [Tungo::ServerSentEvent]
49
+ # @return [Enumerator] when no block is given
50
+ def each_sse
51
+ return enum_for(:each_sse) unless block_given?
52
+ raise Tungo::Error, "the stream has already been consumed" if @started
53
+
54
+ @started = true
55
+ decoder = Internal::SSEDecoder.new
56
+ handle = lambda do |sse|
57
+ @last_event_id = sse.id
58
+ yield sse
59
+ end
60
+ begin
61
+ @response.each_chunk { |chunk| decoder.feed(chunk, &handle) }
62
+ decoder.finish(&handle)
63
+ ensure
64
+ close
65
+ end
66
+ self
67
+ end
68
+
69
+ # Closes the connection. Safe to call more than once.
70
+ def close
71
+ @response.close
72
+ nil
73
+ end
74
+
75
+ # @return [Boolean]
76
+ def closed?
77
+ @response.closed?
78
+ end
79
+
80
+ def inspect
81
+ "#<#{self.class.name} status=#{@api_response.status} closed=#{closed?}>"
82
+ end
83
+ end
84
+
85
+ # The outcome of one chat turn, accumulated from its stream.
86
+ #
87
+ # @!attribute dialog_id
88
+ # @return [String, nil] id of the dialog (+X-Dialog-Id+ response header)
89
+ # @!attribute turn_no
90
+ # @return [Integer, nil] number of the turn (+X-Turn-No+ response header)
91
+ # @!attribute text
92
+ # @return [String] the final answer
93
+ # @!attribute stop_reason
94
+ # @return [String, nil] why the turn ended; nil only when the turn ended with an +error+ event
95
+ # instead of +done+
96
+ # @!attribute cost_tiyn
97
+ # @return [Integer, nil] cost of the turn in tiyn
98
+ # @!attribute usage
99
+ # @return [Tungo::Models::ChatUsage, nil] token usage
100
+ # @!attribute choice_id
101
+ # @return [String, nil] id of the question the assistant is waiting an answer for
102
+ # @!attribute error
103
+ # @return [Tungo::Model, nil] the first +error+ event of the turn
104
+ # @!attribute events
105
+ # @return [Array<Tungo::Model>] every event of the turn in order
106
+ ChatTurn = Data.define(:dialog_id, :turn_no, :text, :stop_reason, :cost_tiyn, :usage, :choice_id, :error, :events)
107
+
108
+ # The stream of one chat turn (+chat.create_stream+, +chat.answer_stream+).
109
+ #
110
+ # stream = client.chat.create_stream(message: "...")
111
+ # stream.each_text { |delta| print delta }
112
+ class ChatStream < Stream
113
+ # @return [String, nil] id of the dialog (+X-Dialog-Id+ response header)
114
+ def dialog_id
115
+ api_response["x-dialog-id"]
116
+ end
117
+
118
+ # @return [Integer, nil] number of the turn (+X-Turn-No+ response header)
119
+ def turn_no
120
+ value = api_response["x-turn-no"].to_s
121
+ value.match?(/\A[0-9]+\z/) ? value.to_i : nil
122
+ end
123
+
124
+ # Yields the text of the answer piece by piece and returns the accumulated turn.
125
+ #
126
+ # @yieldparam delta [String]
127
+ # @return [Tungo::ChatTurn]
128
+ # @raise [Tungo::APIError] when the turn reported an error
129
+ # @raise [Tungo::DecodeError] when the stream ended before the +done+ event
130
+ def each_text
131
+ accumulate { |event| yield event[:delta].to_s if event[:type] == "text" }
132
+ end
133
+
134
+ # Consumes the stream and returns the accumulated turn. The final answer is the text
135
+ # deltas, minus the deltas of every step that a later +progress+ event names, replaced by
136
+ # +done.answer+ when the API sends it.
137
+ #
138
+ # @param raise_on_error [Boolean] raise the typed error of a mid-stream +error+ event once
139
+ # the stream has ended; with false the event is returned in {Tungo::ChatTurn#error}
140
+ # @yieldparam event [Tungo::Model] every event as it arrives
141
+ # @return [Tungo::ChatTurn]
142
+ # @raise [Tungo::APIError] when the turn reported an error and +raise_on_error+ is true
143
+ # @raise [Tungo::DecodeError] when the stream ended with neither a +done+ nor an +error+ event:
144
+ # the answer is incomplete and is never returned as a finished turn. Iterating the events
145
+ # with +each+ simply ends in that case
146
+ def accumulate(raise_on_error: true)
147
+ state = { segments: [], events: [], error: nil, done: nil }
148
+ each do |event|
149
+ collect(state, event)
150
+ yield event if block_given?
151
+ end
152
+ raise APIError.from_event(state[:error], headers: api_response.headers) if state[:error] && raise_on_error
153
+ raise incomplete(state) if state[:done].nil? && state[:error].nil?
154
+
155
+ chat_turn(state)
156
+ end
157
+
158
+ private
159
+
160
+ def incomplete(state)
161
+ DecodeError.new("The chat stream ended before completion: no \"done\" event was received. The request " \
162
+ "itself was accepted and the turn may still be running: read it again with " \
163
+ "chat.list_events instead of sending the message once more",
164
+ api_response: api_response, body: state[:segments].map(&:last).join)
165
+ end
166
+
167
+ def collect(state, event)
168
+ state[:events] << event
169
+ case event[:type]
170
+ when "text" then state[:segments] << [event[:step], event[:delta].to_s]
171
+ when "progress" then state[:segments].reject! { |step, _| !step.nil? && step == event[:step] }
172
+ when "error" then state[:error] ||= event
173
+ when "done" then state[:done] = event
174
+ end
175
+ end
176
+
177
+ def chat_turn(state)
178
+ done = state[:done]
179
+ answer = done && done[:answer]
180
+ ChatTurn.new(
181
+ dialog_id: dialog_id, turn_no: turn_no,
182
+ text: answer.is_a?(String) ? answer : state[:segments].map(&:last).join,
183
+ stop_reason: done && done[:stop_reason], cost_tiyn: done && done[:cost_tiyn],
184
+ usage: done && done[:usage], choice_id: done && done[:choice_id],
185
+ error: state[:error], events: state[:events].freeze
186
+ )
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,373 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tungo
4
+ # The HTTP layer of the client. The default implementation is {Tungo::Transport::NetHTTP};
5
+ # any object with the same +execute+ and +close+ methods can be passed to
6
+ # +Tungo::Client.new(transport: ...)+, for example to route requests through a test double.
7
+ module Transport
8
+ # Headers whose values are credentials: never printed, and never sent to an operation that
9
+ # is not authenticated with the API key unless the call itself asks for it.
10
+ CREDENTIAL_HEADERS = %w[x-api-key authorization proxy-authorization cookie].freeze
11
+
12
+ # One HTTP request, ready to be sent.
13
+ #
14
+ # @!attribute verb
15
+ # @return [String] upper-case HTTP method
16
+ # @!attribute url
17
+ # @return [URI::HTTP]
18
+ # @!attribute headers
19
+ # @return [Hash{String=>String}]
20
+ # @!attribute body
21
+ # @return [String, nil] the exact bytes of the body
22
+ # @!attribute timeout
23
+ # @return [Numeric, nil] seconds for the whole exchange including the body; nil for a stream
24
+ # @!attribute connect_timeout
25
+ # @return [Numeric] seconds to establish the connection
26
+ # @!attribute idle_timeout
27
+ # @return [Numeric] seconds without any byte before the exchange is abandoned
28
+ # @!attribute route
29
+ # @return [String, nil] the path template of the operation, such as +/hooks/{token}+
30
+ Request = Data.define(:verb, :url, :headers, :body, :timeout, :connect_timeout, :idle_timeout, :route) do
31
+ def initialize(route: nil, **)
32
+ super
33
+ end
34
+
35
+ # What error messages and logs call the request: the method and the path template. The path
36
+ # itself and the query string are never shown, they may hold secrets (an incoming hook token).
37
+ #
38
+ # @return [String]
39
+ def label
40
+ route ? "#{verb} #{route}" : "#{verb} request"
41
+ end
42
+
43
+ # Never shows what may hold a secret: the values of credential headers (the API key), the
44
+ # path and the query string (an incoming hook token) and the body.
45
+ #
46
+ # @return [String]
47
+ def inspect
48
+ shown = headers.to_h do |name, value|
49
+ [name, CREDENTIAL_HEADERS.include?(name.to_s.downcase) ? "[REDACTED]" : value]
50
+ end
51
+ "#<#{self.class.name} #{label} host=#{url.host.inspect} headers=#{shown.inspect} " \
52
+ "body=#{body.nil? ? "nil" : "#{body.bytesize} bytes"} timeout=#{timeout.inspect} " \
53
+ "connect_timeout=#{connect_timeout.inspect} idle_timeout=#{idle_timeout.inspect}>"
54
+ end
55
+ alias_method :to_s, :inspect
56
+
57
+ def pretty_print(printer)
58
+ printer.text(inspect)
59
+ end
60
+ end
61
+
62
+ # An HTTP response whose body is read on demand.
63
+ class Response
64
+ # @return [Integer]
65
+ attr_reader :status
66
+ # @return [Hash{String=>String}] headers with lower-case names
67
+ attr_reader :headers
68
+
69
+ # @param headers [Hash] response headers; the names are lower-cased
70
+ # @param chunks [Enumerable<String>, #call] the body piece by piece: an Array, an Enumerator,
71
+ # or a callable that returns the next piece and nil at the end of the body
72
+ # @param on_close [#call, nil] releases the connection
73
+ def initialize(status:, headers:, chunks:, on_close: nil)
74
+ @status = status
75
+ @headers = Internal::Util.normalize_headers(headers).freeze
76
+ @chunks = pull(chunks)
77
+ @on_close = on_close
78
+ @finished = false
79
+ @closed = false
80
+ end
81
+
82
+ # Yields the body as it arrives. Stops when the body ends or the response is closed. It may
83
+ # be called from any thread, but from one at a time.
84
+ #
85
+ # @yieldparam chunk [String] binary bytes
86
+ def each_chunk
87
+ until @finished || @closed
88
+ chunk = @chunks.call
89
+ if chunk.nil?
90
+ @finished = true
91
+ break
92
+ end
93
+ yield chunk
94
+ end
95
+ nil
96
+ end
97
+
98
+ # @return [String] the rest of the body (binary)
99
+ def read
100
+ buffer = String.new(encoding: Encoding::BINARY)
101
+ each_chunk { |chunk| buffer << chunk }
102
+ buffer
103
+ end
104
+
105
+ # Abandons the rest of the body and releases the connection. Safe to call more than once.
106
+ def close
107
+ return if @closed
108
+
109
+ @closed = true
110
+ @on_close&.call
111
+ nil
112
+ end
113
+
114
+ # @return [Boolean]
115
+ def closed?
116
+ @closed
117
+ end
118
+
119
+ private
120
+
121
+ def pull(chunks)
122
+ return chunks if chunks.respond_to?(:call)
123
+
124
+ source = chunks.is_a?(Enumerator) ? chunks : chunks.each
125
+ lambda do
126
+ source.next
127
+ rescue StopIteration
128
+ nil
129
+ end
130
+ end
131
+ end
132
+
133
+ # One exchange in progress: a worker thread talks to the socket and hands the status line
134
+ # and the body pieces over a queue of one element. The reader may therefore be any thread
135
+ # (a stream opened on one thread can be read on another), and closing is deterministic:
136
+ # the worker is interrupted, closes its connection, and close returns after that.
137
+ #
138
+ # @api private
139
+ class Exchange
140
+ # Interrupts the worker; not a StandardError, so that no rescue in between swallows it.
141
+ class Abandoned < Exception; end # rubocop:disable Lint/InheritException
142
+
143
+ def initialize(&work)
144
+ @queue = SizedQueue.new(1)
145
+ @thread = Thread.new { pump(work) }
146
+ @thread.report_on_exception = false
147
+ end
148
+
149
+ # @return [Array] the next item of the worker: [:head, status, headers] or [:chunk, bytes];
150
+ # nil at the end of the body
151
+ # @raise [Tungo::Error] what ended the exchange
152
+ def next
153
+ item = @queue.pop
154
+ return nil if item.nil?
155
+ raise item.last if item.first == :error
156
+
157
+ item
158
+ end
159
+
160
+ # Stops the worker and waits until it has released its connection.
161
+ def close
162
+ abandon
163
+ @thread.join unless @thread.equal?(Thread.current)
164
+ nil
165
+ end
166
+
167
+ # Stops the worker without waiting for it.
168
+ def abandon(*)
169
+ @queue.close
170
+ @thread.raise(Abandoned) if @thread.alive?
171
+ nil
172
+ rescue ThreadError
173
+ nil
174
+ end
175
+
176
+ # Runs the block with interruption by {#close} allowed; everywhere else in the worker it
177
+ # is deferred, so that the connection is always put back or closed.
178
+ def self.interruptible(&)
179
+ Thread.handle_interrupt(Abandoned => :immediate, &)
180
+ end
181
+
182
+ private
183
+
184
+ def pump(work)
185
+ Thread.handle_interrupt(Abandoned => :never) do
186
+ work.call(->(item) { @queue.push(item) })
187
+ rescue Abandoned, ClosedQueueError
188
+ nil
189
+ rescue Exception => e # rubocop:disable Lint/RescueException
190
+ hand_over(e)
191
+ ensure
192
+ @queue.close
193
+ end
194
+ rescue Abandoned
195
+ nil
196
+ end
197
+
198
+ def hand_over(error)
199
+ @queue.push([:error, error])
200
+ rescue ClosedQueueError
201
+ nil
202
+ end
203
+ end
204
+
205
+ # Net::HTTP transport with persistent connections.
206
+ #
207
+ # Connections are kept per origin and reused (HTTP keep-alive). The pool is thread-safe; a
208
+ # connection is used by one request at a time. The body is streamed: a response is returned
209
+ # as soon as its headers arrive. Every exchange runs on a worker thread of its own, so a
210
+ # response may be read and closed from any thread.
211
+ class NetHTTP
212
+ # @param max_idle_connections [Integer] idle connections kept per origin
213
+ # @param keep_alive_timeout [Numeric] seconds an idle connection may be reused
214
+ # @param proxy [String, URI, nil] HTTP proxy URL; by default the +http_proxy+ environment
215
+ # variables are honoured, as with Net::HTTP itself
216
+ # @yieldparam http [Net::HTTP] every new connection before it is opened, e.g. to set a CA file
217
+ def initialize(max_idle_connections: 8, keep_alive_timeout: 30, proxy: nil, &configure)
218
+ @max_idle_connections = max_idle_connections
219
+ @keep_alive_timeout = keep_alive_timeout
220
+ @proxy = proxy && URI(proxy.to_s)
221
+ @configure = configure
222
+ @idle = {}
223
+ @mutex = Mutex.new
224
+ end
225
+
226
+ # Sends the request and returns as soon as the response headers have arrived.
227
+ #
228
+ # @param request [Tungo::Transport::Request]
229
+ # @return [Tungo::Transport::Response]
230
+ # @raise [Tungo::TimeoutError, Tungo::ConnectionError]
231
+ def execute(request)
232
+ exchange = Exchange.new { |emit| run(request, emit) }
233
+ opened = false
234
+ begin
235
+ _, status, headers = exchange.next
236
+ response = Response.new(status: status, headers: headers, chunks: -> { exchange.next&.last },
237
+ on_close: -> { exchange.close })
238
+ # A response that is dropped without being read or closed still releases its connection.
239
+ ObjectSpace.define_finalizer(response, exchange.method(:abandon))
240
+ opened = true
241
+ response
242
+ ensure
243
+ # Also on an exception raised into the caller from outside, such as Timeout.timeout.
244
+ exchange.close unless opened
245
+ end
246
+ end
247
+
248
+ # Closes every idle connection.
249
+ def close
250
+ connections = @mutex.synchronize do
251
+ all = @idle.values.flatten
252
+ @idle.clear
253
+ all
254
+ end
255
+ connections.each { |connection| finish(connection) }
256
+ nil
257
+ end
258
+
259
+ def inspect
260
+ "#<#{self.class.name} max_idle_connections=#{@max_idle_connections}>"
261
+ end
262
+
263
+ private
264
+
265
+ # Runs on the worker thread: emits [:head, status, headers] first, then the body chunks.
266
+ def run(request, emit)
267
+ deadline = request.timeout && (Internal::Util.monotonic + request.timeout)
268
+ origin = "#{request.url.scheme}://#{request.url.host}:#{request.url.port}"
269
+ connection = checkout(origin, request.url)
270
+ reusable = false
271
+ begin
272
+ Exchange.interruptible { exchange(connection, request, deadline, emit) { reusable = true } }
273
+ rescue Timeout::Error, Errno::ETIMEDOUT => e
274
+ # Net::OpenTimeout, Net::ReadTimeout and Net::WriteTimeout are Timeout::Errors. A
275
+ # Timeout.timeout around the call is raised in the caller's thread, never here.
276
+ raise Tungo::TimeoutError, "#{request.label} timed out (#{e.class}: #{e.message})"
277
+ rescue Tungo::Error
278
+ raise
279
+ rescue StandardError => e
280
+ raise Tungo::ConnectionError,
281
+ "#{request.label} failed to connect or lost the connection " \
282
+ "(#{e.class}: #{e.message})"
283
+ ensure
284
+ reusable ? checkin(origin, connection) : finish(connection)
285
+ end
286
+ end
287
+
288
+ def exchange(connection, request, deadline, emit)
289
+ apply_timeouts(connection, request, deadline)
290
+ unless connection.started?
291
+ connection.start
292
+ # Connecting took its share of the total timeout: the request gets what is left.
293
+ apply_timeouts(connection, request, deadline)
294
+ end
295
+ connection.request(build(request)) do |response|
296
+ # A body that ends before its Content-Length is an error, not a short success.
297
+ response.ignore_eof = false
298
+ emit.call([:head, response.code.to_i, response.to_hash])
299
+ response.read_body do |chunk|
300
+ emit.call([:chunk, chunk])
301
+ apply_timeouts(connection, request, deadline)
302
+ end
303
+ end
304
+ yield
305
+ end
306
+
307
+ # The total timeout covers the whole exchange: every socket operation gets what is left.
308
+ def apply_timeouts(connection, request, deadline)
309
+ if deadline.nil?
310
+ connection.open_timeout = request.connect_timeout
311
+ connection.read_timeout = request.idle_timeout
312
+ connection.write_timeout = request.idle_timeout
313
+ return
314
+ end
315
+ remaining = deadline - Internal::Util.monotonic
316
+ if remaining <= 0
317
+ raise Tungo::TimeoutError,
318
+ "#{request.label} did not finish within #{request.timeout} s"
319
+ end
320
+
321
+ connection.open_timeout = [remaining, request.connect_timeout].min
322
+ connection.read_timeout = [remaining, request.idle_timeout].min
323
+ connection.write_timeout = [remaining, request.idle_timeout].min
324
+ end
325
+
326
+ def build(request)
327
+ has_body = !request.body.nil?
328
+ message = Net::HTTPGenericRequest.new(request.verb, has_body, request.verb != "HEAD",
329
+ request.url.request_uri)
330
+ request.headers.each { |name, value| message[name] = value }
331
+ if has_body
332
+ message.body = request.body
333
+ elsif %w[POST PUT PATCH].include?(request.verb)
334
+ message["Content-Length"] = "0"
335
+ end
336
+ message
337
+ end
338
+
339
+ def checkout(origin, url)
340
+ connection = @mutex.synchronize { @idle[origin]&.pop }
341
+ connection || connect(url)
342
+ end
343
+
344
+ def checkin(origin, connection)
345
+ keep = @mutex.synchronize do
346
+ idle = (@idle[origin] ||= [])
347
+ idle.size < @max_idle_connections && idle.push(connection)
348
+ end
349
+ finish(connection) unless keep
350
+ end
351
+
352
+ def connect(url)
353
+ connection = if @proxy
354
+ Net::HTTP.new(url.host, url.port, @proxy.host, @proxy.port, @proxy.user, @proxy.password)
355
+ else
356
+ Net::HTTP.new(url.host, url.port)
357
+ end
358
+ connection.use_ssl = url.scheme == "https"
359
+ # Repeating a request is decided by the client's retry policy, never silently by Net::HTTP.
360
+ connection.max_retries = 0
361
+ connection.keep_alive_timeout = @keep_alive_timeout
362
+ @configure&.call(connection)
363
+ connection
364
+ end
365
+
366
+ def finish(connection)
367
+ connection.finish if connection.started?
368
+ rescue StandardError
369
+ nil
370
+ end
371
+ end
372
+ end
373
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tungo
4
+ # The version of the gem; also sent in the User-Agent header.
5
+ VERSION = "0.2.0" # x-release-version
6
+ end