Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
Permission type
Least privileged permissions
Higher privileged permissions
Delegated (work or school account)
IdentityUserFlow.ReadWrite.All
Not available.
Delegated (personal Microsoft account)
Not supported.
Not supported.
Application
IdentityUserFlow.ReadWrite.All
Not available.
In delegated scenarios with work or school accounts, the signed-in user must be assigned a supported Microsoft Entra role or a custom role with a supported role permission. External ID User Flow Administrator is the least privileged role supported for this operation.
HTTP request
POST /identity/b2xUserFlows/{id}/userAttributeAssignments
The display name of the identityUserFlowAttribute within a user flow.
isOptional
Boolean
Determines whether the identityUserFlowAttribute is optional. true means the user doesn't have to provide a value. false means the user cannot complete sign-up without providing a value.
requiresVerification
Boolean
Determines whether the identityUserFlowAttribute requires verification. This is only used for verifying the user's phone number or email address.
The input options for the user flow attribute. Only applicable when the userInputType is radioSingleSelect, dropdownSingleSelect, or checkboxMultiSelect.
userInputType
identityUserFlowAttributeInputType
The input type of the user flow attribute. Possible values are: textBox, dateTimeDropdown, radioSingleSelect, dropdownSingleSelect, emailBox, checkboxMultiSelect.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new IdentityUserFlowAttributeAssignment
{
IsOptional = false,
RequiresVerification = false,
UserInputType = IdentityUserFlowAttributeInputType.TextBox,
DisplayName = "Shoe size",
UserAttributeValues = new List<UserAttributeValuesItem>
{
},
UserAttribute = new IdentityUserFlowAttribute
{
Id = "extension_guid_shoeSize",
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Identity.B2xUserFlows["{b2xIdentityUserFlow-id}"].UserAttributeAssignments.PostAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
IdentityUserFlowAttributeAssignment identityUserFlowAttributeAssignment = new IdentityUserFlowAttributeAssignment();
identityUserFlowAttributeAssignment.setIsOptional(false);
identityUserFlowAttributeAssignment.setRequiresVerification(false);
identityUserFlowAttributeAssignment.setUserInputType(IdentityUserFlowAttributeInputType.TextBox);
identityUserFlowAttributeAssignment.setDisplayName("Shoe size");
LinkedList<UserAttributeValuesItem> userAttributeValues = new LinkedList<UserAttributeValuesItem>();
identityUserFlowAttributeAssignment.setUserAttributeValues(userAttributeValues);
IdentityUserFlowAttribute userAttribute = new IdentityUserFlowAttribute();
userAttribute.setId("extension_guid_shoeSize");
identityUserFlowAttributeAssignment.setUserAttribute(userAttribute);
IdentityUserFlowAttributeAssignment result = graphClient.identity().b2xUserFlows().byB2xIdentityUserFlowId("{b2xIdentityUserFlow-id}").userAttributeAssignments().post(identityUserFlowAttributeAssignment);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\IdentityUserFlowAttributeAssignment;
use Microsoft\Graph\Generated\Models\IdentityUserFlowAttributeInputType;
use Microsoft\Graph\Generated\Models\UserAttributeValuesItem;
use Microsoft\Graph\Generated\Models\IdentityUserFlowAttribute;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new IdentityUserFlowAttributeAssignment();
$requestBody->setIsOptional(false);
$requestBody->setRequiresVerification(false);
$requestBody->setUserInputType(new IdentityUserFlowAttributeInputType('textBox'));
$requestBody->setDisplayName('Shoe size');
$requestBody->setUserAttributeValues([ ]);
$userAttribute = new IdentityUserFlowAttribute();
$userAttribute->setId('extension_guid_shoeSize');
$requestBody->setUserAttribute($userAttribute);
$result = $graphServiceClient->identity()->b2xUserFlows()->byB2xIdentityUserFlowId('b2xIdentityUserFlow-id')->userAttributeAssignments()->post($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.identity_user_flow_attribute_assignment import IdentityUserFlowAttributeAssignment
from msgraph.generated.models.identity_user_flow_attribute_input_type import IdentityUserFlowAttributeInputType
from msgraph.generated.models.user_attribute_values_item import UserAttributeValuesItem
from msgraph.generated.models.identity_user_flow_attribute import IdentityUserFlowAttribute
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = IdentityUserFlowAttributeAssignment(
is_optional = False,
requires_verification = False,
user_input_type = IdentityUserFlowAttributeInputType.TextBox,
display_name = "Shoe size",
user_attribute_values = [
],
user_attribute = IdentityUserFlowAttribute(
id = "extension_guid_shoeSize",
),
)
result = await graph_client.identity.b2x_user_flows.by_b2x_identity_user_flow_id('b2xIdentityUserFlow-id').user_attribute_assignments.post(request_body)