Python client for the Timeback EduBridge API
Project description
Timeback EduBridge Client
Python client for the Timeback EduBridge API with async support.
Installation
# pip
pip install timeback-edubridge
# uv (add to a project)
uv add timeback-edubridge
# uv (install into current environment)
uv pip install timeback-edubridge
Quick Start
from timeback_edubridge import EdubridgeClient
# Initialize with explicit configuration
client = EdubridgeClient(
base_url="https://api.timeback.ai",
auth_url="https://auth.timeback.ai/oauth2/token",
client_id="your-client-id",
client_secret="your-client-secret",
)
# Or use environment variables with a prefix
client = EdubridgeClient(env="PRODUCTION")
# Reads: PRODUCTION_EDUBRIDGE_BASE_URL, PRODUCTION_EDUBRIDGE_TOKEN_URL, etc.
Resources
Enrollments
# List enrollments for a user
enrollments = await client.enrollments.list(user_id="user-123")
# Enroll a user in a course
enrollment = await client.enrollments.enroll(
user_id="user-123",
course_id="course-456",
school_id="school-789", # Optional
)
# Unenroll a user
await client.enrollments.unenroll(
user_id="user-123",
course_id="course-456",
)
# Reset goals for a course
result = await client.enrollments.reset_goals("course-456")
# Reset a user's progress
await client.enrollments.reset_progress("user-123", "course-456")
# Get default class for a course
default_class = await client.enrollments.get_default_class("course-456")
Users
# List users by role
users = await client.users.list(roles=["student", "teacher"])
# Convenience methods
students = await client.users.list_students()
teachers = await client.users.list_teachers()
# Search users
results = await client.users.search(
roles=["student"],
search="john",
limit=50,
)
# With additional filters
filtered = await client.users.list(
roles=["student"],
org_sourced_ids=["school-123"],
limit=100,
offset=0,
)
Analytics
# Get activity for a date range
activity = await client.analytics.get_activity(
student_id="student-123", # or email="student@example.com"
start_date="2025-01-01",
end_date="2025-01-31",
timezone="America/New_York",
)
# Get weekly facts
facts = await client.analytics.get_weekly_facts(
student_id="student-123",
week_date="2025-01-15",
)
# Get enrollment-specific facts
enrollment_facts = await client.analytics.get_enrollment_facts(
enrollment_id="enrollment-123",
start_date="2025-01-01",
end_date="2025-01-31",
)
# Get highest grade mastered
grade = await client.analytics.get_highest_grade_mastered(
student_id="student-123",
subject="Math",
)
Applications
# List all applications
apps = await client.applications.list()
# Get metrics for an application
metrics = await client.applications.get_metrics("app-123")
Subject Tracks
from timeback_edubridge import SubjectTrackInput
# List all subject tracks
tracks = await client.subject_tracks.list()
# Create or update a subject track
track = await client.subject_tracks.upsert(
id="track-123",
data=SubjectTrackInput(
subject="Math",
grade_level="9",
target_course_id="course-456",
),
)
# Delete a subject track
await client.subject_tracks.delete("track-123")
# List subject track groups
groups = await client.subject_tracks.list_groups()
Learning Reports
# Get MAP profile for a user
profile = await client.learning_reports.get_map_profile("user-123")
# Get time saved metrics
time_saved = await client.learning_reports.get_time_saved("user-123")
Context Manager
The client can be used as an async context manager:
async with EdubridgeClient(base_url="...") as client:
enrollments = await client.enrollments.list(user_id="user-123")
# Client is automatically closed
Error Handling
from timeback_edubridge import (
EdubridgeError,
AuthenticationError,
ForbiddenError,
NotFoundError,
ValidationError,
APIError,
)
try:
enrollments = await client.enrollments.list(user_id="user-123")
except AuthenticationError:
print("Invalid credentials")
except ForbiddenError:
print("Access denied")
except NotFoundError:
print("Resource not found")
except ValidationError as e:
print(f"Invalid request: {e}")
except APIError as e:
print(f"API error {e.status_code}: {e}")
Environment Variables
When using env parameter, the client looks for these variables:
| Variable | Description |
|---|---|
{PREFIX}_EDUBRIDGE_BASE_URL |
Base URL for the API |
{PREFIX}_EDUBRIDGE_TOKEN_URL |
OAuth2 token endpoint |
{PREFIX}_EDUBRIDGE_CLIENT_ID |
OAuth2 client ID |
{PREFIX}_EDUBRIDGE_CLIENT_SECRET |
OAuth2 client secret |
Without a prefix, it uses the variables without the prefix (e.g., EDUBRIDGE_BASE_URL).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file timeback_edubridge-0.2.1b20260313233319.tar.gz.
File metadata
- Download URL: timeback_edubridge-0.2.1b20260313233319.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d7d33d64235549ada6462142b7e8dd337690b9c4a26d2fcf0f3510199e4e6f1
|
|
| MD5 |
8bfae52da21445b8ca41c88a52d30537
|
|
| BLAKE2b-256 |
759b93aab3a8853d24f219a323f93989cd5a15d424834554d9bea830c8658dfe
|
File details
Details for the file timeback_edubridge-0.2.1b20260313233319-py3-none-any.whl.
File metadata
- Download URL: timeback_edubridge-0.2.1b20260313233319-py3-none-any.whl
- Upload date:
- Size: 32.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6b3a025c602dc189fdd8cd8ea1375fc663a4c04f1aefb2eebcf84a32e22fd06
|
|
| MD5 |
d89e29ef45ee331721b970b2ce22138c
|
|
| BLAKE2b-256 |
42d54561a50f6a2bb818dc9d1a558c4e1d53368d5c022c80e656f5239ba8ba67
|