I wonder if this could all be consolidated to a two line change with a simple guard block, after the param type has been determined, rather than having the condition be checked in multiple places:

    if (apiParamDesc.ParameterDescriptor == null)
      return new Parameter { ParamType = paramType, Name = apiParamDesc.Name, Required = true, Type = "string" }

Thoughts?