code: def add_files_via_url(self, dataset_key, files={}):
          
          file_requests = [_swagger.FileCreateOrUpdateRequest(
              name=file_name,
              source=_swagger.FileSourceCreateOrUpdateRequest(
                  url=file_info['url'],
                  expand_archive=file_info.get('expand_archive',
                                               False)),
              description=file_info.get('description'),
              labels=file_info.get('labels'),
          ) for file_name, file_info in files.items()]
          owner_id, dataset_id = parse_dataset_key(dataset_key)
          try:
              self._datasets_api.add_files_by_source(
                  owner_id, dataset_id,
                  _swagger.FileBatchUpdateRequest(files=file_requests))
          except _swagger.rest.ApiException as e:
              raise RestApiError(cause=e)
docs: Add or update dataset files linked to source URLs
  
          :param dataset_key: Dataset identifier, in the form of owner/id
          :type dataset_key: str
          :param files: Dict containing the name of files and metadata
              Uses file name as a dict containing File description, labels and
              source URLs to add or update (Default value = {})
              *description and labels are optional.*
          :type files: dict
          :raises RestApiException: If a server error occurs
  
          Examples
          --------
          >>> import datadotworld as dw
          >>> url = 'http://www.acme.inc/example.csv'
          >>> api_client = dw.api_client()
          >>> api_client.add_files_via_url(
          ...     'username/test-dataset',
          ...     {'example.csv': {
          ...         'url': url,
          ...         'labels': ['raw data'],
          ...         'description': 'file description'}})  # doctest: +SKIP