def make_request(self, model, action, url_params={}, post_data=None):
        '''
        Send request to API then validate, parse, and return the response
        '''
        url = self._create_url(model, **url_params)
        headers = self._headers(action)

        try:
            response = requests.request(action, url, headers=headers, data=post_data)
        except Exception as e:
            raise APIError("There was an error communicating with Union: %s" % e)

        if not self._is_valid(response):
            raise ValidationError("The Union response returned an error: %s" % response.content)

        return self._parse_response(response)
Send request to API then validate, parse, and return the response