def post(resource_uri, body: {}, upload: nil, options: {})
      params = { data: body }.merge(options.empty? ? {} : { options: options })
      if upload
        perform_request(:post, resource_uri, params.merge(file: upload)) do |c|
          c.request :multipart
        end
      else
        perform_request(:post, resource_uri, params)
      end
    end
def post(resource_uri, body: {}, upload: nil, options: {})
      params = { data: body }.merge(options.empty? ? {} : { options: options })
      if upload
        perform_request(:post, resource_uri, params.merge(file: upload)) do |c|
          c.request :multipart
        end
      else
        perform_request(:post, resource_uri, params)
      end
    end
Public: Performs a POST request against the API.

 resource_uri - [String] the resource URI relative to the base Asana API
                URL, e.g "/tags".
 body         - [Hash] the body to POST.
 upload       - [Faraday::UploadIO] an upload object to post as multipart.
                Defaults to nil.
 options      - [Hash] the request I/O options

 Returns an [Asana::HttpClient::Response] if everything went well.
 Raises [Asana::Errors::APIError] if anything went wrong.