def METHOD_NAME(request, kwargs):
    """
    create_errata_diff_scan(kwargs)
        submits 'differential scan' task, this procedure should be used
        from errata tool
    @param kwargs:
     - package_owner - name of the package for the advisory owner
     - target - name, version, release of scanned package (brew build)
     - base - previous version of package, the one to make diff against
     - id - ET internal id for the scan record in ET
     - errata_id - the ET internal id of the advisory that the build is part of
     - rhel_version - short tag of rhel version -- product (e. g. 'RHEL-6.3.Z')
     - release - The advisory's release ('ASYNC', 'RHEL-.*', 'MRG.*')
    @type kwargs: dictionary
    @rtype: dictionary
    @return:
     - status: status message: { 'OK', 'ERROR', 'INELIGIBLE' }
     - message: in case of error, here is detailed message
     - id: ID of mapping between ET_IDs and OSH IDs. This may be used to
       access waiver upon scan creation (you may use both URLs, same content
       is served):
           <hub_prefix>/waiving/et_mapping/<id>
           <hub_prefix>/waiving/et/<et_internal_osh_id>
    """
    logger.info('[CREATE_SCAN] %s', kwargs)
    # either there is no need to check user or user has to have permission to
    # submit scans
    if AppSettings.setting_check_user_can_submit() and \
            not request.user.has_perm('scan.errata_xmlrpc_scan'):
        response = {}
        response['status'] = 'ERROR'
        response['message'] = 'You are not authorized to execute this \