Upsert servicePrincipal

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

创建新的 servicePrincipal 对象(如果不存在),或更新现有 servicePrincipal 对象的属性。

重要

不支持在创建 servicePrincipals 时添加 passwordCredential。 使用 addPassword 方法为 servicePrincipal 添加密码或机密。

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Application.ReadWrite.All Directory.ReadWrite.All
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 Application.ReadWrite.All Application.ReadWrite.OwnedBy、Directory.ReadWrite.All

对于多租户应用,调用用户还必须至少具有以下Microsoft Entra角色之一:

  • 应用程序管理员
  • 云应用程序管理员角色

对于调用用户是非管理员用户但支持应用程序的所有者的单租户应用,用户必须具有 应用程序开发人员 角色。

HTTP 请求

PATCH /servicePrincipals(appId='appId')

请求标头

名称 说明
Authorization 持有者 {token}。 必填。
Content-Type application/json. 必需。
Prefer create-if-missing. 对于 upsert 行为是必需的,否则请求被视为更新操作。

请求正文

在请求正文中,提供 servicePrincipal 对象的 JSON 表示形式。

响应

如果成功,如果不存在具有 appId 的 servicePrincipal,此方法在 201 Created 响应正文中返回响应代码和新的 servicePrincipal 对象。

如果已存在具有 appId 的 servicePrincipal,此方法将更新 servicePrincipal 对象并返回 204 No Content 响应代码。

示例

示例 1:创建新的 servicePrincipal(如果不存在)

以下示例创建 servicePrincipal,因为不存在具有指定 appId 值的 servicePrincipal。

请求

以下示例显示了一个请求。

PATCH https://graph.microsoft.com/beta/servicePrincipals(appId='65415bb1-9267-4313-bbf5-ae259732ee12')
Content-type: application/json
Prefer: create-if-missing

{
  "displayName": "My app instance"
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals/$entity",
    "id": "59e617e5-e447-4adc-8b88-00af644d7c92",
    "deletedDateTime": null,
    "accountEnabled": true,
    "appDisplayName": "My App",
    "appId": "65415bb1-9267-4313-bbf5-ae259732ee12",
    "applicationTemplateId": null,
    "appOwnerOrganizationId": "1bc1c026-2f7b-48a5-98da-afa2fd8bc7bc",
    "appRoleAssignmentRequired": false,
    "displayName": "My app instance",
    "errorUrl": null,
    "homepage": null,
    "loginUrl": null,
    "logoutUrl": null,
    "notificationEmailAddresses": [],
    "preferredSingleSignOnMode": null,
    "preferredTokenSigningKeyEndDateTime": null,
    "preferredTokenSigningKeyThumbprint": null,
    "publisherName": "Contoso",
    "replyUrls": [],
    "samlMetadataUrl": null,
    "samlSingleSignOnSettings": null,
    "servicePrincipalNames": [
        "f1bd758f-4a1a-4b71-aa20-a248a22a8928"
    ],
    "signInAudience": "AzureADandPersonalMicrosoftAccount",
    "tags": [],
    "addIns": [],
    "api": {
        "resourceSpecificApplicationPermissions": []
    },
    "appRoles": [],
    "info": {
        "termsOfServiceUrl": null,
        "supportUrl": null,
        "privacyStatementUrl": null,
        "marketingUrl": null,
        "logoUrl": null
    },
    "keyCredentials": [],
    "publishedPermissionScopes": [],
    "passwordCredentials": []
}

示例 2:更新现有 servicePrincipal

以下示例更新 servicePrincipal,因为存在具有指定 appId 值的 servicePrincipal。

请求

以下示例显示了一个请求。

PATCH https://graph.microsoft.com/beta/servicePrincipals(appId='65415bb1-9267-4313-bbf5-ae259732ee12')
Content-type: application/json
Prefer: create-if-missing

{
  "displayName": "My app instance"
}

响应

以下示例显示了相应的响应。

HTTP/1.1 204 No Content