code: def _apicall(self, method, **params):
          
          LOGGER.debug('%s(%r)', method, params)
          auth = {
              'customernumber': self._get_provider_option('auth_customer_id'),
              'apikey': self._get_provider_option('auth_api_key'),
          }
          if method == 'login':
              auth['apipassword'] = self._get_provider_option('auth_api_password')
          else:
              auth['apisessionid'] = self.api_session_id
          if not all(auth.values()):
              raise Exception('No valid authentication mechanism found')
          data = self._request('POST', url='', data={
              'action': method,
              'param': dict(params, **auth),
          })
          if data['status'] != 'success':
              raise Exception("{} ({})".format(
                  data['longmessage'], data['statuscode']))
          return data.get('responsedata', {})
docs: Call an API method and return response data. For more info, see:
          https://ccp.netcup.net/run/webservice/servers/endpoint