code: def _validate_request(endpoint, file_type='json', data=None, params=None):
          
          if not isinstance(endpoint, string_types) or endpoint.strip() == '':
              raise ClientException("Must submit `endpoint` for DHIS2 API")
          if not isinstance(file_type, string_types) or file_type.lower() not in ('json', 'csv', 'xml', 'pdf', 'xlsx'):
              raise ClientException("Invalid file_type: {}".format(file_type))
          if params:
              if not isinstance(params, (dict, list)):
                  raise ClientException("`params` must be a dict or list of tuples, not {}".format(params.__class__.__name__))
              if isinstance(params, list) and not all([isinstance(elem, tuple) for elem in params]):
                  raise ClientException("`params` list must all be tuples")
          if data and not isinstance(data, dict):
              raise ClientException("`data` must be a dict, not {}".format(data.__class__.__name__))
docs: Validate request before calling API
          :param endpoint: API endpoint
          :param file_type: file type requested
          :param data: payload
          :param params: HTTP parameters