def handle_webhook(request, hook_type, *args, **kwargs):
    """
    Required parameters:
        hook_type           ['update_checksum'|'test_job']
        UUID                Unique IDS identifier for the data object to modify
        checksum            Calculated checksum value

    Testing from command line:
        curl -k --data 'UUID=2483901498122179046-242ac1111-0001-012&checksum=060a735c8f6240949ae7ac9fd8d22129' http://localhost:8000/webhook/update_checksum/
    """

    if hook_type == 'update_checksum':
        api_client = get_portal_api_client()

        try:
            logger.debug('profile: {}'.format(api_client.profiles.get()))
        except Exception as e:
            logger.error('bad client: %s', repr(e))

        logger.debug('Webhook request type: %s, body: %s' % (hook_type, request.body))

        if request.GET:
            print "GET"
            uuid = request.GET.get('UUID', None)
            checksum = request.GET.get('checksum', None)
            # last_checksum_update = request.GET.get('lastChecksumUpdated', None)
        elif request.POST:
            print "POST"
            logger.debug(request.POST)
            uuid = request.POST.get('UUID', None)
            checksum = request.POST.get('checksum', None)
            # last_checksum_update = request.POST.get('lastChecksumUpdated', None)

        if uuid is None:
            logger.exception('Missing UUID.')
            return HttpResponse("Error\n")

        if checksum is None:
            logger.exception('Missing checksum.')
            return HttpResponse("Error\n")

        try:
            data = Data(api_client=api_client, uuid=uuid)
            logger.debug('Metadata for UUID %s: %s' % (uuid, data.value))
        except Exception as e:
            logger.exception('Invalid UUID ( %s ), Agave object not found. %s' % (uuid, repr(e)))
            return HttpResponse("Error")

        updated_time = datetime.datetime.now()
        previous_checksum = data.value.get('checksum', None)

        time_template = "%Y-%m-%dT%H:%M:%S"

        if previous_checksum is None:
            try:
                data.value['checksum'] = checksum
                data.value['lastChecksumUpdated'] = updated_time.strftime(time_template)
                data.value['checkStatus'] = True
                data.save()
                logger.debug('New checksum saved for UUID: %s!' % uuid)
            except Exception as e:
                logger.exception('Checksum was not saved successfully. %s' % e)
                return HttpResponse("Error")
        elif previous_checksum == checksum:
            try:
                data.value['checksum'] = checksum
                data.value['lastChecksumUpdated'] = updated_time.strftime(time_template)
                data.value['checkStatus'] = True
                data.save()
                logger.debug('Checksum is identical, timestamp updated for UUID: %s!' % uuid)
            except Exception as e:
                logger.exception('Checksum was not saved successfully. %s' % e)
                return HttpResponse("Error")
        else:
            try:
                data.value['checksumConflict'] = checksum
                data.value['lastChecksumUpdated'] = updated_time.strftime(time_template)
                data.value['checkStatus'] = False
                data.save()
                logger.warning('Checksum is NOT consistent with previous for UUID: %s!' % uuid)
            except Exception as e:
                logger.exception('Checksum was not saved successfully. %s' % e)
                return HttpResponse("Error")

        return HttpResponse(uuid + ' ' + checksum + '\n')

    # testing for calling job
    elif hook_type == 'test_job':
        uuid = '4544798190901268966-242ac1111-0001-012'
        data = Data(uuid=uuid)
        data.calculate_checksum()
        return HttpResponse('Job submitted for uuid = %s!' % uuid)
    else:
        return HttpResponse('OK')