Hosted course URLs
Every course and every version has aurl on the institute’s hosted catalogue site, where enrolment, cart and checkout happen:
course_base_urlis inGET /site(see Course page address).- The route is the course id, or the custom address the institute gave the course page.
- The query selects the version (
enrollInviteId,packageSessionId,level). Link tourlexactly as returned; do not build it yourself or drop the query, or the visitor may land on a different version.
url is null. Hide the link rather than guess one.
seo
GET /courses/{id} returns ready-made page metadata:
descriptionis plain text, at most 160 characters.canonical_urlis the hosted page without its query. It is the right canonical only when you do not host your own course page. With?language=hi, everyseofield describes the Hindi edition.
structured_data
A schema.org Course object. Put it in a JSON-LD script tag as is:
offersis present only when the price is shown.availabilitymapsavailable→InStock,coming_soon/not_started→PreOrder,closed→Discontinued.image,urlandinLanguageare left out when unknown.provider.sameAsis the institute’s website from its Vacademy profile, else the hosted site’s home page.
replace keeps a </script> inside any text field from ending the tag.
Two setups
- Link to hosted pages
- Host your own course pages
Your site renders listings (home, course grid, stream pages, learning paths); every course links to its hosted
url. You build no course page.- Search engines index the course on the hosted site, which renders its own metadata.
- Your sitemap lists your pages only.
GET /sitemapURLs are on the hosted site’s host; a sitemap may not list another host’s URLs. - This is the Brahm Varchas setup: listings on
brahmvarchas.org, course pages onlearning.brahmvarchas.org/store.
GET /sitemap
seo.canonical_url, without the version query). Courses without a page address are left out. lastmod is when the course’s newest version was created, not when it was last edited.