openapi: 3.0.2 info: version: $VERSION title: Schoolbox API description: | This document describes the API endpoints that are available to a Schoolbox instance. **To generate a JWT in your schoolbox instance.** Go to the User Edit in admin. Scroll down to the `TOKENS` section, and click `Create token`. Examples to get started: **cURL:** Get User id 1 ``` curl -X GET --location "https://demo.schoolbox.education/api/user/1" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer {{Add your JWT here}}" ``` **Python Requests:** Update user 1's name ``` import requests data = { "firstName": 'System', "lastName": 'Administrator' } headers={ "Authorization": "Bearer {{Add your JWT here}}", "Accept": "application/json", "Content-Type": "application/json" } req = requests.request('PATCH', 'https://demo.schoolbox.education/api/user/1', json=data, headers=headers) print(req.json()) ``` x-api-id: 0609d493-8804-4e97-b5ac-0ed7b3c99db8 x-audience: external-partner contact: name: Schoolbox Team url: https://schoolbox.education email: developers@schoolbox.education x-logo: url: './logo.png' tags: - name: assessment x-displayName: Assessments description: | Search and get assessments. - name: calendar x-displayName: Calendar description: | Create and manage calendar events. - name: config x-displayName: Configuration description: | Get and update system configuration values. - name: discussion x-displayName: Discussions description: | Create and manage discussion threads and comments. - name: file x-displayName: File management description: | Upload files. - name: group x-displayName: Groups description: | Search and manage groups. - name: Learning Moment x-displayName: Learning Moment description: | Create and manage Learning Moments. - name: mobile x-displayName: Push Notification description: Endpoints for Mobile App Developers to connect and register devices. - name: news x-displayName: News description: | Create and manage school news (also known as communications). - name: pastoral x-displayName: Pastoral description: | Create and manage pastoral records. - name: search x-displayName: Search description: | Search for content within Schoolbox. - name: session x-displayName: Session management description: | Authenticate and create sessions for users. - name: user x-displayName: Users description: | Create and manage users. - name: differentiation x-displayName: Differentiation description: | Create and manage differentiation profiles. servers: - url: https://{hostname}.{domain} variables: hostname: description: The subdomain of the school's domain name on which Schoolbox is hosted. default: demo domain: description: The school's domain name. default: schoolbox.education paths: /api/user: $ref: 'paths/user.yaml' /user/token/{id}: $ref: 'paths/user@token@{id}.yaml' /api/user/{id}: $ref: 'paths/user@{id}.yaml' /api/user/{id}/group: $ref: 'paths/user@{id}@groupMembership.yaml' /api/user/{id}/group/{groupId}: $ref: 'paths/user@{id}@groupMembership@{groupId}.yaml' /user/token: $ref: 'paths/user@token.yaml' /discussion/{contextType}/{contextId}/threads: $ref: 'paths/discussion@{contextType}@{contextId}@threads.yaml' /discussion/{contextType}/{contextId}/threads/{id}: $ref: 'paths/discussion@{contextType}@{contextId}@threads@{id}.yaml' /discussion/{contextType}/{contextId}/threads/{id}/open: $ref: 'paths/discussion@{contextType}@{contextId}@threads@{id}@open.yaml' /discussion/{contextType}/{contextId}/threads/{id}/close: $ref: 'paths/discussion@{contextType}@{contextId}@threads@{id}@close.yaml' /discussion/{contextType}/{contextId}/threads/{id}/comments: $ref: 'paths/discussion@{contextType}@{contextId}@threads@{id}@comments.yaml' /discussion/{contextType}/{contextId}/comments/{id}: $ref: 'paths/discussion@{contextType}@{contextId}@comments@{id}.yaml' /discussion/{contextType}/{contextId}/comments/{id}/comments: $ref: 'paths/discussion@{contextType}@{contextId}@comments@{id}@comments.yaml' /api/session: $ref: 'paths/api@session.yaml' /api/register/{provider}: $ref: 'paths/api@register@{provider}.yaml' /storage/asyncUpload.php: $ref: 'paths/storage@asyncUpload.php.yaml' /resources/file/{fileId}/ajax: $ref: 'paths/resource@file@{fileId}@ajax.yaml' /news/create: $ref: 'paths/news@create.yaml' /news/topics: $ref: 'paths/news@topics.yaml' /news/{id}: $ref: 'paths/news@{id}.yaml' /news/{id}/delete: $ref: 'paths/news@{id}@delete.yaml' /news/moderation/{id}/{status}: $ref: 'paths/news@moderation@{id}@{status}.yaml' /news/saved: $ref: 'paths/news@saved.yaml' /news/saved/{id}/add: $ref: 'paths/news@saved@{id}@add.yaml' /news/saved/{id}/remove: $ref: 'paths/news@saved@{id}@remove.yaml' /news/me/articles: $ref: 'paths/news@me@articles.yaml' /news/lists/feed: $ref: 'paths/news@lists@feed.yaml' /news/feed/{key}: $ref: 'paths/news@feed@{key}.yaml' /news/lists/folder/{id}: $ref: 'paths/news@lists@folder@{id}.yaml' /calendar/ajax/full: $ref: 'paths/calendar@ajax@full.yaml' /calendar/event/create: $ref: 'paths/calendar@event@create.yaml' /calendar/event/{id}/modify: $ref: 'paths/calendar@event@{id}@modify.yaml' /calendar/event/{id}/move: $ref: 'paths/calendar@event@{id}@move.yaml' /calendar/event/{id}/delete: $ref: 'paths/calendar@event@{id}@delete.yaml' /calendar/event/attendance/{id}: $ref: 'paths/calendar@event@attendance@{id}.yaml' /calendar/event/attendance/{id}/create: $ref: 'paths/calendar@event@attendance@{id}@create.yaml' /calendar/event/attendance/{id}/accept: $ref: 'paths/calendar@event@attendance@{id}@accept.yaml' /calendar/event/attendance/{id}/decline: $ref: 'paths/calendar@event@attendance@{id}@decline.yaml' /calendar/event/attendance/{id}/delete: $ref: 'paths/calendar@event@attendance@{id}@delete.yaml' /api/assessment: $ref: 'paths/assessment.yaml' /api/assessment/{id}: $ref: 'paths/assessment@{id}.yaml' /learning/assessments/{assessmentId}/{studentId}/feedback: $ref: 'paths/learning@assessments@{assessmentId}@{studentId}@feedback.yaml' /learning/assessments/{assessmentId}/{studentId}/submit: $ref: 'paths/learning@assessments@{assessmentId}@{studentId}@submit.yaml' /api/user/{id}/notify: $ref: 'paths/api@user@{id}@notify.yaml' /learning/evidence/bulk/publish: $ref: 'paths/evidence@bulk@publish.yaml' /learning/evidence/bulk/reject: $ref: 'paths/evidence@bulk@reject.yaml' /learning/evidence/cohort/{id}/payload: $ref: 'paths/evidence@cohort@{id}@payload.yaml' /learning/evidence/user/{ids}/draft: $ref: 'paths/evidence@user@{ids}@draft.yaml' /learning/evidence/user/{ids}/publish: $ref: 'paths/evidence@user@{ids}@publish.yaml' /learning/evidence/user/{ids}/submit: $ref: 'paths/evidence@user@{ids}@submit.yaml' /learning/evidence/user/{id}/create: $ref: 'paths/evidence@user@{id}@create.yaml' /learning/evidence/{id}: $ref: 'paths/evidence@{id}.yaml' /learning/evidence/{id}/draft: $ref: 'paths/evidence@{id}@draft.yaml' /learning/evidence/{id}/publish: $ref: 'paths/evidence@{id}@publish.yaml' /learning/evidence/{id}/reject: $ref: 'paths/evidence@{id}@reject.yaml' /learning/evidence/{id}/submit: $ref: 'paths/evidence@{id}@submit.yaml' /learning/evidenceFeed/user/{id}: $ref: 'paths/evidenceFeed@user@{id}.yaml' /pastoral/record/insert: $ref: 'paths/pastoral@record@insert.yaml' /pastoral/record/{id}/update: $ref: 'paths/pastoral@record@update.yaml' /api/curriculum/usage/{id}: $ref: 'paths/api@curriculum@usage@{id}.yaml' /api/courses: $ref: 'paths/api@courses.yaml' /api/search: $ref: 'paths/api@search.yaml' /api/search/folder/{id}: $ref: 'paths/api@search@folder@{id}.yaml' /api/config: $ref: 'paths/api@config.yaml' /api/config/{configName}: $ref: 'paths/api@config@{configName}.yaml' /groups/search: $ref: 'paths/groups@search.yaml' /group/getData/{id}: $ref: 'paths/group@getData@{id}.yaml' /differentiation-profiles/student/{id}: $ref: 'paths/differentiation-profiles@student@{id}.yaml' security: # Authorization is handled by Schoolbox itself once a user is authenticated: # therefore, no scopes are defined for any security scheme. - session: [] - bearerAuth: [] components: securitySchemes: session: $ref: components/securitySchemes/session.yaml bearerAuth: $ref: components/securitySchemes/bearerAuth.yaml