Allow [paramType=query] so we can override the type to query if needed.
Always return a dictionary that has all of the required attributes like the original method, instead of filling them in somewhere else later conditionally.
Default unsupplied dataType to string.