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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +34 -0
- data/LICENSE +21 -0
- data/README.md +316 -0
- data/SECURITY.md +19 -0
- data/lib/tungo/api_response.rb +52 -0
- data/lib/tungo/client.rb +426 -0
- data/lib/tungo/contract.rb +37 -0
- data/lib/tungo/errors.rb +266 -0
- data/lib/tungo/helpers.rb +146 -0
- data/lib/tungo/internal/model.rb +432 -0
- data/lib/tungo/internal/sse.rb +122 -0
- data/lib/tungo/internal/util.rb +223 -0
- data/lib/tungo/models/api_key.rb +132 -0
- data/lib/tungo/models/api_key_create.rb +75 -0
- data/lib/tungo/models/api_key_create_write_kind_item.rb +26 -0
- data/lib/tungo/models/api_key_created.rb +154 -0
- data/lib/tungo/models/api_key_created_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_created_status.rb +21 -0
- data/lib/tungo/models/api_key_details.rb +139 -0
- data/lib/tungo/models/api_key_details_blocked_reason.rb +27 -0
- data/lib/tungo/models/api_key_details_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_details_status.rb +21 -0
- data/lib/tungo/models/api_key_month.rb +28 -0
- data/lib/tungo/models/api_key_patch.rb +78 -0
- data/lib/tungo/models/api_key_patch_write_kind_item.rb +26 -0
- data/lib/tungo/models/api_key_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_person.rb +25 -0
- data/lib/tungo/models/api_key_roll.rb +16 -0
- data/lib/tungo/models/api_key_rolled.rb +147 -0
- data/lib/tungo/models/api_key_rolled_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_rolled_status.rb +21 -0
- data/lib/tungo/models/api_key_self.rb +154 -0
- data/lib/tungo/models/api_key_self_blocked_reason.rb +27 -0
- data/lib/tungo/models/api_key_self_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_self_rate_limit.rb +26 -0
- data/lib/tungo/models/api_key_self_status.rb +21 -0
- data/lib/tungo/models/api_key_self_workspace.rb +25 -0
- data/lib/tungo/models/api_key_self_workspace_kind.rb +18 -0
- data/lib/tungo/models/api_key_status.rb +21 -0
- data/lib/tungo/models/api_key_transfer.rb +16 -0
- data/lib/tungo/models/api_key_updated.rb +139 -0
- data/lib/tungo/models/api_key_updated_permission_item.rb +22 -0
- data/lib/tungo/models/api_key_updated_status.rb +21 -0
- data/lib/tungo/models/api_key_usage.rb +49 -0
- data/lib/tungo/models/api_key_usage_by_company_item.rb +25 -0
- data/lib/tungo/models/api_key_usage_by_day_item.rb +25 -0
- data/lib/tungo/models/api_key_usage_by_model_item.rb +25 -0
- data/lib/tungo/models/api_key_usage_totals.rb +40 -0
- data/lib/tungo/models/api_key_warning.rb +22 -0
- data/lib/tungo/models/api_key_warning_code.rb +21 -0
- data/lib/tungo/models/approve_batch_company_proposals_response.rb +20 -0
- data/lib/tungo/models/approve_error.rb +25 -0
- data/lib/tungo/models/approve_error_error.rb +96 -0
- data/lib/tungo/models/approve_request.rb +26 -0
- data/lib/tungo/models/audit_entry.rb +64 -0
- data/lib/tungo/models/audit_entry_action.rb +148 -0
- data/lib/tungo/models/audit_entry_actor.rb +26 -0
- data/lib/tungo/models/audit_entry_actor_type.rb +18 -0
- data/lib/tungo/models/audit_entry_target.rb +20 -0
- data/lib/tungo/models/automation_auto_approve.rb +40 -0
- data/lib/tungo/models/automation_auto_approve_kind_item.rb +25 -0
- data/lib/tungo/models/automation_deleted.rb +20 -0
- data/lib/tungo/models/automation_event_filter.rb +16 -0
- data/lib/tungo/models/automation_filter_condition.rb +30 -0
- data/lib/tungo/models/automation_filter_condition_op.rb +26 -0
- data/lib/tungo/models/automation_filter_condition_value.rb +23 -0
- data/lib/tungo/models/automation_filter_condition_value_option4_item.rb +20 -0
- data/lib/tungo/models/automation_hook.rb +65 -0
- data/lib/tungo/models/automation_hook_accepted.rb +34 -0
- data/lib/tungo/models/automation_hook_create.rb +38 -0
- data/lib/tungo/models/automation_hook_event.rb +64 -0
- data/lib/tungo/models/automation_hook_event_encoding.rb +17 -0
- data/lib/tungo/models/automation_hook_event_source.rb +17 -0
- data/lib/tungo/models/automation_hook_patch.rb +44 -0
- data/lib/tungo/models/automation_hook_test_input.rb +30 -0
- data/lib/tungo/models/automation_hook_test_result.rb +63 -0
- data/lib/tungo/models/automation_hook_test_result_external_id_source.rb +20 -0
- data/lib/tungo/models/automation_hook_test_scenario.rb +46 -0
- data/lib/tungo/models/automation_hook_test_scenario_failed_condition.rb +26 -0
- data/lib/tungo/models/automation_hook_with_token.rb +85 -0
- data/lib/tungo/models/automation_manual_run.rb +189 -0
- data/lib/tungo/models/automation_manual_run_output_error.rb +18 -0
- data/lib/tungo/models/automation_manual_run_output_value.rb +20 -0
- data/lib/tungo/models/automation_manual_run_state.rb +23 -0
- data/lib/tungo/models/automation_manual_run_trigger.rb +22 -0
- data/lib/tungo/models/automation_output_field.rb +31 -0
- data/lib/tungo/models/automation_output_field_option1.rb +20 -0
- data/lib/tungo/models/automation_output_field_option2.rb +20 -0
- data/lib/tungo/models/automation_output_field_option3.rb +20 -0
- data/lib/tungo/models/automation_output_field_option4.rb +20 -0
- data/lib/tungo/models/automation_output_field_option5.rb +25 -0
- data/lib/tungo/models/automation_output_spec.rb +16 -0
- data/lib/tungo/models/automation_run.rb +183 -0
- data/lib/tungo/models/automation_run_detail.rb +189 -0
- data/lib/tungo/models/automation_run_detail_output_error.rb +18 -0
- data/lib/tungo/models/automation_run_detail_output_value.rb +20 -0
- data/lib/tungo/models/automation_run_detail_state.rb +23 -0
- data/lib/tungo/models/automation_run_detail_trigger.rb +22 -0
- data/lib/tungo/models/automation_run_output_error.rb +18 -0
- data/lib/tungo/models/automation_run_output_value.rb +20 -0
- data/lib/tungo/models/automation_run_proposal.rb +52 -0
- data/lib/tungo/models/automation_run_proposal_auto.rb +21 -0
- data/lib/tungo/models/automation_run_proposal_code.rb +23 -0
- data/lib/tungo/models/automation_run_proposal_status.rb +59 -0
- data/lib/tungo/models/automation_run_proposal_status_auto.rb +21 -0
- data/lib/tungo/models/automation_run_proposal_status_code.rb +23 -0
- data/lib/tungo/models/automation_run_state.rb +23 -0
- data/lib/tungo/models/automation_run_step.rb +79 -0
- data/lib/tungo/models/automation_run_step_action.rb +20 -0
- data/lib/tungo/models/automation_run_step_output_error.rb +17 -0
- data/lib/tungo/models/automation_run_step_output_value.rb +20 -0
- data/lib/tungo/models/automation_run_step_skipped_by.rb +19 -0
- data/lib/tungo/models/automation_run_step_state.rb +22 -0
- data/lib/tungo/models/automation_run_trigger.rb +22 -0
- data/lib/tungo/models/automation_scenario.rb +82 -0
- data/lib/tungo/models/automation_scenario_action.rb +20 -0
- data/lib/tungo/models/automation_scenario_enabled.rb +16 -0
- data/lib/tungo/models/automation_scenario_input.rb +62 -0
- data/lib/tungo/models/automation_scenario_input_action.rb +20 -0
- data/lib/tungo/models/automation_scenario_input_auto_approve.rb +40 -0
- data/lib/tungo/models/automation_scenario_input_auto_approve_kind_item.rb +25 -0
- data/lib/tungo/models/automation_scenario_input_trigger.rb +30 -0
- data/lib/tungo/models/automation_scenario_input_trigger_option1.rb +24 -0
- data/lib/tungo/models/automation_scenario_input_trigger_option2.rb +19 -0
- data/lib/tungo/models/automation_scenario_input_trigger_option3.rb +26 -0
- data/lib/tungo/models/automation_scenario_input_trigger_option3_event.rb +26 -0
- data/lib/tungo/models/automation_scenario_input_trigger_option4.rb +15 -0
- data/lib/tungo/models/automation_scenario_run_input.rb +17 -0
- data/lib/tungo/models/automation_scenario_saved.rb +89 -0
- data/lib/tungo/models/automation_scenario_saved_action.rb +20 -0
- data/lib/tungo/models/automation_scenario_step.rb +32 -0
- data/lib/tungo/models/automation_scenario_step_action.rb +20 -0
- data/lib/tungo/models/automation_scenario_step_when.rb +19 -0
- data/lib/tungo/models/automation_schedule.rb +30 -0
- data/lib/tungo/models/automation_schedule_daily.rb +21 -0
- data/lib/tungo/models/automation_schedule_interval.rb +36 -0
- data/lib/tungo/models/automation_schedule_monthly.rb +40 -0
- data/lib/tungo/models/automation_schedule_weekly.rb +27 -0
- data/lib/tungo/models/automation_state.rb +36 -0
- data/lib/tungo/models/automation_state_input.rb +22 -0
- data/lib/tungo/models/automation_step.rb +34 -0
- data/lib/tungo/models/automation_step_action.rb +21 -0
- data/lib/tungo/models/automation_step_when.rb +21 -0
- data/lib/tungo/models/automation_trigger.rb +29 -0
- data/lib/tungo/models/automation_trigger_event.rb +27 -0
- data/lib/tungo/models/automation_trigger_event_event.rb +26 -0
- data/lib/tungo/models/automation_trigger_hook.rb +24 -0
- data/lib/tungo/models/automation_trigger_manual.rb +15 -0
- data/lib/tungo/models/automation_trigger_schedule.rb +24 -0
- data/lib/tungo/models/autonomy_level.rb +24 -0
- data/lib/tungo/models/bank_statement_job_request.rb +32 -0
- data/lib/tungo/models/batch_approve_job.rb +71 -0
- data/lib/tungo/models/batch_approve_job_kind.rb +21 -0
- data/lib/tungo/models/batch_approve_request.rb +47 -0
- data/lib/tungo/models/batch_approve_response.rb +72 -0
- data/lib/tungo/models/batch_approve_response_stopped.rb +21 -0
- data/lib/tungo/models/batch_approve_result.rb +54 -0
- data/lib/tungo/models/batch_approve_result_outcome.rb +30 -0
- data/lib/tungo/models/batch_job.rb +56 -0
- data/lib/tungo/models/batch_job_kind.rb +21 -0
- data/lib/tungo/models/batch_job_list.rb +22 -0
- data/lib/tungo/models/batch_job_report.rb +78 -0
- data/lib/tungo/models/batch_job_report_gateway.rb +20 -0
- data/lib/tungo/models/batch_job_row.rb +56 -0
- data/lib/tungo/models/batch_job_row_status.rb +21 -0
- data/lib/tungo/models/batch_manual_row.rb +30 -0
- data/lib/tungo/models/batch_row_question.rb +25 -0
- data/lib/tungo/models/batch_row_question_option_item.rb +20 -0
- data/lib/tungo/models/batch_stop_result.rb +20 -0
- data/lib/tungo/models/batch_summary.rb +65 -0
- data/lib/tungo/models/batch_summary_approve.rb +25 -0
- data/lib/tungo/models/batch_summary_approve_body.rb +20 -0
- data/lib/tungo/models/batch_summary_kind.rb +19 -0
- data/lib/tungo/models/batch_summary_proposal.rb +56 -0
- data/lib/tungo/models/batch_summary_proposal_outcome.rb +23 -0
- data/lib/tungo/models/batch_summary_totals.rb +63 -0
- data/lib/tungo/models/card_session.rb +29 -0
- data/lib/tungo/models/chat_answer_request.rb +25 -0
- data/lib/tungo/models/chat_assistant_message.rb +51 -0
- data/lib/tungo/models/chat_assistant_message_state.rb +18 -0
- data/lib/tungo/models/chat_attachment.rb +25 -0
- data/lib/tungo/models/chat_attachment_meta.rb +25 -0
- data/lib/tungo/models/chat_choice_answer.rb +21 -0
- data/lib/tungo/models/chat_choice_option.rb +25 -0
- data/lib/tungo/models/chat_choice_question.rb +30 -0
- data/lib/tungo/models/chat_citation.rb +30 -0
- data/lib/tungo/models/chat_dialog.rb +72 -0
- data/lib/tungo/models/chat_dialog_closed.rb +20 -0
- data/lib/tungo/models/chat_dialog_deleted.rb +21 -0
- data/lib/tungo/models/chat_dialog_list.rb +22 -0
- data/lib/tungo/models/chat_dialog_patch.rb +15 -0
- data/lib/tungo/models/chat_dialog_renamed.rb +21 -0
- data/lib/tungo/models/chat_dialog_summary.rb +37 -0
- data/lib/tungo/models/chat_event.rb +49 -0
- data/lib/tungo/models/chat_event_batch.rb +46 -0
- data/lib/tungo/models/chat_event_batch_outcome.rb +21 -0
- data/lib/tungo/models/chat_event_batch_report.rb +24 -0
- data/lib/tungo/models/chat_event_batch_stage.rb +18 -0
- data/lib/tungo/models/chat_event_choice.rb +26 -0
- data/lib/tungo/models/chat_event_citation.rb +35 -0
- data/lib/tungo/models/chat_event_done.rb +42 -0
- data/lib/tungo/models/chat_event_error.rb +24 -0
- data/lib/tungo/models/chat_event_progress.rb +26 -0
- data/lib/tungo/models/chat_event_proposal.rb +24 -0
- data/lib/tungo/models/chat_event_question.rb +25 -0
- data/lib/tungo/models/chat_event_status.rb +27 -0
- data/lib/tungo/models/chat_event_status_code.rb +20 -0
- data/lib/tungo/models/chat_event_text.rb +26 -0
- data/lib/tungo/models/chat_event_thinking.rb +20 -0
- data/lib/tungo/models/chat_event_tool.rb +35 -0
- data/lib/tungo/models/chat_event_tool_status.rb +18 -0
- data/lib/tungo/models/chat_history_block.rb +32 -0
- data/lib/tungo/models/chat_history_error.rb +27 -0
- data/lib/tungo/models/chat_history_error_code.rb +32 -0
- data/lib/tungo/models/chat_history_proposal.rb +20 -0
- data/lib/tungo/models/chat_history_question.rb +25 -0
- data/lib/tungo/models/chat_history_text.rb +20 -0
- data/lib/tungo/models/chat_history_tool.rb +35 -0
- data/lib/tungo/models/chat_history_tool_status.rb +17 -0
- data/lib/tungo/models/chat_message.rb +25 -0
- data/lib/tungo/models/chat_message_request.rb +64 -0
- data/lib/tungo/models/chat_message_request_mode.rb +19 -0
- data/lib/tungo/models/chat_pending_question.rb +20 -0
- data/lib/tungo/models/chat_question.rb +20 -0
- data/lib/tungo/models/chat_stop_result.rb +26 -0
- data/lib/tungo/models/chat_token_count.rb +35 -0
- data/lib/tungo/models/chat_token_count_request.rb +32 -0
- data/lib/tungo/models/chat_token_count_request_mode.rb +18 -0
- data/lib/tungo/models/chat_turn_error.rb +41 -0
- data/lib/tungo/models/chat_turn_error_code.rb +32 -0
- data/lib/tungo/models/chat_turn_error_limit_kind.rb +17 -0
- data/lib/tungo/models/chat_turn_proposal.rb +19 -0
- data/lib/tungo/models/chat_turn_result.rb +61 -0
- data/lib/tungo/models/chat_turn_usage.rb +36 -0
- data/lib/tungo/models/chat_usage.rb +31 -0
- data/lib/tungo/models/chat_user_message.rb +41 -0
- data/lib/tungo/models/company.rb +61 -0
- data/lib/tungo/models/company_autonomy.rb +43 -0
- data/lib/tungo/models/company_autonomy_custom.rb +20 -0
- data/lib/tungo/models/company_autonomy_defaults.rb +20 -0
- data/lib/tungo/models/company_autonomy_input.rb +29 -0
- data/lib/tungo/models/company_autonomy_input_levels.rb +72 -0
- data/lib/tungo/models/company_autonomy_input_levels_advance_report.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_bank_payment.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_bank_receipt.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_cash_order_in.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_cash_order_out.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_contract.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_counterparty.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_inventory_writeoff.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_purchase.rb +19 -0
- data/lib/tungo/models/company_autonomy_input_levels_sale.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels.rb +71 -0
- data/lib/tungo/models/company_autonomy_levels_advance_report.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_bank_payment.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_bank_receipt.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_cash_order_in.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_cash_order_out.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_contract.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_counterparty.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_inventory_writeoff.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_purchase.rb +19 -0
- data/lib/tungo/models/company_autonomy_levels_sale.rb +19 -0
- data/lib/tungo/models/company_counts.rb +23 -0
- data/lib/tungo/models/company_legal_form.rb +19 -0
- data/lib/tungo/models/company_list_item.rb +65 -0
- data/lib/tungo/models/company_permission.rb +26 -0
- data/lib/tungo/models/company_status.rb +19 -0
- data/lib/tungo/models/data_gap_form.rb +30 -0
- data/lib/tungo/models/data_gap_form_status.rb +66 -0
- data/lib/tungo/models/data_gap_item.rb +49 -0
- data/lib/tungo/models/data_gap_object.rb +25 -0
- data/lib/tungo/models/data_gaps.rb +41 -0
- data/lib/tungo/models/data_gaps_summary.rb +40 -0
- data/lib/tungo/models/direct_bank_poll_result.rb +25 -0
- data/lib/tungo/models/epay_return_links.rb +21 -0
- data/lib/tungo/models/error.rb +28 -0
- data/lib/tungo/models/error_detail.rb +74 -0
- data/lib/tungo/models/error_detail_allowed_method_item.rb +20 -0
- data/lib/tungo/models/error_detail_type.rb +27 -0
- data/lib/tungo/models/esf_incoming_action.rb +22 -0
- data/lib/tungo/models/esf_incoming_item.rb +76 -0
- data/lib/tungo/models/esf_incoming_match.rb +32 -0
- data/lib/tungo/models/esf_incoming_match_document.rb +29 -0
- data/lib/tungo/models/esf_incoming_match_status.rb +21 -0
- data/lib/tungo/models/esf_incoming_report.rb +41 -0
- data/lib/tungo/models/esf_outgoing_item.rb +53 -0
- data/lib/tungo/models/esf_outgoing_item_esf.rb +35 -0
- data/lib/tungo/models/esf_outgoing_item_tax_invoice.rb +25 -0
- data/lib/tungo/models/esf_outgoing_report.rb +36 -0
- data/lib/tungo/models/esf_purchases_job_request.rb +26 -0
- data/lib/tungo/models/esf_sale.rb +44 -0
- data/lib/tungo/models/esf_verdict.rb +20 -0
- data/lib/tungo/models/feed_action.rb +49 -0
- data/lib/tungo/models/feed_action_action.rb +23 -0
- data/lib/tungo/models/feed_action_method.rb +17 -0
- data/lib/tungo/models/feed_item.rb +91 -0
- data/lib/tungo/models/feed_page.rb +30 -0
- data/lib/tungo/models/feed_section.rb +20 -0
- data/lib/tungo/models/feed_section_counts.rb +25 -0
- data/lib/tungo/models/feed_section_titles.rb +25 -0
- data/lib/tungo/models/field_error.rb +28 -0
- data/lib/tungo/models/field_error_code.rb +28 -0
- data/lib/tungo/models/financial_notes.rb +50 -0
- data/lib/tungo/models/financial_notes_organization.rb +20 -0
- data/lib/tungo/models/financial_notes_section.rb +55 -0
- data/lib/tungo/models/financial_notes_table.rb +25 -0
- data/lib/tungo/models/financial_notes_table_row_item_item.rb +20 -0
- data/lib/tungo/models/financial_notes_to_fill.rb +29 -0
- data/lib/tungo/models/form_missing_action.rb +23 -0
- data/lib/tungo/models/form_missing_data.rb +39 -0
- data/lib/tungo/models/form_onec_object.rb +20 -0
- data/lib/tungo/models/get_workspace_platform_audit_response.rb +22 -0
- data/lib/tungo/models/get_workspace_platform_ledger_response.rb +22 -0
- data/lib/tungo/models/isna_file.rb +12 -0
- data/lib/tungo/models/isna_response.rb +20 -0
- data/lib/tungo/models/isna_summary.rb +95 -0
- data/lib/tungo/models/isna_summary_download.rb +20 -0
- data/lib/tungo/models/isna_summary_format.rb +25 -0
- data/lib/tungo/models/isna_summary_period.rb +31 -0
- data/lib/tungo/models/isna_summary_reconciliation.rb +19 -0
- data/lib/tungo/models/list_companies_response.rb +16 -0
- data/lib/tungo/models/list_company_automations_hooks_response.rb +15 -0
- data/lib/tungo/models/list_company_automations_runs_response.rb +22 -0
- data/lib/tungo/models/list_company_automations_scenarios_response.rb +15 -0
- data/lib/tungo/models/list_usage_rates_response.rb +15 -0
- data/lib/tungo/models/list_workspace_platform_requests_response.rb +22 -0
- data/lib/tungo/models/list_workspace_webhooks_endpoint_attempts_response.rb +22 -0
- data/lib/tungo/models/list_workspace_webhooks_endpoint_attempts_status.rb +20 -0
- data/lib/tungo/models/list_workspace_webhooks_endpoints_response.rb +22 -0
- data/lib/tungo/models/list_workspace_webhooks_event_types_response.rb +15 -0
- data/lib/tungo/models/list_workspace_webhooks_message_attempts_response.rb +22 -0
- data/lib/tungo/models/list_workspace_webhooks_messages_response.rb +22 -0
- data/lib/tungo/models/list_workspaces_response.rb +15 -0
- data/lib/tungo/models/money.rb +27 -0
- data/lib/tungo/models/my_workspace.rb +37 -0
- data/lib/tungo/models/my_workspace_kind.rb +19 -0
- data/lib/tungo/models/one_c_capability.rb +33 -0
- data/lib/tungo/models/one_c_capability_id.rb +26 -0
- data/lib/tungo/models/one_c_capability_status.rb +20 -0
- data/lib/tungo/models/one_c_gateway.rb +21 -0
- data/lib/tungo/models/one_c_status.rb +32 -0
- data/lib/tungo/models/one_c_status_last_check.rb +36 -0
- data/lib/tungo/models/one_c_status_last_check_verdict.rb +18 -0
- data/lib/tungo/models/pay_form.rb +34 -0
- data/lib/tungo/models/payment_method.rb +42 -0
- data/lib/tungo/models/platform_account.rb +60 -0
- data/lib/tungo/models/platform_account_blocked_reason.rb +19 -0
- data/lib/tungo/models/platform_account_purchase_limits.rb +25 -0
- data/lib/tungo/models/platform_auto_reload.rb +32 -0
- data/lib/tungo/models/platform_ledger_entry.rb +63 -0
- data/lib/tungo/models/platform_ledger_entry_kind.rb +20 -0
- data/lib/tungo/models/platform_limits.rb +25 -0
- data/lib/tungo/models/platform_limits_concurrent_turns.rb +20 -0
- data/lib/tungo/models/platform_limits_files.rb +56 -0
- data/lib/tungo/models/platform_limits_rate.rb +20 -0
- data/lib/tungo/models/platform_limits_rate_key.rb +26 -0
- data/lib/tungo/models/platform_limits_rate_workspace.rb +26 -0
- data/lib/tungo/models/platform_purchase.rb +33 -0
- data/lib/tungo/models/platform_purchase_input.rb +22 -0
- data/lib/tungo/models/platform_purchase_status.rb +26 -0
- data/lib/tungo/models/platform_request.rb +71 -0
- data/lib/tungo/models/platform_settings_input.rb +26 -0
- data/lib/tungo/models/platform_settings_input_auto_reload.rb +31 -0
- data/lib/tungo/models/platform_usage.rb +45 -0
- data/lib/tungo/models/platform_usage_by_company_item.rb +45 -0
- data/lib/tungo/models/platform_usage_by_day_item.rb +45 -0
- data/lib/tungo/models/platform_usage_by_key_item.rb +45 -0
- data/lib/tungo/models/platform_usage_by_model_item.rb +45 -0
- data/lib/tungo/models/platform_usage_totals.rb +40 -0
- data/lib/tungo/models/proposal_account.rb +32 -0
- data/lib/tungo/models/proposal_action.rb +52 -0
- data/lib/tungo/models/proposal_action_action.rb +19 -0
- data/lib/tungo/models/proposal_advance_offset.rb +33 -0
- data/lib/tungo/models/proposal_approval.rb +32 -0
- data/lib/tungo/models/proposal_card.rb +158 -0
- data/lib/tungo/models/proposal_contract.rb +35 -0
- data/lib/tungo/models/proposal_decision.rb +43 -0
- data/lib/tungo/models/proposal_document.rb +26 -0
- data/lib/tungo/models/proposal_header.rb +71 -0
- data/lib/tungo/models/proposal_history_event.rb +35 -0
- data/lib/tungo/models/proposal_kind.rb +28 -0
- data/lib/tungo/models/proposal_line.rb +66 -0
- data/lib/tungo/models/proposal_line_item.rb +20 -0
- data/lib/tungo/models/proposal_line_section.rb +17 -0
- data/lib/tungo/models/proposal_list_item.rb +100 -0
- data/lib/tungo/models/proposal_page.rb +33 -0
- data/lib/tungo/models/proposal_party.rb +26 -0
- data/lib/tungo/models/proposal_posting.rb +38 -0
- data/lib/tungo/models/proposal_result.rb +31 -0
- data/lib/tungo/models/proposal_source.rb +21 -0
- data/lib/tungo/models/proposal_source_channel.rb +21 -0
- data/lib/tungo/models/proposal_status.rb +25 -0
- data/lib/tungo/models/reject_request.rb +23 -0
- data/lib/tungo/models/statement_day.rb +66 -0
- data/lib/tungo/models/statement_day_counts.rb +40 -0
- data/lib/tungo/models/statement_day_kind.rb +21 -0
- data/lib/tungo/models/statement_day_list.rb +22 -0
- data/lib/tungo/models/tax_form_cell.rb +77 -0
- data/lib/tungo/models/tax_form_cell_cause.rb +44 -0
- data/lib/tungo/models/tax_form_cell_diff.rb +20 -0
- data/lib/tungo/models/tax_form_cell_one_c_value.rb +22 -0
- data/lib/tungo/models/tax_form_cell_ours_value.rb +22 -0
- data/lib/tungo/models/tax_form_cell_status.rb +21 -0
- data/lib/tungo/models/tax_form_cell_type.rb +22 -0
- data/lib/tungo/models/tax_form_due.rb +57 -0
- data/lib/tungo/models/tax_form_list_item.rb +67 -0
- data/lib/tungo/models/tax_form_list_item_coverage.rb +17 -0
- data/lib/tungo/models/tax_form_list_item_group.rb +20 -0
- data/lib/tungo/models/tax_form_list_item_required.rb +19 -0
- data/lib/tungo/models/tax_form_only_in_one_c.rb +20 -0
- data/lib/tungo/models/tax_form_period.rb +36 -0
- data/lib/tungo/models/tax_form_reference.rb +30 -0
- data/lib/tungo/models/tax_form_totals.rb +30 -0
- data/lib/tungo/models/tax_form_view.rb +83 -0
- data/lib/tungo/models/tax_form_view_coverage.rb +17 -0
- data/lib/tungo/models/tax_form_view_uncovered.rb +20 -0
- data/lib/tungo/models/tax_form_view_uncovered_cell_item.rb +20 -0
- data/lib/tungo/models/tax_forms_year.rb +31 -0
- data/lib/tungo/models/tax_period_kind.rb +21 -0
- data/lib/tungo/models/tax_period_ref.rb +21 -0
- data/lib/tungo/models/usage_rate.rb +42 -0
- data/lib/tungo/models/webhook_attempt.rb +56 -0
- data/lib/tungo/models/webhook_attempt_status.rb +20 -0
- data/lib/tungo/models/webhook_attempt_trigger.rb +17 -0
- data/lib/tungo/models/webhook_endpoint.rb +51 -0
- data/lib/tungo/models/webhook_endpoint_create.rb +39 -0
- data/lib/tungo/models/webhook_endpoint_created.rb +66 -0
- data/lib/tungo/models/webhook_endpoint_patch.rb +39 -0
- data/lib/tungo/models/webhook_envelope.rb +41 -0
- data/lib/tungo/models/webhook_event.rb +65 -0
- data/lib/tungo/models/webhook_event_api_key_cap_reached.rb +42 -0
- data/lib/tungo/models/webhook_event_api_key_cap_reached_data.rb +40 -0
- data/lib/tungo/models/webhook_event_api_key_expiring.rb +42 -0
- data/lib/tungo/models/webhook_event_api_key_expiring_data.rb +30 -0
- data/lib/tungo/models/webhook_event_automation_run_completed.rb +42 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data.rb +110 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data_output_error.rb +18 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data_output_value.rb +20 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item.rb +53 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto.rb +20 -0
- data/lib/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto_code.rb +22 -0
- data/lib/tungo/models/webhook_event_automation_run_failed.rb +42 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data.rb +110 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data_output_error.rb +18 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data_output_value.rb +20 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item.rb +53 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto.rb +20 -0
- data/lib/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto_code.rb +22 -0
- data/lib/tungo/models/webhook_event_automation_run_notice.rb +42 -0
- data/lib/tungo/models/webhook_event_automation_run_notice_data.rb +60 -0
- data/lib/tungo/models/webhook_event_automation_run_notice_data_reason.rb +19 -0
- data/lib/tungo/models/webhook_event_automation_write_unknown.rb +42 -0
- data/lib/tungo/models/webhook_event_automation_write_unknown_data.rb +37 -0
- data/lib/tungo/models/webhook_event_bank_statement_received.rb +41 -0
- data/lib/tungo/models/webhook_event_bank_statement_received_data.rb +40 -0
- data/lib/tungo/models/webhook_event_bank_statement_received_data_source.rb +17 -0
- data/lib/tungo/models/webhook_event_batch_completed.rb +42 -0
- data/lib/tungo/models/webhook_event_batch_completed_data.rb +65 -0
- data/lib/tungo/models/webhook_event_batch_completed_data_kind.rb +17 -0
- data/lib/tungo/models/webhook_event_batch_failed.rb +41 -0
- data/lib/tungo/models/webhook_event_batch_failed_data.rb +25 -0
- data/lib/tungo/models/webhook_event_batch_failed_data_kind.rb +17 -0
- data/lib/tungo/models/webhook_event_chat_turn_completed.rb +42 -0
- data/lib/tungo/models/webhook_event_chat_turn_completed_data.rb +41 -0
- data/lib/tungo/models/webhook_event_chat_turn_completed_data_usage.rb +35 -0
- data/lib/tungo/models/webhook_event_esf_incoming_received.rb +41 -0
- data/lib/tungo/models/webhook_event_esf_incoming_received_data.rb +40 -0
- data/lib/tungo/models/webhook_event_onec_connection_changed.rb +42 -0
- data/lib/tungo/models/webhook_event_onec_connection_changed_data.rb +35 -0
- data/lib/tungo/models/webhook_event_onec_connection_changed_data_reason.rb +24 -0
- data/lib/tungo/models/webhook_event_onec_connection_changed_data_state.rb +17 -0
- data/lib/tungo/models/webhook_event_payment_failed.rb +40 -0
- data/lib/tungo/models/webhook_event_payment_failed_data.rb +41 -0
- data/lib/tungo/models/webhook_event_payment_succeeded.rb +40 -0
- data/lib/tungo/models/webhook_event_payment_succeeded_data.rb +41 -0
- data/lib/tungo/models/webhook_event_ping.rb +42 -0
- data/lib/tungo/models/webhook_event_ping_data.rb +11 -0
- data/lib/tungo/models/webhook_event_platform_balance_exhausted.rb +41 -0
- data/lib/tungo/models/webhook_event_platform_balance_exhausted_data.rb +20 -0
- data/lib/tungo/models/webhook_event_platform_balance_low.rb +41 -0
- data/lib/tungo/models/webhook_event_platform_balance_low_data.rb +20 -0
- data/lib/tungo/models/webhook_event_platform_cap_threshold_reached.rb +41 -0
- data/lib/tungo/models/webhook_event_platform_cap_threshold_reached_data.rb +30 -0
- data/lib/tungo/models/webhook_event_proposal_awaiting_approval.rb +40 -0
- data/lib/tungo/models/webhook_event_proposal_awaiting_approval_data.rb +40 -0
- data/lib/tungo/models/webhook_event_proposal_failed.rb +41 -0
- data/lib/tungo/models/webhook_event_proposal_failed_data.rb +30 -0
- data/lib/tungo/models/webhook_event_proposal_rejected.rb +41 -0
- data/lib/tungo/models/webhook_event_proposal_rejected_data.rb +30 -0
- data/lib/tungo/models/webhook_event_proposal_written.rb +41 -0
- data/lib/tungo/models/webhook_event_proposal_written_data.rb +35 -0
- data/lib/tungo/models/webhook_event_type.rb +30 -0
- data/lib/tungo/models/webhook_message.rb +31 -0
- data/lib/tungo/models/webhook_resend.rb +15 -0
- data/lib/tungo/models/webhook_secret.rb +24 -0
- data/lib/tungo/models/webhook_secret_rotated.rb +29 -0
- data/lib/tungo/models/webhook_usage.rb +31 -0
- data/lib/tungo/models/workspace_plan.rb +25 -0
- data/lib/tungo/models.rb +497 -0
- data/lib/tungo/money.rb +112 -0
- data/lib/tungo/page.rb +94 -0
- data/lib/tungo/request_options.rb +57 -0
- data/lib/tungo/resources/api_keys.rb +74 -0
- data/lib/tungo/resources/automations.rb +681 -0
- data/lib/tungo/resources/batches.rb +242 -0
- data/lib/tungo/resources/chat.rb +355 -0
- data/lib/tungo/resources/companies.rb +48 -0
- data/lib/tungo/resources/esf.rb +148 -0
- data/lib/tungo/resources/feed.rb +91 -0
- data/lib/tungo/resources/forms.rb +118 -0
- data/lib/tungo/resources/onec.rb +33 -0
- data/lib/tungo/resources/platform.rb +316 -0
- data/lib/tungo/resources/proposals.rb +230 -0
- data/lib/tungo/resources/webhooks.rb +423 -0
- data/lib/tungo/resources/workspaces.rb +31 -0
- data/lib/tungo/resources.rb +88 -0
- data/lib/tungo/stream.rb +189 -0
- data/lib/tungo/transport.rb +373 -0
- data/lib/tungo/version.rb +6 -0
- data/lib/tungo/webhooks.rb +155 -0
- data/lib/tungo-sdk.rb +4 -0
- data/lib/tungo.rb +34 -0
- data/sig/manifest.yaml +8 -0
- data/sig/tungo/contract.rbs +8 -0
- data/sig/tungo/models/api_key.rbs +32 -0
- data/sig/tungo/models/api_key_create.rbs +21 -0
- data/sig/tungo/models/api_key_create_write_kind_item.rbs +22 -0
- data/sig/tungo/models/api_key_created.rbs +35 -0
- data/sig/tungo/models/api_key_created_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_created_status.rbs +15 -0
- data/sig/tungo/models/api_key_details.rbs +33 -0
- data/sig/tungo/models/api_key_details_blocked_reason.rbs +21 -0
- data/sig/tungo/models/api_key_details_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_details_status.rbs +15 -0
- data/sig/tungo/models/api_key_month.rbs +14 -0
- data/sig/tungo/models/api_key_patch.rbs +21 -0
- data/sig/tungo/models/api_key_patch_write_kind_item.rbs +22 -0
- data/sig/tungo/models/api_key_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_person.rbs +14 -0
- data/sig/tungo/models/api_key_roll.rbs +12 -0
- data/sig/tungo/models/api_key_rolled.rbs +34 -0
- data/sig/tungo/models/api_key_rolled_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_rolled_status.rbs +15 -0
- data/sig/tungo/models/api_key_self.rbs +36 -0
- data/sig/tungo/models/api_key_self_blocked_reason.rbs +21 -0
- data/sig/tungo/models/api_key_self_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_self_rate_limit.rbs +14 -0
- data/sig/tungo/models/api_key_self_status.rbs +15 -0
- data/sig/tungo/models/api_key_self_workspace.rbs +14 -0
- data/sig/tungo/models/api_key_self_workspace_kind.rbs +14 -0
- data/sig/tungo/models/api_key_status.rbs +15 -0
- data/sig/tungo/models/api_key_transfer.rbs +12 -0
- data/sig/tungo/models/api_key_updated.rbs +33 -0
- data/sig/tungo/models/api_key_updated_permission_item.rbs +18 -0
- data/sig/tungo/models/api_key_updated_status.rbs +15 -0
- data/sig/tungo/models/api_key_usage.rbs +19 -0
- data/sig/tungo/models/api_key_usage_by_company_item.rbs +14 -0
- data/sig/tungo/models/api_key_usage_by_day_item.rbs +14 -0
- data/sig/tungo/models/api_key_usage_by_model_item.rbs +14 -0
- data/sig/tungo/models/api_key_usage_totals.rbs +17 -0
- data/sig/tungo/models/api_key_warning.rbs +13 -0
- data/sig/tungo/models/api_key_warning_code.rbs +15 -0
- data/sig/tungo/models/approve_batch_company_proposals_response.rbs +12 -0
- data/sig/tungo/models/approve_error.rbs +14 -0
- data/sig/tungo/models/approve_error_error.rbs +27 -0
- data/sig/tungo/models/approve_request.rbs +14 -0
- data/sig/tungo/models/audit_entry.rbs +21 -0
- data/sig/tungo/models/audit_entry_action.rbs +142 -0
- data/sig/tungo/models/audit_entry_actor.rbs +14 -0
- data/sig/tungo/models/audit_entry_actor_type.rbs +14 -0
- data/sig/tungo/models/audit_entry_target.rbs +13 -0
- data/sig/tungo/models/automation_auto_approve.rbs +15 -0
- data/sig/tungo/models/automation_auto_approve_kind_item.rbs +21 -0
- data/sig/tungo/models/automation_deleted.rbs +13 -0
- data/sig/tungo/models/automation_event_filter.rbs +12 -0
- data/sig/tungo/models/automation_filter_condition.rbs +14 -0
- data/sig/tungo/models/automation_filter_condition_op.rbs +20 -0
- data/sig/tungo/models/automation_filter_condition_value.rbs +12 -0
- data/sig/tungo/models/automation_filter_condition_value_option4_item.rbs +12 -0
- data/sig/tungo/models/automation_hook.rbs +21 -0
- data/sig/tungo/models/automation_hook_accepted.rbs +15 -0
- data/sig/tungo/models/automation_hook_create.rbs +15 -0
- data/sig/tungo/models/automation_hook_event.rbs +21 -0
- data/sig/tungo/models/automation_hook_event_encoding.rbs +13 -0
- data/sig/tungo/models/automation_hook_event_source.rbs +13 -0
- data/sig/tungo/models/automation_hook_patch.rbs +16 -0
- data/sig/tungo/models/automation_hook_test_input.rbs +14 -0
- data/sig/tungo/models/automation_hook_test_result.rbs +21 -0
- data/sig/tungo/models/automation_hook_test_result_external_id_source.rbs +15 -0
- data/sig/tungo/models/automation_hook_test_scenario.rbs +18 -0
- data/sig/tungo/models/automation_hook_test_scenario_failed_condition.rbs +14 -0
- data/sig/tungo/models/automation_hook_with_token.rbs +24 -0
- data/sig/tungo/models/automation_manual_run.rbs +42 -0
- data/sig/tungo/models/automation_manual_run_output_error.rbs +13 -0
- data/sig/tungo/models/automation_manual_run_output_value.rbs +12 -0
- data/sig/tungo/models/automation_manual_run_state.rbs +17 -0
- data/sig/tungo/models/automation_manual_run_trigger.rbs +16 -0
- data/sig/tungo/models/automation_output_field.rbs +12 -0
- data/sig/tungo/models/automation_output_field_option1.rbs +13 -0
- data/sig/tungo/models/automation_output_field_option2.rbs +13 -0
- data/sig/tungo/models/automation_output_field_option3.rbs +13 -0
- data/sig/tungo/models/automation_output_field_option4.rbs +13 -0
- data/sig/tungo/models/automation_output_field_option5.rbs +14 -0
- data/sig/tungo/models/automation_output_spec.rbs +11 -0
- data/sig/tungo/models/automation_run.rbs +41 -0
- data/sig/tungo/models/automation_run_detail.rbs +42 -0
- data/sig/tungo/models/automation_run_detail_output_error.rbs +13 -0
- data/sig/tungo/models/automation_run_detail_output_value.rbs +12 -0
- data/sig/tungo/models/automation_run_detail_state.rbs +17 -0
- data/sig/tungo/models/automation_run_detail_trigger.rbs +16 -0
- data/sig/tungo/models/automation_run_output_error.rbs +13 -0
- data/sig/tungo/models/automation_run_output_value.rbs +12 -0
- data/sig/tungo/models/automation_run_proposal.rbs +18 -0
- data/sig/tungo/models/automation_run_proposal_auto.rbs +15 -0
- data/sig/tungo/models/automation_run_proposal_code.rbs +17 -0
- data/sig/tungo/models/automation_run_proposal_status.rbs +19 -0
- data/sig/tungo/models/automation_run_proposal_status_auto.rbs +15 -0
- data/sig/tungo/models/automation_run_proposal_status_code.rbs +17 -0
- data/sig/tungo/models/automation_run_state.rbs +17 -0
- data/sig/tungo/models/automation_run_step.rbs +24 -0
- data/sig/tungo/models/automation_run_step_action.rbs +15 -0
- data/sig/tungo/models/automation_run_step_output_error.rbs +13 -0
- data/sig/tungo/models/automation_run_step_output_value.rbs +12 -0
- data/sig/tungo/models/automation_run_step_skipped_by.rbs +15 -0
- data/sig/tungo/models/automation_run_step_state.rbs +16 -0
- data/sig/tungo/models/automation_run_trigger.rbs +16 -0
- data/sig/tungo/models/automation_scenario.rbs +24 -0
- data/sig/tungo/models/automation_scenario_action.rbs +14 -0
- data/sig/tungo/models/automation_scenario_enabled.rbs +12 -0
- data/sig/tungo/models/automation_scenario_input.rbs +19 -0
- data/sig/tungo/models/automation_scenario_input_action.rbs +14 -0
- data/sig/tungo/models/automation_scenario_input_auto_approve.rbs +15 -0
- data/sig/tungo/models/automation_scenario_input_auto_approve_kind_item.rbs +21 -0
- data/sig/tungo/models/automation_scenario_input_trigger.rbs +12 -0
- data/sig/tungo/models/automation_scenario_input_trigger_option1.rbs +14 -0
- data/sig/tungo/models/automation_scenario_input_trigger_option2.rbs +13 -0
- data/sig/tungo/models/automation_scenario_input_trigger_option3.rbs +14 -0
- data/sig/tungo/models/automation_scenario_input_trigger_option3_event.rbs +20 -0
- data/sig/tungo/models/automation_scenario_input_trigger_option4.rbs +12 -0
- data/sig/tungo/models/automation_scenario_run_input.rbs +12 -0
- data/sig/tungo/models/automation_scenario_saved.rbs +25 -0
- data/sig/tungo/models/automation_scenario_saved_action.rbs +14 -0
- data/sig/tungo/models/automation_scenario_step.rbs +15 -0
- data/sig/tungo/models/automation_scenario_step_action.rbs +15 -0
- data/sig/tungo/models/automation_scenario_step_when.rbs +15 -0
- data/sig/tungo/models/automation_schedule.rbs +12 -0
- data/sig/tungo/models/automation_schedule_daily.rbs +13 -0
- data/sig/tungo/models/automation_schedule_interval.rbs +16 -0
- data/sig/tungo/models/automation_schedule_monthly.rbs +16 -0
- data/sig/tungo/models/automation_schedule_weekly.rbs +14 -0
- data/sig/tungo/models/automation_state.rbs +16 -0
- data/sig/tungo/models/automation_state_input.rbs +13 -0
- data/sig/tungo/models/automation_step.rbs +15 -0
- data/sig/tungo/models/automation_step_action.rbs +15 -0
- data/sig/tungo/models/automation_step_when.rbs +15 -0
- data/sig/tungo/models/automation_trigger.rbs +12 -0
- data/sig/tungo/models/automation_trigger_event.rbs +14 -0
- data/sig/tungo/models/automation_trigger_event_event.rbs +20 -0
- data/sig/tungo/models/automation_trigger_hook.rbs +14 -0
- data/sig/tungo/models/automation_trigger_manual.rbs +12 -0
- data/sig/tungo/models/automation_trigger_schedule.rbs +14 -0
- data/sig/tungo/models/autonomy_level.rbs +18 -0
- data/sig/tungo/models/bank_statement_job_request.rbs +15 -0
- data/sig/tungo/models/batch_approve_job.rbs +23 -0
- data/sig/tungo/models/batch_approve_job_kind.rbs +15 -0
- data/sig/tungo/models/batch_approve_request.rbs +18 -0
- data/sig/tungo/models/batch_approve_response.rbs +23 -0
- data/sig/tungo/models/batch_approve_response_stopped.rbs +13 -0
- data/sig/tungo/models/batch_approve_result.rbs +19 -0
- data/sig/tungo/models/batch_approve_result_outcome.rbs +24 -0
- data/sig/tungo/models/batch_job.rbs +20 -0
- data/sig/tungo/models/batch_job_kind.rbs +15 -0
- data/sig/tungo/models/batch_job_list.rbs +13 -0
- data/sig/tungo/models/batch_job_report.rbs +24 -0
- data/sig/tungo/models/batch_job_report_gateway.rbs +13 -0
- data/sig/tungo/models/batch_job_row.rbs +20 -0
- data/sig/tungo/models/batch_job_row_status.rbs +16 -0
- data/sig/tungo/models/batch_manual_row.rbs +15 -0
- data/sig/tungo/models/batch_row_question.rbs +14 -0
- data/sig/tungo/models/batch_row_question_option_item.rbs +13 -0
- data/sig/tungo/models/batch_stop_result.rbs +13 -0
- data/sig/tungo/models/batch_summary.rbs +22 -0
- data/sig/tungo/models/batch_summary_approve.rbs +14 -0
- data/sig/tungo/models/batch_summary_approve_body.rbs +13 -0
- data/sig/tungo/models/batch_summary_kind.rbs +15 -0
- data/sig/tungo/models/batch_summary_proposal.rbs +20 -0
- data/sig/tungo/models/batch_summary_proposal_outcome.rbs +17 -0
- data/sig/tungo/models/batch_summary_totals.rbs +22 -0
- data/sig/tungo/models/card_session.rbs +14 -0
- data/sig/tungo/models/chat_answer_request.rbs +14 -0
- data/sig/tungo/models/chat_assistant_message.rbs +19 -0
- data/sig/tungo/models/chat_assistant_message_state.rbs +14 -0
- data/sig/tungo/models/chat_attachment.rbs +14 -0
- data/sig/tungo/models/chat_attachment_meta.rbs +14 -0
- data/sig/tungo/models/chat_choice_answer.rbs +13 -0
- data/sig/tungo/models/chat_choice_option.rbs +14 -0
- data/sig/tungo/models/chat_choice_question.rbs +15 -0
- data/sig/tungo/models/chat_citation.rbs +15 -0
- data/sig/tungo/models/chat_dialog.rbs +23 -0
- data/sig/tungo/models/chat_dialog_closed.rbs +13 -0
- data/sig/tungo/models/chat_dialog_deleted.rbs +13 -0
- data/sig/tungo/models/chat_dialog_list.rbs +13 -0
- data/sig/tungo/models/chat_dialog_patch.rbs +12 -0
- data/sig/tungo/models/chat_dialog_renamed.rbs +13 -0
- data/sig/tungo/models/chat_dialog_summary.rbs +16 -0
- data/sig/tungo/models/chat_event.rbs +12 -0
- data/sig/tungo/models/chat_event_batch.rbs +18 -0
- data/sig/tungo/models/chat_event_batch_outcome.rbs +16 -0
- data/sig/tungo/models/chat_event_batch_report.rbs +14 -0
- data/sig/tungo/models/chat_event_batch_stage.rbs +14 -0
- data/sig/tungo/models/chat_event_choice.rbs +14 -0
- data/sig/tungo/models/chat_event_citation.rbs +16 -0
- data/sig/tungo/models/chat_event_done.rbs +17 -0
- data/sig/tungo/models/chat_event_error.rbs +14 -0
- data/sig/tungo/models/chat_event_progress.rbs +14 -0
- data/sig/tungo/models/chat_event_proposal.rbs +14 -0
- data/sig/tungo/models/chat_event_question.rbs +14 -0
- data/sig/tungo/models/chat_event_status.rbs +14 -0
- data/sig/tungo/models/chat_event_status_code.rbs +14 -0
- data/sig/tungo/models/chat_event_text.rbs +14 -0
- data/sig/tungo/models/chat_event_thinking.rbs +13 -0
- data/sig/tungo/models/chat_event_tool.rbs +16 -0
- data/sig/tungo/models/chat_event_tool_status.rbs +14 -0
- data/sig/tungo/models/chat_history_block.rbs +12 -0
- data/sig/tungo/models/chat_history_error.rbs +14 -0
- data/sig/tungo/models/chat_history_error_code.rbs +26 -0
- data/sig/tungo/models/chat_history_proposal.rbs +13 -0
- data/sig/tungo/models/chat_history_question.rbs +14 -0
- data/sig/tungo/models/chat_history_text.rbs +13 -0
- data/sig/tungo/models/chat_history_tool.rbs +16 -0
- data/sig/tungo/models/chat_history_tool_status.rbs +13 -0
- data/sig/tungo/models/chat_message.rbs +12 -0
- data/sig/tungo/models/chat_message_request.rbs +20 -0
- data/sig/tungo/models/chat_message_request_mode.rbs +14 -0
- data/sig/tungo/models/chat_pending_question.rbs +13 -0
- data/sig/tungo/models/chat_question.rbs +13 -0
- data/sig/tungo/models/chat_stop_result.rbs +14 -0
- data/sig/tungo/models/chat_token_count.rbs +16 -0
- data/sig/tungo/models/chat_token_count_request.rbs +15 -0
- data/sig/tungo/models/chat_token_count_request_mode.rbs +14 -0
- data/sig/tungo/models/chat_turn_error.rbs +16 -0
- data/sig/tungo/models/chat_turn_error_code.rbs +26 -0
- data/sig/tungo/models/chat_turn_error_limit_kind.rbs +13 -0
- data/sig/tungo/models/chat_turn_proposal.rbs +13 -0
- data/sig/tungo/models/chat_turn_result.rbs +21 -0
- data/sig/tungo/models/chat_turn_usage.rbs +16 -0
- data/sig/tungo/models/chat_usage.rbs +15 -0
- data/sig/tungo/models/chat_user_message.rbs +17 -0
- data/sig/tungo/models/company.rbs +21 -0
- data/sig/tungo/models/company_autonomy.rbs +17 -0
- data/sig/tungo/models/company_autonomy_custom.rbs +13 -0
- data/sig/tungo/models/company_autonomy_defaults.rbs +13 -0
- data/sig/tungo/models/company_autonomy_input.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels.rbs +21 -0
- data/sig/tungo/models/company_autonomy_input_levels_advance_report.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_bank_payment.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_bank_receipt.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_cash_order_in.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_cash_order_out.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_contract.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_counterparty.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_inventory_writeoff.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_purchase.rbs +14 -0
- data/sig/tungo/models/company_autonomy_input_levels_sale.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels.rbs +21 -0
- data/sig/tungo/models/company_autonomy_levels_advance_report.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_bank_payment.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_bank_receipt.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_cash_order_in.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_cash_order_out.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_contract.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_counterparty.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_inventory_writeoff.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_purchase.rbs +14 -0
- data/sig/tungo/models/company_autonomy_levels_sale.rbs +14 -0
- data/sig/tungo/models/company_counts.rbs +13 -0
- data/sig/tungo/models/company_legal_form.rbs +15 -0
- data/sig/tungo/models/company_list_item.rbs +22 -0
- data/sig/tungo/models/company_permission.rbs +20 -0
- data/sig/tungo/models/company_status.rbs +14 -0
- data/sig/tungo/models/data_gap_form.rbs +15 -0
- data/sig/tungo/models/data_gap_form_status.rbs +22 -0
- data/sig/tungo/models/data_gap_item.rbs +19 -0
- data/sig/tungo/models/data_gap_object.rbs +14 -0
- data/sig/tungo/models/data_gaps.rbs +17 -0
- data/sig/tungo/models/data_gaps_summary.rbs +17 -0
- data/sig/tungo/models/direct_bank_poll_result.rbs +14 -0
- data/sig/tungo/models/epay_return_links.rbs +13 -0
- data/sig/tungo/models/error.rbs +14 -0
- data/sig/tungo/models/error_detail.rbs +20 -0
- data/sig/tungo/models/error_detail_allowed_method_item.rbs +16 -0
- data/sig/tungo/models/error_detail_type.rbs +21 -0
- data/sig/tungo/models/esf_incoming_action.rbs +16 -0
- data/sig/tungo/models/esf_incoming_item.rbs +25 -0
- data/sig/tungo/models/esf_incoming_match.rbs +15 -0
- data/sig/tungo/models/esf_incoming_match_document.rbs +15 -0
- data/sig/tungo/models/esf_incoming_match_status.rbs +16 -0
- data/sig/tungo/models/esf_incoming_report.rbs +17 -0
- data/sig/tungo/models/esf_outgoing_item.rbs +20 -0
- data/sig/tungo/models/esf_outgoing_item_esf.rbs +16 -0
- data/sig/tungo/models/esf_outgoing_item_tax_invoice.rbs +14 -0
- data/sig/tungo/models/esf_outgoing_report.rbs +16 -0
- data/sig/tungo/models/esf_purchases_job_request.rbs +14 -0
- data/sig/tungo/models/esf_sale.rbs +18 -0
- data/sig/tungo/models/esf_verdict.rbs +14 -0
- data/sig/tungo/models/feed_action.rbs +18 -0
- data/sig/tungo/models/feed_action_action.rbs +17 -0
- data/sig/tungo/models/feed_action_method.rbs +13 -0
- data/sig/tungo/models/feed_item.rbs +27 -0
- data/sig/tungo/models/feed_page.rbs +15 -0
- data/sig/tungo/models/feed_section.rbs +14 -0
- data/sig/tungo/models/feed_section_counts.rbs +14 -0
- data/sig/tungo/models/feed_section_titles.rbs +14 -0
- data/sig/tungo/models/field_error.rbs +14 -0
- data/sig/tungo/models/field_error_code.rbs +22 -0
- data/sig/tungo/models/financial_notes.rbs +19 -0
- data/sig/tungo/models/financial_notes_organization.rbs +13 -0
- data/sig/tungo/models/financial_notes_section.rbs +20 -0
- data/sig/tungo/models/financial_notes_table.rbs +14 -0
- data/sig/tungo/models/financial_notes_table_row_item_item.rbs +12 -0
- data/sig/tungo/models/financial_notes_to_fill.rbs +15 -0
- data/sig/tungo/models/form_missing_action.rbs +17 -0
- data/sig/tungo/models/form_missing_data.rbs +17 -0
- data/sig/tungo/models/form_onec_object.rbs +13 -0
- data/sig/tungo/models/get_workspace_platform_audit_response.rbs +13 -0
- data/sig/tungo/models/get_workspace_platform_ledger_response.rbs +13 -0
- data/sig/tungo/models/isna_file.rbs +11 -0
- data/sig/tungo/models/isna_response.rbs +12 -0
- data/sig/tungo/models/isna_summary.rbs +28 -0
- data/sig/tungo/models/isna_summary_download.rbs +13 -0
- data/sig/tungo/models/isna_summary_format.rbs +14 -0
- data/sig/tungo/models/isna_summary_period.rbs +15 -0
- data/sig/tungo/models/isna_summary_reconciliation.rbs +13 -0
- data/sig/tungo/models/list_companies_response.rbs +12 -0
- data/sig/tungo/models/list_company_automations_hooks_response.rbs +12 -0
- data/sig/tungo/models/list_company_automations_runs_response.rbs +13 -0
- data/sig/tungo/models/list_company_automations_scenarios_response.rbs +12 -0
- data/sig/tungo/models/list_usage_rates_response.rbs +12 -0
- data/sig/tungo/models/list_workspace_platform_requests_response.rbs +13 -0
- data/sig/tungo/models/list_workspace_webhooks_endpoint_attempts_response.rbs +13 -0
- data/sig/tungo/models/list_workspace_webhooks_endpoint_attempts_status.rbs +15 -0
- data/sig/tungo/models/list_workspace_webhooks_endpoints_response.rbs +13 -0
- data/sig/tungo/models/list_workspace_webhooks_event_types_response.rbs +12 -0
- data/sig/tungo/models/list_workspace_webhooks_message_attempts_response.rbs +13 -0
- data/sig/tungo/models/list_workspace_webhooks_messages_response.rbs +13 -0
- data/sig/tungo/models/list_workspaces_response.rbs +12 -0
- data/sig/tungo/models/money.rbs +14 -0
- data/sig/tungo/models/my_workspace.rbs +16 -0
- data/sig/tungo/models/my_workspace_kind.rbs +14 -0
- data/sig/tungo/models/one_c_capability.rbs +15 -0
- data/sig/tungo/models/one_c_capability_id.rbs +20 -0
- data/sig/tungo/models/one_c_capability_status.rbs +15 -0
- data/sig/tungo/models/one_c_gateway.rbs +15 -0
- data/sig/tungo/models/one_c_status.rbs +15 -0
- data/sig/tungo/models/one_c_status_last_check.rbs +16 -0
- data/sig/tungo/models/one_c_status_last_check_verdict.rbs +14 -0
- data/sig/tungo/models/pay_form.rbs +15 -0
- data/sig/tungo/models/payment_method.rbs +17 -0
- data/sig/tungo/models/platform_account.rbs +20 -0
- data/sig/tungo/models/platform_account_blocked_reason.rbs +14 -0
- data/sig/tungo/models/platform_account_purchase_limits.rbs +14 -0
- data/sig/tungo/models/platform_auto_reload.rbs +15 -0
- data/sig/tungo/models/platform_ledger_entry.rbs +21 -0
- data/sig/tungo/models/platform_ledger_entry_kind.rbs +15 -0
- data/sig/tungo/models/platform_limits.rbs +14 -0
- data/sig/tungo/models/platform_limits_concurrent_turns.rbs +13 -0
- data/sig/tungo/models/platform_limits_files.rbs +20 -0
- data/sig/tungo/models/platform_limits_rate.rbs +13 -0
- data/sig/tungo/models/platform_limits_rate_key.rbs +14 -0
- data/sig/tungo/models/platform_limits_rate_workspace.rbs +14 -0
- data/sig/tungo/models/platform_purchase.rbs +15 -0
- data/sig/tungo/models/platform_purchase_input.rbs +13 -0
- data/sig/tungo/models/platform_purchase_status.rbs +21 -0
- data/sig/tungo/models/platform_request.rbs +23 -0
- data/sig/tungo/models/platform_settings_input.rbs +14 -0
- data/sig/tungo/models/platform_settings_input_auto_reload.rbs +15 -0
- data/sig/tungo/models/platform_usage.rbs +18 -0
- data/sig/tungo/models/platform_usage_by_company_item.rbs +18 -0
- data/sig/tungo/models/platform_usage_by_day_item.rbs +18 -0
- data/sig/tungo/models/platform_usage_by_key_item.rbs +18 -0
- data/sig/tungo/models/platform_usage_by_model_item.rbs +18 -0
- data/sig/tungo/models/platform_usage_totals.rbs +17 -0
- data/sig/tungo/models/proposal_account.rbs +15 -0
- data/sig/tungo/models/proposal_action.rbs +19 -0
- data/sig/tungo/models/proposal_action_action.rbs +14 -0
- data/sig/tungo/models/proposal_advance_offset.rbs +16 -0
- data/sig/tungo/models/proposal_approval.rbs +15 -0
- data/sig/tungo/models/proposal_card.rbs +42 -0
- data/sig/tungo/models/proposal_contract.rbs +16 -0
- data/sig/tungo/models/proposal_decision.rbs +18 -0
- data/sig/tungo/models/proposal_document.rbs +14 -0
- data/sig/tungo/models/proposal_header.rbs +24 -0
- data/sig/tungo/models/proposal_history_event.rbs +16 -0
- data/sig/tungo/models/proposal_kind.rbs +22 -0
- data/sig/tungo/models/proposal_line.rbs +23 -0
- data/sig/tungo/models/proposal_line_item.rbs +13 -0
- data/sig/tungo/models/proposal_line_section.rbs +13 -0
- data/sig/tungo/models/proposal_list_item.rbs +30 -0
- data/sig/tungo/models/proposal_page.rbs +15 -0
- data/sig/tungo/models/proposal_party.rbs +14 -0
- data/sig/tungo/models/proposal_posting.rbs +16 -0
- data/sig/tungo/models/proposal_result.rbs +15 -0
- data/sig/tungo/models/proposal_source.rbs +13 -0
- data/sig/tungo/models/proposal_source_channel.rbs +16 -0
- data/sig/tungo/models/proposal_status.rbs +19 -0
- data/sig/tungo/models/reject_request.rbs +13 -0
- data/sig/tungo/models/statement_day.rbs +22 -0
- data/sig/tungo/models/statement_day_counts.rbs +17 -0
- data/sig/tungo/models/statement_day_kind.rbs +15 -0
- data/sig/tungo/models/statement_day_list.rbs +13 -0
- data/sig/tungo/models/tax_form_cell.rbs +23 -0
- data/sig/tungo/models/tax_form_cell_cause.rbs +18 -0
- data/sig/tungo/models/tax_form_cell_diff.rbs +12 -0
- data/sig/tungo/models/tax_form_cell_one_c_value.rbs +12 -0
- data/sig/tungo/models/tax_form_cell_ours_value.rbs +12 -0
- data/sig/tungo/models/tax_form_cell_status.rbs +15 -0
- data/sig/tungo/models/tax_form_cell_type.rbs +16 -0
- data/sig/tungo/models/tax_form_due.rbs +20 -0
- data/sig/tungo/models/tax_form_list_item.rbs +22 -0
- data/sig/tungo/models/tax_form_list_item_coverage.rbs +13 -0
- data/sig/tungo/models/tax_form_list_item_group.rbs +15 -0
- data/sig/tungo/models/tax_form_list_item_required.rbs +12 -0
- data/sig/tungo/models/tax_form_only_in_one_c.rbs +13 -0
- data/sig/tungo/models/tax_form_period.rbs +16 -0
- data/sig/tungo/models/tax_form_reference.rbs +15 -0
- data/sig/tungo/models/tax_form_totals.rbs +15 -0
- data/sig/tungo/models/tax_form_view.rbs +26 -0
- data/sig/tungo/models/tax_form_view_coverage.rbs +13 -0
- data/sig/tungo/models/tax_form_view_uncovered.rbs +13 -0
- data/sig/tungo/models/tax_form_view_uncovered_cell_item.rbs +13 -0
- data/sig/tungo/models/tax_forms_year.rbs +15 -0
- data/sig/tungo/models/tax_period_kind.rbs +16 -0
- data/sig/tungo/models/tax_period_ref.rbs +13 -0
- data/sig/tungo/models/usage_rate.rbs +17 -0
- data/sig/tungo/models/webhook_attempt.rbs +20 -0
- data/sig/tungo/models/webhook_attempt_status.rbs +15 -0
- data/sig/tungo/models/webhook_attempt_trigger.rbs +13 -0
- data/sig/tungo/models/webhook_endpoint.rbs +19 -0
- data/sig/tungo/models/webhook_endpoint_create.rbs +16 -0
- data/sig/tungo/models/webhook_endpoint_created.rbs +21 -0
- data/sig/tungo/models/webhook_endpoint_patch.rbs +16 -0
- data/sig/tungo/models/webhook_envelope.rbs +17 -0
- data/sig/tungo/models/webhook_event.rbs +12 -0
- data/sig/tungo/models/webhook_event_api_key_cap_reached.rbs +17 -0
- data/sig/tungo/models/webhook_event_api_key_cap_reached_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_api_key_expiring.rbs +17 -0
- data/sig/tungo/models/webhook_event_api_key_expiring_data.rbs +15 -0
- data/sig/tungo/models/webhook_event_automation_run_completed.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data.rbs +29 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data_output_error.rbs +13 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data_output_value.rbs +12 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item.rbs +19 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto.rbs +15 -0
- data/sig/tungo/models/webhook_event_automation_run_completed_data_proposal_item_auto_code.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_run_failed.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data.rbs +29 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data_output_error.rbs +13 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data_output_value.rbs +12 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item.rbs +19 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto.rbs +15 -0
- data/sig/tungo/models/webhook_event_automation_run_failed_data_proposal_item_auto_code.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_run_notice.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_run_notice_data.rbs +21 -0
- data/sig/tungo/models/webhook_event_automation_run_notice_data_reason.rbs +15 -0
- data/sig/tungo/models/webhook_event_automation_write_unknown.rbs +17 -0
- data/sig/tungo/models/webhook_event_automation_write_unknown_data.rbs +16 -0
- data/sig/tungo/models/webhook_event_bank_statement_received.rbs +17 -0
- data/sig/tungo/models/webhook_event_bank_statement_received_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_bank_statement_received_data_source.rbs +13 -0
- data/sig/tungo/models/webhook_event_batch_completed.rbs +17 -0
- data/sig/tungo/models/webhook_event_batch_completed_data.rbs +22 -0
- data/sig/tungo/models/webhook_event_batch_completed_data_kind.rbs +13 -0
- data/sig/tungo/models/webhook_event_batch_failed.rbs +17 -0
- data/sig/tungo/models/webhook_event_batch_failed_data.rbs +14 -0
- data/sig/tungo/models/webhook_event_batch_failed_data_kind.rbs +13 -0
- data/sig/tungo/models/webhook_event_chat_turn_completed.rbs +17 -0
- data/sig/tungo/models/webhook_event_chat_turn_completed_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_chat_turn_completed_data_usage.rbs +16 -0
- data/sig/tungo/models/webhook_event_esf_incoming_received.rbs +17 -0
- data/sig/tungo/models/webhook_event_esf_incoming_received_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_onec_connection_changed.rbs +17 -0
- data/sig/tungo/models/webhook_event_onec_connection_changed_data.rbs +16 -0
- data/sig/tungo/models/webhook_event_onec_connection_changed_data_reason.rbs +20 -0
- data/sig/tungo/models/webhook_event_onec_connection_changed_data_state.rbs +13 -0
- data/sig/tungo/models/webhook_event_payment_failed.rbs +17 -0
- data/sig/tungo/models/webhook_event_payment_failed_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_payment_succeeded.rbs +17 -0
- data/sig/tungo/models/webhook_event_payment_succeeded_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_ping.rbs +17 -0
- data/sig/tungo/models/webhook_event_ping_data.rbs +11 -0
- data/sig/tungo/models/webhook_event_platform_balance_exhausted.rbs +17 -0
- data/sig/tungo/models/webhook_event_platform_balance_exhausted_data.rbs +13 -0
- data/sig/tungo/models/webhook_event_platform_balance_low.rbs +17 -0
- data/sig/tungo/models/webhook_event_platform_balance_low_data.rbs +13 -0
- data/sig/tungo/models/webhook_event_platform_cap_threshold_reached.rbs +17 -0
- data/sig/tungo/models/webhook_event_platform_cap_threshold_reached_data.rbs +15 -0
- data/sig/tungo/models/webhook_event_proposal_awaiting_approval.rbs +17 -0
- data/sig/tungo/models/webhook_event_proposal_awaiting_approval_data.rbs +17 -0
- data/sig/tungo/models/webhook_event_proposal_failed.rbs +17 -0
- data/sig/tungo/models/webhook_event_proposal_failed_data.rbs +15 -0
- data/sig/tungo/models/webhook_event_proposal_rejected.rbs +17 -0
- data/sig/tungo/models/webhook_event_proposal_rejected_data.rbs +15 -0
- data/sig/tungo/models/webhook_event_proposal_written.rbs +17 -0
- data/sig/tungo/models/webhook_event_proposal_written_data.rbs +16 -0
- data/sig/tungo/models/webhook_event_type.rbs +15 -0
- data/sig/tungo/models/webhook_message.rbs +15 -0
- data/sig/tungo/models/webhook_resend.rbs +12 -0
- data/sig/tungo/models/webhook_secret.rbs +13 -0
- data/sig/tungo/models/webhook_secret_rotated.rbs +14 -0
- data/sig/tungo/models/webhook_usage.rbs +15 -0
- data/sig/tungo/models/workspace_plan.rbs +14 -0
- data/sig/tungo/resources/api_keys.rbs +12 -0
- data/sig/tungo/resources/automations.rbs +33 -0
- data/sig/tungo/resources/batches.rbs +20 -0
- data/sig/tungo/resources/chat.rbs +21 -0
- data/sig/tungo/resources/companies.rbs +11 -0
- data/sig/tungo/resources/esf.rbs +13 -0
- data/sig/tungo/resources/feed.rbs +12 -0
- data/sig/tungo/resources/forms.rbs +14 -0
- data/sig/tungo/resources/onec.rbs +10 -0
- data/sig/tungo/resources/platform.rbs +19 -0
- data/sig/tungo/resources/proposals.rbs +15 -0
- data/sig/tungo/resources/webhooks.rbs +26 -0
- data/sig/tungo/resources/workspaces.rbs +10 -0
- data/sig/tungo/resources.rbs +25 -0
- data/sig/tungo/runtime.rbs +392 -0
- metadata +1110 -0
data/lib/tungo/stream.rb
ADDED
|
@@ -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
|