code: def _order_by_is_valid_or_none(self, params):
          
          if not "order_by" in params or not params["order_by"]:
              return True
  
          def _order_by_dict_is_not_well_formed(d):
              if not isinstance(d, dict):
                  # Bad type.
                  return True
              if "property_name" in d and d["property_name"]:
                  if "direction" in d and not direction.is_valid_direction(d["direction"]):
                      # Bad direction provided.
                      return True
                  for k in d:
                      if k != "property_name" and k != "direction":
                          # Unexpected key.
                          return True
                  # Everything looks good!
                  return False
              # Missing required key.
              return True
  
          # order_by is converted to a list before this point if it wasn't one before.
          order_by_list = json.loads(params["order_by"])
  
          for order_by in order_by_list:
              if _order_by_dict_is_not_well_formed(order_by):
                  return False
          if not "group_by" in params or not params["group_by"]:
              # We must have group_by to have order_by make sense.
              return False
          return True
docs: Validates that a given order_by has proper syntax.
  
          :param params: Query params.
          :return: Returns True if either no order_by is present, or if the order_by is well-formed.