{"name":"Progression Studio","api_version":"v1","provider_mode":"mock","auth":"Authorization: Bearer <key_id>.<secret>","rate_limit_per_minute":120,"realtime":{"transport":"sse","sse":"/api/v1/events/stream","event_types":["assignment.graded","assignment.published","assignment.submitted","bandlab.account.linked","bandlab.account.verified","bandlab.cakewalk.verified","bandlab.project.linked","certification.issued","class.completed","class.created","class.enrolled","collab.ended","collab.started","education.class.bound","education.launched","faculty.rank.granted","perk.earned","perk.failed","perk.provisioned","student.badge.earned","student.prestige","student.rank.up","student.xp.awarded","user.registered","user.verified"]},"scopes":{"read":"Read the catalogue, classes, standings and learner records.","write":"Change learner records: award points, record lessons and quizzes, enrol learners.","learners.read":"Read learner records and BandLab identity links, and nothing else.","learners.write":"Change learner records and BandLab identity links, and nothing else.","classes.read":"Read class rosters.","classes.write":"Enrol learners in classes.","events.read":"Subscribe to the live event stream.","admin":"Everything above."},"endpoints":{"GET /api/v1/":{"summary":"Discovery: what this API offers. No key needed.","access":"open","scopes":[]},"GET /api/v1/certificates/{uid}":{"summary":"Verify a certificate by its id. Open to anyone.","access":"open","scopes":[]},"GET /api/v1/classes":{"summary":"Open and running classes.","access":"key","scopes":["read"]},"POST /api/v1/classes/join":{"summary":"Enrol a learner with a class join code.","access":"key","scopes":["write","classes.write"]},"GET /api/v1/classes/{class_id}/roster":{"summary":"The learners enrolled in a class.","access":"key","scopes":["read","classes.read"]},"GET /api/v1/courses":{"summary":"The course catalogue.","access":"key","scopes":["read"]},"GET /api/v1/courses/{slug}":{"summary":"One course with its modules and lessons.","access":"key","scopes":["read"]},"GET /api/v1/courses/{slug}/lessons/{lesson_id}":{"summary":"One lesson, ready to display.","access":"key","scopes":["read"]},"GET /api/v1/events/stream":{"summary":"Live events as Server-Sent Events.","access":"key","scopes":["read","events.read"]},"GET /api/v1/events/types":{"summary":"Every event type the platform publishes.","access":"open","scopes":[]},"GET /api/v1/health":{"summary":"Service health and the BandLab connection's state.","access":"open","scopes":[]},"GET /api/v1/identity/bandlab/{bandlab_user_id}":{"summary":"Find the learner linked to a BandLab user.","access":"key","scopes":["read","learners.read"]},"PUT /api/v1/identity/bandlab/{bandlab_user_id}":{"summary":"Create or update the learner for a BandLab user.","access":"key","scopes":["write","learners.write"]},"GET /api/v1/leaderboard":{"summary":"Standings, school-wide or for one class.","access":"key","scopes":["read"]},"GET /api/v1/learners/{username}":{"summary":"A learner's rank, points and standing.","access":"key","scopes":["read","learners.read"]},"POST /api/v1/learners/{username}/lessons/{lesson_id}/complete":{"summary":"Mark a lesson complete.","access":"key","scopes":["write","learners.write"]},"GET /api/v1/learners/{username}/progress":{"summary":"A learner's progress through every course.","access":"key","scopes":["read","learners.read"]},"POST /api/v1/learners/{username}/quizzes/{lesson_id}/attempts":{"summary":"Submit quiz answers and get the result.","access":"key","scopes":["write","learners.write"]},"GET /api/v1/learners/{username}/transcript":{"summary":"A learner's full completion record.","access":"key","scopes":["read","learners.read"]},"POST /api/v1/learners/{username}/xp":{"summary":"Award points for something done elsewhere.","access":"key","scopes":["write","learners.write"]},"GET /api/v1/openapi.yaml":{"summary":"The full API contract, in OpenAPI 3 format.","access":"open","scopes":[]},"GET /api/v1/ranks":{"summary":"The rank ladder and what each rank requires.","access":"key","scopes":["read"]},"POST /api/v1/webhooks/bandlab":{"summary":"Receive a signed event from BandLab.","access":"signed","scopes":[]},"POST /api/v1/webhooks/test":{"summary":"Check your signing code against this server.","access":"signed","scopes":[]}},"links":{"openapi":"/api/v1/openapi.yaml","docs":"/developers"}}