使用课堂笔记本

适用于:Office 365 上的企业笔记本

世界各地的中小学校、学院和大学都在使用课堂笔记本,帮助促进生产力、参与和协作。 您可以在每个课堂、项目,学期和作业使用课堂笔记本。

你可以使用 classNotebooks 端点,执行课堂笔记本的常见任务,例如,创建课堂笔记本和添加或移除学生。

备注

OneNote API 提供classNotebooks端点,用于课堂笔记本特定的操作。

构建请求 URI

  1. 若要构建请求 URI,请从平台的服务根 URL 开始:

    OneDrive for Business 上的笔记本

    https://www.onenote.com/api/v1.0/me/notes/

    https://www.onenote.com/api/v1.0/users/{id}/notes/

    SharePoint 网站笔记本

    https://www.onenote.com/api/v1.0/myOrganization/siteCollections/{id}/sites/{id}/notes/

    统一组笔记本

    https://www.onenote.com/api/v1.0/myOrganization/groups/{id}/notes/

  1. 附加 classNotebooks 端点,并根据需要,在后面附加资源路径:

    创建课堂笔记本

    ../classNotebooks[?omkt,sendemail]

    更新课堂笔记本

    ../classNotebooks/{notebook-id}

    获取一个或多个课堂笔记本

    ../classNotebooks

    ../classNotebooks/{notebook-id}

    删除课堂笔记本

    ../classNotebooks/{notebook-id}

    添加学生或教师

    ../classNotebooks/{notebook-id}/students

    ../classNotebooks/{notebook-id}/teachers

    移除学生或教师

    ../classNotebooks/{notebook-id}/students/{student-id}

    ../classNotebooks/{notebook-id}/teachers/{teacher-id}

    插入模块

    ../classNotebooks/{notebook-id}/copySectionsToContentLibrary

您的完整请求URI应当类似如下示例:

https://www.onenote.com/api/v1.0/me/notes/classNotebooks/{id}/teachers/{id}

https://www.onenote.com/api/v1.0/users/{id}/notes/classNotebooks/{id}/students

https://www.onenote.com/api/v1.0/myOrganization/siteCollections/{id}/sites/{id}/notes/classNotebooks

https://www.onenote.com/api/v1.0/myOrganization/groups/{id}/notes/classNotebooks/{id}

https://www.onenote.com/api/v1.0/me/notes/classNotebooks/{id}/copySectionsToContentLibrary

备注

了解有关服务根 URL 的详细信息。

创建课堂笔记本

若要创建课堂笔记本,请向 classNotebooks 端点发送 POST 请求。

POST ../classNotebooks[?omkt,sendemail]

在消息正文中,发送带有课堂笔记本创建参数的 JSON 对象。

{
    "name": "notebook-name",
    "studentSections": [ 
        "section1-name", 
        "section2-name"
    ],
    "teachers": [
        {
            "id": "alias@tenant",
            "principalType": "Person-or-Group"
        }
    ],
    "students": [
        {
            "id": "alias@tenant",
            "principalType": "Person-or-Group" 
        },
        {
            "id": "alias@tenant",
            "principalType": "Person-or-Group"
        },
        {
            "id": "alias@tenant",
            "principalType": "Person-or-Group"
        }
   ], 
   "hasTeacherOnlySectionGroup": true
}
参数 说明
name 笔记本的名称。
studentSections 包含一个或多个模块名称的数组。 这些模块在每个学生的模块组中创建。
teachers 包含一个或多个主体对象的数组。
students 包含一个或多个主体对象的数组。 每个学生都将创建一个模块组。
hasTeacherOnlySectionGroup true 创建仅限教师模块组,仅对教师可见。
omkt 指定笔记本语言的 URL 查询参数。 默认值为 en-us。 示例: ?omkt=es-es
sendemail URL 查询参数,用于指定创建笔记本时是否向分配笔记本的教师和学生发送电子邮件通知。 默认值为 false

教师和学生由主体对象表示,包含以下属性:

