No todas las propiedades las pueden actualizar los usuarios miembros o invitados con sus permisos predeterminados sin roles de administrador.
Compare los permisos predeterminados de miembro y para ver las propiedades que pueden administrar.
Los clientes a través de Microsoft Entra ID para los clientes también pueden usar esta operación de API para actualizar sus detalles. Consulte Permisos de usuario predeterminados en inquilinos de clientes para obtener la lista de propiedades que pueden actualizar.
Para los usuarios sincronizados, la capacidad de actualizar determinadas propiedades viene determinada además por el origen de la autoridad y si la sincronización está habilitada.
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
Para actualizar propiedades de usuario confidenciales, como accountEnabled, mobilePhone y otrosMails para usuarios con roles de administrador con privilegios:
En escenarios delegados, a la aplicación se le debe asignar el permiso delegado Directory.AccessAsUser.All y el usuario que realiza la llamada debe tener un rol de administrador con privilegios superiores, como se indica en Quién puede realizar acciones confidenciales.
En escenarios de solo aplicación, a la aplicación se le debe asignar un rol de administrador con privilegios superiores, como se indica en Quién puede realizar acciones confidenciales.
Su cuenta personal de Microsoft debe estar asociada a un inquilino de Microsoft Entra para actualizar su perfil con el permiso delegado User.ReadWrite en una cuenta microsoft personal.
La actualización de la propiedad identities requiere el permiso User.ManageIdentities.All . Además, no se permite agregar una cuenta local B2C a un objeto user existente, a menos que el objeto user ya contenga una identidad de cuenta local.
Para actualizar la propiedad employeeLeaveDateTime :
En escenarios delegados, el administrador necesita el rol Administrador global ; Se deben conceder a la aplicación los permisos delegados User.Read.All y User-LifeCycleInfo.ReadWrite.All .
En escenarios de solo aplicación con permisos de Microsoft Graph, se deben conceder a la aplicación los permisos User.Read.All y User-LifeCycleInfo.ReadWrite.All .
Para actualizar la propiedad customSecurityAttributes :
En escenarios delegados, al administrador se le debe asignar el rol Administrador de asignación de atributos y a la aplicación se le concede el permiso CustomSecAttributeAssignment.ReadWrite.All .
En escenarios de solo aplicación con permisos de Microsoft Graph, se debe conceder a la aplicación el permiso CustomSecAttributeAssignment.ReadWrite.All .
En el cuerpo de la solicitud, proporcione solo los valores de las propiedades que se van a actualizar. Las propiedades existentes que no se incluyen en el cuerpo de la solicitud mantienen sus valores anteriores o se recalculan en función de los cambios realizados en otros valores de propiedad.
En la tabla siguiente se especifican las propiedades que se pueden actualizar.
Propiedad
Tipo
Descripción
aboutMe
String
Un campo de entrada de texto de forma libre para que el usuario se describa a sí mismo.
accountEnabled
Boolean
true si la cuenta está habilitada; en caso contrario, false. Esta propiedad es necesaria cuando se crea un usuario. Un administrador de autenticación con privilegios asignado al permiso delegado Directory.AccessAsUser.All es el rol con privilegios mínimos que puede actualizar el estado accountEnabled de todos los administradores del inquilino.
El cumpleaños del usuario. El tipo de marca de tiempo representa la información de fecha y hora con el formato ISO 8601 y está siempre en hora UTC. Por ejemplo, la medianoche en la zona horaria UTC del 1 de enero de 2014 sería 2014-01-01T00:00:00Z.
businessPhones
Colección string
Números de teléfono del usuario. Nota: Aunque se trata de una colección de cadenas, solo se puede establecer un número para esta propiedad.
city
Cadena
La ciudad en la que se encuentra el usuario.
CompanyName
String
Nombre de la empresa a la que está asociado el usuario. Esta propiedad puede ser útil para describir la empresa de la que procede un usuario externo. La longitud máxima es de 64 caracteres.
Determina si se ha obtenido el consentimiento para menores. Valores permitidos: null, Granted, Denied y NotRequired. Consulte las definiciones de propiedades del grupo de edad legal para obtener más información.
country
Cadena
País o región en la que se encuentra el usuario; por ejemplo, "US" o "UK".
Un tipo complejo abierto que contiene el valor de un atributo de seguridad personalizado que se asigna a un objeto de directorio.
Para actualizar esta propiedad en escenarios delegados, a la entidad de seguridad que realiza la llamada se le debe asignar el rol Administrador de asignación de atributos y a la aplicación se le concede el permiso delegado CustomSecAttributeAssignment.ReadWrite.All .
Para actualizar esta propiedad en escenarios de solo aplicación con permisos de Microsoft Graph, se debe conceder a la aplicación el permiso de aplicación CustomSecAttributeAssignment.ReadWrite.All .
department
Cadena
El nombre del departamento en el que trabaja el usuario.
displayName
Cadena
Nombre del usuario que aparece en la libreta de direcciones. Suele ser la combinación del nombre del usuario, la inicial del segundo nombre y el apellido. Esta propiedad es necesaria cuando se crea un usuario y no se puede borrar durante las actualizaciones.
employeeId
Cadena
El identificador de empleado asignado al usuario en la organización. La longitud máxima es de 16 caracteres.
employeeType
Cadena
Es para capturar el tipo de trabajador de la empresa. Por ejemplo, Employee, Contractor, Consultant o Vendor. Solo se devuelve en $select.
givenName
Cadena
El nombre (nombre de pila) del usuario.
employeeHireDate
DateTimeOffset
La fecha de contratación del usuario. El tipo de marca de tiempo representa la información de fecha y hora con el formato ISO 8601 y está siempre en hora UTC. Por ejemplo, la medianoche en la zona horaria UTC del 1 de enero de 2014 sería 2014-01-01T00:00:00Z.
employeeLeaveDateTime
DateTimeOffset
Fecha y hora en que el usuario se fue o dejará la organización. El tipo de marca de tiempo representa la información de fecha y hora con el formato ISO 8601 y siempre está en hora UTC. Por ejemplo, la medianoche en la zona horaria UTC del 1 de enero de 2014 sería 2014-01-01T00:00:00Z.
Para escenarios delegados, el usuario que realiza la llamada debe tener el rol De administrador global y la aplicación que realiza la llamada tiene asignados los permisos delegados User.Read.All y User-LifeCycleInfo.ReadWrite.All .
Representa los datos de la organización (por ejemplo, la división y costCenter) asociados a un usuario.
interests
Colección string
Una lista para que el usuario describa sus intereses.
jobTitle
String
Puesto del usuario.
mail
Cadena
La dirección SMTP del usuario (por ejemplo, la dirección jeff@contoso.com). Los cambios en esta propiedad también actualizan la colección proxyAddresses del usuario para incluir el valor como una dirección SMTP. En el caso de las cuentas de Azure AD B2C, esta propiedad solo se puede actualizar hasta 10 veces con direcciones SMTP únicas. No se puede actualizar a null.
mailNickname
Cadena
El alias de correo del usuario. Esta propiedad debe especificarse al crear un usuario.
mobilePhone
String
El número de teléfono móvil principal del usuario.
mySite
String
La dirección URL del sitio personal del usuario.
officeLocation
String
La ubicación de la oficina del lugar de trabajo del usuario.
Contiene los extensionAttributes 1-15 para el usuario. Los atributos de extensión individuales no se pueden seleccionar ni filtrar. Para un usuario de onPremisesSyncEnabled, el origen de autoridad para este conjunto de propiedades es la implementación local y es de solo lectura. Estos atributos de extensión se conocen también como atributos personalizados de Exchange 1-15.
onPremisesImmutableId
Cadena
Esta propiedad se usa para asociar una cuenta de usuario de Active Directory local a su Microsoft Entra objeto de usuario. Esta propiedad debe especificarse al crear una nueva cuenta de usuario en Graph si usa un dominio federado para la propiedad userPrincipalName (UPN) del usuario.
Importante: Los $ caracteres y _ no se pueden usar al especificar esta propiedad.
otherMails
Colección string
Una lista de direcciones de correo electrónico adicionales para el usuario. Por ejemplo: ["bob@contoso.com", "Robert@fabrikam.com"].
passwordPolicies
String
Especifica las directivas de contraseña del usuario. Este valor es una enumeración con un valor posible que es DisableStrongPassword, el cual permite especificar contraseñas menos seguras que la directiva predeterminada.
DisablePasswordExpiration también se puede especificar. Los dos se pueden especificar juntos; por ejemplo: DisablePasswordExpiration, DisableStrongPassword.
Especifica el perfil de contraseña del usuario. El perfil contiene la contraseña del usuario. La contraseña del perfil debe cumplir los requisitos mínimos especificados por la propiedad passwordPolicies. De manera predeterminada, se requiere una contraseña segura. Como procedimiento recomendado, establezca siempre forceChangePasswordNextSignIntrueen . Esto no se puede usar para usuarios federados.
En el acceso delegado, la aplicación que realiza la llamada debe tener asignado el permiso delegado Directory.AccessAsUser.All en nombre del usuario que ha iniciado sesión.
En el acceso de solo aplicación, a la aplicación que realiza la llamada se le debe asignar el permiso de aplicación User.ReadWrite.All (con privilegios mínimos) o Directory.ReadWrite.All (privilegios superiores) y al menos el rol Administrador de usuariosMicrosoft Entra.
pastProjects
Colección string
Una lista para que el usuario enumere sus últimos proyectos.
postalCode
String
El código postal de la dirección del usuario. El código postal es específico del país o de la región del usuario. En Estados Unidos, este atributo contiene el código postal.
preferredLanguage
String
Idioma preferido del usuario. Debe seguir el código ISO 639-1; por ejemplo, en-US.
responsibilities
Colección string
Una lista para que el usuario enumere sus responsabilidades.
schools
Colección string
Una lista para que el usuario enumere las escuelas a las que asistió.
skills
Colección string
Una lista para que el usuario enumere sus aptitudes.
state
Cadena
El estado o la provincia de la dirección del usuario.
streetAddress
String
La dirección postal del lugar de trabajo del usuario.
surname
Cadena
El apellido (o apellidos) del usuario.
usageLocation
Cadena
Un código de país de dos letras (norma ISO 3166). Es necesario para los usuarios a los que se asignarán licencias debido a un requisito legal para comprobar la disponibilidad de los servicios en los países. Algunos ejemplos son: USJP y GB. No admite valores NULL.
userPrincipalName
Cadena
El nombre principal del usuario (UPN) del usuario. El UPN es un nombre de inicio de sesión de estilo Internet para el usuario basado en la RFC 822 estándar de Internet. Por convención, se debe asignar al nombre de correo electrónico del usuario. El formato general es alias@dominio, en donde el dominio debe estar presente en la colección de dominios verificados del espacio empresarial. Se puede acceder a los dominios verificados del inquilino desde la propiedad verifiedDomains en organización. NOTA: Esta propiedad no puede contener caracteres de énfasis. Los caracteres siguientes no están permitidos A - Z, a - z, 0 - 9, ' . - _ ! # ^ ~. Para obtener la lista completa de caracteres permitidos, vea directivas de nombre de usuario.
userType
Cadena
Un valor de cadena puede utilizarse para clasificar los tipos de usuario en el directorio. Por ejemplo: Member e Guest.
Nota:
Las siguientes propiedades no se pueden actualizar con una app con solo permisos de aplicación: aboutMe, birthday, employeeHireDate, interests, mySite, pastProjects, responsibilities, schools y skills.
Para actualizar las siguientes propiedades, debe especificarlas en su propia solicitud PATCH, sin incluir las otras propiedades: aboutMe, birthday, interests, mySite, pastProjects, responsibilities, schools y skills.
Administración de extensiones y datos asociados
Use esta API para administrar el directorio, el esquema y las extensiones abiertas y sus datos para los usuarios como se indica a continuación:
Agregar, actualizar y almacenar datos en las extensiones de un usuario existente
Para las extensiones de directorio y esquema, quite los datos almacenados estableciendo el valor de la propiedad de extensión personalizada en null. Para las extensiones abiertas, use la API Eliminar extensión abierta.
Respuesta
Si se ejecuta correctamente, este método devuelve un código de respuesta 204 No Content.
Ejemplo
Ejemplo 1: actualice las propiedades del usuario con la sesión iniciada
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
BusinessPhones = new List<string>
{
"+1 425 555 0109",
},
OfficeLocation = "18/2111",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewUser()
businessPhones := []string {
"+1 425 555 0109",
}
requestBody.SetBusinessPhones(businessPhones)
officeLocation := "18/2111"
requestBody.SetOfficeLocation(&officeLocation)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
me, err := graphClient.Me().Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
LinkedList<String> businessPhones = new LinkedList<String>();
businessPhones.add("+1 425 555 0109");
user.setBusinessPhones(businessPhones);
user.setOfficeLocation("18/2111");
User result = graphClient.me().patch(user);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user import User
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = User(
business_phones = [
"+1 425 555 0109",
],
office_location = "18/2111",
)
result = await graph_client.me.patch(request_body)
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
BusinessPhones = new List<string>
{
"+1 425 555 0109",
},
OfficeLocation = "18/2111",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewUser()
businessPhones := []string {
"+1 425 555 0109",
}
requestBody.SetBusinessPhones(businessPhones)
officeLocation := "18/2111"
requestBody.SetOfficeLocation(&officeLocation)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
users, err := graphClient.Users().ByUserId("user-id").Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
LinkedList<String> businessPhones = new LinkedList<String>();
businessPhones.add("+1 425 555 0109");
user.setBusinessPhones(businessPhones);
user.setOfficeLocation("18/2111");
User result = graphClient.users().byUserId("{user-id}").patch(user);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user import User
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = User(
business_phones = [
"+1 425 555 0109",
],
office_location = "18/2111",
)
result = await graph_client.users.by_user_id('user-id').patch(request_body)
Ejemplo 3: Actualizar el passwordProfile de un usuario y restablecer su contraseña
En el ejemplo siguiente, se muestra una solicitud para restablecer la contraseña de otro usuario. Como procedimiento recomendado, establezca siempre forceChangePasswordNextSignIntrueen .
En el acceso delegado, la aplicación que realiza la llamada debe tener asignado el permiso delegado Directory.AccessAsUser.All en nombre del usuario que ha iniciado sesión.
En el acceso de solo aplicación, a la aplicación que realiza la llamada se le debe asignar el permiso de aplicación User.ReadWrite.All (con privilegios mínimos) o Directory.ReadWrite.All (privilegios superiores) y al menos el rol Administrador de usuariosMicrosoft Entra.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = false,
Password = "xWwvJ]6NMw+bWH-d",
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewUser()
passwordProfile := graphmodels.NewPasswordProfile()
forceChangePasswordNextSignIn := false
passwordProfile.SetForceChangePasswordNextSignIn(&forceChangePasswordNextSignIn)
password := "xWwvJ]6NMw+bWH-d"
passwordProfile.SetPassword(&password)
requestBody.SetPasswordProfile(passwordProfile)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
users, err := graphClient.Users().ByUserId("user-id").Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
PasswordProfile passwordProfile = new PasswordProfile();
passwordProfile.setForceChangePasswordNextSignIn(false);
passwordProfile.setPassword("xWwvJ]6NMw+bWH-d");
user.setPasswordProfile(passwordProfile);
User result = graphClient.users().byUserId("{user-id}").patch(user);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\User;
use Microsoft\Graph\Generated\Models\PasswordProfile;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new User();
$passwordProfile = new PasswordProfile();
$passwordProfile->setForceChangePasswordNextSignIn(false);
$passwordProfile->setPassword('xWwvJ]6NMw+bWH-d');
$requestBody->setPasswordProfile($passwordProfile);
$result = $graphServiceClient->users()->byUserId('user-id')->patch($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user import User
from msgraph.generated.models.password_profile import PasswordProfile
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = User(
password_profile = PasswordProfile(
force_change_password_next_sign_in = False,
password = "xWwvJ]6NMw+bWH-d",
),
)
result = await graph_client.users.by_user_id('user-id').patch(request_body)
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new User
{
AdditionalData = new Dictionary<string, object>
{
{
"ext55gb1l09_msLearnCourses" , new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"courseType", new UntypedString("Admin")
},
})
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewUser()
additionalData := map[string]interface{}{
ext55gb1l09_msLearnCourses := graph.New()
courseType := "Admin"
ext55gb1l09_msLearnCourses.SetCourseType(&courseType)
requestBody.SetExt55gb1l09_msLearnCourses(ext55gb1l09_msLearnCourses)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
users, err := graphClient.Users().ByUserId("user-id").Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
ext55gb1l09MsLearnCourses = new ();
ext55gb1l09MsLearnCourses.setCourseType("Admin");
additionalData.put("ext55gb1l09_msLearnCourses", ext55gb1l09MsLearnCourses);
user.setAdditionalData(additionalData);
User result = graphClient.users().byUserId("{user-id}").patch(user);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user import User
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = User(
additional_data = {
"ext55gb1l09_ms_learn_courses" : {
"course_type" : "Admin",
},
}
)
result = await graph_client.users.by_user_id('user-id').patch(request_body)
Para quitar el valor de la extensión de esquema del objeto de usuario, establezca la propiedad ext55gb1l09_msLearnCourses en null.
Respuesta
HTTP/1.1 204 No Content
Ejemplo 5: Asignación de un atributo de seguridad personalizado con un valor de cadena a un usuario
En el ejemplo siguiente se muestra cómo asignar un atributo de seguridad personalizado con un valor de cadena a un usuario.
Conjunto de atributos: Engineering
Atributo: ProjectDate
Tipo de datos de atributo: Cadena
Valor de atributo: "2022-10-01"
Para asignar atributos de seguridad personalizados, a la entidad de seguridad de llamada, se le debe asignar el rol Administrador de asignación de atributos y conceder el permiso CustomSecAttributeAssignment.ReadWrite.All.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new User
{
CustomSecurityAttributes = new CustomSecurityAttributeValue
{
AdditionalData = new Dictionary<string, object>
{
{
"Engineering" , new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"@odata.type", new UntypedString("#Microsoft.DirectoryServices.CustomSecurityAttributeValue")
},
{
"projectDate", new UntypedString("2022-10-01")
},
})
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewUser()
customSecurityAttributes := graphmodels.NewCustomSecurityAttributeValue()
additionalData := map[string]interface{}{
engineering := graph.New()
projectDate := "2022-10-01"
engineering.SetProjectDate(&projectDate)
customSecurityAttributes.SetEngineering(engineering)
}
customSecurityAttributes.SetAdditionalData(additionalData)
requestBody.SetCustomSecurityAttributes(customSecurityAttributes)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
users, err := graphClient.Users().ByUserId("user-id").Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
CustomSecurityAttributeValue customSecurityAttributes = new CustomSecurityAttributeValue();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
engineering = new ();
engineering.setOdataType("#Microsoft.DirectoryServices.CustomSecurityAttributeValue");
engineering.setProjectDate("2022-10-01");
additionalData.put("Engineering", engineering);
customSecurityAttributes.setAdditionalData(additionalData);
user.setCustomSecurityAttributes(customSecurityAttributes);
User result = graphClient.users().byUserId("{user-id}").patch(user);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user import User
from msgraph.generated.models.custom_security_attribute_value import CustomSecurityAttributeValue
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = User(
custom_security_attributes = CustomSecurityAttributeValue(
additional_data = {
"engineering" : {
"@odata_type" : "#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
"project_date" : "2022-10-01",
},
}
),
)
result = await graph_client.users.by_user_id('user-id').patch(request_body)