=begin #MX Platform API #The MX Platform API is a powerful, fully-featured API designed to make aggregating and enhancing financial data easy and reliable. It can seamlessly connect your app or website to tens of thousands of financial institutions. The version of the OpenAPI document: 0.1.0 Generated by: https://openapi-generator.tech Generator version: 7.8.0 =end require 'cgi' module MxPlatformRuby class BudgetsApi attr_accessor :api_client def initialize(api_client = ApiClient.default) @api_client = api_client end # Delete a budget # Delete a budget. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @return [nil] def users_user_guid_budgets_budget_guid_delete(user_guid, budget_guid, opts = {}) users_user_guid_budgets_budget_guid_delete_with_http_info(user_guid, budget_guid, opts) nil end # Delete a budget # Delete a budget. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers def users_user_guid_budgets_budget_guid_delete_with_http_info(user_guid, budget_guid, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_budget_guid_delete ...' end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_delete" end # verify the required parameter 'budget_guid' is set if @api_client.config.client_side_validation && budget_guid.nil? fail ArgumentError, "Missing the required parameter 'budget_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_delete" end # resource path local_var_path = '/users/{user_guid}/budgets/{budget_guid}'.sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)).sub('{' + 'budget_guid' + '}', CGI.escape(budget_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_budget_guid_delete", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_budget_guid_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # Read a specific budget # Read a specific budget. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @return [BudgetResponseBody] def users_user_guid_budgets_budget_guid_get(budget_guid, user_guid, opts = {}) data, _status_code, _headers = users_user_guid_budgets_budget_guid_get_with_http_info(budget_guid, user_guid, opts) data end # Read a specific budget # Read a specific budget. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @return [Array<(BudgetResponseBody, Integer, Hash)>] BudgetResponseBody data, response status code and response headers def users_user_guid_budgets_budget_guid_get_with_http_info(budget_guid, user_guid, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_budget_guid_get ...' end # verify the required parameter 'budget_guid' is set if @api_client.config.client_side_validation && budget_guid.nil? fail ArgumentError, "Missing the required parameter 'budget_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_get" end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_get" end # resource path local_var_path = '/users/{user_guid}/budgets/{budget_guid}'.sub('{' + 'budget_guid' + '}', CGI.escape(budget_guid.to_s)).sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'BudgetResponseBody' # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_budget_guid_get", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_budget_guid_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # Update a specific budget # Update a specific budget. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @option opts [BudgetUpdateRequestBody] :budget_update_request_body # @return [BudgetResponseBody] def users_user_guid_budgets_budget_guid_put(user_guid, budget_guid, opts = {}) data, _status_code, _headers = users_user_guid_budgets_budget_guid_put_with_http_info(user_guid, budget_guid, opts) data end # Update a specific budget # Update a specific budget. # @param user_guid [String] The unique identifier for the budget. Defined by MX. # @param budget_guid [String] The unique identifier for the budget. Defined by MX. # @param [Hash] opts the optional parameters # @option opts [BudgetUpdateRequestBody] :budget_update_request_body # @return [Array<(BudgetResponseBody, Integer, Hash)>] BudgetResponseBody data, response status code and response headers def users_user_guid_budgets_budget_guid_put_with_http_info(user_guid, budget_guid, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_budget_guid_put ...' end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_put" end # verify the required parameter 'budget_guid' is set if @api_client.config.client_side_validation && budget_guid.nil? fail ArgumentError, "Missing the required parameter 'budget_guid' when calling BudgetsApi.users_user_guid_budgets_budget_guid_put" end # resource path local_var_path = '/users/{user_guid}/budgets/{budget_guid}'.sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)).sub('{' + 'budget_guid' + '}', CGI.escape(budget_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(opts[:'budget_update_request_body']) # return_type return_type = opts[:debug_return_type] || 'BudgetResponseBody' # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_budget_guid_put", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_budget_guid_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # Auto-generate budgets # This endpoint will automatically create budgets for several categories based on existing transactions; these budgets are returned as an array. Specifically, budgets will only be generated if the `user` has at least one `transaction` in a given category during each of the two previous calendar months. For example, if the request is made on March 6, and there is at least one \"Bills & Utilities\" `transaction` in both January and February, a budget will be generated for \"Bills & Utilities.\" If there are two \"Bills & Utilities\" transactions in February but none in January, no budget will be generated for that category. If budgets already exist for particular categories, new budgets will be generated and returned based on the available transactions. If one or more budgets remain unchanged, they will nevertheless be returned in the response. If no transaction data for the `user` meet the above criteria, a `422 Unprocessable Entity` error will be returned with status code 4221 along with the message, `There aren't enough transactions to automatically create any budgets`. # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param [Hash] opts the optional parameters # @return [BudgetResponseBody] def users_user_guid_budgets_generate_post(user_guid, opts = {}) data, _status_code, _headers = users_user_guid_budgets_generate_post_with_http_info(user_guid, opts) data end # Auto-generate budgets # This endpoint will automatically create budgets for several categories based on existing transactions; these budgets are returned as an array. Specifically, budgets will only be generated if the `user` has at least one `transaction` in a given category during each of the two previous calendar months. For example, if the request is made on March 6, and there is at least one \"Bills & Utilities\" `transaction` in both January and February, a budget will be generated for \"Bills & Utilities.\" If there are two \"Bills & Utilities\" transactions in February but none in January, no budget will be generated for that category. If budgets already exist for particular categories, new budgets will be generated and returned based on the available transactions. If one or more budgets remain unchanged, they will nevertheless be returned in the response. If no transaction data for the `user` meet the above criteria, a `422 Unprocessable Entity` error will be returned with status code 4221 along with the message, `There aren't enough transactions to automatically create any budgets`. # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param [Hash] opts the optional parameters # @return [Array<(BudgetResponseBody, Integer, Hash)>] BudgetResponseBody data, response status code and response headers def users_user_guid_budgets_generate_post_with_http_info(user_guid, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_generate_post ...' end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_generate_post" end # resource path local_var_path = '/users/{user_guid}/budgets/generate'.sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'BudgetResponseBody' # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_generate_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_generate_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # List all budgets # List all budgets # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param [Hash] opts the optional parameters # @return [BudgetResponseBody] def users_user_guid_budgets_get(user_guid, opts = {}) data, _status_code, _headers = users_user_guid_budgets_get_with_http_info(user_guid, opts) data end # List all budgets # List all budgets # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param [Hash] opts the optional parameters # @return [Array<(BudgetResponseBody, Integer, Hash)>] BudgetResponseBody data, response status code and response headers def users_user_guid_budgets_get_with_http_info(user_guid, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_get ...' end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_get" end # resource path local_var_path = '/users/{user_guid}/budgets'.sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'BudgetResponseBody' # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_get", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # Create a budget # Create a budget. This endpoint accepts the optional `MX-Skip-Webhook` header and `skip_webhook` parameter. You cannot create a duplicate budget. For example, if you attempt to create a budget for \"Gas\", but that budget already exist, the request will fail. You can retrieve a list of all existing categories by using the List Categories endpoint. # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param budget_create_request_body [BudgetCreateRequestBody] # @param [Hash] opts the optional parameters # @return [BudgetResponseBody] def users_user_guid_budgets_post(user_guid, budget_create_request_body, opts = {}) data, _status_code, _headers = users_user_guid_budgets_post_with_http_info(user_guid, budget_create_request_body, opts) data end # Create a budget # Create a budget. This endpoint accepts the optional `MX-Skip-Webhook` header and `skip_webhook` parameter. You cannot create a duplicate budget. For example, if you attempt to create a budget for \"Gas\", but that budget already exist, the request will fail. You can retrieve a list of all existing categories by using the List Categories endpoint. # @param user_guid [String] The unique identifier for the user. Defined by MX. # @param budget_create_request_body [BudgetCreateRequestBody] # @param [Hash] opts the optional parameters # @return [Array<(BudgetResponseBody, Integer, Hash)>] BudgetResponseBody data, response status code and response headers def users_user_guid_budgets_post_with_http_info(user_guid, budget_create_request_body, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: BudgetsApi.users_user_guid_budgets_post ...' end # verify the required parameter 'user_guid' is set if @api_client.config.client_side_validation && user_guid.nil? fail ArgumentError, "Missing the required parameter 'user_guid' when calling BudgetsApi.users_user_guid_budgets_post" end # verify the required parameter 'budget_create_request_body' is set if @api_client.config.client_side_validation && budget_create_request_body.nil? fail ArgumentError, "Missing the required parameter 'budget_create_request_body' when calling BudgetsApi.users_user_guid_budgets_post" end # resource path local_var_path = '/users/{user_guid}/budgets'.sub('{' + 'user_guid' + '}', CGI.escape(user_guid.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(budget_create_request_body) # return_type return_type = opts[:debug_return_type] || 'BudgetResponseBody' # auth_names auth_names = opts[:debug_auth_names] || ['basicAuth'] new_options = opts.merge( :operation => :"BudgetsApi.users_user_guid_budgets_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: BudgetsApi#users_user_guid_budgets_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end end end