def METHOD_NAME(self, request, repo_id):
    """add one repo_tag.
    """
    # argument check
    tag_name = request.data.get('name')
    if not tag_name:
        error_msg = 'name invalid.'
        return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    tag_color = request.data.get('color')
    if not tag_color:
        error_msg = 'color invalid.'
        return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # resource check
    repo = seafile_api.get_repo(repo_id)
    if not repo:
        error_msg = 'Library %s not found.' % repo_id
        return api_error(status.HTTP_404_NOT_FOUND, error_msg)
    repo_tag = RepoTags.objects.get_repo_tag_by_name(repo_id, tag_name)
    if repo_tag:
        error_msg = 'repo tag %s already exist.' % tag_name
        return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # permission check
    if check_folder_permission(request, repo_id, '/') != PERMISSION_READ_WRITE:
        error_msg = 'Permission denied.'
        return api_error(status.HTTP_403_FORBIDDEN, error_msg)
    try:
        repo_tag = RepoTags.objects.create_repo_tag(repo_id, tag_name, tag_color)
    except Exception as e:
        logger.error(e)
        error_msg = 'Internal Server Error'
        return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
    return Response({"repo_tag": repo_tag.to_dict()}, status=status.HTTP_201_CREATED)