Work with asynchronous class notebooks
Applies to: Enterprise notebooks on Office 365
Schools, colleges, and universities worldwide use OneNote class notebooks to help promote productivity, engagement, and collaboration. You can use class notebooks for every class, project, term, and assignment.
The classNotebooks endpoint is used to perform common tasks for class notebooks, such as creating class notebooks, as well as adding or removing students in asynchronous calls.
Note
The OneNote API provides the classNotebooks endpoint for operations that are specific to class notebooks.
Asynchronous API
To make asynchronous calls to the classNotebooks endpoint, send a request with a header Prefer: respond-async
.
Response
Response data | Description |
---|---|
Success code | A 202 status HTTP status code. |
Location header | The URL to poll for the status of the operation. Polling the operation endpoint returns an OperationModel object that contains the status of the operation and other information. |
X-CorrelationId header | A GUID that uniquely identifies the request. You can use this value along with the value of the Date header when working with Microsoft support to troubleshoot issues. |
Operation model
Operation model | Description |
---|---|
Id | The ID of the operation. |
Status | The status can be the following: completed, running, not started, or failed. - If completed, the resourceLocation property contains the resource endpoint for the new classNotebook. - If running, the createdDateTime and lastActionDateTime show when the request was created and when it ran last. - If failed, the error and @api.diagnostics properties provide error information. |
createdDateTime | Shows when the request was created. |
lastActionDateTime | Shows when the request was created and when it ran last. |
resourceLocation | The endpoint for the resource. |
resourceId | The ID of the resource. |
Construct the request URI
To construct the request URI, see Construct the request URI in the topic Work with class notebooks.
Create class notebooks
To create a class notebook in an asynchronous call, send a POST request to the classNotebooks endpoint with the header Prefer: respond-async
.
POST ../classNotebooks
For the message body and the JSON object with the class notebook creation parameters, see Create class notebooks.
Example
The following request creates a class notebook named Math 101.
Request
POST https://www.onenote.com/v1.0/me/notes/classNotebooks?sendemail=true
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
Prefer: respond-async
{
"name": "Math 101",
"studentSections": [
"Handouts",
"Class Notes",
"Homework",
"Quizzes"
],
"teachers": [
{
"id": "teacher1@contoso.com",
"principalType": "Person"
}
],
"students": [
{
"id": "student1@contoso.com",
"principalType": "Person"
},
{
"id": "student2@contoso.com",
"principalType": "Person"
},
{
"id": "student3@contoso.com",
"principalType": "Person"
},
{
"id": "student4@contoso.com",
"principalType": "Person"
}
],
"hasTeacherOnlySectionGroup": true
}
Response
HTTP/1.1 202 Accepted
Location: https://www.onenote.com/api/v1.0/me/notes/operations/classnotebook-ee91aafb-5685-4357-9465-77d611ef064c
Poll the operation Location endpoint to get the status of the create class operation.
Request
GET https://www.onenote.com/api/v1.0/me/notes/operations/classnotebook-ee91aafb-5685-4357-9465-77d611ef064c
Response
{
"@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/operations/$entity",
"id":"classnotebook-ee91aafb-5685-4357-9465-77d611ef064c",
"status":"completed",
"createdDateTime":"2018-06-01T23:44:29.349Z",
"lastActionDateTime":"2018-06-01T23:44:29.349Z",
"resourceLocation":"https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-cb6e0bf6-1185-4daa-80a1-ded42ca1708e",
"resourceId":"1-cb6e0bf6-1185-4daa-80a1-ded42ca1708e"
}
Add students and teachers
Adding students and teachers gives them access to the class notebook. Adding a student also creates a student section group. This section group is only accessible by the student and the teacher, and contains the student sections that are defined for the notebook.
To add a student or teacher to a class notebook in an asynchronous call, send a POST request to the appropriate endpoint with a header Prefer: respond-async
.
Add a student
POST ../classNotebooks/{notebook-id}/students
Add a teacher
POST ../classNotebooks/{notebook-id}/teachers
For the message body and the JSON object with the class notebook creation parameters, see Add students or teachers.
Example
The following request adds a teacher to the specified class notebook.
Request
POST https://www.onenote/api/v1.0/me/notes/classNotebooks/ 1-b68a21fd-cdb3-41f1-a566-0772872a8a0c//teachers
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
Prefer: respond-async
{
"id": "teacher2@contoso.com",
"principalType": "Person"
}
Response
HTTP/1.1 202 Accepted
Location: https://www.onenote.com/api/v1.0/me/notes/operations/classnotebookmember-28d4f01e-32f1-4e82-866e-025b1f2ca2b9
Poll the operation Location endpoint to get the status of the add teacher operation.
Request
GET https://www.onenote.com/api/v1.0/me/notes/operations/classnotebookmember-28d4f01e-32f1-4e82-866e-025b1f2ca2b9
Response
{
"@odata.context":"https://www.onenote/api/v1.0/$metadata#me/notes/operations/$entity",
"id":"classnotebookmember-28d4f01e-32f1-4e82-866e-025b1f2ca2b9",
"status":"completed",
"createdDateTime":"2018-06-12T22:23:47.548Z",
"lastActionDateTime":"2018-06-12T22:23:47.548Z",
"resourceLocation":"https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-b68a21fd-cdb3-41f1-a566-0772872a8a0c/teachers/teacher2@contoso.net",
"resourceId":"teacher2@contoso.net"
}
Remove students and teachers
Removing students and teachers from a class notebook revokes their access to the notebook, but doesn't delete any content. To remove a student or teacher from a class notebook in an asynchronous call, send a DELETE request to the appropriate endpoint with the header Prefer: respond-async
.
Remove a student
DELETE ../classNotebooks/{notebook-id}/students/{student-id}
Remove a teacher
DELETE ../classNotebooks/{notebook-id}/teachers/{teacher-id}
You can remove one student or one teacher per request.
Example
The following request removes the specified teacher from the specified class notebook.
Request
DELETE https://www.onenote.com/api/v1.0/me /notes/classNotebooks/1-b68a21fd-cdb3-41f1-a566-0772872a8a0c/teachers/teacher2@contoso.net
Authorization: Bearer {token}
Accept: application/json
Prefer: respond-async
Response
HTTP/1.1 202 Accepted
Location: https://www.onenotecom/api/v1.0/me/notes/operations/classnotebookmember-e364e1fe-11a1-4551-8dcc-a143a8c0d78a
Poll the operation Location endpoint to get the status of the delete teacher operation.
Request
GET https://www.onenote.com/api/v1.0/me/notes/operations/classnotebookmember-e364e1fe-11a1-4551-8dcc-a143a8c0d78a
Response
{
"@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/operations/$entity",
"id":"classnotebookmember-e364e1fe-11a1-4551-8dcc-a143a8c0d78a",
"status":"completed",
"createdDateTime":"2018-06-12T22:40:06.708Z",
"lastActionDateTime":"2018-06-12T22:40:06.708Z",
"resourceLocation":"https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-b68a21fd-cdb3-41f1-a566-0772872a8a0c/teachers/teacher2@contoso.net",
"resourceId":"teacher2@contoso.net"
}
Transfer notebook
To transfer a notebook from one teacher to another teacher in an asynchronous call, send a POST request to the classNotebooks endpoint.
POST ../classnotebooks/{notebook-id}/Microsoft.OneNote.Api.classnotebooktransfer
This API requires tenant administrative privileges.
In the message body, send the JSON object with transfer class notebook parameters.
{
"ClassNotebookTransfer" : {
"sourceTeacher": {
"principalType":"Person",
"id":"alias@tenant"
},
"destinationTeacher" : {
"principalType":"Person",
"id":"alias@tenant"
},
"destinationNotebookName": "notebook-name"
}
}
Parameter | Description |
---|---|
destinationNotebookName | The name of the notebook at the destination. |
destinationTeacher | A principal object. |
sourceTeacher | A principal object. |
The source and destination Teacher are represented by a principal object that contains the following parameters.
Parameter | Description |
---|---|
id | The Office 365 user principal name. To learn more about users and groups, see the Azure AD Graph API documentation. |
principalType | Person |
Example
The following example transfers a class notebook named Math 101.
Request
POST https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-9a43afaa-7dc9-4405-b661-b735ebf722a0/Microsoft.OneNote.Api.classnotebooktransfer
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
Prefer: respond-async
{
"ClassNotebookTransfer" : {
"sourceTeacher": {
"principalType":"Person",
"id":"teacher1@contososd.org"
},
"destinationTeacher" : {
"principalType":"Person",
"id":"teacher2@contososd.org"
},
"destinationNotebookName": "Math 101"
}
}
Response
HTTP/1.1 202 Accepted
Location: https://www.onenote.com/api/v1.0/me/notes/operations/transfer-9a43afaa-7dc9-4405-b661-b735ebf722a0
Poll the operation Location endpoint to get the status of the transfer notebook.
Request
GET https://www.onenote.com/api/v1.0/me/notes/operations/transfer-9a43afaa-7dc9-4405-b661-b735ebf722a0
Response
{
"@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/operations/$entity",
"id":"transfer9a43afaa-7dc9-4405-b661-b735ebf722a0",
"status":"completed",
"createdDateTime":"0001-01-01T00:00:00Z",
"lastActionDateTime":"0001-01-01T00:00:00Z",
"resourceId":"1-6e0cebcb-b589-4632-8b31-1ffe804652e0"
}
Update membership
To update the membership of a class notebook in an asynchronous call, send a POST request to the classNotebooks endpoint with a header Prefer: respond-async
.
POST
../groups/{groupId}/classnotebooks/Microsoft.OneNote.Api.UpdateMembership
For the message body and the JSON object with the update membership action parameters, see the Update membership section in Work with class notebooks.
Example
The following example syncs the default class notebook of a unified group.
Request
POST https://www.onenote.com/api/v1.0/myOrganization/groups/1d13f814-83e5-4c11-8294-53bf40defd91/notes/classnotebooks/classnotebooks/Microsoft.OneNote.Api.UpdateMembership
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
Prefer: respond-async
Response
HTTP/1.1 202 Accepted
Location: https://www.onenote.com/api/v1.0/me/notes/operations/updatemembership-9a43afaa-7dc9-4405-b661-b735ebf722a0
Poll the operation Location endpoint to get the status of the update membership of a class notebook.
Request
GET https://www.onenote.com/api/v1.0/me/notes/operations/updatemembership-9a43afaa-7dc9-4405-b661-b735ebf722a0
Response
{
"@odata.context":"https://www.onenote.com/api/v1.0/$metadata#me/notes/operations/$entity",
"id":"updateMembership-9a43afaa-7dc9-4405-b661-b735ebf722a0",
"status":"completed",
"createdDateTime":"0001-01-01T00:00:00Z",
"lastActionDateTime":"0001-01-01T00:00:00Z",
"resourceId":"1-6e0cebcb-b589-4632-8b31-1ffe804652e0"
}