> 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/v2p0/teachers.md).

# Teachers

Teachers are users who use ManageBac to delivery curriculum

## Update Teacher Avatar

> Updates or replaces a teacher's avatar image. Accepts either a remote URL\
> or a direct file upload.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}/avatar":{"put":{"summary":"Update Teacher Avatar","operationId":"updateTeacherAvatar","tags":["Teachers"],"description":"Updates or replaces a teacher's avatar image. Accepts either a remote URL\nor a direct file upload.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for a teacher.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"422":{"description":"Bad Request","content":{"application/json":{}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"object","anyOf":[{"properties":{"remote_file_url":{"type":"string","description":"Avatar URL to upload"}},"required":["remote_file_url"]},{"properties":{"file":{"type":"string","format":"binary","description":"Avatar file data"}},"required":["file"]}]}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"avatar":{"type":"object","anyOf":[{"properties":{"remote_file_url":{"type":"string","description":"Avatar URL to upload"}},"required":["remote_file_url"]},{"properties":{"file":{"type":"string","format":"binary","description":"Avatar file data"}},"required":["file"]}]}}}}},"required":true,"description":"Avatar params"}}}}}
```

## Delete Teacher Avatar

> Deletes a teacher's avatar image. This action cannot be undone.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}/avatar":{"delete":{"summary":"Delete Teacher Avatar","operationId":"deleteTeacherAvatar","tags":["Teachers"],"description":"Deletes a teacher's avatar image. This action cannot be undone.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for a teacher.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}
```

## Get all Teachers

> Retrieves all teacher records for the school. Returns personal details, contact information, and program assignments. Results are paginated.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"parameters":{"idsQueryParam":{"name":"ids[]","in":"query","description":"Return only records with the given IDs.","required":false,"allowReserved":true,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"integer"}}}},"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."}}},"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)."}}},"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."}}}}},"paths":{"/v2p0/teachers":{"get":{"summary":"Get all Teachers","operationId":"listTeachers","tags":["Teachers"],"description":"Retrieves all teacher records for the school. Returns personal details, contact information, and program assignments. Results are paginated.\n","parameters":[{"$ref":"#/components/parameters/idsQueryParam"},{"name":"archived","in":"query","description":"Return only archived (1) or only active (0) teachers. If value is not specified, all teachers are returned.","required":false,"schema":{"type":"boolean"}},{"name":"modified_since","in":"query","description":"An ISO 8601 timestamp to filter results by modification date. Only records updated at or after this time are returned.","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"An integer defining which page to display. Defaults to 1.","required":false,"schema":{"type":"string"}},{"name":"per_page","in":"query","description":"An integer defining the number of records to display per page. Defaults to 100.","required":false,"schema":{"type":"string"}},{"name":"deleted_since","in":"query","description":"An ISO 8601 timestamp to filter by deletion date. Returns soft-deleted records removed at or after this time.","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","description":"A search string matched against first name, last name, middle name, nickname, other name, and email.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"teachers":{"type":"array","items":{"$ref":"#/components/schemas/Teacher"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}}}}}}}
```

## Create New Teacher

> This endpoint creates a new teacher record. Note, the \<code>Content-Type\</code> header must be set to \<code>application/json\</code>,\
> and the request body should contain the field structure as a JSON payload. Only users with \<code>admin\</code> \<code>role\</code>\
> are able to create users.\<br/>\
> Pass \<code>options\[send\_welcome\_email]: true\</code> to enqueue a welcome email (with password-set link) to the new teacher. Defaults to \<code>false\</code>.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}}}},"paths":{"/v2p0/teachers":{"post":{"summary":"Create New Teacher","operationId":"createTeacher","tags":["Teachers"],"description":"This endpoint creates a new teacher record. Note, the <code>Content-Type</code> header must be set to <code>application/json</code>,\nand the request body should contain the field structure as a JSON payload. Only users with <code>admin</code> <code>role</code>\nare able to create users.<br/>\nPass <code>options[send_welcome_email]: true</code> to enqueue a welcome email (with password-set link) to the new teacher. Defaults to <code>false</code>.\n","parameters":[],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"teacher":{"$ref":"#/components/schemas/Teacher"},"options":{"type":"object","properties":{"welcome_email":{"type":"string","enum":["enqueued","not_enqueued"]}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teacher":{"allOf":[{"$ref":"#/components/schemas/PersonalInformation"},{"description":"Fields for create teacher."}]},"options":{"type":"object","description":"Request directives applied during the create operation.","properties":{"send_welcome_email":{"type":"boolean","default":false,"description":"If true, a welcome email is enqueued for the newly created teacher."}}}},"required":["teacher"]}}}}}}}}
```

