Пространство имен: microsoft.graph
Важно!
API версии /beta
в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.
Восстановление недавно удаленного объекта каталога из удаленных элементов. Поддерживаются следующие типы:
Вы можете полностью восстановить случайно удаленный элемент. Это не относится к группам безопасности, которые удаляются без возможности восстановления. Кроме того, восстановление приложения не приводит к автоматическому восстановлению связанного субъекта-службы. Чтобы явно восстановить удаленный субъект-службу, необходимо вызвать этот API.
Недавно удаленный элемент остается доступным в течение 30 дней. Через 30 дней элемент удаляется без возможности восстановления.
Этот API доступен в следующих национальных облачных развертываниях.
Глобальная служба |
Правительство США L4 |
Правительство США L5 (DOD) |
Китай управляется 21Vianet |
✅ |
✅ |
✅ |
✅ |
Разрешения
В следующей таблице показаны наименее привилегированные разрешения или разрешения, необходимые для вызова этого API для каждого поддерживаемого типа ресурсов. Следуйте рекомендациям , чтобы запросить разрешения с наименьшими привилегиями. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Поддерживаемый ресурс |
Делегированное (рабочая или учебная учетная запись) |
Делегированное (личная учетная запись Майкрософт) |
Приложение |
administrativeUnit |
AdministrativeUnit.ReadWrite.All |
Не поддерживается. |
AdministrativeUnit.ReadWrite.All |
application |
Application.ReadWrite.All |
Не поддерживается. |
Application.ReadWrite.OwnedBy |
certificateBasedAuthPki |
PublicKeyInfrastructure.Read.All |
Не поддерживается. |
PublicKeyInfrastructure.Read.All |
certificateAuthorityDetail |
PublicKeyInfrastructure.Read.All |
Не поддерживается. |
PublicKeyInfrastructure.Read.All |
externalUserProfile |
ExternalUserProfile.ReadWrite.All |
Не поддерживается |
ExternalUserProfile.ReadWrite.All |
group |
Group.ReadWrite.All |
Не поддерживается. |
Group.ReadWrite.All |
pendingExternalUserProfile |
PendingExternalUserProfile.ReadWrite.All |
Не поддерживается |
PendingExternalUserProfile.ReadWrite.All |
servicePrincipal |
Application.ReadWrite.All |
Не поддерживается. |
Application.ReadWrite.OwnedBy |
user |
User.DeleteRestore.All |
Не поддерживается. |
User.DeleteRestore.All |
Важно!
В делегированных сценариях с рабочими или учебными учетными записями вошедшему пользователю должна быть назначена поддерживаемая роль Microsoft Entra или настраиваемая роль с разрешением поддерживаемой роли. Для этой операции поддерживаются следующие роли с наименьшими привилегиями.
- Восстановление удаленных приложений или субъектов-служб: администратор приложений, администратор облачных приложений или администратор гибридных удостоверений.
- Восстановление удаленных пользователей: Администратор пользователей. Однако чтобы восстановить пользователей с привилегированными ролями администратора, выполните следующие действия:
- В делегированных сценариях приложению должно быть назначено делегированное разрешение Directory.AccessAsUser.All , а вызывающему пользователю также должна быть назначена роль администратора с более высоким уровнем привилегий, как указано в разделе Кто может выполнять конфиденциальные действия?.
- В сценариях только для приложений и в дополнение к предоставлению разрешения приложения User.ReadWrite.All приложению должна быть назначена более высокая привилегированная роль администратора, как указано в разделе Кто может выполнять конфиденциальные действия?.
- Восстановление удаленных групп: Администратор групп. Однако для восстановления групп, назначаемых ролями, вызывающему пользователю должна быть назначена роль администратора привилегированных ролей .
HTTP-запрос
POST /directory/deleteditems/{id}/restore
Текст запроса
В тексте запроса укажите представление параметров в формате JSON.
В следующей таблице перечислены параметры, необходимые при вызове этого действия.
Параметр |
Тип |
Описание |
autoReconcileProxyConflict |
Логический |
Необязательный параметр. Указывает, следует ли Microsoft Entra ID удалять все конфликтующие прокси-адреса при восстановлении обратимо удаленного пользователя, один или несколько прокси-адресов которого в настоящее время используются для активного пользователя. Используется только для восстановления обратимо удаленного пользователя. Значение по умолчанию для этого параматера — false . |
newUserPrincipalName |
String |
Новое имя пользователя userPrincipalName , добавляемое восстановленным пользователем. Необязательный параметр. |
Отклик
В случае успеха этот метод возвращает код отклика 200 OK
и объект directoryObject в тексте отклика.
Примеры
Пример 1. Восстановление удаленного объекта каталога
Запрос
POST https://graph.microsoft.com/beta/directory/deleteditems/46cc6179-19d0-473e-97ad-6ff84347bbbb/restore
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Directory.DeletedItems["{directoryObject-id}"].Restore.PostAsync();
mgc-beta directory deleted-items restore post --directory-object-id {directoryObject-id}
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
restore, err := graphClient.Directory().DeletedItems().ByDirectoryObjectId("directoryObject-id").Restore().Post(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
var result = graphClient.directory().deletedItems().byDirectoryObjectId("{directoryObject-id}").restore().post();
const options = {
authProvider,
};
const client = Client.init(options);
await client.api('/directory/deleteditems/46cc6179-19d0-473e-97ad-6ff84347bbbb/restore')
.version('beta')
.post();
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$result = $graphServiceClient->directory()->deletedItems()->byDirectoryObjectId('directoryObject-id')->restore()->post()->wait();
Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
Restore-MgBetaDirectoryDeletedItem -DirectoryObjectId $directoryObjectId
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
result = await graph_client.directory.deleted_items.by_directory_object_id('directoryObject-id').restore.post()
Отклик
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context":"https://graph.microsoft.com/beta/$metadata#directoryObjects/$entity",
"@odata.type":"#microsoft.graph.group",
"id":"46cc6179-19d0-473e-97ad-6ff84347bbbb",
"displayName":"SampleGroup",
"groupTypes":["Unified"],
"mail":"[email protected]",
"mailEnabled":true,
"mailNickname":"Example",
"securityEnabled":false,
"visibility":"Public"
}
Пример 2. Восстановление удаленного пользователя и удаление конфликтующих прокси-адресов
Запрос
POST https://graph.microsoft.com/beta/directory/deleteditems/78bf875b-9343-4edc-9130-0d3958113563/restore
Content-Type: application/json
{
"autoReconcileProxyConflict": true
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.DirectoryNamespace.DeletedItems.Item.Restore;
var requestBody = new RestorePostRequestBody
{
AdditionalData = new Dictionary<string, object>
{
{
"autoReconcileProxyConflict" , true
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Directory.DeletedItems["{directoryObject-id}"].Restore.PostAsync(requestBody);
mgc-beta directory deleted-items restore post --directory-object-id {directoryObject-id} --body '{\
"autoReconcileProxyConflict": true\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdirectory "github.com/microsoftgraph/msgraph-beta-sdk-go/directory"
//other-imports
)
requestBody := graphdirectory.NewRestorePostRequestBody()
additionalData := map[string]interface{}{
autoReconcileProxyConflict := true
requestBody.SetAutoReconcileProxyConflict(&autoReconcileProxyConflict)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
restore, err := graphClient.Directory().DeletedItems().ByDirectoryObjectId("directoryObject-id").Restore().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.directory.deleteditems.item.restore.RestorePostRequestBody restorePostRequestBody = new com.microsoft.graph.beta.directory.deleteditems.item.restore.RestorePostRequestBody();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("autoReconcileProxyConflict", true);
restorePostRequestBody.setAdditionalData(additionalData);
var result = graphClient.directory().deletedItems().byDirectoryObjectId("{directoryObject-id}").restore().post(restorePostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const directoryObject = {
autoReconcileProxyConflict: true
};
await client.api('/directory/deleteditems/78bf875b-9343-4edc-9130-0d3958113563/restore')
.version('beta')
.post(directoryObject);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Directory\DeletedItems\Item\Restore\RestorePostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new RestorePostRequestBody();
$additionalData = [
'autoReconcileProxyConflict' => true,
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->directory()->deletedItems()->byDirectoryObjectId('directoryObject-id')->restore()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
$params = @{
autoReconcileProxyConflict = $true
}
Restore-MgBetaDirectoryDeletedItem -DirectoryObjectId $directoryObjectId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.directory.deleteditems.item.restore.restore_post_request_body import RestorePostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = RestorePostRequestBody(
additional_data = {
"auto_reconcile_proxy_conflict" : True,
}
)
result = await graph_client.directory.deleted_items.by_directory_object_id('directoryObject-id').restore.post(request_body)
Отклик
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users/$entity",
"@odata.type": "#microsoft.graph.user",
"id": "78bf875b-9343-4edc-9130-0d3958113563",
"businessPhones": [],
"displayName": "SampleUser",
"givenName": "Sample",
"jobTitle": "Product Marketing Manager",
"mail": "[email protected]",
"mobilePhone": "+1 425 555 0109",
"officeLocation": "18/2111",
"preferredLanguage": "en-US",
"surname": "Vance",
"userPrincipalName": "[email protected]"
}
Пример 3. Восстановление удаленного пользователя и назначение ему нового userPrincipalName
Запрос
POST https://graph.microsoft.com/beta/directory/deleteditems/78bf875b-9343-4edc-9130-0d3958113563/restore
Content-Type: application/json
{
"newUserPrincipalName": "[email protected]"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.DirectoryNamespace.DeletedItems.Item.Restore;
var requestBody = new RestorePostRequestBody
{
AdditionalData = new Dictionary<string, object>
{
{
"newUserPrincipalName" , "[email protected]"
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Directory.DeletedItems["{directoryObject-id}"].Restore.PostAsync(requestBody);
mgc-beta directory deleted-items restore post --directory-object-id {directoryObject-id} --body '{\
"newUserPrincipalName": "[email protected]"\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdirectory "github.com/microsoftgraph/msgraph-beta-sdk-go/directory"
//other-imports
)
requestBody := graphdirectory.NewRestorePostRequestBody()
additionalData := map[string]interface{}{
"newUserPrincipalName" : "[email protected]",
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
restore, err := graphClient.Directory().DeletedItems().ByDirectoryObjectId("directoryObject-id").Restore().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.directory.deleteditems.item.restore.RestorePostRequestBody restorePostRequestBody = new com.microsoft.graph.beta.directory.deleteditems.item.restore.RestorePostRequestBody();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("newUserPrincipalName", "[email protected]");
restorePostRequestBody.setAdditionalData(additionalData);
var result = graphClient.directory().deletedItems().byDirectoryObjectId("{directoryObject-id}").restore().post(restorePostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const directoryObject = {
newUserPrincipalName: '[email protected]'
};
await client.api('/directory/deleteditems/78bf875b-9343-4edc-9130-0d3958113563/restore')
.version('beta')
.post(directoryObject);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Directory\DeletedItems\Item\Restore\RestorePostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new RestorePostRequestBody();
$additionalData = [
'newUserPrincipalName' => '[email protected]',
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->directory()->deletedItems()->byDirectoryObjectId('directoryObject-id')->restore()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
$params = @{
newUserPrincipalName = "[email protected]"
}
Restore-MgBetaDirectoryDeletedItem -DirectoryObjectId $directoryObjectId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.directory.deleteditems.item.restore.restore_post_request_body import RestorePostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = RestorePostRequestBody(
additional_data = {
"new_user_principal_name" : "[email protected]",
}
)
result = await graph_client.directory.deleted_items.by_directory_object_id('directoryObject-id').restore.post(request_body)
Отклик
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects/$entity",
"@odata.type": "#microsoft.graph.user",
"id": "78bf875b-9343-4edc-9130-0d3958113563",
"businessPhones": [],
"displayName": "SampleUser",
"givenName": "Sample",
"mobilePhone": "+1 425 555 0109",
"officeLocation": "18/2111",
"preferredLanguage": "en-US",
"surname": "Vance",
"userPrincipalName": "[email protected]"
}