SAP 分析云在2025 年第 1 季度的版本更新了文件资源库 API 的新功能,这让开发人员能够以编程方式访问存储在 SAP 分析云的“文件”区域中的所有对象的元数据。
如果您想构建自己的应用程序,且该程序需要访问已存储到 SAP 分析云的文件的元数据,那么这个 API 将会非常有用。它的应用场景包括:
在应用程序中嵌入链接列表,链接到 SAP 分析云内容。从多个 SAP 分析云租户中检索元数据以比较其内容。以外部编目为目的检索元数据。以其他管理/日常维护为目的检索元数据。
该 API 包含两个端点:
/api/v1/filerepository/Resources 是用于查询文件资源的主要 API 端点,此外您还可以使用例如 /api/v1/filerepository/Resources(‘11500004B0B75677E705DD8C9801AC29‘) 中的方式,将resourceId 加入url中以查询特定资源。 /api/v1/filerepository/$metadata :描述由 API 公开的实体的端点。
结果示例
对于 API 返回的每个文件资源,默认的属性集合将会类似于:
{
“resourceId”: “11500004B0B75677E705DD8C9801AC29”,
“objectId”: “STORY:t.1:11500004B0B75677E705DD8C9801AC29”,
“name”: “Name of the file”,
“description”: “Description of the file”,
“resourceType”: “STORY”,
“resourceSubtype”: “”,
“createdTime”: “2025-01-16T22:28:23.538Z”,
“createdBy”: “USER001”,
“modifiedTime”: “2025-01-16T22:28:23.538Z”,
“modifiedBy”: “USER001”,
“folderType”: “PUBLIC”,
“parentFolderResourceId”: “E3C80C0224E39749AB1B831D57408FC6”,
“workspaceId”: null,
“workspaceName”: null,
“openURL”:”/sap/fpa/ui/tenants/b1567d/bo/story/11500004B0B75677E705DD8C9801AC29″,
“isMobile”: true,
“isTranslationEnabled”: false,
“isFeatured”: false
}
身份验证
由于 API 目前仅支持 GET 请求,因此您可以使用 web 浏览器预览其功能。使用常规用户账户登录到 SAP 分析云,然后访问 https://your-SAC-tenant-URL/api/v1/filerepository/Resources 来获取初始结果集。
若要以编程方式使用该 API,你首先需要在 SAP 分析云租户中创建一个 OAuth 客户端。接着,需要使用该 OAuth 客户端从应用程序中对 SAP 分析云进行身份验证。SAP 分析云支持多种 OAuth 身份验证流程。有关详细信息,请参阅 设置验证 | SAP Help Portal。
一种简单的身份验证流程是教程中针对令牌服务的基本验证部分所概述的 OAuth 客户端凭据授权类型。若您想采用这种方法,首先在“系统 > 管理 > 应用程序集成”下添加 OAuth 客户端,将其 API 访问权限设置为“文件资源库读取”,将其授权许可设置为“客户凭据”,如下所示:
文件资源权限
默认情况下,API 会考虑发出 API 请求的用户在 SAP 分析云中的共享权限。因此,如果您登录到 SAP 分析云,然后在浏览器中浏览位于 /api/v1/filerepository/Resources 的 API 端点,查询结果将包括产品 UI 中“文件 > 我的文件”视图下对您的用户账户可用的所有文件,以及您所属工作区中存储的文件。
如果您在 SAP 分析云中拥有管理员账户——更具体地说,如果您被分配了一个对公用文件或个人文件有管理权限的角色——那么您可以选择让 API 返回产品 UI 中“文件 > 系统”视图下 SAP 分析云租户可用的所有文件。如果要通过 API 实现此管理视图,请将附加 URL 参数 applyManagePrivilege=true 附加到 API URL(如 /api/v1/filerepository/Resources?applyManagePrivilege=true)。
注意:如果您的应用程序使用OAuth客户凭据流程进行验证,则此 URL 参数 applyManagePrivilege=true 同样可用于访问 SAP 分析云租户上所有文件的管理视图。
分页和总结果数
API 以每批 50 个资源的方式对结果进行分页。如果查询结果超过 50 个资源,则最初仅返回前 50 个,且结果正文中将包含一个 @odata.nextLink 注解,其中包含用于获取下一批结果的 URL。
如果需要了解查询的总结果数,可以在查询 URL 中添加 $count=true 参数。
以下示例展示了从查询 URL /api/v1/filerepository/Resources?$count=true 返回的部分查询结果,其中包括查询结果的总数(即 177 个)以及指向第二批次结果的链接(即 “Resources?%24count=true&%24skiptoken=50”):
{
“@odata.context”: “$metadata#Resources”,
“@odata.count”: 177,
“@odata.nextLink”: “Resources?%24count=true&%24skiptoken=50”,
“value”: [
// metadata for the first 50 resources will appear here
]
}
要获取第二批次的结果,您需要访问 /api/v1/filerepository/Resources?%24count=true&%24skiptoken=50。该查询的结果将再次包含另一个 @odata.nextLink 注解,提供指向第三批次结果的链接。这一过程会持续进行,直到你获取到最后一批次的结果,此时结果中将不再包含 @odata.nextLink。
选择、排序和筛选
您可以使用 OData 的 $select、$orderby 和 $filter 查询选项来优化 API 返回的结果。这些查询选项可以与 API 返回的每个资源的属性(例如 resourceId、objectId、name、description、resourceType、resourceSubtype、createdTime、createdBy 等)结合使用。
使用 $select 减少 API 返回的属性数量,从而减小响应数据的负载。例如,Resources?$select=resourceId,name,openURL 仅返回每个文件资源的 resourceId、name 和 openURL 属性。
使用 $orderby 对结果进行排序。例如:
Resources?$orderby=name%20asc 按名称升序排序。 Resources?$orderby=modifiedTime%20desc 按修改时间降序排序。
使用 $filter 将查询结果限制为符合筛选条件的文件。例如:
Resources?$filter=resourceType eq ‘FOLDER’ 仅返回文件夹资源。 Resources?$filter=resourceType eq ‘STORY’ and resourceSubtype eq ” 仅返回 resourceSubtype 为空的故事。 Resources?$filter=resourceType eq ‘STORY’ and resourceSubtype eq ‘INSIGHT’ 仅返回 Data Analyzer Insights。 Resources?$filter=modifiedTime gt 2024-07-31T12:29:52Z 仅返回特定时间戳后修改的文件。注意时间戳值周围不需要引号。
以下是有效的筛选比较运算符:
eq:等于 ne:不等于 gt:大于 ge:大于或等于 lt:小于 le:小于或等于 in:是指定列表(如 ‘Member1’, ‘Member2’)中的成员
您可以结合筛选和排序表达式进一步优化 API 查询结果,例如:Resources?$filter=resourceType eq ‘FOLDER’ and modifiedTime gt 2024-07-31T12:29:52Z&$orderby=modifiedTime desc
导航属性的扩展
通过使用 OData 的 $expand 查询选项,您可以获取每个文件资源的更多元数据。
例如,可以扩展 ancestorFolders 以查看每个返回资源所在的上级文件夹集合:Resources?$expand=ancestorFolders
或者扩展 dependencyObjects 以查看每个返回资源所依赖的子文件存储库资源集合:Resources?$expand=dependencyObjects
您还可以将 $expand 查询选项与 OData 的 “any” 运算符结合使用,以遍历 dependencyObjects 或 ancestorFolders 集合,执行以下操作:
根据 resourceId 检索依赖于特定对象的所有对象:Resources?$expand=dependencyObjects&$filter=dependencyObjects/any(d:d/dependencyResourceId eq ‘C41qg8uuay285i6wfudm5kga9s’) 检索具有匹配特定名称的祖先文件夹的所有对象:Resources?$expand=ancestorFolders&$filter=ancestorFolders/any(a:a/name eq ‘SAP_FI_FPA_S4_Financial_Planning’)
最后,您可以一次性扩展所有可用的导航属性,以从 API 获取所有可能的元数据:Resources?$expand=ancestorFolders,dependencyObjects,extendedProperties,extraProperty,usage,resourceEffectivePermissions
更多信息
有关 File Repository API 的更多信息,请参阅 SAP Analytics Cloud REST API 指南中的文档:https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/14cac91febef464dbb1efce20e3f1613/132338a059c741209c910
原文链接:SAP Analytics Cloud File Repository API – SAP Community
原作者:paul_brownsey
SAP 分析云在2025 年第 1 季度的版本更新了文件资源库 API 的新功能,这让开发人员能够以编程方式访问存储在 SAP 分析云的“文件”区域中的所有对象的元数据。如果您想构建自己的应用程序,且该程序需要访问已存储到 SAP 分析云的文件的元数据,那么这个 API 将会非常有用。它的应用场景包括:在应用程序中嵌入链接列表,链接到 SAP 分析云内容。从多个 SAP 分析云租户中检索元数据以比较其内容。以外部编目为目的检索元数据。以其他管理/日常维护为目的检索元数据。该 API 包含两个端点: /api/v1/filerepository/Resources 是用于查询文件资源的主要 API 端点,此外您还可以使用例如 /api/v1/filerepository/Resources(‘11500004B0B75677E705DD8C9801AC29‘) 中的方式,将resourceId 加入url中以查询特定资源。 /api/v1/filerepository/$metadata :描述由 API 公开的实体的端点。 结果示例 对于 API 返回的每个文件资源,默认的属性集合将会类似于: {
“resourceId”: “11500004B0B75677E705DD8C9801AC29”,
“objectId”: “STORY:t.1:11500004B0B75677E705DD8C9801AC29”,
“name”: “Name of the file”,
“description”: “Description of the file”,
“resourceType”: “STORY”,
“resourceSubtype”: “”,
“createdTime”: “2025-01-16T22:28:23.538Z”,
“createdBy”: “USER001”,
“modifiedTime”: “2025-01-16T22:28:23.538Z”,
“modifiedBy”: “USER001”,
“folderType”: “PUBLIC”,
“parentFolderResourceId”: “E3C80C0224E39749AB1B831D57408FC6”,
“workspaceId”: null,
“workspaceName”: null,
“openURL”:”/sap/fpa/ui/tenants/b1567d/bo/story/11500004B0B75677E705DD8C9801AC29″,
“isMobile”: true,
“isTranslationEnabled”: false,
“isFeatured”: false
} 身份验证 由于 API 目前仅支持 GET 请求,因此您可以使用 web 浏览器预览其功能。使用常规用户账户登录到 SAP 分析云,然后访问 https://your-SAC-tenant-URL/api/v1/filerepository/Resources 来获取初始结果集。 若要以编程方式使用该 API,你首先需要在 SAP 分析云租户中创建一个 OAuth 客户端。接着,需要使用该 OAuth 客户端从应用程序中对 SAP 分析云进行身份验证。SAP 分析云支持多种 OAuth 身份验证流程。有关详细信息,请参阅 设置验证 | SAP Help Portal。 一种简单的身份验证流程是教程中针对令牌服务的基本验证部分所概述的 OAuth 客户端凭据授权类型。若您想采用这种方法,首先在“系统 > 管理 > 应用程序集成”下添加 OAuth 客户端,将其 API 访问权限设置为“文件资源库读取”,将其授权许可设置为“客户凭据”,如下所示: 文件资源权限 默认情况下,API 会考虑发出 API 请求的用户在 SAP 分析云中的共享权限。因此,如果您登录到 SAP 分析云,然后在浏览器中浏览位于 /api/v1/filerepository/Resources 的 API 端点,查询结果将包括产品 UI 中“文件 > 我的文件”视图下对您的用户账户可用的所有文件,以及您所属工作区中存储的文件。 如果您在 SAP 分析云中拥有管理员账户——更具体地说,如果您被分配了一个对公用文件或个人文件有管理权限的角色——那么您可以选择让 API 返回产品 UI 中“文件 > 系统”视图下 SAP 分析云租户可用的所有文件。如果要通过 API 实现此管理视图,请将附加 URL 参数 applyManagePrivilege=true 附加到 API URL(如 /api/v1/filerepository/Resources?applyManagePrivilege=true)。 注意:如果您的应用程序使用OAuth客户凭据流程进行验证,则此 URL 参数 applyManagePrivilege=true 同样可用于访问 SAP 分析云租户上所有文件的管理视图。 分页和总结果数 API 以每批 50 个资源的方式对结果进行分页。如果查询结果超过 50 个资源,则最初仅返回前 50 个,且结果正文中将包含一个 @odata.nextLink 注解,其中包含用于获取下一批结果的 URL。 如果需要了解查询的总结果数,可以在查询 URL 中添加 $count=true 参数。 以下示例展示了从查询 URL /api/v1/filerepository/Resources?$count=true 返回的部分查询结果,其中包括查询结果的总数(即 177 个)以及指向第二批次结果的链接(即 “Resources?%24count=true&%24skiptoken=50”): {
“@odata.context”: “$metadata#Resources”,
“@odata.count”: 177,
“@odata.nextLink”: “Resources?%24count=true&%24skiptoken=50”,
“value”: [
// metadata for the first 50 resources will appear here
]
} 要获取第二批次的结果,您需要访问 /api/v1/filerepository/Resources?%24count=true&%24skiptoken=50。该查询的结果将再次包含另一个 @odata.nextLink 注解,提供指向第三批次结果的链接。这一过程会持续进行,直到你获取到最后一批次的结果,此时结果中将不再包含 @odata.nextLink。 选择、排序和筛选 您可以使用 OData 的 $select、$orderby 和 $filter 查询选项来优化 API 返回的结果。这些查询选项可以与 API 返回的每个资源的属性(例如 resourceId、objectId、name、description、resourceType、resourceSubtype、createdTime、createdBy 等)结合使用。 使用 $select 减少 API 返回的属性数量,从而减小响应数据的负载。例如,Resources?$select=resourceId,name,openURL 仅返回每个文件资源的 resourceId、name 和 openURL 属性。 使用 $orderby 对结果进行排序。例如: Resources?$orderby=name%20asc 按名称升序排序。 Resources?$orderby=modifiedTime%20desc 按修改时间降序排序。 使用 $filter 将查询结果限制为符合筛选条件的文件。例如: Resources?$filter=resourceType eq ‘FOLDER’ 仅返回文件夹资源。 Resources?$filter=resourceType eq ‘STORY’ and resourceSubtype eq ” 仅返回 resourceSubtype 为空的故事。 Resources?$filter=resourceType eq ‘STORY’ and resourceSubtype eq ‘INSIGHT’ 仅返回 Data Analyzer Insights。 Resources?$filter=modifiedTime gt 2024-07-31T12:29:52Z 仅返回特定时间戳后修改的文件。注意时间戳值周围不需要引号。 以下是有效的筛选比较运算符: eq:等于 ne:不等于 gt:大于 ge:大于或等于 lt:小于 le:小于或等于 in:是指定列表(如 ‘Member1’, ‘Member2’)中的成员 您可以结合筛选和排序表达式进一步优化 API 查询结果,例如:Resources?$filter=resourceType eq ‘FOLDER’ and modifiedTime gt 2024-07-31T12:29:52Z&$orderby=modifiedTime desc 导航属性的扩展 通过使用 OData 的 $expand 查询选项,您可以获取每个文件资源的更多元数据。 例如,可以扩展 ancestorFolders 以查看每个返回资源所在的上级文件夹集合:Resources?$expand=ancestorFolders 或者扩展 dependencyObjects 以查看每个返回资源所依赖的子文件存储库资源集合:Resources?$expand=dependencyObjects 您还可以将 $expand 查询选项与 OData 的 “any” 运算符结合使用,以遍历 dependencyObjects 或 ancestorFolders 集合,执行以下操作: 根据 resourceId 检索依赖于特定对象的所有对象:Resources?$expand=dependencyObjects&$filter=dependencyObjects/any(d:d/dependencyResourceId eq ‘C41qg8uuay285i6wfudm5kga9s’) 检索具有匹配特定名称的祖先文件夹的所有对象:Resources?$expand=ancestorFolders&$filter=ancestorFolders/any(a:a/name eq ‘SAP_FI_FPA_S4_Financial_Planning’) 最后,您可以一次性扩展所有可用的导航属性,以从 API 获取所有可能的元数据:Resources?$expand=ancestorFolders,dependencyObjects,extendedProperties,extraProperty,usage,resourceEffectivePermissions 更多信息 有关 File Repository API 的更多信息,请参阅 SAP Analytics Cloud REST API 指南中的文档:https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/14cac91febef464dbb1efce20e3f1613/132338a059c741209c910 原文链接:SAP Analytics Cloud File Repository API – SAP Community原作者:paul_brownsey Read More Technology Blogs by SAP articles
#SAP
#SAPTechnologyblog