def _post(self, path, **kwargs):
        """ return a dict. """
        # clean kwargs (filter None and empty string)
        clean_kwargs = clean_dict(kwargs)

        data = bytes(json.dumps(clean_kwargs), encoding='UTF-8')
        # change content type on post
        self._headers['Content-Type'] = 'application/json'
        api = self._api('%s.json' % path)
        req = request.Request(
            api, headers=self._headers, data=data, method='POST')
        try:
            resp = request.urlopen(req, data).read()
        except urllib.error.HTTPError as e:
            resp = e.fp.read()
        # reset content type
        self._headers['Content-Type'] = 'text/json'
        return json.loads(resp.decode())