参数 说明
id Office 365 用户主体名称。

参阅 Azure AD Graph API 文档,了解关于用户和分组的更多信息。
principalType PersonGroup

支持的语言

你可以使用 omkt={language-code} URL 查询参数,创建特定语言的课堂笔记本。 例如:

POST ../classNotebooks?omkt=de-de

支持以下语言代码。 默认为en-us

代码 Language
bg-bg 保加利亚语(保加利亚)
cs-cz 捷克语 (捷克共和国)
da-dk 丹麦语 (丹麦)
de-de 德语(德国)
el-gr 希腊语(希腊)
en-us 英语(美国)
es-es 西班牙语(西班牙)
et-ee 爱沙尼亚语(爱沙尼亚)
fi-fi 芬兰语(芬兰)
fr-fr 法语(法国)
hi-in 印地语(印度)
hr-hr 克罗地亚语(克罗地亚)
hu-hu 匈牙利语(匈牙利)
id-id 印尼语(印度尼西亚)
it-it 意大利语 (意大利)
ja-jp 日本语(日本)
kk-kz 哈萨克语(哈萨克斯坦)
ko-kr 朝鲜语(韩国)
lt-lt 立陶宛语(立陶宛)
lv-lv 拉脱维亚语(拉脱维亚)
ms-my 马来语 (东南亚)
nb-no 挪威语 (挪威)
nl-nl 荷兰语(荷兰)
pl-pl 波兰语 (波兰)
pt-br 葡萄牙语 (巴西)
pt pt 葡萄牙语(葡萄牙)
ro-ro 罗马尼亚语(罗马尼亚)
ru-ru 俄语(俄罗斯)
sk-sk 斯洛伐克语(斯洛伐克共和国)
sl-si 斯洛文尼亚语(斯洛文尼亚)
sr-Latn-RS 塞尔维亚语 (塞尔维亚和黑山共和国)
sv-se 瑞典语(瑞典)
th-th 泰语(泰国)
tr-tr 土耳其语(土耳其)
uk-ua 乌克兰语(乌克兰)
vi-vn 越南语 (越南)
zh-cn 简体中文(中国)
zh-tw 繁體中文 (台灣)

示例

以下请求将创建一个名为* Math 101 *的课堂笔记本。

POST ../v1.0/users/{teacher-id}/notes/classNotebooks?sendemail=true
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

{
    "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
}

这将创建一个包含四个学生模块组的课堂笔记本,每个组包含讲义、课堂笔记、家庭作业和测验模块。 为每个学生创建的模块组只能由学生和教师访问。 还会创建一个仅限教师的模块组,仅对教师可见。 查询参数指定在创建笔记本时向教师和学生发送电子邮件通知。sendemail=true

请求和响应信息

以下信息适用于POST /classNotebooks请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

Content-Type 标头 application/json
接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 201 HTTP 状态代码。
响应正文 JSON 格式的新笔记本 OData 表示。

除了常规笔记本属性,课堂笔记本也具有以下属性:
  • studentSections。 笔记本中的学生模块。
  • teachers。 可以访问笔记本的教师。
  • students。 可以访问笔记本的学生。
  • hasTeacherOnlySectionGrouptrue 如果笔记本包含仅限教师模块组,否则,false
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

更新课堂笔记本

若要更新课堂笔记本,请向 classNotebooks/{notebook-id} 端点发送 PATCH 请求。** **

备注

目前,只有 hasTeacherOnlySectionGroup 属性可以在 PATCH 请求中更新。

PATCH ../classNotebooks/{notebook-id}

在消息正文中,发送带有更新参数的 JSON 对象。

{
    "hasTeacherOnlySectionGroup": true
}
参数 说明
hasTeacherOnlySectionGroup true 添加只有教师可见的仅限教师模块组。 false UNTRANSLATED_CONTENT_START is not supported. UNTRANSLATED_CONTENT_END

