Creating Seamless Links

There are a couple of ways to generate seamless links, each with varying levels of automation and control. Below are the primary methods:

You can automate link generation by leveraging an API endpoint such as /getCourseLink, passing in necessary identifiers like courseId, teamId, and externalUserId.

If you prefer to work within the admin panel, follow these steps to manually generate a seamless link:

  1. Go to the relevant course in the Learning tab of the eduMe Admin Panel.

  2. In the Delivery section, copy the base URL using the Seamless link option.

  3. Personalise the link by appending the external user ID:

    https://learn.edume.com/e/c/{courseId}?g={teamId}&e={externalUserId}
  4. Sign the link (as described in signing the link section).

For more flexibility and automation, manually create and sign seamless links. You can build the base URL using the templates below based on the content type, fetch IDs from an API, and sign the URL offline.

Content Type

URL Template

Course

https://learn.edume.com/e/c/{courseId}?g={teamId}&e={externalUserId}

Guide

https://learn.edume.com/e/gd/{guideId}?g={teamId}&e={externalUserId}

Knowledge Hub

https://learn.edume.com/e/kh/{knowledgeHubId}?e={externalUserId}

Lesson

https://learn.edume.com/e/l/{lessonId}?g={teamId}&e={externalUserId}

Survey

https://learn.edume.com/e/s/{surveyId}?g={teamId}&e={externalUserId}

  1. Start from URL to appropriate content

  2. Create a signature of URL (SHA256 HMAC of secret and URL - see sample code below)

  3. Add signature to URL as sig query parameter

import crypto from 'node:crypto';

const generateSignature = (urlWithUserId, secret) =>
  crypto
    .createHmac('sha256', secret)
    .update(urlWithUserId)
    .digest('hex')

import hmac
import hashlib

def generate_signature(url_with_user_id, secret):
    return hmac.new(
        secret.encode("utf8"), url_with_user_id.encode("utf8"), hashlib.sha256
    ).hexdigest()