## Get a Teacher

> Retrieves a single teacher record by ID. Returns personal details, contact information, and program assignments. Fields with null values are omitted from the response, but empty arrays (such as programs, languages, nationalities) are always included.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}":{"get":{"summary":"Get a Teacher","operationId":"getTeacherByID","tags":["Teachers"],"description":"Retrieves a single teacher record by ID. Returns personal details, contact information, and program assignments. Fields with null values are omitted from the response, but empty arrays (such as programs, languages, nationalities) are always included.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for a teacher.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"teacher":{"$ref":"#/components/schemas/Teacher"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}
```

## Update a Teacher

> Updates an existing teacher record by ID. The \<code>Content-Type\</code> header must be set to \<code>application/json\</code>, and the request body should contain only the fields you want to update. Only API tokens with admin permissions can update users. The \<code>role\</code> field is read-only and cannot be changed. The \<code>oa\_id\</code> and \<code>sb\_id\</code> integration fields can only be set by SchoolsBuddy-extension tokens and cannot be changed once set.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}}}},"paths":{"/v2p0/teachers/{id}":{"patch":{"summary":"Update a Teacher","operationId":"updateTeacher","tags":["Teachers"],"description":"Updates an existing teacher record by ID. The <code>Content-Type</code> header must be set to <code>application/json</code>, and the request body should contain only the fields you want to update. Only API tokens with admin permissions can update users. The <code>role</code> field is read-only and cannot be changed. The <code>oa_id</code> and <code>sb_id</code> integration fields can only be set by SchoolsBuddy-extension tokens and cannot be changed once set.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for the teacher to update.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"422":{"description":"Unprocessable Content","content":{"application/json":{}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teacher":{"allOf":[{"$ref":"#/components/schemas/PersonalInformation"},{"description":"Only include fields you want to update. Omitted fields are left unchanged."}]}},"required":["teacher"]}}}}}}}}
```

## Archive a Teacher

> Archives a teacher record by ID. Archiving removes the teacher from all classes and groups they are members of. The teacher record is retained but marked as archived. To reverse this operation, use the Unarchive endpoint.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}}},"paths":{"/v2p0/teachers/{id}/archive":{"put":{"summary":"Archive a Teacher","operationId":"archiveTeacher","tags":["Teachers"],"description":"Archives a teacher record by ID. Archiving removes the teacher from all classes and groups they are members of. The teacher record is retained but marked as archived. To reverse this operation, use the Unarchive endpoint.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for the teacher to archive.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"}}}}}}
```

## Unarchive a Teacher

> Reverses the archive operation on a teacher record by ID. This restores the teacher to active status, but does not automatically re-enroll them in their previous classes or groups.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}}},"paths":{"/v2p0/teachers/{id}/unarchive":{"put":{"summary":"Unarchive a Teacher","operationId":"unarchiveTeacher","tags":["Teachers"],"description":"Reverses the archive operation on a teacher record by ID. This restores the teacher to active status, but does not automatically re-enroll them in their previous classes or groups.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for the teacher to unarchive.","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"}}}}}}
```

## Get teacher Classes Memberships