查看这些方法,了解更改课堂笔记本的其他方式:添加学生或教师移除学生或教师插入模块

示例

以下请求在指定的课堂笔记本添加仅限教师模块组。

PATCH ../v1.0/users/{teacher-id}/notes/classNotebooks/{notebook-id}
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

{
    "hasTeacherOnlySectionGroup": true
}

新的仅限教师模块组仅对教师可见。

请求和响应信息

以下信息适用于PATCH ../classNotebooks/{notebook-id}请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

Content-Type 标头 application/json
接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 204 HTTP 状态代码。
错误 如果请求失败,则 API 在响应正文中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

获取课堂笔记本

若要获取一个或多个课堂笔记本,向 classNotebooks 端点发送 GET 请求。

获取一个或多个课堂笔记本

GET ../classNotebooks[?filter,orderby,select,top,skip,expand,count]

获取特定的课堂笔记本

GET ../classNotebooks/{notebook-id}[?select,expand]

笔记本可以扩展 teachersstudents 属性。 默认排序顺序是 name asc

课堂笔记本也返回GET /notebooks请求,但结果将不包含任何课堂笔记本特定的属性。

示例

以下请求获取自 2016 年 1 月 1 日起创建的课堂笔记本。

GET ../v1.0/users/{teacher-id}/notes/classNotebooks?filter=createdTime%20ge%202016-01-01 
Authorization: Bearer {token}
Accept: application/json

若要了解有关获取笔记本的更多信息,包括支持的查询字符串选项和示例,请参阅 获取 OneNote 内容和结构

请求和响应信息

以下信息适用于GET /classNotebooks请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

接受标头 application/json
权限范围 Notes.Read, Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 200 HTTP 状态代码。
响应正文 JSON 格式的课堂笔记本 OData 表示。

除了常规笔记本属性,课堂笔记本也具有以下属性:
  • studentSections。 笔记本中的学生模块。
  • teachers。 可以访问笔记本的教师。
  • 学生。 可以访问笔记本的学生。
  • hasTeacherOnlySectionGrouptrue 如果笔记本包含仅限教师模块组,否则,false
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

删除课堂笔记本

若要删除课堂笔记本,请向_classNotebooks/{notebook-id}_ 端点发送 DELETE 请求。** **

DELETE ../classNotebooks/{notebook-id}

示例

以下请求删除指定的课堂笔记本。

DELETE ../v1.0/users/{teacher-id}/notes/classNotebooks/{notebook-id} 
Authorization: Bearer {token}
Accept: application/json

请求和响应信息

以下信息适用于DELETE ../classNotebooks/{notebook-id}请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 204 HTTP 状态代码。
错误 如果请求失败,则 API 在响应正文中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

添加学生和教师

添加教师和学生,允许他们访问课堂笔记本。 添加学生还将创建学生模块组。 此模块组仅可由学生和教师访问,且包含为笔记本定义的学生模块。

若要将学生或教师添加到课堂笔记本中,请向相应的端点发送 POST 请求。

添加学生

POST ../classNotebooks/{notebook-id}/students

添加教师

POST ../classNotebooks/{notebook-id}/teachers

在消息正文中发送一个 JSON 主体对象。 可以根据要求添加学生或教师。

{
    "id": "alias@tenant",
    "principalType": "Person-or-Group"
}

教师和学生由主体对象表示,包含以下属性:

参数 说明
id Office 365 用户主体名称。 参阅 Azure AD Graph API 文档,了解关于用户和分组的更多信息。
principalType PersonGroup

示例

以下请求在指定的课堂笔记本添加教师。

POST ../v1.0/users/{teacher-id}/notes/classNotebooks/{notebook-id}/teachers 
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

{
    "id": "teacher2@contoso.com",
    "principalType": "Person"
}

请求和响应信息

以下信息适用于POST /studentsPOST /teachers 请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

Content-Type 标头 application/json
接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 201 HTTP 状态代码。
响应正文 添加的学生或教师。
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

移除学生和教师

