Governed asset store
- Folders with visibility:
private(owner),course(enrolled students),tenant(whole institution). - MediaAccess — granular permissions per asset (user/role × view/download/edit).
- Share links (
MediaShareLink) — public links with expiry, max downloads and an optional password; the endpoint returns a temporary signed URL, never the raw storageUrl. - Versioning (
MediaVersion) — upload a new version, keep history, restore a previous one. - Access analytics (
MediaAccessLog) — views/downloads/previews, unique users, daily breakdown. - Thumbnails — generated automatically on upload.
Storage metering
Each tenant has a storage quota (storageQuotaBytes) and live usage (storageUsedBytes); uploads check the quota first, and alerts fire at 80%/100% for the institution admin.
Drive / OneDrive sync
Per-tenant integrations for Google Drive and OneDrive support import (Drive → asset), export, two-way sync and backup. OAuth tokens are encrypted at rest; a periodic cron syncs active integrations and records history.
Transcription → RAG
Audio/video assets can be auto-transcribed (Whisper → Google STT fallback). The resulting text can be ingested into the course's per-tenant RAG, so the AI tutor cites material from recorded lectures and live classes — not generic content.
Attachments everywhere
Assets attach to forum threads, posts, announcements and direct messages, so the same governed store powers communication too.