Skip to content

publicFolders

Public Folders. Public folders with create, edit, and mail-enable actions. The publicFolders entity set lives under /exchange/v1.0/publicFolders in the Public folders category.

Fact Value
Path /exchange/v1.0/publicFolders
Category Public folders
Tier Tier 7, Public folders
Read role PublicFolder.Read.All (Community)
Write role PublicFolder.ReadWrite.All (Pro)
Backing cmdlets Get-PublicFolder, Set-PublicFolder, New-PublicFolder, Remove-PublicFolder, Enable-MailPublicFolder, Disable-MailPublicFolder
Method Path Synopsis Role Plan
GET /exchange/v1.0/publicFolders List publicFolders entries. PublicFolder.Read Community
POST /exchange/v1.0/publicFolders Create a new publicFolders entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying. PublicFolder.ReadWrite Pro
GET /exchange/v1.0/publicFolders/{key} Get a single publicFolders entry by Identity. PublicFolder.Read Community
PATCH /exchange/v1.0/publicFolders/{key} PATCH /publicFolders/{key} - Set-PublicFolder. Renames are supported via name in the body; does rename-aware re-fetch (post-slice-18 fix). PublicFolder.ReadWrite Pro
DELETE /exchange/v1.0/publicFolders/{key} Remove the publicFolders at /publicFolders/{key}. Returns 204 with no body. PublicFolder.ReadWrite Pro
GET /exchange/v1.0/publicFolders/{key}/clientPermissions GET /publicFolders/{key}/clientPermissions - Get-PublicFolderClientPermission. Returns the full ACE list; each row has Identity, User, AccessRights. PublicFolder.Read Community
POST /exchange/v1.0/publicFolders/{key}/clientPermissions POST /publicFolders/{key}/clientPermissions - adds a client ACE via Add-PublicFolderClientPermission. Returns 201 Created + Location on the composite ID “{folderIdentity}|{user}|{accessRights}” (same shape GET /clientPermissions emits). PublicFolder.ReadWrite Pro
DELETE /exchange/v1.0/publicFolders/{key}/clientPermissions/{permissionId} DELETE /publicFolders/{key}/clientPermissions/{permissionId} - removes a client ACE by composite ID (“{folderIdentity}|{user}|{accessRights}”). URL {key} is authoritative for the folder identity; the prefix in the composite ID is informational. PublicFolder.ReadWrite Pro
POST /exchange/v1.0/publicFolders/{key}/disableMail POST /publicFolders/{key}/disableMail - bound action, Disable-MailPublicFolder. Strips the mail-enabled state; the folder hierarchy stays. PublicFolder.ReadWrite Pro
POST /exchange/v1.0/publicFolders/{key}/enableMail POST /publicFolders/{key}/enableMail - bound action, Enable-MailPublicFolder. Caller can pre-hide the folder from address lists via ?hiddenFromAddressListsEnabled=true. PublicFolder.ReadWrite Pro
GET /exchange/v1.0/publicFolders/{key}/statistics GET /publicFolders/{key}/statistics - Get-PublicFolderStatistics. Per-folder size + item count + last-access. Empty when folder is unmapped. PublicFolder.Read Community

List publicFolders entries.

Backing cmdlet: Get-PublicFolder. Role: PublicFolder.Read (Community).

Parameter In Type Required Description
identity query string
recurse query bool (switch)
getChildren query bool (switch)
lostAndFound query bool (switch)
mailbox query string
residentFolders query bool (switch)
resultSize query int

Stub auto-generated example for the publicFolders collection. Backing cmdlet: Get-PublicFolder. Live-verify with ?$top=3&$select=Id,Name and replace the synthetic body before promoting to Tier 1.

GET /exchange/v1.0/publicFolders?$top=3 HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#publicFolders",
"value": []
}

Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.

Related: GET /exchange/v1.0/publicFolders/{key}

Create a new publicFolders entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying.

Backing cmdlet: New-PublicFolder. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
name body yes
eformsLocaleId body
mailbox body
path body
dryRun query bool (switch)

Create a public folder with the required name missing

Section titled “Create a public folder with the required name missing”

New-PublicFolder requires the folder Name. Omitting it returns a 400 BadRequest before the cmdlet is invoked.