从课堂笔记本移除学生和教师,将撤消他们对笔记本的访问权限,但不会删除任何内容。

若要从课堂笔记本移除学生或教师,请向相应的端点发送 DELETE 请求。

删除学生

DELETE ../classNotebooks/{notebook-id}/students/{student-id}

移除教师

DELETE ../classNotebooks/{notebook-id}/teachers/{teacher-id}

可以根据要求移除学生或教师。

示例

以下请求将从指定的课堂笔记本移除指定的学生。

DELETE ../v1.0/users/{teacher-id}/notes/classNotebooks/{notebook-id}/students/{student-id} 
Authorization: Bearer {token}
Accept: application/json

请求和响应信息

以下信息适用于DELETE /studentsDELETE /teachers 请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 204 HTTP 状态代码。
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

插入模块

使用copySectionsToContentLibrary,从 Office 365 笔记本复制特定模块,并将其插入课堂笔记本的内容库中。 内容库是课堂笔记本中的一个模块组,教师具有读/写权限,学生具有读取权限。

若要将模块插入课堂笔记本中,请向copySectionsToContentLibrary目标课堂笔记本的端点发送 POST 请求。 例如:

POST ../classNotebooks/{notebook-id}/copySectionsToContentLibrary

在消息正文中,发送带有sectionIds参数的 JSON 对象。

{
    "sectionIds": [
        "section1-id", 
        "section2-id",
        ...
    ]
}
参数 说明
sectionIds 包含要插入课堂笔记本的模块 ID 的数组。

用户必须有权访问目标模块和笔记本(拥有或共享)。 所有目标必须在同一个租户中。

示例

以下请求将两个模块插入到指定课堂笔记本的内容库中。

POST ../v1.0/me/notes/classNotebooks/{notebook-id}/copySectionsToContentLibrary
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

{
    "sectionIds": [
        "1-85ba33b1-4959-4102-8dcd-d98e4e56e56f", 
        "1-8ba42j81-4959-4102-8dcd-d98e4e94s62ef"
    ]
}

请求和响应信息

以下信息适用于POST /copySectionsToContentLibrary请求。

请求数据 说明
协议 所有请求均使用 SSL/TLS HTTPS 协议。
授权标头

Bearer {token},其中 {token} 是有效的 OAuth 2.0 访问令牌,用于您注册的应用。

如果丢失或无效,请求将失败并显示 401 状态代码。 请参阅使用 Azure AD(企业应用程序)进行身份验证

Content-Type 标头 application/json
接受标头 application/json
权限范围 Notes.ReadWrite.CreatedByApp, Notes.ReadWrite, 或 Notes.ReadWrite.All


响应数据 说明
成功代码 201 HTTP 状态代码。
错误 如果创建请求失败,则 API 在响应正文中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

分发给学生的页面

若要分发 OneNote 页面给学生,请向 classNotebooks 端点发送一个 POST 请求。 以下操作仅对统一组笔记本可用。

POST ../groups/{id}/notes/classnotebooks/{id}/pages('{id}')/Microsoft.OneNote.Api.DistributePageToStudent

在消息正文中,发送一个带 DistributePageToStudent 参数的 JSON 对象。

{
"studentUserPrincipalName": "alias@tenant",
"lockStartDate": "DateTimeOffset",
"targetSectionName": "section-name",
"assignmentId":"assignment-id",
"ignoreIfStudentPageExists":true
}
参数 说明
studentUserPrincipalName Office 365 用户主体名称。 若要了解有关用户的详细信息,请参阅 Azure AD 图形 API 文档
lockStartDate 要在分布式页上设置的 DateTimeOffset 类型的锁定开始日期。 达到锁定开始日期时,学生页面变成只读。 有关页面锁定的详细信息,请参阅在课堂笔记本中使用页面锁定
targetSectionName 页面将复制到学生的部分。 如果学生的部分不存在,将创建它。
assignmentId (可选)要在分布式页面中设置的作业 id。 如果设置了该属性,则应为一个作业 id 发布一页,并且 lockStartDate 将是作业截止日期。
ignoreIfStudentPageExists true 以在另一个页面具有相同的作业 id 的情况下,忽略复制页面。


