# Saga Methods Reference

The following reference contains a list of the currently implemented Saga Methods. We will be adding more details and examples soon.

## System Methods

### Data Access

```ruby
find(model_name, id)
find_all(model_name_plural, filter_data = {}, options = {})
update(model_name, id, params)
create(model_name, params)
build(data)
delete(model_name, id)
find_by(model_name, filter_data = {})
find_all_without_pagination(model_name_plural, filter_data = {})
find_all_deleted_without_pagination(model_name_plural, filter_data = {})
delete_associated_models(models)
restore_associated_models(models)
```

### Document Access

```ruby
setup_s3_bucket(partner_id)
upload_file(agent_id, partner_id, model_name, tracked_url_name, upload_key)
```

### Account Access

```ruby
create_auth_account(user_information, partner_id, site_id = nil)
delete_auth_account!(partner_id, authentication_id)
create_auth_client(client_name, client_domain, partner_id)
create_auth_connection(client_id, client_name, partner_id)
create_auth_ticket(partner_id, ticket_type, ticket_data = {})
create_auth_resource_server(resource_server_name, resource_server_audience, partner_id)
delete_auth_clients(clients, partner_id)
delete_auth_client(client_name, partner_id, site_id = nil)
delete_auth_connections(connections, partner_id)
delete_auth_connection(connection_name, partner_id, site_id = nil)
delete_auth_resource_servers(resource_servers, partner_id)
index_deleted_partner_auth_clients(partner_id)
index_deleted_partner_auth_connections(partner_id)
index_deleted_partner_auth_resource_servers(partner_id)
update_auth_tenant(partner_id, fields_hash)
update_auth_resource_server(partner_id, auth0_api_identifier, fields_hash)
update_auth_client(client_id, partner_id, fields_hash)
update_auth_user(user_id, user_type, partner_id, base_fields, fields_hash)
```

### Agents

```ruby
build_agent_data(agent_id, auth_role_id, sites)
primary_agent_for(application_file_id)
```

### Answers

```ruby
update_answers(applicant_id, application_file_id, data)
save_updated_answers(applicant_id, application_file_id)
```

### Application Files

```ruby
auto_assign_application(application_file_id)
assign_application(agent_id, application_file_id)
claim_application(applicant_data)
create_unclaimed_application_file(partner_id, site_id)
freeze_application(application_file_id)
archive_data_for!(application_file_id, applicant_id, vertical_name)
```

### Generic HTTP / SFTP

```ruby
http_get(url, options = {})
http_post(url, options = {})
http_put(url, options = {})
http_patch(url, options = {})
http_delete(url, options = {})
sftp_file(host, username, password, file_path, remote_path, filename, port)
sftp_file_string(host, username, password, file_string, remote_path, filename, port)
```

### Logging

```
log_message(message)
log(log_data)
```

### Notifications

```ruby
send_text!(phone_number, message)
send_email!(email_address, message, subject, options = {})
send_in_app!(recipient_id, recipient_type, partner_id, site_id, message)
send_notification!(notification_profile, recipient_id, site_id, options = {})
find_notification_profile(name, parent_id, parent_type)
```

### Responses

```
responses_for(application_file_id)
create_response_set_user(application_file_id, applicant_data)
remove_response_set_user!(application_file_id, applicant_data)
set_response_set_user_email(applicant_id, email_address)
update_response_set_date(application_file_id)
```

### System Internals

```
save_response_to_database(object)
track_saga_event(event_name, event_metadata, include_metdata = true)
raise_warning(message)
initialize_saga_retry
initialize_block_retry
create_search_index(model_name, partner_id)
credentials_data_for(site_id)
```

### Tasks

```ruby
refresh_tasks_for!(site_id, applicant_id, application_file_id, use_latest_version = false)
change_task_state(task_id, event_name)
open_tasks_for(application_file_id, applicant_id)
```

## Integration Methods

### AccountChek

```ruby
initiate_accountchek_voa(application_file_id, applicant_id)
account_chek_accounts(application_file_id, applicant_id)
account_chek_report(application_file_id, applicant_id)
```

### Byte Pro

```ruby
loan_file_push_to_byte(application_file_id, options = {})
update_fields_on_byte(application_file_id, field_values_hash)
document_push_to_byte(application_file_id, document_id)
documents_push_to_byte(application_file_id, document_ids)
```

### Credit Providers (normalized)

```ruby
pull_credit(application_file_id, applicant_id, site_id)
joint_pull_credit(application_file_id, site_id)
```

### Automated Underwriting

```ruby
loan_file_push_to_desktop_underwriter(application_file_id)
```

### Encompass API

