Contacts.ReadWrite
Allows the app to create, read, update, and delete all contacts in all mailboxes without a signed-in user.
Permission Details
Read and write contacts in all mailboxes
Allows the app to create, read, update, and delete all contacts in all mailboxes without a signed-in user.
6918b873-d17a-4dc1-b314-35f528134491
Have full access to user contacts
Allows the app to create, read, update, and delete user contacts.
d56682ec-c09e-4743-aaf4-1a3aac4caa21
Properties
Properties is shown from stable Microsoft Graph v1.0 metadata.
| Property | Type | Description |
|---|---|---|
assistantName |
StringNullable |
The name of the contact's assistant. |
birthday |
DateTimeOffsetNullable |
The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z |
businessAddress |
physicalAddress |
The contact's business address. |
businessHomePage |
StringNullable |
The business home page of the contact. |
businessPhones |
String collection |
The contact's business phone numbers. |
categories |
String collection |
The categories associated with the contact. |
changeKey |
StringNullable |
Identifies the version of the contact. Every time the contact is changed, ChangeKey changes as well. This allows Exchange to apply changes to the correct version of the object. |
children |
String collection |
The names of the contact's children. |
companyName |
StringNullable |
The name of the contact's company. |
createdDateTime |
DateTimeOffsetNullable |
The time the contact was created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z |
department |
StringNullable |
The contact's department. |
displayName |
StringNullable |
The contact's display name. You can specify the display name in a create or update operation. Note that later updates to other properties may cause an automatically generated value to overwrite the displayName value you have specified. To preserve a pre-existing value, always include it as displayName in an update operation. |
emailAddresses |
emailAddress collection |
The contact's email addresses. |
fileAs |
StringNullable |
The name the contact is filed under. |
generation |
StringNullable |
The contact's suffix. |
Showing 15 of 42 properties.
JSON Representation
JSON representation is shown from stable Microsoft Graph v1.0 metadata.
{
"assistantName": "string",
"birthday": "String (timestamp)",
"businessAddress": {
"@odata.type": "microsoft.graph.physicalAddress"
},
"businessHomePage": "string",
"businessPhones": [
"string"
],
"categories": [
"string"
],
"changeKey": "string",
"children": [
"string"
],
"companyName": "string",
"createdDateTime": "String (timestamp)",
"department": "string",
"displayName": "string",
"emailAddresses": [
{
"@odata.type": "microsoft.graph.emailAddress"
}
],
"fileAs": "string",
"generation": "string",
"givenName": "string",
"homeAddress": {
"@odata.type": "microsoft.graph.physicalAddress"
},
"homePhones": [
"string"
],
"id": "string (identifier)",
"imAddresses": [
"string"
],
"initials": "string",
"jobTitle": "string",
"lastModifiedDateTime": "String (timestamp)",
"manager": "string",
"middleName": "string",
"mobilePhone": "string",
"nickName": "string",
"officeLocation": "string",
"otherAddress": {
"@odata.type": "microsoft.graph.physicalAddress"
},
"parentFolderId": "string",
"personalNotes": "string",
"photo": {
"@odata.type": "microsoft.graph.profilePhoto"
},
"primaryEmailAddress": {
"@odata.type": "microsoft.graph.emailAddress"
},
"profession": "string",
"secondaryEmailAddress": {
"@odata.type": "microsoft.graph.emailAddress"
},
"spouseName": "string",
"surname": "string",
"tertiaryEmailAddress": {
"@odata.type": "microsoft.graph.emailAddress"
},
"title": "string",
"yomiCompanyName": "string",
"yomiGivenName": "string",
"yomiSurname": "string"
}
Relationships
Relationships is shown from stable Microsoft Graph v1.0 metadata.
| Relationship | Type | Description |
|---|---|---|
extensions |
extension collection |
The collection of open extensions defined for the contact. Read-only. Nullable. |
multiValueExtendedProperties |
multiValueLegacyExtendedProperty collection |
The collection of multi-value extended properties defined for the contact. Read-only. Nullable. |
photo |
profilePhoto |
Optional contact picture. You can get or set a photo for a contact. |
singleValueExtendedProperties |
singleValueLegacyExtendedProperty collection |
The collection of single-value extended properties defined for the contact. Read-only. Nullable. |
businessPhones |
string collection |
The contact's business phone numbers. |
categories |
string collection |
The categories associated with the item |
children |
string collection |
The names of the contact's children. |
emailAddresses |
emailAddress collection |
The contact's email addresses. |
homePhones |
string collection |
The contact's home phone numbers. |
imAddresses |
string collection |
The contact's instant messaging (IM) addresses. |
phones |
phone collection |
Phone numbers associated with the contact, for example, home phone, mobile phone, and business phone. |
postalAddresses |
physicalAddress collection |
Addresses associated with the contact, for example, home address and business address. |
websites |
website collection |
Web sites associated with the contact. |
Graph Methods
Microsoft Graph v1.0 endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
Microsoft Graph beta endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
Microsoft Graph PowerShell v1.0 commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.
Microsoft Graph PowerShell beta commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.
Code Examples
// 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
await graphClient.Users["{user-id}"].Contacts["{contact-id}"].PermanentDelete.PostAsync();
const options = {
authProvider,
};
const client = Client.init(options);
await client.api('/users/b4c80c57-5c59-4a3d-912a-a83985988b82/contacts/AAsdjipajdwnoiwsda=/permanentDelete')
.post();
Import-Module Microsoft.Graph.PersonalContacts
Remove-MgUserContactPermanent -UserId $userId -ContactId $contactId
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.users.by_user_id('user-id').contacts.by_contact_id('contact-id').permanent_delete.post()
App Registration
Navigate to Azure Portal
Go to App registrations in Microsoft Entra admin center
Add API Permission
Select your app → API permissions → Add a permission → Microsoft Graph
Select Permission Type
Choose Application permissions or delegated permissions and search for Contacts.ReadWrite
Grant Admin Consent
Application permissions always require admin consent.