@_enabled_or_noop<EOL><INDENT>def _post(self, url, data=None):<DEDENT>
url = urljoin(self.base_url, url)<EOL>try:<EOL><INDENT>r = self._make_request(**dict(<EOL>method='<STR_LIT:POST>',<EOL>url=url,<EOL>json=data,<EOL>auth=self.auth,<EOL>timeout=self.timeout,<EOL>hooks=self.request_hooks,<EOL>headers=self.request_headers<EOL>))<EOL><DEDENT>except requests.exceptions.RequestException as e:<EOL><INDENT>raise e<EOL><DEDENT>else:<EOL><INDENT>if r.status_code >= <NUM_LIT>:<EOL><INDENT>try:<EOL><INDENT>error_data = r.json()<EOL><DEDENT>except ValueError:<EOL><INDENT>error_data = { "<STR_LIT>": r }<EOL><DEDENT>raise MailChimpError(error_data)<EOL><DEDENT>if r.status_code == <NUM_LIT>:<EOL><INDENT>return None<EOL><DEDENT>return r.json()<EOL><DEDENT>
Handle authenticated POST requests

:param url: The url for the endpoint including path parameters
:type url: :py:class:`str`
:param data: The request body parameters
:type data: :py:data:`none` or :py:class:`dict`
:returns: The JSON output from the API or an error message