POST /exchange/v1.0/publicFolders HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"path": "\\Engineering"
}
HTTP/1.1 400 Bad Request
{
"error": {
"code": "BadRequest",
"message": "The 'name' field is required.",
"target": "name"
},
"correlationId": "0HN3K7QF8M2P1:00000007"
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

Creates a new public folder in the hierarchy via New-PublicFolder. The folder Name is required; Path places it under an existing parent folder.

POST /exchange/v1.0/publicFolders HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-sample-publicFolders",
"path": "\\Engineering",
"mailbox": "PFMailbox-Contoso"
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/publicFolders/exonaut-sample-publicFolders
{
"Identity": "\\Engineering\\exonaut-sample-publicFolders",
"Name": "exonaut-sample-publicFolders",
"Path": "\\Engineering",
"MailEnabled": false
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

Get a single publicFolders entry by Identity.

Backing cmdlet: Get-PublicFolder. Role: PublicFolder.Read (Community).

Stub auto-generated example for GET /publicFolders/{key}. Backing cmdlet: Get-PublicFolder with -Identity {key}. Returns the full entity body; 404 if the identity doesn’t resolve.

GET /exchange/v1.0/publicFolders/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#publicFolders/$entity"
}

Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.

Related: GET /exchange/v1.0/publicFolders

PATCH /publicFolders/{key} - Set-PublicFolder. Renames are supported via name in the body; does rename-aware re-fetch (post-slice-18 fix).

Backing cmdlet: Set-PublicFolder. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
ageLimit body
eformsLocaleId body
hiddenFromAddressListsEnabled body
issueWarningQuota body
mailEnabled body
mailRecipientGuid body
maxItemSize body
name body
path body
perUserReadStateEnabled body
prohibitPostQuota body
retainDeletedItemsFor body
force query bool (switch)
dryRun query bool (switch)

Updates an existing public folder via Set-PublicFolder. Body fields map to the cmdlet’s writable parameters; renames are supported via name with rename-aware re-fetch.

PATCH /exchange/v1.0/publicFolders/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"hiddenFromAddressListsEnabled": true,
"maxItemSize": "10 MB",
"perUserReadStateEnabled": true
}
HTTP/1.1 200 OK
{
"Identity": "\\Engineering\\exonaut-sample-publicFolders",
"Name": "exonaut-sample-publicFolders",
"HiddenFromAddressListsEnabled": true,
"MaxItemSize": "10 MB (10,485,760 bytes)",
"PerUserReadStateEnabled": true
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

Remove the publicFolders at /publicFolders/{key}. Returns 204 with no body.

Backing cmdlet: Remove-PublicFolder. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
recurse query bool (switch)
mailbox query string Optional: scope the removal to a specific public folder mailbox server-side (Remove-PublicFolder -Mailbox). Any value uniquely identifying the PF mailbox (Name/Alias/UPN/GUID).
dryRun query bool (switch)

Removes a public folder via Remove-PublicFolder. Use ?recurse=true to delete a folder together with its child folders. Returns 204 with no body.

DELETE /exchange/v1.0/publicFolders/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

GET /exchange/v1.0/publicFolders/{key}/clientPermissions

Section titled “GET /exchange/v1.0/publicFolders/{key}/clientPermissions”

GET /publicFolders/{key}/clientPermissions - Get-PublicFolderClientPermission. Returns the full ACE list; each row has Identity, User, AccessRights.

Backing cmdlet: Get-PublicFolderClientPermission. Role: PublicFolder.Read (Community).

Parameter In Type Required Description
user query string Optional: filter the ACE list to a single trustee server-side (Get-PublicFolderClientPermission -User). UPN (user@contoso.com) or Domain\SamAccountName.
mailbox query string Optional: read permissions from a specific public folder mailbox instead of the primary one (Get-PublicFolderClientPermission -Mailbox). Any value uniquely identifying the PF mailbox (Name/Alias/UPN/GUID).

POST /exchange/v1.0/publicFolders/{key}/clientPermissions

Section titled “POST /exchange/v1.0/publicFolders/{key}/clientPermissions”

POST /publicFolders/{key}/clientPermissions - adds a client ACE via Add-PublicFolderClientPermission. Returns 201 Created + Location on the composite ID “{folderIdentity}|{user}|{accessRights}” (same shape GET /clientPermissions emits).

Backing cmdlet: Add-PublicFolderClientPermission. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
user body string yes
accessRights body array yes
dryRun query bool (switch)

Add a client permission to a public folder

Section titled “Add a client permission to a public folder”

Sub-resource of the public folder at GET /publicFolders/{key} - adds a client ACE via Add-PublicFolderClientPermission. Requires user and accessRights. Returns 201 + Location on the composite ID ‘{folderIdentity}|{user}|{accessRights}’.

POST /exchange/v1.0/publicFolders/{key}/clientPermissions HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"user": "user@contoso.com",
"accessRights": [
"Editor"
]
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/publicFolders/%5CEngineering%5Cexonaut-sample-publicFolders/clientPermissions/%5CEngineering%5Cexonaut-sample-publicFolders%7Cuser%40contoso.com%7CEditor
{
"id": "\\Engineering\\exonaut-sample-publicFolders|user@contoso.com|Editor",
"identity": "\\Engineering\\exonaut-sample-publicFolders",
"user": "user@contoso.com",
"accessRights": [
"Editor"
]
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders, GET /exchange/v1.0/publicFolders/{key}/clientPermissions, DELETE /exchange/v1.0/publicFolders/{key}/clientPermissions/{permissionId}

DELETE /exchange/v1.0/publicFolders/{key}/clientPermissions/{permissionId}

Section titled “DELETE /exchange/v1.0/publicFolders/{key}/clientPermissions/{permissionId}”

DELETE /publicFolders/{key}/clientPermissions/{permissionId} - removes a client ACE by composite ID (“{folderIdentity}|{user}|{accessRights}”). URL {key} is authoritative for the folder identity; the prefix in the composite ID is informational.

Backing cmdlet: Remove-PublicFolderClientPermission. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Remove a client permission from a public folder

Section titled “Remove a client permission from a public folder”

Sub-resource of GET /publicFolders/{key}/clientPermissions. Sub-resource of the public folder at GET /publicFolders/{key} - removes a client ACE by composite ID ‘{folderIdentity}|{user}|{accessRights}’ via Remove-PublicFolderClientPermission. Returns 204 with no body.

DELETE /exchange/v1.0/publicFolders/{key}/clientPermissions/{permissionId} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders, GET /exchange/v1.0/publicFolders/{key}/clientPermissions, POST /exchange/v1.0/publicFolders/{key}/clientPermissions

POST /exchange/v1.0/publicFolders/{key}/disableMail

Section titled “POST /exchange/v1.0/publicFolders/{key}/disableMail”

POST /publicFolders/{key}/disableMail - bound action, Disable-MailPublicFolder. Strips the mail-enabled state; the folder hierarchy stays.

Backing cmdlet: Disable-MailPublicFolder. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
dryRun query bool (switch)

Sub-resource of the public folder at GET /publicFolders/{key} - strips the mail-enabled state via Disable-MailPublicFolder. The folder hierarchy stays intact. Returns 204.

POST /exchange/v1.0/publicFolders/{key}/disableMail HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

POST /exchange/v1.0/publicFolders/{key}/enableMail

Section titled “POST /exchange/v1.0/publicFolders/{key}/enableMail”

POST /publicFolders/{key}/enableMail - bound action, Enable-MailPublicFolder. Caller can pre-hide the folder from address lists via ?hiddenFromAddressListsEnabled=true.

Backing cmdlet: Enable-MailPublicFolder. Role: PublicFolder.ReadWrite (Pro).

Parameter In Type Required Description
hiddenFromAddressListsEnabled query bool (switch)
dryRun query bool (switch)

Sub-resource of the public folder at GET /publicFolders/{key} - mail-enables the folder via Enable-MailPublicFolder. Optionally hide it from address lists with ?hiddenFromAddressListsEnabled=true. Returns 204.

POST /exchange/v1.0/publicFolders/{key}/enableMail?hiddenFromAddressListsEnabled=true HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
HTTP/1.1 204 No Content

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/publicFolders

GET /exchange/v1.0/publicFolders/{key}/statistics

Section titled “GET /exchange/v1.0/publicFolders/{key}/statistics”

GET /publicFolders/{key}/statistics - Get-PublicFolderStatistics. Per-folder size + item count + last-access. Empty when folder is unmapped.

Backing cmdlet: Get-PublicFolderStatistics. Role: PublicFolder.Read (Community).

Parameter In Type Required Description
mailbox query string Optional: scope the lookup to a specific hierarchy public folder mailbox server-side (Get-PublicFolderStatistics -Mailbox). Any value uniquely identifying the PF mailbox (Name/Alias/UPN/GUID).

?dryRun=true previews of any write stay on Community.