> Retrieves all class memberships for a given teacher. Each class includes the teacher's Show on Reports status for that membership. Results can be filtered by archived status and Show on Reports flag.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}/classes":{"get":{"summary":"Get teacher Classes Memberships","operationId":"listTeacherClassesMemberships","tags":["Teachers"],"description":"Retrieves all class memberships for a given teacher. Each class includes the teacher's Show on Reports status for that membership. Results can be filtered by archived status and Show on Reports flag.\n","parameters":[{"name":"id","in":"path","schema":{"type":"integer"},"required":true,"description":"Unique identifier for the teacher."},{"name":"show_on_reports","in":"query","schema":{"type":"boolean","default":true},"description":"Filter by whether the teacher is shown on reports for each class. Defaults to true."},{"name":"archived","in":"query","schema":{"type":"boolean","default":false},"description":"Filter by class archived status. Defaults to false (active classes only)."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"classes":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the class."},"uniq_id":{"type":"string","nullable":true,"description":"A school-defined unique identifier for the class, used for external system integrations. May be null."},"name":{"type":"string","description":"Display name of the class."},"archived":{"type":"boolean","description":"Whether the class has been archived."},"start_term_id":{"type":"integer","nullable":true,"description":"ID of the academic term when this class starts. Null if no term is assigned."},"end_term_id":{"type":"integer","nullable":true,"description":"ID of the academic term when this class ends. Null if no term is assigned."},"show_on_reports":{"type":"boolean","description":"Whether this teacher appears on report cards for this class."}}}]}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}
```

## Get teacher Groups Memberships

> Retrieves all group memberships for a given teacher. Groups are non-academic collections of students (e.g., advisory groups, extracurricular clubs). The response indicates whether the teacher is a group advisor and whether they are the primary advisor.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}/groups":{"get":{"summary":"Get teacher Groups Memberships","operationId":"listTeacherGroupsMemberships","tags":["Teachers"],"description":"Retrieves all group memberships for a given teacher. Groups are non-academic collections of students (e.g., advisory groups, extracurricular clubs). The response indicates whether the teacher is a group advisor and whether they are the primary advisor.\n","parameters":[{"name":"id","in":"path","schema":{"type":"integer"},"required":true,"description":"Unique identifier for the teacher."},{"name":"archived","in":"query","schema":{"type":"boolean","default":false},"description":"Filter by group archived status. Defaults to false (active groups only)."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the group."},"name":{"type":"string","description":"Display name of the group."},"archived":{"type":"boolean","description":"Whether the group has been archived."},"group_advisor":{"type":"boolean","description":"Whether this teacher is an advisor for the group."},"primary_group_advisor":{"type":"boolean","description":"Whether this teacher is the primary advisor. Each group can have one primary advisor."}}}]}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}
```

## Send Welcome Email to a Teacher

> This endpoint enqueues a welcome email (with password-set link) for an existing teacher.\
> No request body is required. There is no restriction based on whether the teacher has\
> previously logged in. The endpoint is not idempotent — calling it twice enqueues two emails.<br>

```json
{"openapi":"3.0.3","info":{"title":"API V2P0","version":"v2p0"},"tags":[{"name":"Teachers","description":"Teachers are users who use ManageBac to delivery curriculum"}],"servers":[{"url":"https://api.managebac.com","description":"CA ManageBac API server."},{"url":"https://api.managebac.cn","description":"CN ManageBac API server."},{"url":"https://api.us.managebac.com","description":"US1 ManageBac API server."},{"url":"https://api.managebac.us","description":"US2 ManageBac API server."},{"url":"https://api.managebactest.com","description":"UAT ManageBac API server."},{"url":"https://{Host}","variables":{"Host":{"default":"api.devel.managebac.com","enum":["api.devel.managebac.com","api-faria.devel.managebac.com","api.managebac.dev"]}}}],"security":[{"bearerAuth":[]},{"authTokenQuery":[]},{"authTokenHeader":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"OAuth 2.0 Bearer token obtained via client credentials grant. Pass the token in the Authorization header as `Bearer <token>`."},"authTokenQuery":{"type":"apiKey","name":"auth_token","in":"query","description":"Your V2 API authentication token may be passed in the parameters. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."},"authTokenHeader":{"type":"apiKey","name":"auth-token","in":"header","description":"Your V2 API authentication token may be passed in the header. To protect your key, use [environment variables](https://cloud.google.com/docs/authentication/api-keys#securing_an_api_key)."}},"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."}}},"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."}}}}},"paths":{"/v2p0/teachers/{id}/welcome_email":{"post":{"summary":"Send Welcome Email to a Teacher","operationId":"sendTeacherWelcomeEmail","tags":["Teachers"],"description":"This endpoint enqueues a welcome email (with password-set link) for an existing teacher.\nNo request body is required. There is no restriction based on whether the teacher has\npreviously logged in. The endpoint is not idempotent — calling it twice enqueues two emails.\n","parameters":[{"name":"id","in":"path","description":"Unique identifier for a teacher.","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}
```
