> For the complete documentation index, see [llms.txt](https://guide.fariaedu.com/integrations-portal/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.fariaedu.com/integrations-portal/managebac/public-rest-apis/v2p1/models.md).

# Models

## The YearGroupPBL object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPBL":{"type":"object","properties":{"pbl":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"abbreviation":{"type":"string"},"archived":{"type":"boolean"},"subject":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}},"description":{"type":"string"},"components":{"type":"array","items":{"allOf":[{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"enabled":{"type":"boolean"}}}]}}}}]}}}}}}}
```

## The NotFound object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"NotFound":{"type":"object","description":"Returned when the requested resource cannot be found by the given ID.","properties":{"error":{"type":"string","description":"A human-readable message indicating which resource could not be found, including the model name and the ID that was looked up."}}}}}}
```

## The AccessDeniedError object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AccessDeniedError":{"type":"object","description":"Returned when the API token is missing, invalid, or has been disabled.","properties":{"error":{"type":"string","description":"Always returns \"Access Denied\" when authentication fails. Check that your API token is valid and enabled."}}}}}}
```

## The InvalidPayloadError object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"InvalidPayloadError":{"type":"object","description":"Returned when the request body fails validation or contains unpermitted parameters.","properties":{"error":{"type":"string","description":"A human-readable message describing the validation failure. For unpermitted parameters, includes an allowed_params array listing the accepted field names.\n"}}}}}}
```

## The YearGroup object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroup":{"type":"object","properties":{"id":{"type":"integer","description":"Year Group ID."},"name":{"type":"string","description":"Year Group name"},"short_name":{"type":"string","description":"Year Group short name"},"program":{"type":"string","description":"Full display name of the curriculum program this year group belongs to."},"program_code":{"type":"string","description":"Short code identifying the curriculum program (e.g. \"myp\", \"diploma\", \"igcse\")."},"grade":{"type":"string","description":"Grade name"},"archived":{"type":"boolean","description":"Whether this year group has been archived. Archived year groups are hidden from most views but retain historical data."},"grade_number":{"type":"integer","description":"Numeric grade level used for sorting and matching across programs."},"graduation_year":{"type":"integer","description":"The calendar year in which students in this year group are expected to graduate."},"student_ids":{"type":"array","items":{"type":"integer","description":"ManageBac IDs of all students currently enrolled in this year group."}}}}}}}
```

## The ToggleSchoolSubjectsRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ToggleSchoolSubjectsRequest":{"properties":{"subject_ids":{"type":"array","items":{"type":"integer"}}}}}}}
```

## The AuthPermissionsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AuthPermissionsResponse":{"type":"object","properties":{"permissions":{"type":"array","items":{"type":"string"}}}}}}}
```

## The OAuthTokenRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"OAuthTokenRequest":{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"],"description":"The OAuth 2.0 grant type. Only `client_credentials` is supported for server-to-server API access."},"client_id":{"type":"string","description":"The `client_id` (Application ID) of your OAuth application."},"client_secret":{"type":"string","description":"The `client_secret` of your OAuth application."},"scope":{"type":"string","description":"A space-separated list of scopes to request. Must be a subset of the scopes configured on the application. If omitted, all scopes defined on client creation will be granted."}},"required":["grant_type","client_id","client_secret"]}}}}
```

## The OAuthTokenResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"OAuthTokenResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"The Bearer token (JWT) to use in the Authorization header."},"token_type":{"type":"string","enum":["Bearer"],"description":"Always `Bearer`."},"expires_in":{"type":"integer","description":"Token lifetime in seconds."},"scope":{"type":"string","description":"Space-separated list of granted scopes."},"created_at":{"type":"integer","description":"Token creation timestamp (Unix epoch)."}},"required":["access_token","token_type","expires_in","scope","created_at"]}}}}
```

## The OAuthTokenError object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"OAuthTokenError":{"type":"object","properties":{"error":{"type":"string","description":"Error code."},"error_description":{"type":"string","description":"Human-readable error message."}},"required":["error","error_description"]}}}}
```

## The SubjectRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectRequest":{"type":"object","properties":{"subject":{"type":"object","properties":{"subject_group_id":{"type":"integer","description":"Unique ID for subject group in ManageBac."},"name":{"type":"string","description":"Subject name."},"title":{"type":"string","description":"Subject title."},"description":{"type":"string","description":"Subject description."},"scope_and_sequence_based_on":{"type":"string","description":"Subject Scope & Sequence based on value."},"sl":{"type":"boolean","description":"Subject SL level."},"hl":{"type":"boolean","description":"Subject HL level."},"enabled":{"type":"boolean","description":"Enable/disable school subject."},"code":{"type":"string","description":"Subject custom code"}}}}}}}}
```

## The SubjectsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"subjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for subject in ManageBac."},"subject_group_id":{"type":"integer","description":"Unique ID for subject group in ManageBac."},"custom":{"type":"boolean","description":"The boolean value defines whether the Subject is custom or system."},"name":{"type":"string","description":"Subject name."},"title":{"type":"string","description":"Subject title."},"sl":{"type":"boolean","description":"Subject SL level."},"hl":{"type":"boolean","description":"Subject HL level."},"sl_code":{"type":"string","description":"Subject SL code"},"hl_code":{"type":"string","description":"Subject HL code"},"description":{"type":"string","description":"Subject description"},"scope_and_sequence_based_on":{"type":"string","description":"Subject Scope & Sequence based on value."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."},"self_taught":{"type":"boolean","description":"Self taught subject"},"phases":{"type":"array","items":{"type":"string"}},"levels":{"type":"array","description":"Language levels","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Describe if school subject enabled"}}}}}},"Meta":{"type":"object","description":"Pagination metadata included in all list (index) responses.","properties":{"current_page":{"type":"integer","description":"The page number of the current result set, starting from 1."},"total_pages":{"type":"integer","description":"The total number of pages available for this query."},"total_count":{"type":"integer","description":"The total number of records matching the query across all pages."},"per_page":{"type":"integer","description":"The number of records returned per page. Defaults to 100; can be overridden with the per_page query parameter (max 200)."}}}}}}
```

## The SubjectResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectResponse":{"type":"object","properties":{"subject":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for subject in ManageBac."},"subject_group_id":{"type":"integer","description":"Unique ID for subject group in ManageBac."},"custom":{"type":"boolean","description":"The boolean value defines whether the Subject is custom or system."},"name":{"type":"string","description":"Subject name."},"title":{"type":"string","description":"Subject title."},"sl":{"type":"boolean","description":"Subject SL level."},"hl":{"type":"boolean","description":"Subject HL level."},"code":{"type":"string","description":"Subject custom code"},"description":{"type":"string","description":"Subject description."},"scope_and_sequence_based_on":{"type":"string","description":"Subject Scope & Sequence based on value."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."},"self_taught":{"type":"boolean","description":"Self taught subject"},"phases":{"type":"array","items":{"type":"string"}},"levels":{"type":"array","description":"Language levels","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Describe if school subject enabled"}}}}}}}}
```

## The SubjectGroupRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectGroupRequest":{"type":"object","properties":{"subject_group":{"type":"object","properties":{"name":{"type":"string","description":"Subject Group name."},"max_phase":{"type":"string","description":"Phases Range (only allowed in the IB PYP program). Possible values are '4' or '5'. The default value is '5'."}}}}}}}}
```

## The SubjectGroupResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectGroupResponse":{"type":"object","properties":{"subject_group":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for Subject Group in ManageBac."},"name":{"type":"string","description":"Subject Group name."},"custom":{"type":"boolean","description":"Whether the Subject Group is a custom one created by the school."},"max_phase":{"type":"string","description":"Phases Range (only allowed in the IB PYP program). Possible values are '4' or '5'. The default value is '5'."},"program":{"type":"string","description":"Program code (allowed values are ib_pyp, hs, ms, ps)."},"updated_at":{"type":"string","description":"Updated datetime."}}}}}}}}
```

## The SubjectGroupsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubjectGroupsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"subject_groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for Subject Group in ManageBac."},"name":{"type":"string","description":"Subject Group name."},"max_phase":{"type":"string","description":"Phases Range (only allowed in the IB PYP program). Possible values are '4' or '5'. The default value is '5'."},"program":{"type":"string","description":"Program code (allowed values are ib_pyp, hs, ms, ps)."},"updated_at":{"type":"string","description":"Updated datetime."}}}}}},"Meta":{"type":"object","description":"Pagination metadata included in all list (index) responses.","properties":{"current_page":{"type":"integer","description":"The page number of the current result set, starting from 1."},"total_pages":{"type":"integer","description":"The total number of pages available for this query."},"total_count":{"type":"integer","description":"The total number of records matching the query across all pages."},"per_page":{"type":"integer","description":"The number of records returned per page. Defaults to 100; can be overridden with the per_page query parameter (max 200)."}}}}}}
```

## The TermGradeScale object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"TermGradeScale":{"type":"object","description":"A mapping rule that converts a numeric score threshold to a letter mark. Used to translate percentage scores into grades (e.g. 95.5% and above = \"A+\").\n","properties":{"score":{"type":"number","description":"The minimum percentage score required to earn this mark. A student scoring at or above this value (but below the next higher threshold) receives this mark.\n","multipleOf":0.1},"mark":{"type":"string","description":"The letter or symbolic grade awarded when the score threshold is met (e.g. \"A+\", \"B\", \"Pass\")."},"program_code":{"type":"string","description":"Short code identifying which program this scale applies to (e.g. \"diploma\", \"igcse\")."}}}}}}
```

## The Program object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Program":{"type":"object","properties":{"name":{"type":"string","description":"Program name in full."},"short_name":{"type":"string","description":"Short program name."},"uid":{"type":"integer","description":"Unique identificator for a program."},"code":{"type":"string","description":"Program code."},"grades":{"type":"array","description":"Grade of program.","items":{"type":"object","properties":{"grade_number":{"type":"integer","description":"Grade number."},"uid":{"type":"integer","description":"Unique identificator for grade."},"name":{"type":"string","description":"Grade name."},"enabled":{"type":"boolean","description":"Switch to enable/disable grade."},"program":{"type":"string","description":"Program name."}}}}}}}}}
```

## The BehaviorNote object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BehaviorNote":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for note in ManageBac."},"student_id":{"type":"string","description":"School’s own unique ID for student."},"email":{"type":"string"},"first_name":{"type":"string","description":"Student’s first given name."},"last_name":{"type":"string","description":"Student’s surname."},"grade":{"type":"string","description":"Grade name."},"incident_time":{"type":"string","description":"Date/time stamp for incident."},"behavior_type":{"type":"string","description":"Behavior triggering intervention."},"notes":{"type":"string","description":"Reporter’s notes."},"next_step":{"type":"string","description":"Intervention."},"next_step_date":{"type":"string","description":"Date of intervention; yyyy-mm-dd."},"reported_by":{"type":"string","description":"Reporter name."},"homeroom_advisor":{"type":"string","description":"Homeroom Advisor name."}}}}}}
```

## The Membership object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Membership":{"type":"object","description":"Represents a user’s enrollment in a class, with their role and level.","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this membership record."},"user_id":{"type":"integer","description":"ManageBac ID of the user (student or teacher) in this membership."},"level":{"type":"integer","description":"Course level for IB Diploma classes. 0 = Standard Level (SL), 1 = Higher Level (HL). Not applicable for non-IB programs.","enum":[0,1]},"created_at":{"type":"string","description":"When this membership was created, in ISO 8601 format."},"updated_at":{"type":"string","description":"When this membership was last modified, in ISO 8601 format."},"class_id":{"type":"integer","description":"ManageBac ID of the class this membership belongs to."},"user_email":{"type":"string","description":"Email address of the enrolled user."},"uniq_class_id":{"type":"string","description":"The school’s own unique identifier for the class (set by the school, not by ManageBac)."},"uniq_student_id":{"type":"string","description":"The school’s own unique identifier for the student (same as student_id on the Student schema)."},"role":{"type":"string","description":"The user’s role in this class, either \"student\" or \"teacher\"."}}}}}}
```

## The AcademicTerm object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicTerm":{"type":"object","description":"A term (semester/trimester/quarter) within an academic year. Terms define the time periods for which term grades are recorded.","required":["name","starts_on","ends_on"],"properties":{"name":{"type":"string","description":"Display name for this term (e.g. \"Semester 1\", \"Term 2\"). Required on create."},"starts_on":{"type":"string","description":"First day of the term in yyyy-mm-dd format. Required on create."},"ends_on":{"type":"string","description":"Last day of the term in yyyy-mm-dd format. Required on create."},"locked":{"type":"boolean","description":"When true, teachers cannot edit term grades for this term. Typically locked after grades are finalized and published."},"enable_exam_grade":{"type":"boolean","description":"When true, an additional exam grade column is available alongside the regular term grade. Used in IB Diploma for predicted vs exam grades."}}}}}}
```

## The AcademicTermRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicTermRequest":{"type":"object","properties":{"academic_term":{"$ref":"#/components/schemas/AcademicTerm"}}},"AcademicTerm":{"type":"object","description":"A term (semester/trimester/quarter) within an academic year. Terms define the time periods for which term grades are recorded.","required":["name","starts_on","ends_on"],"properties":{"name":{"type":"string","description":"Display name for this term (e.g. \"Semester 1\", \"Term 2\"). Required on create."},"starts_on":{"type":"string","description":"First day of the term in yyyy-mm-dd format. Required on create."},"ends_on":{"type":"string","description":"Last day of the term in yyyy-mm-dd format. Required on create."},"locked":{"type":"boolean","description":"When true, teachers cannot edit term grades for this term. Typically locked after grades are finalized and published."},"enable_exam_grade":{"type":"boolean","description":"When true, an additional exam grade column is available alongside the regular term grade. Used in IB Diploma for predicted vs exam grades."}}}}}}
```

## The AcademicYearRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicYearRequest":{"type":"object","properties":{"academic_year":{"type":"object","properties":{"terms_attributes":{"type":"array","description":"Academic Terms.","items":{"$ref":"#/components/schemas/AcademicTerm"}}}}}},"AcademicTerm":{"type":"object","description":"A term (semester/trimester/quarter) within an academic year. Terms define the time periods for which term grades are recorded.","required":["name","starts_on","ends_on"],"properties":{"name":{"type":"string","description":"Display name for this term (e.g. \"Semester 1\", \"Term 2\"). Required on create."},"starts_on":{"type":"string","description":"First day of the term in yyyy-mm-dd format. Required on create."},"ends_on":{"type":"string","description":"Last day of the term in yyyy-mm-dd format. Required on create."},"locked":{"type":"boolean","description":"When true, teachers cannot edit term grades for this term. Typically locked after grades are finalized and published."},"enable_exam_grade":{"type":"boolean","description":"When true, an additional exam grade column is available alongside the regular term grade. Used in IB Diploma for predicted vs exam grades."}}}}}}
```

## The AcademicYearResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicYearResponse":{"type":"object","properties":{"academic_year":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Academic Year name."},"starts_on":{"type":"string","description":"Academic Year start date."},"ends_on":{"type":"string","description":"Academic Year end date."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."},"program":{"type":"string","description":"Academic Year program."},"academic_terms":{"type":"array","description":"Academic Terms.","items":{"$ref":"#/components/schemas/AcademicTermAttributes"}}}}}},"AcademicTermAttributes":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"academic_year_id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Academic Term name."},"starts_on":{"type":"string","description":"Academic Term start date"},"ends_on":{"type":"string","description":"Academic Term end date"},"locked":{"type":"boolean","description":"Restrict teachers from making any changes to term grades."},"exam_grade":{"type":"boolean","description":"Enable Exam Grade."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."}}}}}}
```

## The AcademicTermResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicTermResponse":{"type":"object","properties":{"academic_term":{"$ref":"#/components/schemas/AcademicTermAttributes"}}},"AcademicTermAttributes":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"academic_year_id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Academic Term name."},"starts_on":{"type":"string","description":"Academic Term start date"},"ends_on":{"type":"string","description":"Academic Term end date"},"locked":{"type":"boolean","description":"Restrict teachers from making any changes to term grades."},"exam_grade":{"type":"boolean","description":"Enable Exam Grade."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."}}}}}}
```

## The AcademicTermAttributes object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicTermAttributes":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"academic_year_id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Academic Term name."},"starts_on":{"type":"string","description":"Academic Term start date"},"ends_on":{"type":"string","description":"Academic Term end date"},"locked":{"type":"boolean","description":"Restrict teachers from making any changes to term grades."},"exam_grade":{"type":"boolean","description":"Enable Exam Grade."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."}}}}}}
```

## The AcademicYearCalendarResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AcademicYearCalendarResponse":{"type":"object","properties":{"calendar":{"type":"object","properties":{"start_date":{"type":"string","format":"date"},"end_date":{"type":"string","format":"date"},"calendar_type":{"type":"string"},"rotation_cycle":{"type":"integer"},"ignore_holidays":{"type":"boolean"},"days_off":{"type":"array","items":{"type":"integer"}},"dates":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"rotation_day":{"type":"integer"}}}}}}}}}}}
```

## The AttendanceCategoriesResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AttendanceCategoriesResponse":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","nullable":true},"status":{"type":"integer"},"label":{"type":"string"},"abbreviation":{"type":"string"},"enabled":{"type":"boolean","nullable":true},"color_code":{"type":"string"}}}}}}}}}
```

## The AttendanceExcusalsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AttendanceExcusalsResponse":{"type":"object","properties":{"excusals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for the excusal."},"student_id":{"type":"integer","description":"Unique ID for the student."},"parent_id":{"type":"integer","description":"Unique ID for the parent."},"start_date":{"type":"string","format":"date","description":"Start date of the excusal."},"end_date":{"type":"string","format":"date","description":"End date of the excusal."},"duration":{"type":"integer","description":"Duration of the excusal in days."},"comment":{"type":"string","description":"Comment or reason for the excusal."},"created_at":{"type":"string","description":"Created datetime."},"updated_at":{"type":"string","description":"Updated datetime."}}}}}}}}}
```

## The CreateAttendanceExcusalRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CreateAttendanceExcusalRequest":{"type":"object","properties":{"excusal":{"type":"object","properties":{"parent_id":{"type":"integer","description":"Unique ID for the parent."},"start_date":{"type":"string","format":"date","description":"Start date of the excusal."},"end_date":{"type":"string","format":"date","description":"End date of the excusal."},"comment":{"type":"string","description":"Comment or reason for the excusal."}}}}}}}}
```

## The UpdateAttendanceExcusalRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpdateAttendanceExcusalRequest":{"type":"object","properties":{"excusal":{"type":"object","properties":{"end_date":{"type":"string","format":"date","description":"End date of the excusal."},"comment":{"type":"string","description":"Comment or reason for the excusal."}}}}}}}}
```

## The UpsertNotFoundError object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpsertNotFoundError":{"type":"object","properties":{"index":{"type":"integer","description":"Positional item index"},"errors":{"type":"object","properties":{"id":{"type":"array","items":{"type":"string","description":"Not found error description"}}}},"status":{"type":"string","description":"Status code"}}}}}}
```

## The UpsertUnprocessableEntityError object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpsertUnprocessableEntityError":{"type":"object","properties":{"index":{"type":"integer","description":"Positional item index"},"errors":{"type":"object","description":"Validation errors"},"status":{"type":"string","description":"Status code"}}}}}}
```

## The UpsertClasses object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpsertClasses":{"type":"object","properties":{"classes":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"archived":{"type":"boolean","description":"Archive Class."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"subject_ids":{"type":"array","description":"Subjects unique IDs.","items":{"type":"integer"}},"sl":{"type":"boolean","description":"SL level"},"hl":{"type":"boolean","description":"HL level"},"subject_option":{"description":"Subject option.","oneOf":[{"type":"string","description":"Allowed for Subject that support language level (e.g. Language and literature)."},{"type":"array","description":"Allowed for Subject that support phases.","items":{"type":"string"}}]},"lock_memberships":{"type":"string","description":"Lock Memberships."}}},{"$ref":"#/components/schemas/CreateClass"}]}}}},"CreateClass":{"type":"object","properties":{"start_term_id":{"type":"integer","description":"Academic term ID."},"end_term_id":{"type":"integer","description":"Academic term ID."},"subject_id":{"type":"integer","description":"Subject’s unique ID."},"program":{"type":"string","description":"Program code."},"grade_number":{"type":"integer","description":"Grade number."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"subject_ids":{"type":"array","description":"Subjects unique IDs.","items":{"type":"integer"}},"sl":{"type":"boolean","description":"SL level"},"hl":{"type":"boolean","description":"HL level"},"subject_option":{"description":"Subject option.","oneOf":[{"type":"string","description":"Allowed for Subject that support language level (e.g. Language and literature)."},{"type":"array","description":"Allowed for Subject that support phases.","items":{"type":"string"}}]},"lock_memberships":{"type":"string","description":"Lock Memberships."}}}}}}
```

## The UpsertClassesResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpsertClassesResponse":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/UpsertUnprocessableEntityError"},{"$ref":"#/components/schemas/UpsertNotFoundError"},{"type":"object","properties":{"index":{"type":"integer","description":"Positional item index"},"class":{"$ref":"#/components/schemas/Class"},"status":{"type":"string","description":"Status code"}}}]}},"UpsertUnprocessableEntityError":{"type":"object","properties":{"index":{"type":"integer","description":"Positional item index"},"errors":{"type":"object","description":"Validation errors"},"status":{"type":"string","description":"Status code"}}},"UpsertNotFoundError":{"type":"object","properties":{"index":{"type":"integer","description":"Positional item index"},"errors":{"type":"object","properties":{"id":{"type":"array","items":{"type":"string","description":"Not found error description"}}}},"status":{"type":"string","description":"Status code"}}},"Class":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"start_term_id":{"type":"integer","description":"Academic term ID."},"end_term_id":{"type":"integer","description":"Academic term ID."},"created_at":{"type":"string","description":"Created date; yyyy-mm-dd."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."},"grade":{"type":"string","description":"Grade name."},"grade_number":{"type":"integer","description":"Grade number."},"applicable_levels":{"type":"array","description":"Applicable Levels.","items":{"type":"string"}},"program":{"type":"string","description":"Program name."},"program_code":{"type":"string","description":"Program code."},"subject_id":{"type":"integer","description":"Subject’s unique ID."},"subject_name":{"type":"string","description":"Subject Name."},"subject_group":{"type":"string","description":"Subject group."},"subject_option":{"type":"string","description":"Subject option."},"lock_memberships":{"type":"string","description":"Lock Memberships."},"archived":{"type":"boolean","description":"Archive Class."},"subjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Subject Name."},"subject_group_id":{"type":"integer","description":"Unique ID in ManageBac."},"subject_group":{"type":"string","description":"Subject group."}}}},"teachers":{"type":"array","items":{"type":"object","properties":{"teacher_id":{"type":"integer","description":"Uniq ID in ManageBac."},"show_on_reports":{"type":"boolean","description":"Determines if teach should be shown on reports."},"teacher_archived":{"type":"boolean","description":"DDetermines if teacher is archived."}}}}}}}}}
```

## The UpdateClass object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpdateClass":{"type":"object","properties":{"archived":{"type":"boolean","description":"Archive Class."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"subject_ids":{"type":"array","description":"Subjects unique IDs.","items":{"type":"integer"}},"sl":{"type":"boolean","description":"SL level"},"hl":{"type":"boolean","description":"HL level"},"subject_option":{"description":"Subject option.","oneOf":[{"type":"string","description":"Allowed for Subject that support language level (e.g. Language and literature)."},{"type":"array","description":"Allowed for Subject that support phases.","items":{"type":"string"}}]},"lock_memberships":{"type":"string","description":"Lock Memberships."}}}}}}
```

## The CreateClass object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CreateClass":{"type":"object","properties":{"start_term_id":{"type":"integer","description":"Academic term ID."},"end_term_id":{"type":"integer","description":"Academic term ID."},"subject_id":{"type":"integer","description":"Subject’s unique ID."},"program":{"type":"string","description":"Program code."},"grade_number":{"type":"integer","description":"Grade number."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"subject_ids":{"type":"array","description":"Subjects unique IDs.","items":{"type":"integer"}},"sl":{"type":"boolean","description":"SL level"},"hl":{"type":"boolean","description":"HL level"},"subject_option":{"description":"Subject option.","oneOf":[{"type":"string","description":"Allowed for Subject that support language level (e.g. Language and literature)."},{"type":"array","description":"Allowed for Subject that support phases.","items":{"type":"string"}}]},"lock_memberships":{"type":"string","description":"Lock Memberships."}}}}}}
```

## The Class object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Class":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Class Name."},"description":{"type":"string","description":"Class description."},"language":{"type":"string","description":"Language of Instruction. Receives a language code."},"uniq_id":{"type":"string","description":"Unique ID in ManageBac."},"class_section":{"type":"string","description":"Identifier for a duplicated class/grade."},"start_term_id":{"type":"integer","description":"Academic term ID."},"end_term_id":{"type":"integer","description":"Academic term ID."},"created_at":{"type":"string","description":"Created date; yyyy-mm-dd."},"updated_at":{"type":"string","description":"Updated date; yyyy-mm-dd."},"grade":{"type":"string","description":"Grade name."},"grade_number":{"type":"integer","description":"Grade number."},"applicable_levels":{"type":"array","description":"Applicable Levels.","items":{"type":"string"}},"program":{"type":"string","description":"Program name."},"program_code":{"type":"string","description":"Program code."},"subject_id":{"type":"integer","description":"Subject’s unique ID."},"subject_name":{"type":"string","description":"Subject Name."},"subject_group":{"type":"string","description":"Subject group."},"subject_option":{"type":"string","description":"Subject option."},"lock_memberships":{"type":"string","description":"Lock Memberships."},"archived":{"type":"boolean","description":"Archive Class."},"subjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Subject Name."},"subject_group_id":{"type":"integer","description":"Unique ID in ManageBac."},"subject_group":{"type":"string","description":"Subject group."}}}},"teachers":{"type":"array","items":{"type":"object","properties":{"teacher_id":{"type":"integer","description":"Uniq ID in ManageBac."},"show_on_reports":{"type":"boolean","description":"Determines if teach should be shown on reports."},"teacher_archived":{"type":"boolean","description":"DDetermines if teacher is archived."}}}}}}}}}
```

## The BulkUpdateStudents object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkUpdateStudents":{"type":"object","required":["students"],"properties":{"students":{"type":"array","description":"An array of student IDs to add or update in the class.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"level":{"type":"string","description":"Student level.","enum":["HL","SL"]}}}}}}}}}
```

## The BulkUpdateTeachers object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkUpdateTeachers":{"type":"object","required":["teachers"],"properties":{"teachers":{"type":"array","description":"An array of teacher IDs to add or update in the class.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Teacher ID"},"show_on_reports":{"type":"boolean","description":"Show Teacher on Reports"}}}}}}}}}
```

## The BulkUpdateAttendance object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkUpdateAttendance":{"type":"object","required":["attendances"],"properties":{"attendances":{"type":"array","description":"An array of Attendances data.","items":{"type":"object","properties":{"student_id":{"type":"integer","description":"Student ID."},"date":{"type":"string","format":"date","description":"Date of attendance."},"period":{"type":"integer","description":"Attendance period number."},"status":{"type":"integer","description":"Attendance status ID."},"notes":{"type":"string","description":"Teacher notes."}}}}}}}}}
```

## The SetAttendanceSettingsRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SetAttendanceSettingsRequest":{"type":"object","required":["settings"],"properties":{"settings":{"type":"array","items":{"type":"object","required":["period","day"],"properties":{"period":{"type":"integer","description":"Attendance period number."},"day":{"type":"integer","description":"Day of the week or rotation day number."},"location":{"type":"string","description":"Lesson location."}}}}}}}}}
```

## The UpdateStudentAssessPrepTaskGrade object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpdateStudentAssessPrepTaskGrade":{"type":"object","properties":{"assess_prep_uuid":{"type":"string","description":"Unique AssessPrep task UUID"},"assess_prep_uid":{"type":"string","description":"Unique identifier for an AssessPrep task"},"author_id":{"type":"integer","description":"Unique identifier for an author in ManageBac"},"assessment_file_url":{"type":"string","description":"Submission PDF file"},"points":{"type":"integer","description":"Grade points"},"comment":{"type":"string","description":"Grade comment"},"submission_id":{"type":"integer","description":"Unique identifier for an AssessPrep Submission"},"is_late":{"type":"boolean","description":"Determines if submission is late"}}}}}}
```

## The UpdateStudentTaskGrade object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpdateStudentTaskGrade":{"type":"object","properties":{"author_id":{"type":"integer","description":"Unique identifier for an author in ManageBac"},"points":{"type":"integer","description":"Grade points"},"comment":{"type":"string","description":"Grade comment"},"binary":{"type":"boolean","description":"Determines if task is completed or not"},"criterion_grades":{"type":"array","description":"Optional per-criterion achievement levels for MYP criteria-based tasks (summative, or formative with criteria). Providing it for a non-criteria task returns a 422. A score of -1 marks the criterion as N/A. On the response each entry also includes the criterion name under `criterion`.","items":{"type":"object","properties":{"label":{"type":"string","description":"Criterion letter, e.g. \"A\""},"criterion":{"type":"string","description":"Criterion name (response only), e.g. \"Analysing\""},"score":{"type":"integer","description":"Achievement level for the criterion (-1 marks it N/A)"}}}}}}}}}
```

## The StudentAssessPrepTaskGrade object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"StudentAssessPrepTaskGrade":{"type":"object","properties":{"assess_prep_uuid":{"type":"string","description":"Unique AssessPrep task UUID"},"assess_prep_uid":{"type":"string","description":"Unique identifier for an AssessPrep task"},"assessment_file_url":{"type":"string","description":"Submission PDF file"},"submission_id":{"type":"integer","description":"Unique identifier for an AssessPrep Submission"},"author_id":{"type":"integer","description":"Unique identifier for an author in ManageBac"}}}}}}
```

## The BulkUpdateStudentTaskGradeRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkUpdateStudentTaskGradeRequest":{"type":"object","properties":{"students":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for a student in ManageBac"},"task_grade":{"oneOf":[{"$ref":"#/components/schemas/UpdateStudentTaskGrade"},{"$ref":"#/components/schemas/UpdateStudentAssessPrepTaskGrade"}]}}}}}},"UpdateStudentTaskGrade":{"type":"object","properties":{"author_id":{"type":"integer","description":"Unique identifier for an author in ManageBac"},"points":{"type":"integer","description":"Grade points"},"comment":{"type":"string","description":"Grade comment"},"binary":{"type":"boolean","description":"Determines if task is completed or not"},"criterion_grades":{"type":"array","description":"Optional per-criterion achievement levels for MYP criteria-based tasks (summative, or formative with criteria). Providing it for a non-criteria task returns a 422. A score of -1 marks the criterion as N/A. On the response each entry also includes the criterion name under `criterion`.","items":{"type":"object","properties":{"label":{"type":"string","description":"Criterion letter, e.g. \"A\""},"criterion":{"type":"string","description":"Criterion name (response only), e.g. \"Analysing\""},"score":{"type":"integer","description":"Achievement level for the criterion (-1 marks it N/A)"}}}}}},"UpdateStudentAssessPrepTaskGrade":{"type":"object","properties":{"assess_prep_uuid":{"type":"string","description":"Unique AssessPrep task UUID"},"assess_prep_uid":{"type":"string","description":"Unique identifier for an AssessPrep task"},"author_id":{"type":"integer","description":"Unique identifier for an author in ManageBac"},"assessment_file_url":{"type":"string","description":"Submission PDF file"},"points":{"type":"integer","description":"Grade points"},"comment":{"type":"string","description":"Grade comment"},"submission_id":{"type":"integer","description":"Unique identifier for an AssessPrep Submission"},"is_late":{"type":"boolean","description":"Determines if submission is late"}}}}}}
```

## The BulkDestroyStudentTaskGradeRequest object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkDestroyStudentTaskGradeRequest":{"type":"object","properties":{"student_ids":{"type":"array","items":{"type":"integer"},"description":"List of student IDs whose grades and submissions will be reset"}}}}}}
```

## The BulkStudentTaskGradeResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"BulkStudentTaskGradeResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for a student in ManageBac"},"status":{"type":"string","description":"Response status for a student"},"error":{"type":"object","description":"Error details if any"}}}}}}}
```

## The OnlineAssessment object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"OnlineAssessment":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac"},"user_id":{"type":"integer","description":"Unique user ID in ManageBac"},"title":{"type":"string","description":"Online Assessment title"},"mode":{"type":"string","enum":["online","online_secure","offline"]},"points":{"type":"integer","description":"Max points for Diploma task with points assessment model or MYP task with local points assessment model"},"duration":{"type":"integer","description":"Online Assessment duration in minutes"},"assess_prep_uid":{"type":"string","description":"Unique identifier for an AssessPrep task"},"assess_prep_uuid":{"type":"string","description":"Unique AssessPrep task UUID"},"start_at":{"type":"string","description":"ISO8601 datetime for Online Assessment due date & time."},"created_at":{"type":"string","description":"Created date; yyyy-mm-dd."},"updated_at":{"type":"string","description":"Updated date; yyy-mm-dd"},"task_id":{"type":"integer","description":"Unique task ID in ManageBac"},"email":{"type":"string","description":"Author email"},"program_code":{"type":"string","description":"Program code"},"grade_code":{"type":"string","description":"Grade code"},"role":{"type":"string","description":"Author role in ManageBac"},"subject":{"type":"string","description":"Subject name"},"subject_group":{"type":"string","description":"Subject Group name"}}}}}}
```

## The UpdateOnlineAssessment object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UpdateOnlineAssessment":{"type":"object","required":["title","mode"],"properties":{"assess_prep_uid":{"type":"string","description":"Unique identifier for an AssessPrep task"},"title":{"type":"string","description":"New ManageBac task title"},"mode":{"type":"string","description":"Online Assessment mode","enum":["online","online_secure","offline"]},"questions_count":{"type":"integer","description":"Questions count in online assessment"},"points":{"type":"integer","description":"Max points for Diploma task with points assessment model or MYP task with local points assessment model"},"duration":{"type":"integer","description":"Online Assessment duration in minutes"},"start_at":{"type":"string","description":"ISO8601 datetime for Online Assessment due date & time."},"status":{"type":"string","enum":["draft","published","closed"]},"video_monitoring":{"type":"boolean","description":"Switch to enable/disable video monitoring"},"criteria_labels":{"type":"array","description":"Criteria labels","items":{"type":"object","properties":{"label":{"type":"string","description":"Criteria name without label"},"title":{"type":"string","description":"Criteria label"},"descriptors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"level":{"type":"string","description":"Descriptor level"},"descriptor":{"type":"string","description":"Descriptor"}}}]}}}}}}}}}}
```

## The PersonalInformation object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"PersonalInformation":{"type":"object","description":"Common personal and contact fields shared by Teacher, Student, and Parent schemas. On POST (create), email and last_name are required. On PATCH (update), only include fields you want to change.\n","properties":{"email":{"type":"string","description":"User’s primary email address. Used for login and notifications. Required on create."},"first_name":{"type":"string","description":"User’s first given name."},"middle_name":{"type":"string","description":"User’s additional name."},"password":{"type":"string","description":"Minimum 6-character password. Only used on POST (create) and PATCH (update). Never returned in GET responses. If omitted on create, a random password is generated and the user receives a welcome email.\n"},"last_name":{"type":"string","description":"User’s surname."},"nickname":{"type":"string","description":"User’s handle (may differ to given name)."},"other_name":{"type":"string","description":"User’s additional names or variant in a different language."},"identifier":{"type":"string","description":"School’s own unique ID for user."},"gender":{"type":"string","description":"The user's gender. Accepts \"Male\", \"Female\", or other values depending on school configuration."},"birthday":{"type":"string","description":"User’s dob; yyyy-mm-dd."},"phone_number":{"type":"string","description":"User’s home number."},"mobile_phone_number":{"type":"string","description":"User’s mobile number."},"street_address":{"type":"string","description":"First line of user’s home address."},"street_address_ii":{"type":"string","description":"Second (optional) line of user’s home address."},"city":{"type":"string","description":"City of user’s home address."},"state":{"type":"string","description":"State of user’s home address."},"zipcode":{"type":"string","description":"Postal/zip code of user’s home address."},"country":{"type":"string","description":"Country of user’s home address."},"nationalities":{"type":"array","description":"One or more nationalities of the user.","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"},"description":"Fluent language/s of the user."},"account_uid":{"type":"string","readOnly":true,"description":"A user's Portal Account UID"},"timezone":{"type":"string","description":"The time zone of the user."}}}}}}
```

## The Parent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Parent":{"anyOf":[{"$ref":"#/components/schemas/PersonalInformation"},{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID for a parent in ManageBac."},"salutation":{"type":"string","description":"Parent/guardian’s title.","enum":["Mr.","Ms.","Mrs.","Dr."]},"title":{"type":"string","description":"Parent/guardian’s work position."},"employer":{"type":"string","description":"Parent/guardian’s employer."},"work_email":{"type":"string","description":"Parent/guardian’s work email address (may differ to email field)."},"work_phone":{"type":"string","description":"Parent/guardian’s work number."},"work_address":{"type":"string","description":"First line of parent/guardian’s work address."},"work_address_ii":{"type":"string","description":"Second (optional) line of parent/guardian’s work address."},"work_fax":{"type":"string","description":"Fax number for parent/guardian’s work"},"work_city":{"type":"string","description":"City of parent/guardian’s work address."},"work_state":{"type":"string","description":"State of parent/guardian’s work address."},"work_postal_code":{"type":"string","description":"Postal/zip code of parent/guardian’s work address."},"work_country":{"type":"string","description":"Country of parent/guardian’s address."},"sb_id":{"type":"string","description":"SchoolsBuddy uniq ID"},"oa_id":{"type":"string","description":"OpenApply uniq ID"},"child_ids":{"type":"array","readOnly":true,"items":{"type":"integer"},"description":"Unique ID for offspring/wards of the parent/guardian."}}}]},"PersonalInformation":{"type":"object","description":"Common personal and contact fields shared by Teacher, Student, and Parent schemas. On POST (create), email and last_name are required. On PATCH (update), only include fields you want to change.\n","properties":{"email":{"type":"string","description":"User’s primary email address. Used for login and notifications. Required on create."},"first_name":{"type":"string","description":"User’s first given name."},"middle_name":{"type":"string","description":"User’s additional name."},"password":{"type":"string","description":"Minimum 6-character password. Only used on POST (create) and PATCH (update). Never returned in GET responses. If omitted on create, a random password is generated and the user receives a welcome email.\n"},"last_name":{"type":"string","description":"User’s surname."},"nickname":{"type":"string","description":"User’s handle (may differ to given name)."},"other_name":{"type":"string","description":"User’s additional names or variant in a different language."},"identifier":{"type":"string","description":"School’s own unique ID for user."},"gender":{"type":"string","description":"The user's gender. Accepts \"Male\", \"Female\", or other values depending on school configuration."},"birthday":{"type":"string","description":"User’s dob; yyyy-mm-dd."},"phone_number":{"type":"string","description":"User’s home number."},"mobile_phone_number":{"type":"string","description":"User’s mobile number."},"street_address":{"type":"string","description":"First line of user’s home address."},"street_address_ii":{"type":"string","description":"Second (optional) line of user’s home address."},"city":{"type":"string","description":"City of user’s home address."},"state":{"type":"string","description":"State of user’s home address."},"zipcode":{"type":"string","description":"Postal/zip code of user’s home address."},"country":{"type":"string","description":"Country of user’s home address."},"nationalities":{"type":"array","description":"One or more nationalities of the user.","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"},"description":"Fluent language/s of the user."},"account_uid":{"type":"string","readOnly":true,"description":"A user's Portal Account UID"},"timezone":{"type":"string","description":"The time zone of the user."}}}}}}
```

## The ChildRelation object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ChildRelation":{"type":"object","description":"Represents the link between a parent/guardian and a student, including the relationship type.","properties":{"id":{"type":"integer","description":"ManageBac ID of the child (student) record."},"relationship":{"type":"string","nullable":true,"enum":["Mother","Father","Stepmother","Stepfather","Legal Guardian","Grandmother","Grandfather","Sister","Brother","Uncle","Aunt","Other Guardian","Consultant Recruiter"],"description":"The relationship of the parent/guardian to the child. Null if not specified."}}}}}}
```

## The Teacher object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Teacher":{"anyOf":[{"$ref":"#/components/schemas/PersonalInformation"},{"type":"object","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this teacher in ManageBac. Read-only."},"role":{"type":"string","description":"The user's role. Always \"Teacher\" for records returned by the Teachers endpoint."},"sb_id":{"type":"string","description":"External identifier from SchoolsBuddy, if the school uses that integration. May be null."},"oa_id":{"type":"string","description":"External identifier from OpenApply, if the school uses that integration. May be null."},"programs":{"type":"array","description":"Program UIDs the teacher is assigned to teach. Format is \"{program_uid}\" matching the uid field in the Program schema. Controls which programs the teacher appears in.\n","items":{"type":"string"}}}}]},"PersonalInformation":{"type":"object","description":"Common personal and contact fields shared by Teacher, Student, and Parent schemas. On POST (create), email and last_name are required. On PATCH (update), only include fields you want to change.\n","properties":{"email":{"type":"string","description":"User’s primary email address. Used for login and notifications. Required on create."},"first_name":{"type":"string","description":"User’s first given name."},"middle_name":{"type":"string","description":"User’s additional name."},"password":{"type":"string","description":"Minimum 6-character password. Only used on POST (create) and PATCH (update). Never returned in GET responses. If omitted on create, a random password is generated and the user receives a welcome email.\n"},"last_name":{"type":"string","description":"User’s surname."},"nickname":{"type":"string","description":"User’s handle (may differ to given name)."},"other_name":{"type":"string","description":"User’s additional names or variant in a different language."},"identifier":{"type":"string","description":"School’s own unique ID for user."},"gender":{"type":"string","description":"The user's gender. Accepts \"Male\", \"Female\", or other values depending on school configuration."},"birthday":{"type":"string","description":"User’s dob; yyyy-mm-dd."},"phone_number":{"type":"string","description":"User’s home number."},"mobile_phone_number":{"type":"string","description":"User’s mobile number."},"street_address":{"type":"string","description":"First line of user’s home address."},"street_address_ii":{"type":"string","description":"Second (optional) line of user’s home address."},"city":{"type":"string","description":"City of user’s home address."},"state":{"type":"string","description":"State of user’s home address."},"zipcode":{"type":"string","description":"Postal/zip code of user’s home address."},"country":{"type":"string","description":"Country of user’s home address."},"nationalities":{"type":"array","description":"One or more nationalities of the user.","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"},"description":"Fluent language/s of the user."},"account_uid":{"type":"string","readOnly":true,"description":"A user's Portal Account UID"},"timezone":{"type":"string","description":"The time zone of the user."}}}}}}
```

## The Student object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Student":{"anyOf":[{"$ref":"#/components/schemas/PersonalInformation"},{"type":"object","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this student in ManageBac. Read-only."},"sb_id":{"type":"string","description":"External identifier from SchoolsBuddy, if the school uses that integration. May be null."},"oa_id":{"type":"string","description":"External identifier from OpenApply, if the school uses that integration. May be null."},"graduated_on":{"type":"string","description":"Date when the student graduated, in yyyy-mm-dd format. Only present for students with a \"graduated\" status. Null for active or withdrawn students.\n"},"withdrawn_on":{"type":"string","description":"Date when the student was withdrawn from the school, in yyyy-mm-dd format. Only present for students with a \"withdrawn\" status. Null for active or graduated students.\n"},"student_id":{"type":"string","description":"The school’s own unique identifier for this student (e.g. a student number). Set by the school, not by ManageBac."},"homeroom_advisor_id":{"type":"integer","description":"ManageBac ID of the teacher assigned as this student’s homeroom advisor (tutor). Null if not assigned."},"year_group_id":{"type":"integer","description":"ManageBac ID of the year group this student is currently enrolled in."},"graduating_year":{"type":"integer","description":"The calendar year in which the student is expected to graduate. This is a four-digit year, not a date."},"parent_ids":{"type":"array","description":"ManageBac IDs of the parent/guardian records linked to this student.","items":{"type":"integer"}}}}]},"PersonalInformation":{"type":"object","description":"Common personal and contact fields shared by Teacher, Student, and Parent schemas. On POST (create), email and last_name are required. On PATCH (update), only include fields you want to change.\n","properties":{"email":{"type":"string","description":"User’s primary email address. Used for login and notifications. Required on create."},"first_name":{"type":"string","description":"User’s first given name."},"middle_name":{"type":"string","description":"User’s additional name."},"password":{"type":"string","description":"Minimum 6-character password. Only used on POST (create) and PATCH (update). Never returned in GET responses. If omitted on create, a random password is generated and the user receives a welcome email.\n"},"last_name":{"type":"string","description":"User’s surname."},"nickname":{"type":"string","description":"User’s handle (may differ to given name)."},"other_name":{"type":"string","description":"User’s additional names or variant in a different language."},"identifier":{"type":"string","description":"School’s own unique ID for user."},"gender":{"type":"string","description":"The user's gender. Accepts \"Male\", \"Female\", or other values depending on school configuration."},"birthday":{"type":"string","description":"User’s dob; yyyy-mm-dd."},"phone_number":{"type":"string","description":"User’s home number."},"mobile_phone_number":{"type":"string","description":"User’s mobile number."},"street_address":{"type":"string","description":"First line of user’s home address."},"street_address_ii":{"type":"string","description":"Second (optional) line of user’s home address."},"city":{"type":"string","description":"City of user’s home address."},"state":{"type":"string","description":"State of user’s home address."},"zipcode":{"type":"string","description":"Postal/zip code of user’s home address."},"country":{"type":"string","description":"Country of user’s home address."},"nationalities":{"type":"array","description":"One or more nationalities of the user.","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"},"description":"Fluent language/s of the user."},"account_uid":{"type":"string","readOnly":true,"description":"A user's Portal Account UID"},"timezone":{"type":"string","description":"The time zone of the user."}}}}}}
```

## The Meta object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Meta":{"type":"object","description":"Pagination metadata included in all list (index) responses.","properties":{"current_page":{"type":"integer","description":"The page number of the current result set, starting from 1."},"total_pages":{"type":"integer","description":"The total number of pages available for this query."},"total_count":{"type":"integer","description":"The total number of records matching the query across all pages."},"per_page":{"type":"integer","description":"The number of records returned per page. Defaults to 100; can be overridden with the per_page query parameter (max 200)."}}}}}}
```

## The Unit object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Unit":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"title":{"type":"string","description":"Unit title."},"description":{"type":"string","description":"Unit description.","nullable":true},"archived":{"type":"boolean","description":"Whether the unit is archived."},"idu_unit":{"type":"boolean","description":"Whether this is an interdisciplinary unit.","nullable":true},"month":{"type":"integer","description":"Starting month number (1-12).","nullable":true},"week":{"type":"integer","description":"Starting week within the month.","nullable":true},"duration_in_weeks":{"type":"integer","description":"Duration in weeks.","nullable":true},"hours":{"type":"integer","description":"Number of hours.","nullable":true},"sl":{"type":"boolean","description":"Whether the unit is for Standard Level.","nullable":true},"hl":{"type":"boolean","description":"Whether the unit is for Higher Level.","nullable":true},"language_level":{"type":"string","description":"Language level.","nullable":true},"language_b_phases":{"type":"string","description":"Language B phases.","nullable":true},"subject":{"type":"object","description":"Subject information.","nullable":true,"properties":{"id":{"type":"integer","description":"Subject ID."},"name":{"type":"string","description":"Subject name."}}},"grade":{"type":"string","description":"Grade name."},"grade_number":{"type":"integer","description":"Grade number."},"class_ids":{"type":"array","description":"IDs of classes associated with this unit.","items":{"type":"integer"}},"start_date":{"type":"string","format":"date","description":"Computed start date of the unit.","nullable":true},"end_date":{"type":"string","format":"date","description":"Computed end date of the unit.","nullable":true},"central_idea":{"type":"string","description":"Central idea of the unit.","nullable":true},"guiding_questions":{"type":"object","description":"Guiding questions for the unit.","nullable":true,"properties":{"inquiry_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"line_of_inquiry":{"type":"string","nullable":true},"question":{"type":"string","nullable":true},"subjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"labels":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}}}}}}}}},"formative_assessment":{"type":"string","description":"Formative assessment details.","nullable":true},"summative_assessment":{"type":"string","description":"Summative assessment details.","nullable":true},"peer_self_assessment":{"type":"string","description":"Peer and self assessment details.","nullable":true},"standardization_and_moderation":{"type":"string","description":"Standardization and moderation details.","nullable":true},"methods":{"type":"string","description":"Methods used.","nullable":true},"prior_learning_experiences":{"type":"string","description":"Prior learning experiences.","nullable":true},"student_expectations":{"type":"string","description":"Student expectations.","nullable":true},"pedagogical_approaches":{"type":"object","description":"Pedagogical approaches.","nullable":true,"properties":{"selected":{"type":"array","items":{"type":"string"}},"text":{"type":"string","nullable":true}}},"teaching_strategies":{"type":"string","description":"Teaching strategies used.","nullable":true},"feedback":{"type":"string","description":"Feedback details.","nullable":true},"dispositions":{"type":"string","description":"Dispositions.","nullable":true},"international_mindedness":{"type":"string","description":"International mindedness.","nullable":true},"academic_honesty":{"type":"string","description":"Academic honesty.","nullable":true},"information_communication_technology":{"type":"string","description":"Information and communication technology.","nullable":true},"language_and_literacy_development":{"type":"object","description":"Language and literacy development.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"cross_curricular_links":{"type":"object","description":"Cross-curricular links.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"co_curricular_links":{"type":"object","description":"Co-curricular links.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"differentiation":{"type":"object","description":"Differentiation details.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"content":{"type":"string","description":"Content details.","nullable":true},"skills":{"type":"string","description":"Skills details.","nullable":true},"learning_process":{"type":"string","description":"Learning process details.","nullable":true},"metacognition":{"type":"object","description":"Metacognition details.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"unit_activities":{"type":"array","description":"Unit activities.","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}}},"support_materials":{"type":"object","description":"Support materials.","nullable":true,"properties":{"options":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"text":{"type":"string","nullable":true}}},"concepts":{"type":"string","description":"Concepts.","nullable":true},"misunderstandings":{"type":"string","description":"Misunderstandings.","nullable":true},"transfer_goals":{"type":"string","description":"Transfer goals.","nullable":true},"lines_of_inquiry":{"type":"array","description":"Lines of inquiry for the unit (PYP only).","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"line":{"type":"string"}}}},"student_questions":{"type":"array","description":"Student questions for the unit (PYP only).","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}}},"teacher_questions":{"type":"array","description":"Teacher questions for the unit (PYP only).","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}}},"learner_profiles":{"type":"array","description":"Learner profiles associated with the unit.","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"key_concepts":{"type":"object","description":"Key concepts and unit key concepts for the unit.","nullable":true,"properties":{"key_concepts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"concept":{"type":"string"}}}},"unit_key_concepts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"kind":{"type":"string","description":"Concept kind (e.g. form, function, causation).","nullable":true},"explanation_related_concept":{"type":"string","nullable":true}}}}}},"related_concepts":{"type":"object","description":"Related concepts for the unit (MYP only).","nullable":true,"properties":{"related_concepts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"phase":{"type":"integer","nullable":true}}}},"other":{"type":"string","nullable":true}}},"specified_concepts":{"type":"array","description":"Specified concepts for the unit (MYP, disabled by default).","nullable":true,"items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"phase":{"type":"integer","nullable":true}}}},"statement_of_inquiry":{"type":"string","description":"Statement of inquiry (HTML).","nullable":true},"conceptual_understandings":{"type":"string","description":"Conceptual understandings (HTML).","nullable":true},"contextual_lens":{"type":"object","description":"Contextual lens scope with text per scope.","nullable":true,"additionalProperties":{"type":"string"}},"community_engagement":{"type":"object","description":"Community engagement with selected options and comments.","nullable":true,"properties":{"selected":{"type":"array","items":{"type":"string"}},"principled_action_comment":{"type":"string","nullable":true},"learning_process_comment":{"type":"string","nullable":true}}},"approaches_to_learning":{"type":"object","description":"Approaches to learning tree structure with ATL details.","nullable":true,"properties":{"atls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}},"atl_details":{"type":"string","nullable":true}}},"criteria":{"type":"object","description":"Assessment criteria grouped by subject and level with description.","nullable":true,"properties":{"criteria":{"type":"array","items":{"type":"object","properties":{"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"level":{"type":"string","description":"'hl' or 'sl'"},"criteria":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}}}},"criteria_description":{"type":"string","nullable":true}}},"global_contexts":{"type":"object","description":"Global contexts with explorations (MYP only).","nullable":true,"properties":{"unit_global_contexts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"exploration_to_develop":{"type":"array","items":{"type":"string"}},"subjects":{"type":"array","items":{"type":"string"}}}}}}},"transdisciplinary_theme":{"type":"object","description":"PYP transdisciplinary theme with selected descriptions.","nullable":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"},"list":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}}}}}},"standards":{"type":"object","description":"Standards with core_standards and curriculum standards.","nullable":true,"properties":{"core_standards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}},"standards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string"},"atlas_grade":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"children":{"type":"array","items":{"type":"object"}}}}}}},"academic_integrity":{"type":"string","description":"Academic integrity (HTML).","nullable":true},"agency":{"type":"string","description":"Agency (HTML).","nullable":true},"action":{"type":"string","description":"Action (HTML).","nullable":true},"student_self_assessment":{"type":"string","description":"Student self assessment (HTML).","nullable":true},"success_criteria":{"type":"string","description":"Success criteria (HTML).","nullable":true},"ongoing_assessment":{"type":"string","description":"Ongoing assessment (HTML).","nullable":true},"attitudes":{"type":"array","description":"Attitudes (comma-separated values split into array).","nullable":true,"items":{"type":"string"}},"aims":{"type":"array","description":"Aims grouped by year and subject with ancestry tree.","nullable":true,"items":{"type":"object","properties":{"year":{"type":"integer","nullable":true},"subjects":{"type":"array","items":{"type":"object","properties":{"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}}}}}}}}}},"objectives":{"type":"array","description":"Objectives grouped by year and subject with ancestry tree.","nullable":true,"items":{"type":"object","properties":{"year":{"type":"integer","nullable":true},"subjects":{"type":"array","items":{"type":"object","properties":{"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}}}}}}}}}},"syllabus":{"type":"object","description":"Syllabus tree structure.","nullable":true,"properties":{"syllabuses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}}},"scope_sequence":{"type":"array","description":"Scope and sequence grouped by subject, phase/grade, strand, and kind.","nullable":true,"items":{"type":"object","properties":{"subject_id":{"type":"integer","nullable":true},"subject_name":{"type":"string","nullable":true},"phases_or_grades":{"type":"array","items":{"type":"object","properties":{"phase_or_grade":{"type":"string","nullable":true},"strands":{"type":"array","items":{"type":"object","properties":{"strand_id":{"type":"integer"},"strand_name":{"type":"string"},"kinds":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"expectation":{"type":"string"},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"expectation":{"type":"string"}}}}}}}}}}}}}}}}},"created_at":{"type":"string","description":"Created date."},"updated_at":{"type":"string","description":"Updated date."}}}}}}
```

## The UnitClassAssignment object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"UnitClassAssignment":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID of the assignment record in ManageBac."},"unit_id":{"type":"integer","description":"ID of the unit (matches `id` in `GET /v2/units`)."},"class_id":{"type":"integer","description":"ID of the class this unit is assigned to."},"status":{"type":"string","description":"Whether the unit is published (`active`) or in a provisional state (`draft`) within this class. Omitted when the response was filtered by `deleted_since`.","enum":["active","draft"]},"created_at":{"type":"string","description":"ISO 8601 timestamp — when the assignment was first created."},"updated_at":{"type":"string","description":"ISO 8601 timestamp — when the assignment was last modified. Omitted when the response was filtered by `deleted_since`."},"deleted_at":{"type":"string","description":"ISO 8601 timestamp — when the assignment was removed. Only present in responses filtered by `deleted_since`."}}}}}}
```

## The Submission object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"Submission":{"type":"object","properties":{"id":{"type":"string","description":"Composite identifier in the form `<task_id>-<student_id>`."},"task_id":{"type":"integer","description":"ID of the task this submission belongs to."},"student_id":{"type":"integer","description":"ID of the student who owns this submission."},"mechanism":{"type":"string","description":"Submission mechanism — `dropbox` for file uploads, `google_drive` for tasks using the Google Drive integration.","enum":["dropbox","google_drive"]},"submitted_at":{"type":"string","description":"ISO 8601 timestamp of submission. For `dropbox`, the latest `created_at` among the student's files. For `google_drive`, the `submitted_at` of the underlying TaskWork — `null` for rows still in `waiting` or `in_progress` state.","nullable":true},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the latest underlying change."},"locked":{"type":"boolean","description":"Whether submissions are currently locked for this student on this task."},"status":{"type":"string","description":"Submission status. Dropbox: one of `submitted`, `late`, `early_and_late`, `pending`, or `null` if the dropbox is disabled. Google Drive: one of `submitted`, `late`, `in_progress`, `waiting`.","nullable":true},"files":{"type":"array","description":"Files attached to the submission. Empty for Google Drive task_works still in `waiting` or `in_progress` state.","items":{"$ref":"#/components/schemas/SubmissionFile"}}}},"SubmissionFile":{"type":"object","properties":{"id":{"type":"integer","description":"Unique file ID in ManageBac."},"filename":{"type":"string","description":"Filename as uploaded."},"file_size":{"type":"integer","description":"File size in bytes."},"content_type":{"type":"string","description":"MIME type derived from the filename extension."},"uploaded_at":{"type":"string","description":"ISO 8601 timestamp when the file was created."},"turnitin_score":{"type":"integer","description":"Turnitin originality score, when available. `null` when Turnitin has not run or the score is non-numeric.","nullable":true},"download_path":{"type":"string","description":"Relative path to the file-download endpoint, which authorises the request and 302-redirects to a short-lived signed URL for the file's content."}}}}}}
```

## The SubmissionFile object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"SubmissionFile":{"type":"object","properties":{"id":{"type":"integer","description":"Unique file ID in ManageBac."},"filename":{"type":"string","description":"Filename as uploaded."},"file_size":{"type":"integer","description":"File size in bytes."},"content_type":{"type":"string","description":"MIME type derived from the filename extension."},"uploaded_at":{"type":"string","description":"ISO 8601 timestamp when the file was created."},"turnitin_score":{"type":"integer","description":"Turnitin originality score, when available. `null` when Turnitin has not run or the score is non-numeric.","nullable":true},"download_path":{"type":"string","description":"Relative path to the file-download endpoint, which authorises the request and 302-redirects to a short-lived signed URL for the file's content."}}}}}}
```

## The AssessmentTypesResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AssessmentTypesResponse":{"type":"object","properties":{"assessment_type":{"$ref":"#/components/schemas/AssessmentTypeAttributes"}}},"AssessmentTypeAttributes":{"type":"object","properties":{"id":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"color_code":{"type":"string"},"available_assessments":{"type":"array","items":{"type":"string"}},"required_assessments":{"type":"array","items":{"type":"string"}}}}}}}
```

## The AssessmentTypeAttributes object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"AssessmentTypeAttributes":{"type":"object","properties":{"id":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"color_code":{"type":"string"},"available_assessments":{"type":"array","items":{"type":"string"}},"required_assessments":{"type":"array","items":{"type":"string"}}}}}}}
```

## The CriteriaResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CriteriaResponse":{"type":"object","properties":{"criteria":{"type":"array","items":{"$ref":"#/components/schemas/CriteriaAttributes"}}}},"CriteriaAttributes":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"descriptors":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"value":{"type":"string"},"descriptor":{"type":"string"}},"additionalProperties":false},{"type":"object","properties":{"phase":{"type":"integer"},"descriptor":{"type":"string"},"min_value":{"type":"integer"},"max_value":{"type":"integer"},"formative_descriptor":{"type":"string"}},"additionalProperties":false}]}}}}}}}
```

## The CriteriaAttributes object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CriteriaAttributes":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"descriptors":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"value":{"type":"string"},"descriptor":{"type":"string"}},"additionalProperties":false},{"type":"object","properties":{"phase":{"type":"integer"},"descriptor":{"type":"string"},"min_value":{"type":"integer"},"max_value":{"type":"integer"},"formative_descriptor":{"type":"string"}},"additionalProperties":false}]}}}}}}}
```

## The TaskCategory object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"TaskCategory":{"type":"object","properties":{"id":{"type":"integer","description":"Unique ID in ManageBac."},"name":{"type":"string","description":"Task category name."},"background_color":{"type":"string","description":"Background color for Task Category."},"color":{"type":"string","description":"Text color for Task Category."},"weight":{"type":"integer","description":"The weight of the Task Category."}}}}}}
```

## The YearGroupPblTodosComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblTodosComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Todo ID"},"type":{"type":"string","description":"Todo type"},"title":{"type":"string","description":"Todo title"},"completed":{"type":"boolean","description":"Student completion status for a todo"},"responsible_group":{"type":"string","nullable":true,"enum":["students","advisors","everyone"],"description":"Who is responsible for the todo; null when unset (e.g. personal todos)."}}},{"type":"object","properties":{"id":{"type":"integer","description":"Item ID"},"type":{"type":"string","description":"Item type"},"title":{"type":"string","description":"Item title"},"due_date":{"type":"string","format":"date-time","description":"Deadline due date (ISO 8601 datetime)."},"status":{"type":"string","nullable":true,"enum":["Pending","Submitted","Late"],"description":"Student submission state for the deadline; null when the deadline has no dropbox."},"todos":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Todo ID"},"type":{"type":"string","description":"Todo type"},"title":{"type":"string","description":"Todo title"},"completed":{"type":"boolean","description":"Student completion status for a todo"},"responsible_group":{"type":"string","nullable":true,"enum":["students","advisors","everyone"],"description":"Who is responsible for the todo; null when unset (e.g. personal todos)."}}}]}}}}]}}}}}}}}
```

## The YearGroupPblPresentationComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblPresentationComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"title":{"type":"string","nullable":true,"description":"Presentation title"},"duration":{"type":"integer","nullable":true,"description":"Presentation duration"},"documents":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Document ID"},"caption":{"type":"string","nullable":true,"description":"Document name"},"url":{"type":"string","nullable":true,"description":"Document URL"},"created_at":{"type":"string","description":"Document creation time (ISO 8601)"}}}]}},"items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"title":{"type":"string","nullable":true,"description":"Presentation item title"},"value":{"type":"string","nullable":true,"description":"Presentation item value (formatted)"}}}]}}}}}}}}}
```

## The YearGroupPblReflectionsComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblReflectionsComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Reflection ID"},"title":{"type":"string","description":"Reflection title"},"submitted":{"type":"boolean","description":"Reflection submission status for a student"}}}]}}}}}}}}}
```

## The YearGroupPblStudentNotesReviewsComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblStudentNotesReviewsComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Note ID"},"author":{"type":"object","properties":{"id":{"type":"integer","description":"Author ID"}}},"interview":{"type":"boolean","description":"Identifies interview"},"title":{"type":"string","nullable":true,"description":"Interview title"},"body":{"type":"string","description":"Note details"},"posted_at":{"type":"string","format":"date-time","description":"When the note/interview was posted (ISO 8601 datetime)."}}}]}}}}}}}}}
```

## The YearGroupPblStudentDocumentsComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblStudentDocumentsComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Document ID"},"filename":{"type":"string","description":"Document file name"},"url":{"type":"string","description":"Document URL"},"created_at":{"type":"string","description":"Document creation time (ISO 8601)"}}}]}}}}}}}}}
```

## The YearGroupPblStudentProposalComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblStudentProposalComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","description":"Item identifier"},"name":{"type":"string","description":"Subject name"}}},{"type":"object","properties":{"id":{"type":"integer","description":"Field ID"},"type":{"type":"string","description":"Field identifier"},"title":{"type":"string","description":"Field title"},"kind":{"type":"string","description":"Field type"},"value":{"anyOf":[{"type":"string","description":"Result value"},{"type":"boolean","description":"Result value"},{"type":"number","description":"Result value"}]}}}]}}}}}}}}}
```

## The YearGroupPblStudentJournalComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"YearGroupPblStudentJournalComponent":{"type":"object","properties":{"id":{"type":"integer","description":"Student ID"},"identifier":{"type":"string","description":"Student identifier"},"status":{"type":"object","properties":{"completed":{"type":"boolean","description":"Completed status"},"approved":{"type":"boolean","description":"Approved status"},"progress":{"type":"object","properties":{"id":{"type":"integer","description":"Progress status ID"},"default":{"type":"boolean","description":"Progress status is set by default"},"title":{"type":"string","description":"Progress status title"}}}}},"supervisor":{"type":"object","properties":{"id":{"type":"integer","description":"Supervisor ID."},"identifier":{"type":"string","description":"Supervisor ID identifier."}}},"component":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier of component"},"items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Journal entry ID"},"kind":{"type":"string","description":"Entry kind"},"title":{"type":"string","nullable":true,"description":"Entry title"},"description":{"type":"string","nullable":true,"description":"Entry description"},"author_id":{"type":"integer","description":"Entry author ID"},"created_at":{"type":"string","description":"Entry creation time (ISO 8601)"},"files":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","description":"File ID"},"filename":{"type":"string","description":"File name"},"url":{"type":"string","description":"File URL"}}}]}},"body":{"type":"string","description":"Entry body"},"photos":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Photo ID"},"caption":{"type":"string","description":"Photo name"},"url":{"type":"string","description":"Photo URL"}}}]}},"url":{"type":"string","nullable":true,"description":"Entry URL"}}}]}}}}}}}}}
```

## The PaginationMeta object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"next_page":{"type":"integer","nullable":true},"prev_page":{"type":"integer","nullable":true},"total_pages":{"type":"integer"},"total_count":{"type":"integer"},"per_page":{"type":"integer"}}}}}}
```

## The CasSettings object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasSettings":{"type":"object","properties":{"cas":{"type":"object","properties":{"components":{"type":"array","items":{"$ref":"#/components/schemas/CasComponent"}}},"required":["components"]}},"required":["cas"]},"CasComponent":{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"track_hours":{"type":"boolean"},"show_hours_chart":{"type":"boolean"},"cas_total_hours":{"type":"integer"},"show_aims_and_goals":{"type":"boolean"},"optional_question":{"type":"string","nullable":true},"activity_description_title":{"type":"string"}},"required":["slug","label"]}}}}
```

## The CasComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasComponent":{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"track_hours":{"type":"boolean"},"show_hours_chart":{"type":"boolean"},"cas_total_hours":{"type":"integer"},"show_aims_and_goals":{"type":"boolean"},"optional_question":{"type":"string","nullable":true},"activity_description_title":{"type":"string"}},"required":["slug","label"]}}}}
```

## The CasExperiencesStudentsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasExperiencesStudentsResponse":{"type":"object","properties":{"students":{"type":"array","items":{"$ref":"#/components/schemas/CasStudent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["students","meta"]},"CasStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"aims_and_goals":{"type":"string","description":"The student's CAS aims and goals statement. May be blank and may contain HTML markup."},"overall_progress":{"type":"string","description":"Normalized overall CAS progress slug (standard CAS scale). A subset of the Service Learning Outcomes overall_progress vocabulary.","enum":["excellent","on_track","concern","to_be_determined"]},"component":{"$ref":"#/components/schemas/CasStudentComponent"}},"required":["id","aims_and_goals","overall_progress","component"]},"CasStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CasExperience"}}},"required":["items"]},"CasExperience":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/CasExperienceStatus"},"status_annotations":{"$ref":"#/components/schemas/CasExperienceStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/CasExperienceSupervisor"},"cas_project":{"type":"boolean"},"creativity":{"type":"boolean"},"creativity_hours":{"type":"number"},"activity":{"type":"boolean"},"activity_hours":{"type":"number"},"service":{"type":"boolean"},"service_hours":{"type":"number"},"service_action_type":{"type":"string","nullable":true,"enum":["Direct","Indirect","Advocacy","Research"]},"ongoing_approach":{"type":"boolean"},"school_based_approach":{"type":"boolean"},"community_based_approach":{"type":"boolean"},"individual_approach":{"type":"boolean"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"CasExperienceStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"CasExperienceStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"CasExperienceSupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}},"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"next_page":{"type":"integer","nullable":true},"prev_page":{"type":"integer","nullable":true},"total_pages":{"type":"integer"},"total_count":{"type":"integer"},"per_page":{"type":"integer"}}}}}}
```

## The CasStudent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"aims_and_goals":{"type":"string","description":"The student's CAS aims and goals statement. May be blank and may contain HTML markup."},"overall_progress":{"type":"string","description":"Normalized overall CAS progress slug (standard CAS scale). A subset of the Service Learning Outcomes overall_progress vocabulary.","enum":["excellent","on_track","concern","to_be_determined"]},"component":{"$ref":"#/components/schemas/CasStudentComponent"}},"required":["id","aims_and_goals","overall_progress","component"]},"CasStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CasExperience"}}},"required":["items"]},"CasExperience":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/CasExperienceStatus"},"status_annotations":{"$ref":"#/components/schemas/CasExperienceStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/CasExperienceSupervisor"},"cas_project":{"type":"boolean"},"creativity":{"type":"boolean"},"creativity_hours":{"type":"number"},"activity":{"type":"boolean"},"activity_hours":{"type":"number"},"service":{"type":"boolean"},"service_hours":{"type":"number"},"service_action_type":{"type":"string","nullable":true,"enum":["Direct","Indirect","Advocacy","Research"]},"ongoing_approach":{"type":"boolean"},"school_based_approach":{"type":"boolean"},"community_based_approach":{"type":"boolean"},"individual_approach":{"type":"boolean"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"CasExperienceStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"CasExperienceStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"CasExperienceSupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}}}}}
```

## The CasStudentComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CasExperience"}}},"required":["items"]},"CasExperience":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/CasExperienceStatus"},"status_annotations":{"$ref":"#/components/schemas/CasExperienceStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/CasExperienceSupervisor"},"cas_project":{"type":"boolean"},"creativity":{"type":"boolean"},"creativity_hours":{"type":"number"},"activity":{"type":"boolean"},"activity_hours":{"type":"number"},"service":{"type":"boolean"},"service_hours":{"type":"number"},"service_action_type":{"type":"string","nullable":true,"enum":["Direct","Indirect","Advocacy","Research"]},"ongoing_approach":{"type":"boolean"},"school_based_approach":{"type":"boolean"},"community_based_approach":{"type":"boolean"},"individual_approach":{"type":"boolean"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"CasExperienceStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"CasExperienceStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"CasExperienceSupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}}}}}
```

## The CasExperience object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasExperience":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/CasExperienceStatus"},"status_annotations":{"$ref":"#/components/schemas/CasExperienceStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/CasExperienceSupervisor"},"cas_project":{"type":"boolean"},"creativity":{"type":"boolean"},"creativity_hours":{"type":"number"},"activity":{"type":"boolean"},"activity_hours":{"type":"number"},"service":{"type":"boolean"},"service_hours":{"type":"number"},"service_action_type":{"type":"string","nullable":true,"enum":["Direct","Indirect","Advocacy","Research"]},"ongoing_approach":{"type":"boolean"},"school_based_approach":{"type":"boolean"},"community_based_approach":{"type":"boolean"},"individual_approach":{"type":"boolean"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"CasExperienceStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"CasExperienceStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"CasExperienceSupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}}}}}
```

## The CasExperienceStatus object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasExperienceStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]}}}}
```

## The CasExperienceStatusAnnotations object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasExperienceStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]}}}}
```

## The CasExperienceSupervisor object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"CasExperienceSupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}}}}}
```

## The ServiceLearningSettings object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningSettings":{"type":"object","properties":{"service_learning":{"type":"object","properties":{"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"abbreviation":{"type":"string","nullable":true},"components":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningComponent"}}},"required":["components"]}},"required":["service_learning"]},"ServiceLearningComponent":{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"types":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ServiceLearningCategoryType"}},"outcomes":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ServiceLearningConfiguredOutcome"}}},"required":["slug","label"]},"ServiceLearningCategoryType":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"initial":{"type":"string"},"color_code":{"type":"string"}},"required":["id","label"]},"ServiceLearningConfiguredOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"}},"required":["id","title"]}}}}
```

## The ServiceLearningComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningComponent":{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"types":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ServiceLearningCategoryType"}},"outcomes":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ServiceLearningConfiguredOutcome"}}},"required":["slug","label"]},"ServiceLearningCategoryType":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"initial":{"type":"string"},"color_code":{"type":"string"}},"required":["id","label"]},"ServiceLearningConfiguredOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"}},"required":["id","title"]}}}}
```

## The ServiceLearningCategoryType object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryType":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"initial":{"type":"string"},"color_code":{"type":"string"}},"required":["id","label"]}}}}
```

## The ServiceLearningConfiguredOutcome object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningConfiguredOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"}},"required":["id","title"]}}}}
```

## The ServiceLearningCategoriesStudentsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoriesStudentsResponse":{"type":"object","properties":{"students":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategoryStudent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["students","meta"]},"ServiceLearningCategoryStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"component":{"$ref":"#/components/schemas/ServiceLearningCategoryStudentComponent"}},"required":["id","component"]},"ServiceLearningCategoryStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategory"}}},"required":["items"]},"ServiceLearningCategory":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceLearningCategoryStatus"},"status_annotations":{"$ref":"#/components/schemas/ServiceLearningCategoryStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/ServiceLearningCategorySupervisor"},"activity_type":{"type":"string"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"learning_outcomes":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategoryLearningOutcome"}},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"ServiceLearningCategoryStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"ServiceLearningCategoryStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"ServiceLearningCategorySupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}},"ServiceLearningCategoryLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"]},"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"next_page":{"type":"integer","nullable":true},"prev_page":{"type":"integer","nullable":true},"total_pages":{"type":"integer"},"total_count":{"type":"integer"},"per_page":{"type":"integer"}}}}}}
```

## The ServiceLearningCategoryStudent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"component":{"$ref":"#/components/schemas/ServiceLearningCategoryStudentComponent"}},"required":["id","component"]},"ServiceLearningCategoryStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategory"}}},"required":["items"]},"ServiceLearningCategory":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceLearningCategoryStatus"},"status_annotations":{"$ref":"#/components/schemas/ServiceLearningCategoryStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/ServiceLearningCategorySupervisor"},"activity_type":{"type":"string"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"learning_outcomes":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategoryLearningOutcome"}},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"ServiceLearningCategoryStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"ServiceLearningCategoryStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"ServiceLearningCategorySupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}},"ServiceLearningCategoryLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"]}}}}
```

## The ServiceLearningCategoryStudentComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategory"}}},"required":["items"]},"ServiceLearningCategory":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceLearningCategoryStatus"},"status_annotations":{"$ref":"#/components/schemas/ServiceLearningCategoryStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/ServiceLearningCategorySupervisor"},"activity_type":{"type":"string"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"learning_outcomes":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategoryLearningOutcome"}},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"ServiceLearningCategoryStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"ServiceLearningCategoryStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"ServiceLearningCategorySupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}},"ServiceLearningCategoryLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"]}}}}
```

## The ServiceLearningCategory object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategory":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceLearningCategoryStatus"},"status_annotations":{"$ref":"#/components/schemas/ServiceLearningCategoryStatusAnnotations"},"supervisor":{"$ref":"#/components/schemas/ServiceLearningCategorySupervisor"},"activity_type":{"type":"string"},"start_date":{"type":"string","nullable":true,"format":"date"},"end_date":{"type":"string","nullable":true,"format":"date"},"learning_outcomes":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningCategoryLearningOutcome"}},"slug":{"type":"string"}},"required":["id","name","status","slug"]},"ServiceLearningCategoryStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]},"ServiceLearningCategoryStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]},"ServiceLearningCategorySupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}},"ServiceLearningCategoryLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"]}}}}
```

## The ServiceLearningCategoryStatus object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryStatus":{"type":"object","properties":{"post_approved":{"type":"boolean"},"pre_approved":{"type":"boolean"},"progress":{"type":"object","properties":{"title":{"type":"string","enum":["approved","completed","to_be_determined"]}},"required":["title"]}},"required":["post_approved","pre_approved","progress"]}}}}
```

## The ServiceLearningCategoryStatusAnnotations object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryStatusAnnotations":{"type":"object","properties":{"incomplete":{"type":"boolean"},"rejected":{"type":"boolean"},"reviewed":{"type":"boolean"}},"required":["incomplete","rejected","reviewed"]}}}}
```

## The ServiceLearningCategorySupervisor object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategorySupervisor":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"},"contact_number":{"type":"string"}}}}}}
```

## The ServiceLearningCategoryLearningOutcome object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningCategoryLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"]}}}}
```

## The ServiceLearningOutcomesStudentsResponse object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningOutcomesStudentsResponse":{"type":"object","properties":{"students":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningOutcomeStudent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["students","meta"]},"ServiceLearningOutcomeStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"status":{"type":"string","description":"The student's assigned SL status title (or translated standard CAS label). Falls back to the school's default status (or \"To Be Determined\" on the standard scale) when none is assigned; always present, never null."},"overall_progress":{"type":"string","description":"Normalized status slug. Falls back to \"to_be_determined\" when no status is assigned; always present, never null.","enum":["excellent","on_track","concern","to_be_determined","cas-approved","cas-completed","cas-rejected","cas-needs-approval","wait-listed","cas-review-sent","cas-reviewed","cas-incomplete"]},"component":{"$ref":"#/components/schemas/ServiceLearningOutcomeStudentComponent"}},"required":["id","status","overall_progress","component"]},"ServiceLearningOutcomeStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningOutcome"}}},"required":["items"]},"ServiceLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"completed":{"type":"boolean"},"experiences_with_reflection":{"type":"integer"},"total_experiences":{"type":"integer"},"slug":{"type":"string"}},"required":["id","title","completed","experiences_with_reflection","total_experiences","slug"]},"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"next_page":{"type":"integer","nullable":true},"prev_page":{"type":"integer","nullable":true},"total_pages":{"type":"integer"},"total_count":{"type":"integer"},"per_page":{"type":"integer"}}}}}}
```

## The ServiceLearningOutcomeStudent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningOutcomeStudent":{"type":"object","properties":{"id":{"type":"integer"},"identifier":{"type":"string","nullable":true},"status":{"type":"string","description":"The student's assigned SL status title (or translated standard CAS label). Falls back to the school's default status (or \"To Be Determined\" on the standard scale) when none is assigned; always present, never null."},"overall_progress":{"type":"string","description":"Normalized status slug. Falls back to \"to_be_determined\" when no status is assigned; always present, never null.","enum":["excellent","on_track","concern","to_be_determined","cas-approved","cas-completed","cas-rejected","cas-needs-approval","wait-listed","cas-review-sent","cas-reviewed","cas-incomplete"]},"component":{"$ref":"#/components/schemas/ServiceLearningOutcomeStudentComponent"}},"required":["id","status","overall_progress","component"]},"ServiceLearningOutcomeStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningOutcome"}}},"required":["items"]},"ServiceLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"completed":{"type":"boolean"},"experiences_with_reflection":{"type":"integer"},"total_experiences":{"type":"integer"},"slug":{"type":"string"}},"required":["id","title","completed","experiences_with_reflection","total_experiences","slug"]}}}}
```

## The ServiceLearningOutcomeStudentComponent object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningOutcomeStudentComponent":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLearningOutcome"}}},"required":["items"]},"ServiceLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"completed":{"type":"boolean"},"experiences_with_reflection":{"type":"integer"},"total_experiences":{"type":"integer"},"slug":{"type":"string"}},"required":["id","title","completed","experiences_with_reflection","total_experiences","slug"]}}}}
```

## The ServiceLearningOutcome object

```json
{"openapi":"3.0.3","info":{"title":"API V2P1","version":"v2p1"},"components":{"schemas":{"ServiceLearningOutcome":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"completed":{"type":"boolean"},"experiences_with_reflection":{"type":"integer"},"total_experiences":{"type":"integer"},"slug":{"type":"string"}},"required":["id","title","completed","experiences_with_reflection","total_experiences","slug"]}}}}
```
