    def post(self, data=None, function=None, idempotent_key=None, **kwargs):
        # Allow us to parse through arbitrary request arguments
        if data is None:
            data = {}
        request_kwargs = {}
        if 'file' in kwargs:
            request_kwargs['files'] = {
                'file': (open(kwargs.get('file'), 'rb'))
            }
            kwargs.pop('file', None)
        # We need this flag to force non-json on file uploads
        json = True
        if 'json' in kwargs:
            json = kwargs.get('json')
            kwargs.pop('json', None)
        data = {**data, **kwargs}
        url = self._build_url(function)
        response = self.client.post(
            url,
            data,
            json=json,
            idempotent_key=idempotent_key,
            **request_kwargs
        )
        return self._handle_resource_data(response)