=begin
#Hydrogen Nucleus API

#The Hydrogen Nucleus API

OpenAPI spec version: 1.9.4
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 ModelApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Create a model asset size
    # Create a new asset size record for a model.
    # @param req req
    # @param [Hash] opts the optional parameters
    # @return [ModelAssetSize]
    def create_model_asset_size_using_post(req, opts = {})
      data, _status_code, _headers = create_model_asset_size_using_post_with_http_info(req, opts)
      data
    end

    # Create a model asset size
    # Create a new asset size record for a model.
    # @param req req
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelAssetSize, Fixnum, Hash)>] ModelAssetSize data, response status code and response headers
    def create_model_asset_size_using_post_with_http_info(req, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_asset_size_using_post ...'
      end
      # verify the required parameter 'req' is set
      if @api_client.config.client_side_validation && req.nil?
        fail ArgumentError, "Missing the required parameter 'req' when calling ModelApi.create_model_asset_size_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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(req)
      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 => 'ModelAssetSize')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_asset_size_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Change a model composition
    # Model composition changes represent a change in a model’s holdings.
    # @param change_request changeRequest
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Array<ModelTransaction>]
    def create_model_change_using_post(change_request, model_id, opts = {})
      data, _status_code, _headers = create_model_change_using_post_with_http_info(change_request, model_id, opts)
      data
    end

    # Change a model composition
    # Model composition changes represent a change in a model’s holdings.
    # @param change_request changeRequest
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(Array<ModelTransaction>, Fixnum, Hash)>] Array<ModelTransaction> data, response status code and response headers
    def create_model_change_using_post_with_http_info(change_request, model_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_change_using_post ...'
      end
      # verify the required parameter 'change_request' is set
      if @api_client.config.client_side_validation && change_request.nil?
        fail ArgumentError, "Missing the required parameter 'change_request' when calling ModelApi.create_model_change_using_post"
      end
      # verify the required parameter 'model_id' is set
      if @api_client.config.client_side_validation && model_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_id' when calling ModelApi.create_model_change_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model/{model_id}/model_change'.sub('{' + 'model_id' + '}', model_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(change_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 => 'Array<ModelTransaction>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_change_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a model commentary
    # Create a new comment for a model available for your firm.
    # @param model_comment_request modelCommentRequest
    # @param [Hash] opts the optional parameters
    # @return [ModelComment]
    def create_model_comment_using_post(model_comment_request, opts = {})
      data, _status_code, _headers = create_model_comment_using_post_with_http_info(model_comment_request, opts)
      data
    end

    # Create a model commentary
    # Create a new comment for a model available for your firm.
    # @param model_comment_request modelCommentRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelComment, Fixnum, Hash)>] ModelComment data, response status code and response headers
    def create_model_comment_using_post_with_http_info(model_comment_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_comment_using_post ...'
      end
      # verify the required parameter 'model_comment_request' is set
      if @api_client.config.client_side_validation && model_comment_request.nil?
        fail ArgumentError, "Missing the required parameter 'model_comment_request' when calling ModelApi.create_model_comment_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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(model_comment_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 => 'ModelComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_comment_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a model holding
    # Create a new model holding record for a specific model and date.
    # @param model_holding_request modelHoldingRequest
    # @param [Hash] opts the optional parameters
    # @return [ModelHolding]
    def create_model_holding_using_post(model_holding_request, opts = {})
      data, _status_code, _headers = create_model_holding_using_post_with_http_info(model_holding_request, opts)
      data
    end

    # Create a model holding
    # Create a new model holding record for a specific model and date.
    # @param model_holding_request modelHoldingRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelHolding, Fixnum, Hash)>] ModelHolding data, response status code and response headers
    def create_model_holding_using_post_with_http_info(model_holding_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_holding_using_post ...'
      end
      # verify the required parameter 'model_holding_request' is set
      if @api_client.config.client_side_validation && model_holding_request.nil?
        fail ArgumentError, "Missing the required parameter 'model_holding_request' when calling ModelApi.create_model_holding_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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(model_holding_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 => 'ModelHolding')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_holding_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a model transaction
    # Create a new transaction record for a security under a model for a specific date.
    # @param model_transaction_request modelTransactionRequest
    # @param [Hash] opts the optional parameters
    # @return [ModelTransaction]
    def create_model_transaction_using_post(model_transaction_request, opts = {})
      data, _status_code, _headers = create_model_transaction_using_post_with_http_info(model_transaction_request, opts)
      data
    end

    # Create a model transaction
    # Create a new transaction record for a security under a model for a specific date.
    # @param model_transaction_request modelTransactionRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelTransaction, Fixnum, Hash)>] ModelTransaction data, response status code and response headers
    def create_model_transaction_using_post_with_http_info(model_transaction_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_transaction_using_post ...'
      end
      # verify the required parameter 'model_transaction_request' is set
      if @api_client.config.client_side_validation && model_transaction_request.nil?
        fail ArgumentError, "Missing the required parameter 'model_transaction_request' when calling ModelApi.create_model_transaction_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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(model_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 => 'ModelTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_transaction_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Create a model
    # Create a new model for your firm to which a portfolios can later subscribe.
    # @param model_info_request modelInfoRequest
    # @param [Hash] opts the optional parameters
    # @return [Model]
    def create_model_using_post(model_info_request, opts = {})
      data, _status_code, _headers = create_model_using_post_with_http_info(model_info_request, opts)
      data
    end

    # Create a model
    # Create a new model for your firm to which a portfolios can later subscribe.
    # @param model_info_request modelInfoRequest
    # @param [Hash] opts the optional parameters
    # @return [Array<(Model, Fixnum, Hash)>] Model data, response status code and response headers
    def create_model_using_post_with_http_info(model_info_request, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.create_model_using_post ...'
      end
      # verify the required parameter 'model_info_request' is set
      if @api_client.config.client_side_validation && model_info_request.nil?
        fail ArgumentError, "Missing the required parameter 'model_info_request' when calling ModelApi.create_model_using_post"
      end
      # resource path
      local_var_path = '/nucleus/v1/model'

      # 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(model_info_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 => 'Model')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#create_model_using_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a model asset size
    # Permanently delete a model asset size record for a model. 
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_model_asset_size_using_delete(model_asset_size_id, opts = {})
      delete_model_asset_size_using_delete_with_http_info(model_asset_size_id, opts)
      nil
    end

    # Delete a model asset size
    # Permanently delete a model asset size record for a model. 
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_model_asset_size_using_delete_with_http_info(model_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.delete_model_asset_size_using_delete ...'
      end
      # verify the required parameter 'model_asset_size_id' is set
      if @api_client.config.client_side_validation && model_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_asset_size_id' when calling ModelApi.delete_model_asset_size_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_asset_size/{model_asset_size_id}'.sub('{' + 'model_asset_size_id' + '}', model_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: ModelApi#delete_model_asset_size_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a model commentary
    # Permanently delete a model comment for a model
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_model_comment_using_delete(model_comment_id, opts = {})
      delete_model_comment_using_delete_with_http_info(model_comment_id, opts)
      nil
    end

    # Delete a model commentary
    # Permanently delete a model comment for a model
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_model_comment_using_delete_with_http_info(model_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.delete_model_comment_using_delete ...'
      end
      # verify the required parameter 'model_comment_id' is set
      if @api_client.config.client_side_validation && model_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_comment_id' when calling ModelApi.delete_model_comment_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_comment/{model_comment_id}'.sub('{' + 'model_comment_id' + '}', model_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: ModelApi#delete_model_comment_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a model holding
    # Permanently delete a model holding record for a model.
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_model_holding_using_delete(model_holding_id, opts = {})
      delete_model_holding_using_delete_with_http_info(model_holding_id, opts)
      nil
    end

    # Delete a model holding
    # Permanently delete a model holding record for a model.
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_model_holding_using_delete_with_http_info(model_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.delete_model_holding_using_delete ...'
      end
      # verify the required parameter 'model_holding_id' is set
      if @api_client.config.client_side_validation && model_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_holding_id' when calling ModelApi.delete_model_holding_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_holding/{model_holding_id}'.sub('{' + 'model_holding_id' + '}', model_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: ModelApi#delete_model_holding_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a model transaction
    # Permanently delete a model transaction for a model.
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_model_transaction_using_delete(model_transaction_id, opts = {})
      delete_model_transaction_using_delete_with_http_info(model_transaction_id, opts)
      nil
    end

    # Delete a model transaction
    # Permanently delete a model transaction for a model.
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_model_transaction_using_delete_with_http_info(model_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.delete_model_transaction_using_delete ...'
      end
      # verify the required parameter 'model_transaction_id' is set
      if @api_client.config.client_side_validation && model_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_transaction_id' when calling ModelApi.delete_model_transaction_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_transaction/{model_transaction_id}'.sub('{' + 'model_transaction_id' + '}', model_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: ModelApi#delete_model_transaction_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete a model
    # Permanently delete a model for your firm.
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_model_using_delete(model_id, opts = {})
      delete_model_using_delete_with_http_info(model_id, opts)
      nil
    end

    # Delete a model
    # Permanently delete a model for your firm.
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_model_using_delete_with_http_info(model_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.delete_model_using_delete ...'
      end
      # verify the required parameter 'model_id' is set
      if @api_client.config.client_side_validation && model_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_id' when calling ModelApi.delete_model_using_delete"
      end
      # resource path
      local_var_path = '/nucleus/v1/model/{model_id}'.sub('{' + 'model_id' + '}', model_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: ModelApi#delete_model_using_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all models
    # Get details for all models defined for your firm to which portfolios can subscribe.
    # @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 [PageModel]
    def get_model_all_using_get(opts = {})
      data, _status_code, _headers = get_model_all_using_get_with_http_info(opts)
      data
    end

    # List all models
    # Get details for all models defined for your firm to which portfolios can subscribe.
    # @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<(PageModel, Fixnum, Hash)>] PageModel data, response status code and response headers
    def get_model_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/model'

      # 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 => 'PageModel')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all model asset sizes
    # Get a list of asset sizes per date for all models 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 [PageModelAssetSize]
    def get_model_asset_size_all_using_get(opts = {})
      data, _status_code, _headers = get_model_asset_size_all_using_get_with_http_info(opts)
      data
    end

    # List all model asset sizes
    # Get a list of asset sizes per date for all models 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<(PageModelAssetSize, Fixnum, Hash)>] PageModelAssetSize data, response status code and response headers
    def get_model_asset_size_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_asset_size_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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 => 'PageModelAssetSize')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_asset_size_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a model asset size
    # Retrieve the information for a model asset size record for a model.
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [ModelAssetSize]
    def get_model_asset_size_using_get(model_asset_size_id, opts = {})
      data, _status_code, _headers = get_model_asset_size_using_get_with_http_info(model_asset_size_id, opts)
      data
    end

    # Retrieve a model asset size
    # Retrieve the information for a model asset size record for a model.
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @option opts [String] :currency_conversion USD
    # @return [Array<(ModelAssetSize, Fixnum, Hash)>] ModelAssetSize data, response status code and response headers
    def get_model_asset_size_using_get_with_http_info(model_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_asset_size_using_get ...'
      end
      # verify the required parameter 'model_asset_size_id' is set
      if @api_client.config.client_side_validation && model_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_asset_size_id' when calling ModelApi.get_model_asset_size_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_asset_size/{model_asset_size_id}'.sub('{' + 'model_asset_size_id' + '}', model_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 => 'ModelAssetSize')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_asset_size_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all model commentaries
    # List all comments for all models defined by 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 [PageModelComment]
    def get_model_comment_all_using_get(opts = {})
      data, _status_code, _headers = get_model_comment_all_using_get_with_http_info(opts)
      data
    end

    # List all model commentaries
    # List all comments for all models defined by 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<(PageModelComment, Fixnum, Hash)>] PageModelComment data, response status code and response headers
    def get_model_comment_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_comment_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/model_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 => 'PageModelComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_comment_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a model commentary
    # Retrieve the information for a model comment for a model.
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [ModelComment]
    def get_model_comment_using_get(model_comment_id, opts = {})
      data, _status_code, _headers = get_model_comment_using_get_with_http_info(model_comment_id, opts)
      data
    end

    # Retrieve a model commentary
    # Retrieve the information for a model comment for a model.
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelComment, Fixnum, Hash)>] ModelComment data, response status code and response headers
    def get_model_comment_using_get_with_http_info(model_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_comment_using_get ...'
      end
      # verify the required parameter 'model_comment_id' is set
      if @api_client.config.client_side_validation && model_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_comment_id' when calling ModelApi.get_model_comment_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_comment/{model_comment_id}'.sub('{' + 'model_comment_id' + '}', model_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 => 'ModelComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_comment_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all model holdings
    # Get all model holding records for all models 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 [PageModelHolding]
    def get_model_holding_all_using_get(opts = {})
      data, _status_code, _headers = get_model_holding_all_using_get_with_http_info(opts)
      data
    end

    # List all model holdings
    # Get all model holding records for all models 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<(PageModelHolding, Fixnum, Hash)>] PageModelHolding data, response status code and response headers
    def get_model_holding_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_holding_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/model_holding'

      # 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 => 'PageModelHolding')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_holding_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a model holding
    # Retrieve the information for a model holding record for a model.
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [ModelHolding]
    def get_model_holding_using_get(model_holding_id, opts = {})
      data, _status_code, _headers = get_model_holding_using_get_with_http_info(model_holding_id, opts)
      data
    end

    # Retrieve a model holding
    # Retrieve the information for a model holding record for a model.
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelHolding, Fixnum, Hash)>] ModelHolding data, response status code and response headers
    def get_model_holding_using_get_with_http_info(model_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_holding_using_get ...'
      end
      # verify the required parameter 'model_holding_id' is set
      if @api_client.config.client_side_validation && model_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_holding_id' when calling ModelApi.get_model_holding_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_holding/{model_holding_id}'.sub('{' + 'model_holding_id' + '}', model_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(: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 => 'ModelHolding')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_holding_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # List all model transactions
    # Get details for all transaction records for all models defined by 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 [PageModelTransaction]
    def get_model_transaction_all_using_get(opts = {})
      data, _status_code, _headers = get_model_transaction_all_using_get_with_http_info(opts)
      data
    end

    # List all model transactions
    # Get details for all transaction records for all models defined by 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<(PageModelTransaction, Fixnum, Hash)>] PageModelTransaction data, response status code and response headers
    def get_model_transaction_all_using_get_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_transaction_all_using_get ...'
      end
      # resource path
      local_var_path = '/nucleus/v1/model_transaction'

      # 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 => 'PageModelTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_transaction_all_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a model transaction
    # Retrieve the information for a model transaction for a model.
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [ModelTransaction]
    def get_model_transaction_using_get(model_transaction_id, opts = {})
      data, _status_code, _headers = get_model_transaction_using_get_with_http_info(model_transaction_id, opts)
      data
    end

    # Retrieve a model transaction
    # Retrieve the information for a model transaction for a model.
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelTransaction, Fixnum, Hash)>] ModelTransaction data, response status code and response headers
    def get_model_transaction_using_get_with_http_info(model_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_transaction_using_get ...'
      end
      # verify the required parameter 'model_transaction_id' is set
      if @api_client.config.client_side_validation && model_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_transaction_id' when calling ModelApi.get_model_transaction_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_transaction/{model_transaction_id}'.sub('{' + 'model_transaction_id' + '}', model_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(: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 => 'ModelTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_transaction_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Retrieve a model
    # Get the information for a model for your firm.
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Model]
    def get_model_using_get(model_id, opts = {})
      data, _status_code, _headers = get_model_using_get_with_http_info(model_id, opts)
      data
    end

    # Retrieve a model
    # Get the information for a model for your firm.
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(Model, Fixnum, Hash)>] Model data, response status code and response headers
    def get_model_using_get_with_http_info(model_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.get_model_using_get ...'
      end
      # verify the required parameter 'model_id' is set
      if @api_client.config.client_side_validation && model_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_id' when calling ModelApi.get_model_using_get"
      end
      # resource path
      local_var_path = '/nucleus/v1/model/{model_id}'.sub('{' + 'model_id' + '}', model_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 => 'Model')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#get_model_using_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a model asset size
    # Update a model asset size record for a model.
    # @param model_asset_size model_asset_size
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [ModelAssetSize]
    def update_model_asset_size_using_put(model_asset_size, model_asset_size_id, opts = {})
      data, _status_code, _headers = update_model_asset_size_using_put_with_http_info(model_asset_size, model_asset_size_id, opts)
      data
    end

    # Update a model asset size
    # Update a model asset size record for a model.
    # @param model_asset_size model_asset_size
    # @param model_asset_size_id UUID model_asset_size_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelAssetSize, Fixnum, Hash)>] ModelAssetSize data, response status code and response headers
    def update_model_asset_size_using_put_with_http_info(model_asset_size, model_asset_size_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.update_model_asset_size_using_put ...'
      end
      # verify the required parameter 'model_asset_size' is set
      if @api_client.config.client_side_validation && model_asset_size.nil?
        fail ArgumentError, "Missing the required parameter 'model_asset_size' when calling ModelApi.update_model_asset_size_using_put"
      end
      # verify the required parameter 'model_asset_size_id' is set
      if @api_client.config.client_side_validation && model_asset_size_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_asset_size_id' when calling ModelApi.update_model_asset_size_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_asset_size/{model_asset_size_id}'.sub('{' + 'model_asset_size_id' + '}', model_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(model_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 => 'ModelAssetSize')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#update_model_asset_size_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a model commentary
    # Update a model comment for a model.
    # @param model_comment model_comment
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [ModelComment]
    def update_model_comment_using_put(model_comment, model_comment_id, opts = {})
      data, _status_code, _headers = update_model_comment_using_put_with_http_info(model_comment, model_comment_id, opts)
      data
    end

    # Update a model commentary
    # Update a model comment for a model.
    # @param model_comment model_comment
    # @param model_comment_id UUID model_comment_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelComment, Fixnum, Hash)>] ModelComment data, response status code and response headers
    def update_model_comment_using_put_with_http_info(model_comment, model_comment_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.update_model_comment_using_put ...'
      end
      # verify the required parameter 'model_comment' is set
      if @api_client.config.client_side_validation && model_comment.nil?
        fail ArgumentError, "Missing the required parameter 'model_comment' when calling ModelApi.update_model_comment_using_put"
      end
      # verify the required parameter 'model_comment_id' is set
      if @api_client.config.client_side_validation && model_comment_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_comment_id' when calling ModelApi.update_model_comment_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_comment/{model_comment_id}'.sub('{' + 'model_comment_id' + '}', model_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(model_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 => 'ModelComment')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#update_model_comment_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a model holding
    # Update a model holding record for a model.
    # @param model_holding model_holding
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [ModelHolding]
    def update_model_holding_using_put(model_holding, model_holding_id, opts = {})
      data, _status_code, _headers = update_model_holding_using_put_with_http_info(model_holding, model_holding_id, opts)
      data
    end

    # Update a model holding
    # Update a model holding record for a model.
    # @param model_holding model_holding
    # @param model_holding_id UUID model_holding_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelHolding, Fixnum, Hash)>] ModelHolding data, response status code and response headers
    def update_model_holding_using_put_with_http_info(model_holding, model_holding_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.update_model_holding_using_put ...'
      end
      # verify the required parameter 'model_holding' is set
      if @api_client.config.client_side_validation && model_holding.nil?
        fail ArgumentError, "Missing the required parameter 'model_holding' when calling ModelApi.update_model_holding_using_put"
      end
      # verify the required parameter 'model_holding_id' is set
      if @api_client.config.client_side_validation && model_holding_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_holding_id' when calling ModelApi.update_model_holding_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_holding/{model_holding_id}'.sub('{' + 'model_holding_id' + '}', model_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(model_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 => 'ModelHolding')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#update_model_holding_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a model transaction
    # Update a model transaction for a model.
    # @param model_transaction model_transaction
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [ModelTransaction]
    def update_model_transaction_using_put(model_transaction, model_transaction_id, opts = {})
      data, _status_code, _headers = update_model_transaction_using_put_with_http_info(model_transaction, model_transaction_id, opts)
      data
    end

    # Update a model transaction
    # Update a model transaction for a model.
    # @param model_transaction model_transaction
    # @param model_transaction_id UUID model_transaction_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(ModelTransaction, Fixnum, Hash)>] ModelTransaction data, response status code and response headers
    def update_model_transaction_using_put_with_http_info(model_transaction, model_transaction_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.update_model_transaction_using_put ...'
      end
      # verify the required parameter 'model_transaction' is set
      if @api_client.config.client_side_validation && model_transaction.nil?
        fail ArgumentError, "Missing the required parameter 'model_transaction' when calling ModelApi.update_model_transaction_using_put"
      end
      # verify the required parameter 'model_transaction_id' is set
      if @api_client.config.client_side_validation && model_transaction_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_transaction_id' when calling ModelApi.update_model_transaction_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/model_transaction/{model_transaction_id}'.sub('{' + 'model_transaction_id' + '}', model_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(model_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 => 'ModelTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#update_model_transaction_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Update a model
    # Update a model for your firm.
    # @param model model
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Model]
    def update_model_using_put(model, model_id, opts = {})
      data, _status_code, _headers = update_model_using_put_with_http_info(model, model_id, opts)
      data
    end

    # Update a model
    # Update a model for your firm.
    # @param model model
    # @param model_id UUID model_id
    # @param [Hash] opts the optional parameters
    # @return [Array<(Model, Fixnum, Hash)>] Model data, response status code and response headers
    def update_model_using_put_with_http_info(model, model_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ModelApi.update_model_using_put ...'
      end
      # verify the required parameter 'model' is set
      if @api_client.config.client_side_validation && model.nil?
        fail ArgumentError, "Missing the required parameter 'model' when calling ModelApi.update_model_using_put"
      end
      # verify the required parameter 'model_id' is set
      if @api_client.config.client_side_validation && model_id.nil?
        fail ArgumentError, "Missing the required parameter 'model_id' when calling ModelApi.update_model_using_put"
      end
      # resource path
      local_var_path = '/nucleus/v1/model/{model_id}'.sub('{' + 'model_id' + '}', model_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(model)
      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 => 'Model')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ModelApi#update_model_using_put\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end