=begin
#Hydrogen Nucleus API

#The Hydrogen Nucleus API

OpenAPI spec version: 1.9.5
Contact: info@hydrogenplatform.com
Generated by: https://github.com/swagger-api/swagger-codegen.git
Swagger Codegen version: 2.4.19

=end

require 'uri'

module NucleusApi
  class PortfolioApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Create a portfolio asset size
    # Create a new asset size record for a portfolio.
    # @param portfolio_asset_size_log_request portfolioAssetSizeLogRequest
    # @param [Hash] opts the optional parameters
    # @return [PortfolioAssetSizeLog]
    def create_portfolio_asset_size_using_post(portfolio_asset_size_log_request, opts = {})
      data, _status_code, _headers = create_portfolio_asset_size_using_post_with_http_info(portfolio_asset_size_log_request, opts)
      data
    end

    # Create a portfolio asset size
    # Create a new asset size record for a portfolio.
    # @param portfolio_asset_size_log_request portfolioAssetSizeLogRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioAssetSizeLog, Fixnum, Hash)>] PortfolioAssetSizeLog data, response status code and response headers
    def create_portfolio_asset_size_using_post_with_http_info(portfolio_asset_size_log_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_asset_size_using_post ...'
      end
      # verify the required parameter 'portfolio_asset_size_log_request' is set
      if @api_client.config.client_side_validation && portfolio_asset_size_log_request.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_asset_size_log_request' when calling PortfolioApi.create_portfolio_asset_size_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_asset_size'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_asset_size_log_request)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioAssetSizeLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_asset_size_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a portfolio commentary
    # Create a new comment for a portfolio defined for your firm.
    # @param portfolio_comment portfolioComment
    # @param [Hash] opts the optional parameters
    # @return [PortfolioComment]
    def create_portfolio_comment_using_post(portfolio_comment, opts = {})
      data, _status_code, _headers = create_portfolio_comment_using_post_with_http_info(portfolio_comment, opts)
      data
    end

    # Create a portfolio commentary
    # Create a new comment for a portfolio defined for your firm.
    # @param portfolio_comment portfolioComment
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioComment, Fixnum, Hash)>] PortfolioComment data, response status code and response headers
    def create_portfolio_comment_using_post_with_http_info(portfolio_comment, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_comment_using_post ...'
      end
      # verify the required parameter 'portfolio_comment' is set
      if @api_client.config.client_side_validation && portfolio_comment.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_comment' when calling PortfolioApi.create_portfolio_comment_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_comment'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_comment)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_comment_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create an portfolio goal
    # Create an portfolio goal.
    # @param portfolio_goal portfolioGoal
    # @param [Hash] opts the optional parameters
    # @return [PortfolioGoal]
    def create_portfolio_goal_using_post(portfolio_goal, opts = {})
      data, _status_code, _headers = create_portfolio_goal_using_post_with_http_info(portfolio_goal, opts)
      data
    end

    # Create an portfolio goal
    # Create an portfolio goal.
    # @param portfolio_goal portfolioGoal
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioGoal, Fixnum, Hash)>] PortfolioGoal data, response status code and response headers
    def create_portfolio_goal_using_post_with_http_info(portfolio_goal, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_goal_using_post ...'
      end
      # verify the required parameter 'portfolio_goal' is set
      if @api_client.config.client_side_validation && portfolio_goal.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_goal' when calling PortfolioApi.create_portfolio_goal_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_goal'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_goal)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioGoal')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_goal_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a portfolio holding
    # Create a new holding record for a portfolio.
    # @param portfolio_holdin_log_request portfolioHoldinLogRequest
    # @param [Hash] opts the optional parameters
    # @return [PortfolioHoldingLog]
    def create_portfolio_holding_using_post(portfolio_holdin_log_request, opts = {})
      data, _status_code, _headers = create_portfolio_holding_using_post_with_http_info(portfolio_holdin_log_request, opts)
      data
    end

    # Create a portfolio holding
    # Create a new holding record for a portfolio.
    # @param portfolio_holdin_log_request portfolioHoldinLogRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioHoldingLog, Fixnum, Hash)>] PortfolioHoldingLog data, response status code and response headers
    def create_portfolio_holding_using_post_with_http_info(portfolio_holdin_log_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_holding_using_post ...'
      end
      # verify the required parameter 'portfolio_holdin_log_request' is set
      if @api_client.config.client_side_validation && portfolio_holdin_log_request.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_holdin_log_request' when calling PortfolioApi.create_portfolio_holding_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_holding'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_holdin_log_request)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioHoldingLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_holding_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a portfolio transaction
    # Create a new transaction record for a portfolio.
    # @param portfolio_transaction_request portfolioTransactionRequest
    # @param [Hash] opts the optional parameters
    # @return [PortfolioTransaction]
    def create_portfolio_transaction_using_post(portfolio_transaction_request, opts = {})
      data, _status_code, _headers = create_portfolio_transaction_using_post_with_http_info(portfolio_transaction_request, opts)
      data
    end

    # Create a portfolio transaction
    # Create a new transaction record for a portfolio.
    # @param portfolio_transaction_request portfolioTransactionRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioTransaction, Fixnum, Hash)>] PortfolioTransaction data, response status code and response headers
    def create_portfolio_transaction_using_post_with_http_info(portfolio_transaction_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_transaction_using_post ...'
      end
      # verify the required parameter 'portfolio_transaction_request' is set
      if @api_client.config.client_side_validation && portfolio_transaction_request.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_transaction_request' when calling PortfolioApi.create_portfolio_transaction_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_transaction_request)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_transaction_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a portfolio
    # Create a new portfolio for an account.
    # @param portfolio_request portfolioRequest
    # @param [Hash] opts the optional parameters
    # @return [Portfolio]
    def create_portfolio_using_post(portfolio_request, opts = {})
      data, _status_code, _headers = create_portfolio_using_post_with_http_info(portfolio_request, opts)
      data
    end

    # Create a portfolio
    # Create a new portfolio for an account.
    # @param portfolio_request portfolioRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(Portfolio, Fixnum, Hash)>] Portfolio data, response status code and response headers
    def create_portfolio_using_post_with_http_info(portfolio_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.create_portfolio_using_post ...'
      end
      # verify the required parameter 'portfolio_request' is set
      if @api_client.config.client_side_validation && portfolio_request.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_request' when calling PortfolioApi.create_portfolio_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio'

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_request)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Portfolio')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#create_portfolio_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a portfolio asset size
    # Permanently delete a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size_id UUID portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_asset_size_using_delete(portfolio_asset_size_id, opts = {})
      delete_portfolio_asset_size_using_delete_with_http_info(portfolio_asset_size_id, opts)
      nil
    end

    # Delete a portfolio asset size
    # Permanently delete a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size_id UUID portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_asset_size_using_delete_with_http_info(portfolio_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_asset_size_using_delete ...'
      end
      # verify the required parameter 'portfolio_asset_size_id' is set
      if @api_client.config.client_side_validation && portfolio_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_asset_size_id' when calling PortfolioApi.delete_portfolio_asset_size_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_asset_size/{portfolio_asset_size_id}'.sub('{' + 'portfolio_asset_size_id' + '}', portfolio_asset_size_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_asset_size_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a portfolio commentary
    # Permanently delete a portfolio comment for a portfolio.
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_comment_using_delete(portfolio_comment_id, opts = {})
      delete_portfolio_comment_using_delete_with_http_info(portfolio_comment_id, opts)
      nil
    end

    # Delete a portfolio commentary
    # Permanently delete a portfolio comment for a portfolio.
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_comment_using_delete_with_http_info(portfolio_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_comment_using_delete ...'
      end
      # verify the required parameter 'portfolio_comment_id' is set
      if @api_client.config.client_side_validation && portfolio_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_comment_id' when calling PortfolioApi.delete_portfolio_comment_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_comment/{portfolio_comment_id}'.sub('{' + 'portfolio_comment_id' + '}', portfolio_comment_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_comment_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete an portfolio goal
    # Permanently delete an portfolio-goal mapping.
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_goal_using_delete(portfolio_goal_id, opts = {})
      delete_portfolio_goal_using_delete_with_http_info(portfolio_goal_id, opts)
      nil
    end

    # Delete an portfolio goal
    # Permanently delete an portfolio-goal mapping.
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_goal_using_delete_with_http_info(portfolio_goal_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_goal_using_delete ...'
      end
      # verify the required parameter 'portfolio_goal_id' is set
      if @api_client.config.client_side_validation && portfolio_goal_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_goal_id' when calling PortfolioApi.delete_portfolio_goal_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_goal/{portfolio_goal_id}'.sub('{' + 'portfolio_goal_id' + '}', portfolio_goal_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_goal_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a portfolio holding
    # Permanently delete a portfolio holding record for a portfolio.
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_holding_using_delete(portfolio_holding_id, opts = {})
      delete_portfolio_holding_using_delete_with_http_info(portfolio_holding_id, opts)
      nil
    end

    # Delete a portfolio holding
    # Permanently delete a portfolio holding record for a portfolio.
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_holding_using_delete_with_http_info(portfolio_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_holding_using_delete ...'
      end
      # verify the required parameter 'portfolio_holding_id' is set
      if @api_client.config.client_side_validation && portfolio_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_holding_id' when calling PortfolioApi.delete_portfolio_holding_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_holding/{portfolio_holding_id}'.sub('{' + 'portfolio_holding_id' + '}', portfolio_holding_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_holding_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a portfolio transaction
    # Permanently delete a portfolio transaction record for a portfolio.
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_transaction_using_delete(portfolio_transaction_id, opts = {})
      delete_portfolio_transaction_using_delete_with_http_info(portfolio_transaction_id, opts)
      nil
    end

    # Delete a portfolio transaction
    # Permanently delete a portfolio transaction record for a portfolio.
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_transaction_using_delete_with_http_info(portfolio_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_transaction_using_delete ...'
      end
      # verify the required parameter 'portfolio_transaction_id' is set
      if @api_client.config.client_side_validation && portfolio_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_transaction_id' when calling PortfolioApi.delete_portfolio_transaction_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction/{portfolio_transaction_id}'.sub('{' + 'portfolio_transaction_id' + '}', portfolio_transaction_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_transaction_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a portfolio
    # Permanently delete a portfolio for an account.
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_portfolio_using_delete(portfolio_id, opts = {})
      delete_portfolio_using_delete_with_http_info(portfolio_id, opts)
      nil
    end

    # Delete a portfolio
    # Permanently delete a portfolio for an account.
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_portfolio_using_delete_with_http_info(portfolio_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.delete_portfolio_using_delete ...'
      end
      # verify the required parameter 'portfolio_id' is set
      if @api_client.config.client_side_validation && portfolio_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_id' when calling PortfolioApi.delete_portfolio_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio/{portfolio_id}'.sub('{' + 'portfolio_id' + '}', portfolio_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#delete_portfolio_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # getAllPortfolioTransactionByPost
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioTransaction]
    def get_all_portfolio_transaction_by_post_using_post(opts = {})
      data, _status_code, _headers = get_all_portfolio_transaction_by_post_using_post_with_http_info(opts)
      data
    end

    # getAllPortfolioTransactionByPost
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioTransaction, Fixnum, Hash)>] PagePortfolioTransaction data, response status code and response headers
    def get_all_portfolio_transaction_by_post_using_post_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_all_portfolio_transaction_by_post_using_post ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction_by_post'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_all_portfolio_transaction_by_post_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve an portfolio aggregate data
    # Retrieve the information for a securities associated with a portfolio.
    # @param portfolio_id Portfolio Id
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :show_asset_class true or false (default to true)
    # @option opts [BOOLEAN] :show_category true or false (default to true)
    # @option opts [BOOLEAN] :show_industry true or false (default to true)
    # @option opts [BOOLEAN] :show_sector true or false (default to true)
    # @option opts [BOOLEAN] :show_security_class true or false (default to true)
    # @return [Object]
    def get_portfolio_aggregated_data_using_get(portfolio_id, opts = {})
      data, _status_code, _headers = get_portfolio_aggregated_data_using_get_with_http_info(portfolio_id, opts)
      data
    end

    # Retrieve an portfolio aggregate data
    # Retrieve the information for a securities associated with a portfolio.
    # @param portfolio_id Portfolio Id
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :show_asset_class true or false
    # @option opts [BOOLEAN] :show_category true or false
    # @option opts [BOOLEAN] :show_industry true or false
    # @option opts [BOOLEAN] :show_sector true or false
    # @option opts [BOOLEAN] :show_security_class true or false
    # @return [Array<(Object, Fixnum, Hash)>] Object data, response status code and response headers
    def get_portfolio_aggregated_data_using_get_with_http_info(portfolio_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_aggregated_data_using_get ...'
      end
      # verify the required parameter 'portfolio_id' is set
      if @api_client.config.client_side_validation && portfolio_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_id' when calling PortfolioApi.get_portfolio_aggregated_data_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio/{portfolio_id}/aggregate_data'.sub('{' + 'portfolio_id' + '}', portfolio_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'show_asset_class'] = opts[:'show_asset_class'] if !opts[:'show_asset_class'].nil?
      query_params[:'show_category'] = opts[:'show_category'] if !opts[:'show_category'].nil?
      query_params[:'show_industry'] = opts[:'show_industry'] if !opts[:'show_industry'].nil?
      query_params[:'show_sector'] = opts[:'show_sector'] if !opts[:'show_sector'].nil?
      query_params[:'show_security_class'] = opts[:'show_security_class'] if !opts[:'show_security_class'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Object')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_aggregated_data_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all portfolios
    # Get the information for all portfolios assigned to all of your firm’s accounts. 
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolio]
    def get_portfolio_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_all_using_get_with_http_info(opts)
      data
    end

    # List all portfolios
    # Get the information for all portfolios assigned to all of your firm’s accounts. 
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolio, Fixnum, Hash)>] PagePortfolio data, response status code and response headers
    def get_portfolio_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolio')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio asset size
    # Retrieve the information for a portfolio asset size record for a portfolio. 
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioAssetSizeLog]
    def get_portfolio_asset_size_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_asset_size_all_using_get_with_http_info(opts)
      data
    end

    # Retrieve a portfolio asset size
    # Retrieve the information for a portfolio asset size record for a portfolio. 
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioAssetSizeLog, Fixnum, Hash)>] PagePortfolioAssetSizeLog data, response status code and response headers
    def get_portfolio_asset_size_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_asset_size_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_asset_size'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioAssetSizeLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_asset_size_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio asset size
    # Retrieve the information for a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size_id portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion currency_conversion
    # @return [PortfolioAssetSizeLog]
    def get_portfolio_asset_size_using_get(portfolio_asset_size_id, opts = {})
      data, _status_code, _headers = get_portfolio_asset_size_using_get_with_http_info(portfolio_asset_size_id, opts)
      data
    end

    # Retrieve a portfolio asset size
    # Retrieve the information for a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size_id portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion currency_conversion
    # @return [Array<(PortfolioAssetSizeLog, Fixnum, Hash)>] PortfolioAssetSizeLog data, response status code and response headers
    def get_portfolio_asset_size_using_get_with_http_info(portfolio_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_asset_size_using_get ...'
      end
      # verify the required parameter 'portfolio_asset_size_id' is set
      if @api_client.config.client_side_validation && portfolio_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_asset_size_id' when calling PortfolioApi.get_portfolio_asset_size_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_asset_size/{portfolio_asset_size_id}'.sub('{' + 'portfolio_asset_size_id' + '}', portfolio_asset_size_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioAssetSizeLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_asset_size_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all portfolio commentary
    # List all comments for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioComment]
    def get_portfolio_comment_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_comment_all_using_get_with_http_info(opts)
      data
    end

    # List all portfolio commentary
    # List all comments for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioComment, Fixnum, Hash)>] PagePortfolioComment data, response status code and response headers
    def get_portfolio_comment_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_comment_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_comment'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_comment_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio commentary
    # Retrieve the information for a portfolio comment for a portfolio.
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioComment]
    def get_portfolio_comment_using_get(portfolio_comment_id, opts = {})
      data, _status_code, _headers = get_portfolio_comment_using_get_with_http_info(portfolio_comment_id, opts)
      data
    end

    # Retrieve a portfolio commentary
    # Retrieve the information for a portfolio comment for a portfolio.
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioComment, Fixnum, Hash)>] PortfolioComment data, response status code and response headers
    def get_portfolio_comment_using_get_with_http_info(portfolio_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_comment_using_get ...'
      end
      # verify the required parameter 'portfolio_comment_id' is set
      if @api_client.config.client_side_validation && portfolio_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_comment_id' when calling PortfolioApi.get_portfolio_comment_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_comment/{portfolio_comment_id}'.sub('{' + 'portfolio_comment_id' + '}', portfolio_comment_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_comment_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all portfolio goals
    # Get information for all portfolio-goal mappings defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioGoal]
    def get_portfolio_goal_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_goal_all_using_get_with_http_info(opts)
      data
    end

    # List all portfolio goals
    # Get information for all portfolio-goal mappings defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioGoal, Fixnum, Hash)>] PagePortfolioGoal data, response status code and response headers
    def get_portfolio_goal_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_goal_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_goal'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioGoal')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_goal_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve an portfolio goal
    # Retrieve the information for a specific portfolio-goal mapping.
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioGoal]
    def get_portfolio_goal_using_get(portfolio_goal_id, opts = {})
      data, _status_code, _headers = get_portfolio_goal_using_get_with_http_info(portfolio_goal_id, opts)
      data
    end

    # Retrieve an portfolio goal
    # Retrieve the information for a specific portfolio-goal mapping.
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioGoal, Fixnum, Hash)>] PortfolioGoal data, response status code and response headers
    def get_portfolio_goal_using_get_with_http_info(portfolio_goal_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_goal_using_get ...'
      end
      # verify the required parameter 'portfolio_goal_id' is set
      if @api_client.config.client_side_validation && portfolio_goal_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_goal_id' when calling PortfolioApi.get_portfolio_goal_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_goal/{portfolio_goal_id}'.sub('{' + 'portfolio_goal_id' + '}', portfolio_goal_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioGoal')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_goal_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all portfolio holdings
    # Get the information for all holding records for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioHoldingLog]
    def get_portfolio_holding_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_holding_all_using_get_with_http_info(opts)
      data
    end

    # List all portfolio holdings
    # Get the information for all holding records for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioHoldingLog, Fixnum, Hash)>] PagePortfolioHoldingLog data, response status code and response headers
    def get_portfolio_holding_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_holding_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_holding'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioHoldingLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_holding_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio holding
    # Retrieve the information for a portfolio holding record for a portfolio.
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [PortfolioHoldingLog]
    def get_portfolio_holding_using_get(portfolio_holding_id, opts = {})
      data, _status_code, _headers = get_portfolio_holding_using_get_with_http_info(portfolio_holding_id, opts)
      data
    end

    # Retrieve a portfolio holding
    # Retrieve the information for a portfolio holding record for a portfolio.
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [Array<(PortfolioHoldingLog, Fixnum, Hash)>] PortfolioHoldingLog data, response status code and response headers
    def get_portfolio_holding_using_get_with_http_info(portfolio_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_holding_using_get ...'
      end
      # verify the required parameter 'portfolio_holding_id' is set
      if @api_client.config.client_side_validation && portfolio_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_holding_id' when calling PortfolioApi.get_portfolio_holding_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_holding/{portfolio_holding_id}'.sub('{' + 'portfolio_holding_id' + '}', portfolio_holding_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioHoldingLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_holding_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all portfolio transactions
    # Get the information for all transaction records for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending (default to false)
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by (default to update_date)
    # @option opts [Integer] :page page (default to 0)
    # @option opts [Integer] :size size (default to 25)
    # @return [PagePortfolioTransaction]
    def get_portfolio_transaction_all_using_get(opts = {})
      data, _status_code, _headers = get_portfolio_transaction_all_using_get_with_http_info(opts)
      data
    end

    # List all portfolio transactions
    # Get the information for all transaction records for all portfolios defined for your firm.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :ascending ascending
    # @option opts [String] :currency_conversion currency_conversion
    # @option opts [String] :filter filter
    # @option opts [String] :order_by order_by
    # @option opts [Integer] :page page
    # @option opts [Integer] :size size
    # @return [Array<(PagePortfolioTransaction, Fixnum, Hash)>] PagePortfolioTransaction data, response status code and response headers
    def get_portfolio_transaction_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_transaction_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction'

      # query parameters
      query_params = {}
      query_params[:'ascending'] = opts[:'ascending'] if !opts[:'ascending'].nil?
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?
      query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil?
      query_params[:'order_by'] = opts[:'order_by'] if !opts[:'order_by'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PagePortfolioTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_transaction_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio transaction
    # Retrieve the information for a portfolio transaction record for a portfolio. 
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [PortfolioTransaction]
    def get_portfolio_transaction_using_get(portfolio_transaction_id, opts = {})
      data, _status_code, _headers = get_portfolio_transaction_using_get_with_http_info(portfolio_transaction_id, opts)
      data
    end

    # Retrieve a portfolio transaction
    # Retrieve the information for a portfolio transaction record for a portfolio. 
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [Array<(PortfolioTransaction, Fixnum, Hash)>] PortfolioTransaction data, response status code and response headers
    def get_portfolio_transaction_using_get_with_http_info(portfolio_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_transaction_using_get ...'
      end
      # verify the required parameter 'portfolio_transaction_id' is set
      if @api_client.config.client_side_validation && portfolio_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_transaction_id' when calling PortfolioApi.get_portfolio_transaction_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction/{portfolio_transaction_id}'.sub('{' + 'portfolio_transaction_id' + '}', portfolio_transaction_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'currency_conversion'] = opts[:'currency_conversion'] if !opts[:'currency_conversion'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_transaction_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a portfolio
    # Retrieve a portfolio for an account.
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [Portfolio]
    def get_portfolio_using_get(portfolio_id, opts = {})
      data, _status_code, _headers = get_portfolio_using_get_with_http_info(portfolio_id, opts)
      data
    end

    # Retrieve a portfolio
    # Retrieve a portfolio for an account.
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(Portfolio, Fixnum, Hash)>] Portfolio data, response status code and response headers
    def get_portfolio_using_get_with_http_info(portfolio_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.get_portfolio_using_get ...'
      end
      # verify the required parameter 'portfolio_id' is set
      if @api_client.config.client_side_validation && portfolio_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_id' when calling PortfolioApi.get_portfolio_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio/{portfolio_id}'.sub('{' + 'portfolio_id' + '}', portfolio_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Portfolio')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#get_portfolio_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a portfolio asset size
    # Update the information for a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size portfolio_asset_size
    # @param portfolio_asset_size_id UUID portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioAssetSizeLog]
    def update_portfolio_asset_size_using_put(portfolio_asset_size, portfolio_asset_size_id, opts = {})
      data, _status_code, _headers = update_portfolio_asset_size_using_put_with_http_info(portfolio_asset_size, portfolio_asset_size_id, opts)
      data
    end

    # Update a portfolio asset size
    # Update the information for a portfolio asset size record for a portfolio.
    # @param portfolio_asset_size portfolio_asset_size
    # @param portfolio_asset_size_id UUID portfolio_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioAssetSizeLog, Fixnum, Hash)>] PortfolioAssetSizeLog data, response status code and response headers
    def update_portfolio_asset_size_using_put_with_http_info(portfolio_asset_size, portfolio_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_asset_size_using_put ...'
      end
      # verify the required parameter 'portfolio_asset_size' is set
      if @api_client.config.client_side_validation && portfolio_asset_size.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_asset_size' when calling PortfolioApi.update_portfolio_asset_size_using_put"
      end
      # verify the required parameter 'portfolio_asset_size_id' is set
      if @api_client.config.client_side_validation && portfolio_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_asset_size_id' when calling PortfolioApi.update_portfolio_asset_size_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_asset_size/{portfolio_asset_size_id}'.sub('{' + 'portfolio_asset_size_id' + '}', portfolio_asset_size_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_asset_size)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioAssetSizeLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_asset_size_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a portfolio comment
    # Update the information for a portfolio comment for a portfolio.
    # @param portfolio_comment portfolio_comment
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioComment]
    def update_portfolio_comment_using_put(portfolio_comment, portfolio_comment_id, opts = {})
      data, _status_code, _headers = update_portfolio_comment_using_put_with_http_info(portfolio_comment, portfolio_comment_id, opts)
      data
    end

    # Update a portfolio comment
    # Update the information for a portfolio comment for a portfolio.
    # @param portfolio_comment portfolio_comment
    # @param portfolio_comment_id UUID portfolio_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioComment, Fixnum, Hash)>] PortfolioComment data, response status code and response headers
    def update_portfolio_comment_using_put_with_http_info(portfolio_comment, portfolio_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_comment_using_put ...'
      end
      # verify the required parameter 'portfolio_comment' is set
      if @api_client.config.client_side_validation && portfolio_comment.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_comment' when calling PortfolioApi.update_portfolio_comment_using_put"
      end
      # verify the required parameter 'portfolio_comment_id' is set
      if @api_client.config.client_side_validation && portfolio_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_comment_id' when calling PortfolioApi.update_portfolio_comment_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_comment/{portfolio_comment_id}'.sub('{' + 'portfolio_comment_id' + '}', portfolio_comment_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_comment)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_comment_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update an portfolio goal
    # Update the information for an portfolio-goal mapping.
    # @param portfolio_goal portfolio_goal
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioGoal]
    def update_portfolio_goal_using_put(portfolio_goal, portfolio_goal_id, opts = {})
      data, _status_code, _headers = update_portfolio_goal_using_put_with_http_info(portfolio_goal, portfolio_goal_id, opts)
      data
    end

    # Update an portfolio goal
    # Update the information for an portfolio-goal mapping.
    # @param portfolio_goal portfolio_goal
    # @param portfolio_goal_id UUID portfolio_goal_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioGoal, Fixnum, Hash)>] PortfolioGoal data, response status code and response headers
    def update_portfolio_goal_using_put_with_http_info(portfolio_goal, portfolio_goal_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_goal_using_put ...'
      end
      # verify the required parameter 'portfolio_goal' is set
      if @api_client.config.client_side_validation && portfolio_goal.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_goal' when calling PortfolioApi.update_portfolio_goal_using_put"
      end
      # verify the required parameter 'portfolio_goal_id' is set
      if @api_client.config.client_side_validation && portfolio_goal_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_goal_id' when calling PortfolioApi.update_portfolio_goal_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_goal/{portfolio_goal_id}'.sub('{' + 'portfolio_goal_id' + '}', portfolio_goal_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_goal)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioGoal')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_goal_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a portfolio holding
    # Update the information for a portfolio holding record for a portfolio.
    # @param portfolio_holding portfolio_holding
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioHoldingLog]
    def update_portfolio_holding_using_put(portfolio_holding, portfolio_holding_id, opts = {})
      data, _status_code, _headers = update_portfolio_holding_using_put_with_http_info(portfolio_holding, portfolio_holding_id, opts)
      data
    end

    # Update a portfolio holding
    # Update the information for a portfolio holding record for a portfolio.
    # @param portfolio_holding portfolio_holding
    # @param portfolio_holding_id UUID portfolio_holding_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioHoldingLog, Fixnum, Hash)>] PortfolioHoldingLog data, response status code and response headers
    def update_portfolio_holding_using_put_with_http_info(portfolio_holding, portfolio_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_holding_using_put ...'
      end
      # verify the required parameter 'portfolio_holding' is set
      if @api_client.config.client_side_validation && portfolio_holding.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_holding' when calling PortfolioApi.update_portfolio_holding_using_put"
      end
      # verify the required parameter 'portfolio_holding_id' is set
      if @api_client.config.client_side_validation && portfolio_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_holding_id' when calling PortfolioApi.update_portfolio_holding_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_holding/{portfolio_holding_id}'.sub('{' + 'portfolio_holding_id' + '}', portfolio_holding_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_holding)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioHoldingLog')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_holding_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a portfolio transaction
    # Update the information for a portfolio transaction record for a portfolio.
    # @param portfolio_transaction portfolio_transaction
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [PortfolioTransaction]
    def update_portfolio_transaction_using_put(portfolio_transaction, portfolio_transaction_id, opts = {})
      data, _status_code, _headers = update_portfolio_transaction_using_put_with_http_info(portfolio_transaction, portfolio_transaction_id, opts)
      data
    end

    # Update a portfolio transaction
    # Update the information for a portfolio transaction record for a portfolio.
    # @param portfolio_transaction portfolio_transaction
    # @param portfolio_transaction_id UUID portfolio_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(PortfolioTransaction, Fixnum, Hash)>] PortfolioTransaction data, response status code and response headers
    def update_portfolio_transaction_using_put_with_http_info(portfolio_transaction, portfolio_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_transaction_using_put ...'
      end
      # verify the required parameter 'portfolio_transaction' is set
      if @api_client.config.client_side_validation && portfolio_transaction.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_transaction' when calling PortfolioApi.update_portfolio_transaction_using_put"
      end
      # verify the required parameter 'portfolio_transaction_id' is set
      if @api_client.config.client_side_validation && portfolio_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_transaction_id' when calling PortfolioApi.update_portfolio_transaction_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio_transaction/{portfolio_transaction_id}'.sub('{' + 'portfolio_transaction_id' + '}', portfolio_transaction_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio_transaction)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PortfolioTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_transaction_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a portfolio
    # Update a portfolio for an account.
    # @param portfolio portfolio
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [Portfolio]
    def update_portfolio_using_put(portfolio, portfolio_id, opts = {})
      data, _status_code, _headers = update_portfolio_using_put_with_http_info(portfolio, portfolio_id, opts)
      data
    end

    # Update a portfolio
    # Update a portfolio for an account.
    # @param portfolio portfolio
    # @param portfolio_id UUID portfolio_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(Portfolio, Fixnum, Hash)>] Portfolio data, response status code and response headers
    def update_portfolio_using_put_with_http_info(portfolio, portfolio_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: PortfolioApi.update_portfolio_using_put ...'
      end
      # verify the required parameter 'portfolio' is set
      if @api_client.config.client_side_validation && portfolio.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio' when calling PortfolioApi.update_portfolio_using_put"
      end
      # verify the required parameter 'portfolio_id' is set
      if @api_client.config.client_side_validation && portfolio_id.nil?
        fail ArgumentError, "Missing the required parameter 'portfolio_id' when calling PortfolioApi.update_portfolio_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/portfolio/{portfolio_id}'.sub('{' + 'portfolio_id' + '}', portfolio_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['*/*'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(portfolio)
      auth_names = ['oauth2']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Portfolio')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: PortfolioApi#update_portfolio_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end