```ruby
loan_file_push_to_encompass_api(application_file_id, options = {})
assemble_fields_update_encompass_api(application_file_id, json_sections)
update_fields_on_encompass_api(application_file_id, update_json)
get_fields_on_encompass_api(application_file_id)
get_milestones_on_encompass_api(application_file_id)
assign_associate_on_encompass_api(application_file_id, role_name, loan_associate_id)
field_reader_on_encompass_api(application_file_id, fields_list)
document_push_to_encompass_api(application_file_id, document_id)
documents_push_to_encompass_api(application_file_id, document_ids)
get_borrower_pairs_encompass_api(application_file_id)
create_webhook_on_encompass_api(credential_set_id, endpoint, resource, events, filters)
delete_webhook_on_encompass_api(credential_set_id, webhook_id)
upload_attachment_to_encompass_api(application_file_id, document_id)
upload_attachments_to_encompass_api(application_file_id, document_ids)
bind_borrower(borrower_id)
get_encompass_api_disclosures(application_file_id)
```

### Data Verify

```ruby
create_data_verify_task(applicant_id, application_file_id, task_overrides = {})
data_verify_via_sms(applicant_id, application_file_id)
data_verify_via_phone(applicant_id, application_file_id)
submit_passcode(applicant_id, application_file_id, passcode)
```

### FICS

```ruby
push_loan_file_to_fics(application_file_id)
push_document_to_fics(application_file_id, document_id)
push_documents_to_fics(application_file_id, document_ids)
```

### Finicity

```ruby
finicity_connect_link(application_file_id, applicant_id, product_type, options = {})
retrieve_customer_accounts(application_file_id, applicant_id, institution_id, customer_id)
retrieve_consumer_report(application_file_id, applicant_id, report_id, consumer_id, report_type)
create_customer_report(application_file_id, applicant_id, report_type)
retrieve_customer_report(application_file_id, applicant_id, report_id, report_type)
```

### E-Signatures (normalized)

```ruby
create_e_sign_request(application_file_id, task_id, template_data, custom_fields = [])
```

### IDS Documents

```ruby
mark_as_ids_fulfillment_started(xml_body, partner_id)
mark_as_ids_borrower_signed(xml_body, partner_id)
mark_as_ids_signing_complete(xml_body, partner_id)
```

### LendingQB

```ruby
loan_file_push_to_lending_qb!(application_file_id)
push_document_to_lending_qb!(application_file_id, document_id)
push_documents_to_lending_qb!(application_file_id, document_ids = [])
update_fields_on_lending_qb(application_file_id, field_data = {})
run_lending_qb_credit_pull!(application_file_id)
```

### MortgageDirector

```ruby
document_push_to_mortgage_director(application_file_id, document_id)
documents_push_to_mortgage_director(application_file_id, document_ids)
get_mortgage_director_loan_status(application_file_id)
get_mortgage_director_loan_statuses(application_file_ids)
loan_file_push_to_mortgage_director(application_file_id)
loan_file_push_and_update_fields_to_mortgage_director(application_file_id, field_values_hash)
run_query_grid_fields_on_mortgage_director(loan_query_id, site_id)
update_custom_fields_on_mortgage_director(application_file_id, field_values_hash)
update_fields_on_mortgage_director(application_file_id, field_values_hash)
```

### MortgageFlex

```ruby
loan_file_push_to_mortgage_flex(application_file_id)
document_push_to_mortgage_flex(application_file_id, document_id)
get_mortgage_flex_loan_status(application_file_id)
```

### Mortgage File/Document Generation

```ruby
get_fannie_mae(application_file_id, options = {})
get_mismo(application_file_id, options = {})
generate_automated_preapproval(application_file_id, file_name = nil)
generate_manual_preapproval(application_file_id, preapproval_letter_data = {}, file_name = nil)
```

### Pricing Engines (normalized)

```
get_pricing_fees(application_file_id, applicant_id, loan_ids)
get_pricing_fee_quick_quotes(site_id, loan_ids)
calculate_apr(apr_inputs)
get_pricing_products_flattened_scenario(application_file_id, applicant_id)
get_pricing_featured_rates_flattened_scenario(site_id, pricing_scenario)
get_pricing_product_quick_quotes_flattened_scenario(site_id, pricing_scenario)
get_pricing_product_details(application_file_id, pricing_loan_id)
get_pricing_products_loan_pricer(application_file_id, applicant_id, pricing_scenario)
```

### Transnational

```ruby
create_transnational_invoice(invoice_data, partner_data = {})
update_transnational_invoice(id, line_items, partner_data)
process_transnational_payment(transnational_invoice_id, invoice_token, partner_data)
```

### Equifax Worknumber

```ruby
verify_employment_with_worknumber(application_file_id, applicant_id, report_type, action_type, additional_data = {})
manually_verify_employment_with_worknumber(application_file_id, applicant_id, report_type, action_type, document_id, employer, additional_data = {})
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.himaxwell.com/platform-overview/admins-and-tech-support/enterprise-level-admin-management/sagas/saga-methods-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