响应数据 说明
成功代码 200 HTTP 状态代码。
响应正文 JSON 格式的结果的 OData 表示。 返回的值是被复制的学生页面 id。
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

示例

POST https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-b60795e6-0345-4893-a878-ce365d246651/pages('1-b168ad794f2f469b8de2696dd737d2b3!69-d39b2f49-a8fc-4c92-894b-32a4c27595bb')/Microsoft.OneNote.Api.DistributePageToStudent
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
{
"studentUserPrincipalName": "student1@contoso.net",
"lockStartDate": "2018-12-15T23:17:16Z",
"targetSectionName": "quizes",
"assignmentId":"4cb4f3d3-d7fd-463b-beb5-526dafb7241d",
"ignoreIfStudentPageExists":true
}

更新页面锁定开始日期

若要更新 OneNote 页面的锁定开始日期,发送 PATCH 请求到页面端点。

有关页面锁定的详细信息,请参阅在课堂笔记本中使用页面锁定

PATCH ../pages/{page-id}

在邮件正文中,发送具有以下请求数据的 JSON 对象。

请求数据 说明
blockEditsInClientStartDate 当页面将被锁定以进行编辑时的 DateTimeOffset 结构。 若要清除锁定开始日期,请将属性设置为 null;因此,它将从页面丢弃。


响应数据 说明
成功代码 响应数据
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

示例

https://www..onenote.com/api/v1.0/me/notes/pages/1-126bc4155684422c827e1682b1e5f2ed!62-3a2cebc9-3121-4162-b84a-07e61671e653
 
{
“blockEditsInClientStartDate”:"2018-02-25T15:17:16.0938811-08:00" 
}

获取页面锁定开始日期

若要获取页面设置的锁定开始日期,发送 GET 请求到 api 页面端点以获取带查询参数的 page(metadata) blockEditsInClientStartDate=true

GET ../pages/{page-id}?blockEditsInClientStartDate=true

有关如何查询页面的详细信息,请参阅 GET 请求的资源路径

有关页面锁定的详细信息,请参阅在课堂笔记本中使用页面锁定

响应数据 说明
成功代码 200 HTTP 状态代码。
响应正文 JSON 格式的页面的 OData 表示。 它包括 blockEditsInClientStartDate 属性的值。
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

示例

GET https://www.onenote.com/api/v1.0/me/notes/pages/1-126bc4155684422c827e1682b1e5f2ed!62-3a2cebc9-3121-4162-b84a-07e61671e653?blockEditsInClientStartDate=true
 
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

响应

{
…
“blockEditsInClientStartDate”:”1985-02-25T23:17:16Z”
…
}

更新成员资格

UpdateMembership 同步具有其成员身份的统一组的默认课堂笔记本。

统一组所有者将作为教师添加到课堂笔记本,同时成员将作为学生添加到课堂笔记本。

若要将默认课堂笔记本成员身份与统一组同步,请向 classNotebooks 端点发送 POST 请求。 以下操作仅对统一组默认笔记本可用。

POST ../classnotebooks/Microsoft.OneNote.Api.UpdateMembership
响应数据 说明
成功代码 响应数据
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

示例

以下示例将同步统一组 id 的默认课堂笔记本。

请求

POST https://www.onenote.com/api/v1.0/myOrganization/groups/1d13f814-83e5-4c11-8294-53bf40defd91/notes/classnotebooks/ Microsoft.OneNote.Api.UpdateMembership
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json

修复课堂笔记本

若要修复课堂笔记本,请向 classNotebooks 端点发送 POST 请求。

POST ../classnotebooks/{notebook-id}/Microsoft.OneNote.Api.RepairNotebook

