Skip to content

vivaModuleFeaturePolicies

Viva Feature Policies. Enable or disable Viva module features for users and groups. The vivaModuleFeaturePolicies entity set lives under /exchange/v1.0/vivaModuleFeaturePolicies in the Organization category.

Fact Value
Path /exchange/v1.0/vivaModuleFeaturePolicies
Category Organization
Tier Tier 9, Hybrid and organization
Read role OrganizationConfig.Read.All (Community)
Write role OrganizationConfig.ReadWrite.All (Enterprise)
Backing cmdlets Get-VivaModuleFeaturePolicy, Add-VivaModuleFeaturePolicy, Update-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy
Method Path Synopsis Role Plan
GET /exchange/v1.0/vivaModuleFeaturePolicies GET /vivaModuleFeaturePolicies?moduleId=<name>&featureId=<name> - list policies for a feature. Block 5 live-verify 2026-05-28: moduleId is REQUIRED at runtime. OrganizationConfig.Read Community
POST /exchange/v1.0/vivaModuleFeaturePolicies POST /vivaModuleFeaturePolicies - create a feature access policy via Add-VivaModuleFeaturePolicy. Required: name + moduleId + featureId + isFeatureEnabled. Scope by Everyone / GroupIds / UserIds. Returns 204 (the cmdlet’s pipeline output is not re-fetchable by a stable key, so we don’t return the entity). OrganizationConfig.ReadWrite Enterprise
PATCH /exchange/v1.0/vivaModuleFeaturePolicies/{key} PATCH /vivaModuleFeaturePolicies/{policyId} - update a feature access policy via Update-VivaModuleFeaturePolicy. Required body fields: moduleId + featureId (composite key with URL policyId). Returns 204. OrganizationConfig.ReadWrite Enterprise
DELETE /exchange/v1.0/vivaModuleFeaturePolicies/{key} DELETE /vivaModuleFeaturePolicies/{policyId} - remove a policy via Remove-VivaModuleFeaturePolicy. Required query: ?moduleId=&featureId= (composite key with URL policyId). Returns 204. OrganizationConfig.ReadWrite Enterprise

GET /exchange/v1.0/vivaModuleFeaturePolicies

Section titled “GET /exchange/v1.0/vivaModuleFeaturePolicies”

GET /vivaModuleFeaturePolicies?moduleId=<name>&featureId=<name> - list policies for a feature. Block 5 live-verify 2026-05-28: moduleId is REQUIRED at runtime.

Backing cmdlet: Get-VivaModuleFeaturePolicy. Role: OrganizationConfig.Read (Community).

Parameter In Type Required Description
moduleId query string REQUIRED: Viva module id.
featureId query string Optional: feature id within the module - narrows the result set.
memberIds query string Optional: comma-separated user/group ids (max 3, ‘*’ wildcard supported) to find which policies apply to them (Get-VivaModuleFeaturePolicy -MemberIds, FeaturePolicyWithMembers parameter set).
all query bool (switch) Return all results instead of the EXO default of 1000. Maps -ResultSize Unlimited on Get-VivaModuleFeaturePolicy; prevents silent truncation.

POST /exchange/v1.0/vivaModuleFeaturePolicies

Section titled “POST /exchange/v1.0/vivaModuleFeaturePolicies”

POST /vivaModuleFeaturePolicies - create a feature access policy via Add-VivaModuleFeaturePolicy. Required: name + moduleId + featureId + isFeatureEnabled. Scope by Everyone / GroupIds / UserIds. Returns 204 (the cmdlet’s pipeline output is not re-fetchable by a stable key, so we don’t return the entity).

Backing cmdlet: Add-VivaModuleFeaturePolicy. Role: OrganizationConfig.ReadWrite (Enterprise).

Parameter In Type Required Description
featureId body yes
isFeatureEnabled body yes
moduleId body yes
name body yes
everyone body boolean (switch)
groupIds body
isUserControlEnabled body
isUserOptedInByDefault body
userIds body
dryRun query bool (switch)

Create a Viva feature access policy via Add-VivaModuleFeaturePolicy. Note the Viva surface uses Add/Update/Remove verbs (not the standard New/Set/Remove). Required body fields: name + moduleId + featureId + isFeatureEnabled. Scope the policy via the Everyone switch or a group/user list (groupIds + userIds - mutually exclusive with Everyone). The composite key is (moduleId, featureId, policyId); PATCH/DELETE later requires moduleId + featureId alongside the policyId in the URL.

POST /exchange/v1.0/vivaModuleFeaturePolicies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "Finance-Disable-Reflection",
"moduleId": "VivaInsights",
"featureId": "Reflection",
"isFeatureEnabled": false,
"groupIds": [
"finance-team@contoso.com"
],
"isUserControlEnabled": false
}
HTTP/1.1 204 No Content

Related: GET /exchange/v1.0/vivaModuleFeaturePolicies?moduleId=VivaInsights&featureId=Reflection, PATCH /exchange/v1.0/vivaModuleFeaturePolicies/{policyId}, DELETE /exchange/v1.0/vivaModuleFeaturePolicies/{policyId}?moduleId=&featureId=, GET /exchange/v1.0/vivaModuleFeatures

PATCH /exchange/v1.0/vivaModuleFeaturePolicies/{key}

Section titled “PATCH /exchange/v1.0/vivaModuleFeaturePolicies/{key}”

PATCH /vivaModuleFeaturePolicies/{policyId} - update a feature access policy via Update-VivaModuleFeaturePolicy. Required body fields: moduleId + featureId (composite key with URL policyId). Returns 204.

Backing cmdlet: Update-VivaModuleFeaturePolicy. Role: OrganizationConfig.ReadWrite (Enterprise).

Parameter In Type Required Description
featureId body yes
moduleId body yes
everyone body
groupIds body
isFeatureEnabled body
isUserControlEnabled body
isUserOptedInByDefault body
name body
userIds body
dryRun query bool (switch)

Updates an existing per-feature access policy via Update-VivaModuleFeaturePolicy. The URL {key} is the PolicyId; moduleId + featureId in the body form the composite key, and the remaining fields adjust enablement and scope. Returns 204 No Content.

PATCH /exchange/v1.0/vivaModuleFeaturePolicies/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"moduleId": "VivaInsights",
"featureId": "Reflection",
"isFeatureEnabled": false,
"name": "exonaut-sample-vivaModuleFeaturePolicies"
}
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/vivaModuleFeaturePolicies

DELETE /exchange/v1.0/vivaModuleFeaturePolicies/{key}

Section titled “DELETE /exchange/v1.0/vivaModuleFeaturePolicies/{key}”

DELETE /vivaModuleFeaturePolicies/{policyId} - remove a policy via Remove-VivaModuleFeaturePolicy. Required query: ?moduleId=&featureId= (composite key with URL policyId). Returns 204.

Backing cmdlet: Remove-VivaModuleFeaturePolicy. Role: OrganizationConfig.ReadWrite (Enterprise).

Parameter In Type Required Description
moduleId query string Required: Viva module id (composite key part).
featureId query string Required: feature id within the module (composite key part).
dryRun query bool (switch)

Removes a per-feature access policy via Remove-VivaModuleFeaturePolicy. The URL {key} is the PolicyId; the required moduleId + featureId query params complete the composite key. Returns 204 No Content.

DELETE /exchange/v1.0/vivaModuleFeaturePolicies/{key}?moduleId=VivaInsights&featureId=Reflection 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/vivaModuleFeaturePolicies

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