Odata 操作将从课堂笔记本元数据读取学生和教师列表。 然后,它将重新应用学生的权限到部分组、_内容库和 _协作空间。 它还可以重新应用教师的权限到学生、_内容库、_协作空间和 _仅教师部分组。

对于统一组,它不会刷新组成员身份;为此,改用 UpdateMembership 操作。

POST ../classnotebooks/{notebook-id}/Microsoft.OneNote.Api.RepairNotebook
Authorization: Bearer {token}
Content-Type: application/json
Accept: application/json
响应数据 说明
成功代码 响应数据
错误 如果请求失败,API 将在响应正文的 @api.diagnostics 对象中返回错误
X-CorrelationId 标头 唯一标识该请求的 GUID。 在与 Microsoft 支持部门协作来解决问题时,可以使用此值和日期标头值。

示例

POST https://www.onenote.com/api/v1.0/me/notes/classnotebooks/1-b60795e6-0345-4893-a878-ce365d246651/Microsoft.OneNote.Api.RepairNotebook

构造 OneNote 服务根 URL

OneNote 服务根 URL 为 OneNote API 的所有调用使用以下格式。

https://www.onenote.com/api/{version}/{location}/notes/

URL 中的 version 部分表示要使用的 OneNote API 的版本。

  • 用于稳定的生产代码。v1.0

  • 用于试用正在开发的功能。beta Beta 版中的特性和功能可能会有所更改,因此,不应将其用于生产代码。

URL 中的 location 部分表示要访问的笔记本的位置:

  • OneDrive for Business 上的笔记本

    • 对于当前用户拥有的 OneNote 内容,使用 me

    • 为指定用户已与当前用户共享的 OneNote 内容(此 URL 中)使用 users/{id}。 使用 Azure AD Graph API 可获取用户 ID。

  • SharePoint 网站笔记本

    • Team 网站和其他 SharePoint 网站可以在其文档库中包含 OneNote 笔记本。

    • 对于当前用户登录的租户网站上的 OneNote 内容,请使用 myOrganization/siteCollections/{id}/sites/{id}。 仅支持当前租户,使用 myOrganization 关键字访问。 了解如何获得网站 ID

  • 统一组笔记本

    • 统一组 (也称为 Office 365 组)是连接的 Office 365 体验的一部分。 组成员可以共享笔记本、文件和电子邮件。

    • 对当前用户所属指定组中的 OneNote 内容使用 myOrganization/groups/{id}。 统一组是唯一支持的组类型。 使用 Azure AD Graph API 可获取组 ID。

使用 FromUrl 方法获取网站集和网站 ID

可以使用 FromUrl 方法获取指定绝对网站 URL 的网站集和网站 ID。 应该仅在需要时进行此调用,然后存储这些值以供将来使用。

站点 URL 的格式取决于配置,例如 https://domain.sharepoint.com/site-ahttps://domain.com/sites/site-a

示例请求

GET https://www.onenote.com/api/v1.0/myOrganization/siteCollections/FromUrl(url='{full-path-to-SharePoint-site}')

Authorization: Bearer {token}

Accept: application/json

响应示例

{"@odata.context":"https://www.onenote.com/api/v1.0/$metadata#Microsoft.OneNote.Api.SiteMetadata", "siteCollectionId":"09d1a587-a84b-4264-3d15-669429be8cc5", "siteId":"d9e4d5c8-683f-4363-89ae-18c4e3da91e9"}

使用 FromUrl 并使用 SharePoint 网站的笔记本的要求:

  • 只能在具有默认文档库的站点上创建 OneNote 笔记本、节组、节和页面。 (某些网站模板不会创建默认文档库。)但是,GET 请求会从网站上的所有文档库返回 OneNote 内容。

  • OneNote 服务根 URL 是不可变的,这意味着不能使用 SharePoint REST API 网站路径然后向其添加 notes 端点。

  • 代表您正调用的用户必须是该站点的成员。

  • FromUrl 仅适用于已编制索引的站点。 为新站点建立索引可能需要几个小时。

另请参阅