Download OpenAPI specification:
The Access Manager API allows external software products to control functionality of Access Manager (AM).
The API is accessible via HTTP(S)
and uses JSON (content type application/json)
as the data format for both requests and responses.
All paths in the API start with /api/v1.
Example URL: https://example.com/api/v1/locations
Special characters in query parameters must be encoded if necessary.
In some cases it may be necessary to replace a blank character with %20,
a backslash \ with %5C and the forward slash / with %2F.
For example, \\server\name\share name\folder name
becomes %5C%5Cserver%20name%5Cshare%20name%5Cfolder%20name.
Most actions that can be performed using the API can also be performed via the AM web frontend. However, input data is validated less strictly by the API than it is by the web frontend, which means that a request causing a validation error in the web frontend could still be valid for the API.
Throughout the AM API, artificial IDs, generated by the system, are used to identify resources. A resource ID returned by the API will remain valid as long as the resource exists but may become invalid if certain aspects of the resource (e.g., its name) change. Additionally, it is not guaranteed that resource IDs remain compatible over several versions of AM.
Error messages provided by the AM API are only informational.
The API can only be accessed by authenticated users who must have been assigned the role API User. User roles can be assigned or updated under Administrator / Settings / System Roles.
Authentication is always performed against Active Directory. A technical service account should be created in order to access the API.
The available authentication methods depend on the IIS server configuration. The following methods have been tested to work:
The used method depends on the client's capabilities and operating system. Basic Authentication guarantees maximum compatibility, but make sure to use a TLS-secured connection because credentials are transmitted in clear text otherwise.
Token-based authentication mechanisms are currently not supported.
You can use any HTTP/REST client to access the API.
The following examples use the PowerShell cmdlet Invoke-RestMethod.
Get all folders that are visible in the AM Self Service Portal. Note that the current user's credentials are used to access the API via Windows Authentication.
$url = 'https://example.com/api/v1/locations'
$queryParams = @{
module = 'FolderManagement'
onlyVisibleInSsp = $true
}
Invoke-RestMethod -Method Get -Uri $url -Body $queryParams -UseDefaultCredentials
Create a new resource group.
$url = 'https://example.com/api/v1/locations'
$body = @{
module = 'FolderManagement'
type = 'ResourceGroup'
location = 'New Example Resource Group'
}
Invoke-RestMethod -Method Post -Uri $url -Body (ConvertTo-Json $body) -ContentType application/json -UseDefaultCredentials
The following chapters describe all resources provided by the Access Manager API and their applicable methods.
The following modules of Access Manager are relevant:
FolderManagement)SharePoint)ThirdParty)Profile)Dependent on the module, some parameters can only have values as shown in the table below.
module |
location |
permission |
|---|---|---|
FolderManagement |
Full UNC directory path (e.g., \\server\share\folder) |
read, write |
SharePoint |
URL (e.g., https://example.com/site) | read, write, design |
ThirdParty |
Item Collection/Item (e.g., Printers/Inkjet) | See Locations API permission-set |
Profile |
Profile name (e.g., Marketing) | profilemembership |
In addition to the possible error responses described in each of the following chapters, every API method can return the error response 400 Bad Request. This response indicates that the request was malformed and should not be repeated without modifications. Possible reasons for a 400 response include:
module had a value other than FolderManagement, SharePoint, ThirdParty or ProfileWith the resource AgentGroups, information about agent groups can be requested.
It can be accessed by the path /agent-groups.
[- {
- "name": "string",
- "description": "string",
- "assigned_agents": [
- {
- "name": "string",
- "last_config_update": "2026-12-31",
- "status": "IsUnassigned"
}
], - "assigned_locations": [
- {
- "type": "ResourceGroup",
- "module": "FolderManagement",
- "location": "string",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true
}
]
}
]With the resource Locations,
different kinds of information about locations like folders and sites can be requested.
It can be accessed by the path /locations.
Each AM module supports different types of locations. The following types are supported:
module |
type |
subtypes |
Example location |
Description |
|---|---|---|---|---|
FolderManagement |
ResourceGroup |
Server | Can, but does not have to, represent a fileserver | |
FolderCollection |
\\server\share | Can, but does not have to, represent a network share on a fileserver | ||
ManagedFolderCollection |
\\server\share | Can, but does not have to, represent a network share on a fileserver whose access permissions are being managed by AM | ||
Folder |
\\server\share\folder | A filesystem folder below a network share on a fileserver | ||
RightsFolder |
\\server\share\folder | A folder whose access permissions are being managed by AM | ||
SharePoint |
SiteCollection |
https://example.com | A web site collection on a SharePoint server | |
ManagedSiteCollection |
https://example.com | A web site collection whose access permissions are being managed by AM | ||
Site |
https://example.com/site | A web site below a web site collection on a SharePoint server | ||
ManagedSite |
https://example.com/site | A web site whose access permissions are being managed by AM | ||
ThirdParty |
ThirdPartyItemCollection |
[ActiveDirectoryItemCollection] |
Printers | A collection of 3rd party items backed by Active Directory groups |
[MsTeamsItemCollection] |
Teams Collection | A collection of 3rd party items backed by Microsoft Teams | ||
[SharePointItemCollection] |
Site Collection | A collection of 3rd party items backed by Microsoft SharePoint | ||
[ExchangeOnlineItemCollection] |
Mailboxes | A collection of 3rd party items backed by Microsoft Exchange Online | ||
ThirdPartyItem |
[ActiveDirectoryItem] |
Printers/Inkjet | A 3rd party item backed by Active Directory groups whose Active Directory group memberships are being managed by AM | |
[MsTeamsItem, MsTeamsTeam] |
Teams Collection/Marketing Team | A 3rd party item backed by Microsoft Teams whose Team memberships are being managed by AM | ||
[SharePointItem, SharePointSite, SharePointTeamSiteMs365Group] |
Site Collection/Marketing Team Site | A 3rd party item backed by a Microsoft SharePoint Team Site with a Microsoft 365 Group whose permissions are being managed by AM | ||
[SharePointItem, SharePointSite, SharePointTeamSiteSpGroups] |
Site Collection/Other Team Site | A 3rd party item backed by a Microsoft SharePoint Team Site with SharePoint Groups whose permissions are being managed by AM | ||
[SharePointItem, SharePointSite, SharePointCommunicationSite] |
Site Collection/Public Marketing Site | A 3rd party item backed by a Microsoft SharePoint Communication Site whose permissions are being managed by AM | ||
[ExchangeOnlineItem, ExchangeOnlineSharedMailbox] |
Mailboxes/Marketing | A 3rd party item backed by a Microsoft Exchange Online Shared Mailbox whose permissions are being managed by AM | ||
Profile |
UserProfile |
Marketing | A user profile within Access Manager with no responsibles assigned | |
ManagedUserProfile |
Marketing | A user profile within Access Manager with at least one responsible assigned | ||
OrgProfile |
Marketing | An organizational profile within Access Manager |
Gets a possibly filtered list of all locations known to AM.
The list can optionally be filtered using a combination of query parameters. Omitted filters are not applied. The following query parameters are supported:
module: If set, only locations of the given module are returned. Required, if location is set.
onlyVisibleInSsp: If set to true, only locations that are visible in the AM Self Service Portal (SSP) are returned.
Setting this filter to false has the same effect as omitting it:
all locations are returned regardless of their visibility in the SSP.
This filter is ignored if location is set.
location: Load only the given location. If set, module must also be specified and onlyVisibleInSsp is ignored.
A successful request will return a (possibly empty) unordered list of location objects.
Each location object contains a system generated location identifier (id),
a module,
a location (e.g., folder path or site URL),
a type (e.g., RightsFolder or ManagedSite) and
the fields requests_enabled and
supplementary_permissions.
requests_enabled is only set for locations of type RightsFolder, ManagedFolderCollection, ManagedSite or ManagedSiteCollection.
On location object of other types, it will always be null.
requests_enabled indicates, whether permissions on this location can be requested using the SSP.
It has no impact on the request API resource.
As modules like ThirdParty and Profile are not explicitly supported,
possibility of being requestable can be decided by their SSP visibility (see above):
if a resource object is not visible in SSP, you may judge this as not requestable – even though it is possible via this API function.
supplementary_permissions indicates whether the locations logic to grant permissions is set to "Supplementary Permissions" or "Exclusive Permissions".
false in this case means the locations logic to grant permissions is set to "Exclusive-Permissions" which is the default for all types.
The only type that supports "Supplementary Permissions" is 3rd party item (ThirdPartyItem).
| Module | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Example: Module=FolderManagement If set, only locations of the given module are returned. Required, if |
| OnlyVisibleInSsp | boolean Example: OnlyVisibleInSsp=true If set to |
| Location | string Example: Location=\\server\share\folder or http://host/path or ItemCollectionName/ItemName or ProfileName Load only the given |
[- {
- "type": "ResourceGroup",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true,
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}
]Adds a new location.
The required format of the request model varies based on the location type:
ResourceGroup:
{
"type": "ResourceGroup",
"module": "FolderManagement",
"location": "ResourceGroupName",
"description": "string",
"self_service_description": "string"
}
FolderCollection:
{
"type": "FolderCollection",
"module": "FolderManagement",
"location": "\\\\server\\share\\folder",
"resource_group_id": "Zm0tcmdpZC0x",
"display_name": "string",
"description": "string",
"self_service_description": "string",
"enable_rights_management": true,
"agent_group_name": "Default",
"domain_mode": "MultiDomain",
"organizational_unit": "OU=ou,DC=domain,DC=tld",
"local_ad_group_naming_pattern": "lg_{0}_{1:00000000}_{2}",
"global_ad_group_naming_pattern": "gg_{0}_{1:00000000}_{2}",
"admin_group": "DOMAIN\\group.name",
"browse_group": "DOMAIN\\group.name",
"enable_access_groups": true,
"enable_new_folder_requests_on_folder_collection": true,
"deviation_strategy": "IdentifyAndCorrect",
"always_take_ownership": false,
"audit_ownership_changes": false,
"enable_realtime_permissions": true
}
If any other location type is provided, the API will respond with a 400 Bad Request response.
The model of the to-be-created location.
| type required | string (LocationType) |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location required | string Can be a resource group name, UNC path, URL, 3rd-Party-Item-Collection name, 3rd-Party-Item location or profile name, depending on |
| description | string or null |
| self_service_description | string or null |
{- "type": "ResourceGroup",
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}{- "type": "ResourceGroup",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true,
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}Returns details of the location identified by the provided locationId.
This requires an HTTP GET query including the locationId is sent to /locations.
| locationId required | string System generated location id. |
{- "type": "ResourceGroup",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true,
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}Removes the location identified by the provided locationId.
This requires an HTTP DELETE query including the locationId is sent to /locations.
Only locations of type ResourceGroup, ManagedFolderCollection and FolderCollection support deletion.
If any other location type is provided, the API will respond with a 400 Bad Request response.
| locationId required | string System generated location id. |
| type required | string (LocationType) Enum: "ResourceGroup" "FolderCollection" "ManagedFolderCollection" "Folder" "RightsFolder" "SiteCollection" "ManagedSiteCollection" "Site" "ManagedSite" "ThirdPartyItemCollection" "ThirdPartyItem" "UserProfile" "ManagedUserProfile" "OrgProfile" |
{- "type": "ResourceGroup"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Updates the properties of the particular location.
The location must already exist in the system.
It cannot be used to create a new location.
the JSON object is required to contain the type of the location to update and additional required properties in the request body.
The locationId is required to be passed in the URL.
The type of the location cannot be changed.
If any property is null or not provided in the request,
it will be removed from AM.
The required format of the request model varies based on the location type:
ResourceGroup:
{
"type": "ResourceGroup",
"location": "ResourceGroupName",
"description": "string",
"self_service_description": "string"
}
FolderCollection or ManagedFolderCollection:
{
"type": "FolderCollection",
"display_name": "string",
"description": "string",
"self_service_description": "string",
"enable_rights_management": true,
"agent_group_name": "Default",
"domain_mode": "MultiDomain",
"organizational_unit": "OU=ou,DC=domain,DC=tld",
"local_ad_group_naming_pattern": "lg_{0}_{1:00000000}_{2}",
"global_ad_group_naming_pattern": "gg_{0}_{1:00000000}_{2}",
"admin_group": "DOMAIN\\group.name",
"browse_group": "DOMAIN\\group.name",
"enable_access_groups": true,
"enable_new_folder_requests_on_folder_collection": true,
"deviation_strategy": "IdentifyAndCorrect",
"always_take_ownership": false,
"audit_ownership_changes": false,
"enable_realtime_permissions": true
}
If any other location type is provided, the API will respond with a 400 Bad Request response.
| locationId required | string System generated location id. |
The model of the to-be-updated location.
| type required | string (LocationType) |
| location required | string |
| description | string or null |
| self_service_description | string or null |
{- "type": "ResourceGroup"
}{- "type": "ResourceGroup",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true,
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}Gets the owners of the location identified by the provided locationId.
This requires an HTTP GET query including the locationId is sent to /locations and the part /owners behind the id.
Only locations of type FolderCollection, ManagedFolderCollection, Folder, RightsFolder, SiteCollection, ManagedSiteCollection, Site, ManagedSite and ThirdPartyItem support owners.
If the provided locationId belongs to a ResourceGroup, a ThirdPartyItemCollection, a UserProfile, a ManagedUserProfile, or an OrgProfile, the API will respond with a 400 Bad Request response.
| locationId required | string System generated location id. |
[- {
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "location_id": "Zm0tZl9pZC00Mg",
- "user_id": "DOMAIN\\account.name"
}
]Replaces the owners of the location identified by locationId with the provided list of owners.
Only locations of type FolderCollection, ManagedFolderCollection, Folder, RightsFolder, SiteCollection, ManagedSiteCollection, Site, ManagedSite and ThirdPartyItem support owners.
If the provided locationId belongs to a ResourceGroup, a ThirdPartyItemCollection, a UserProfile, a ManagedUserProfile, or an OrgProfile, the API will respond with a 400 Bad Request response.
If the location is managed, i.e. it is a ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, or ThirdPartyItem,
the provided list of owners must contain at least one entry.
Otherwise, the API will respond with a 409 Conflict response.
| locationId required | string System generated location id. |
The model of the to-be-set location owners.
| user_id required | string Active directory user |
[- {
- "user_id": "DOMAIN\\account.name"
}
][- {
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "location_id": "Zm0tZl9pZC00Mg",
- "user_id": "DOMAIN\\account.name"
}
]Gets the responsibles of the location identified by the provided locationId.
Only locations of type ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem, UserProfile, ManagedUserProfile and OrgProfile support responsibles.
If the provided locationId belongs to a FolderCollection, a Folder, a SiteCollection or a Site, the API will respond with a 409 Conflict response.
If it belongs to any other location type, the API will respond with a 400 Bad Request response.
| locationId required | string System generated location id. |
[- {
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "location_id": "Zm0tZl9pZC00Mg",
- "user_id": "DOMAIN\\account.name"
}
]Replaces the responsibles of the location identified by locationId with the provided list of responsibles.
Only locations of type ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem, UserProfile, ManagedUserProfile and OrgProfile support responsibles.
If the provided locationId belongs to a FolderCollection, a Folder, a SiteCollection or a Site, the API will respond with a 409 Conflict response.
If it belongs to any other location type, the API will respond with a 400 Bad Request response.
Unless the location is a UserProfile, ManagedUserProfile or OrgProfile,
the provided list of responsibles must contain at least one entry.
Otherwise, the API will respond with a 409 Conflict response.
If the location is a UserProfile and has a member synchronization group configured,
the API will respond with a 409 Conflict response.
| locationId required | string System generated location id. |
The model of the to-be-set location responsibles.
| user_id required | string Active directory user |
[- {
- "user_id": "DOMAIN\\account.name"
}
][- {
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "location_id": "Zm0tZl9pZC00Mg",
- "user_id": "DOMAIN\\account.name"
}
]Gets the effective permissions on the location identified by the provided locationId.
Only locations of type ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem, UserProfile, ManagedUserProfile and OrgProfile support effective permissions.
If the provided locationId belongs to a FolderCollection, a Folder, a SiteCollection, or a Site, the API will respond with a 409 Conflict response.
If it belongs to any other location type, the API will respond with a 400 Bad Request response.
This method only returns effective permissions on the location.
To get direct permissions, use permissions Get API.
Note that profiles only have direct members, so effective and direct permissions should be identical.
Since they have AM users as members, their target_system_account_name field will always be null.
| locationId required | string System generated location id. |
[- {
- "permission": "read or write or design or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "origin": "string",
- "target_system_account_name": "string",
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "location_id": "Zm0tZl9pZC00Mg",
- "user_id": "DOMAIN\\account.name"
}
]Gets the permission set on the location identified by the provided locationId.
The permissions in this set are those that must be used when working with permissions on this location.
For example, when creating a permission assign request.
Only locations of type ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem, UserProfile, ManagedUserProfile and OrgProfile have a permission set.
| locationId required | string System generated location id. |
[- {
- "permission": "read or write or design or profilemembership",
- "display_names": {
- "en": "Read",
- "de": "Lesen"
}, - "default": true
}
]With the resource ManagedLocations,
clients can create or remove locations whose permission are managed by Access Manager.
It can be accessed by the path /managed-locations.
This resource allows for applying and removing the AM management of resources. For actual management of those resources, please refer to the Locations and Permissions APIs.
Removes the location identified by the provided locationId.
Only locations of type RightsFolder, ManagedSite, ManagedFolderCollection, ManagedSiteCollection and ThirdPartyItem support removal of permission management.
If the provided locationId is not managed, the API will respond with a 404 Not Found response.
If it belongs to any unsupported location type, the API will respond with a 400 Bad Request response.
mode must be one of RetainGroupRemoveMembers, RetainGroupKeepMembers, DeleteAccessManagerGroups or DeleteInTargetSystem, where
DeleteAccessManagerGroups is only supported by RightsFolder, ManagedSite, ManagedFolderCollection and ManagedSiteCollection and
RetainGroupRemoveMembers and DeleteInTargetSystem are only supported by ThirdPartyItem.
If the mode is not supported by the location type, the API will respond with a 400 Bad Request response.
| locationId required | string System generated location id. |
| mode required | string (RemovePermissionManagementMode) Enum: "RetainGroupRemoveMembers" "RetainGroupKeepMembers" "DeleteAccessManagerGroups" "DeleteInTargetSystem" The mode with which the permission management is removed. |
{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Adds a new managed location.
The required format of the request model varies based on the location type:
OrgProfile:
{
"type": "OrgProfile",
"module": "Profile",
"location": "ProfileName",
"cluster_path": "/",
"description": "Description",
"self_service_description": "Self Service Description",
"responsible_account_names": ["DOMAIN\\john.doe", "DOMAIN\\jane.doe"],
}
UserProfile:
{
"type": "UserProfile",
"module": "Profile",
"location": "ProfileName",
"cluster_path": "/",
"description": "Description",
"self_service_description": "Self Service Description",
"responsible_account_names": ["DOMAIN\\john.doe", "DOMAIN\\jane.doe"],
"member_sync_group_name": "DOMAIN\\group.name",
"use_profile_permission_groups": false,
"self_service_enabled": true
}
RightsFolder:
{
"type": "RightsFolder",
"module": "FolderManagement",
"location": "\\\\server\\share\\folder",
"container_id": "Zm0tZl9pZC0x",
"owner_account_names": ["DOMAIN\\john.doe", "DOMAIN\\jane.doe"],
"responsible_account_names": ["DOMAIN\\john.doe", "DOMAIN\\jane.doe"],
"self_service_enabled": true,
"data_protection_classification_name": "topSecret",
"inherit_rights": true
}
The model of the to-be-created managed location.
| responsible_account_names required | Array of strings |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location required | string Can be a resource group name, UNC path, URL, 3rd-Party-Item-Collection name, 3rd-Party-Item location or profile name, depending on |
| type required | string (LocationType) Enum: "ResourceGroup" "FolderCollection" "ManagedFolderCollection" "Folder" "RightsFolder" "SiteCollection" "ManagedSiteCollection" "Site" "ManagedSite" "ThirdPartyItemCollection" "ThirdPartyItem" "UserProfile" "ManagedUserProfile" "OrgProfile" |
{- "responsible_account_names": [
- "string"
], - "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName",
- "type": "ResourceGroup"
}{- "type": "ResourceGroup",
- "id": "Zm0tZl9pZC00Mg",
- "requests_enabled": true,
- "supplementary_permissions": true,
- "module": "FolderManagement",
- "location": "ResourceGroupName or \\\\server\\share\\folder or http://host/path or ItemCollectionName or ItemCollectionName/ItemName or ProfileName"
}With the resource Permissions, access rights or permissions for supported locations can be managed.
It can be accessed by the path /permissions.
The JSON representation of a permission object is defined below:
Permission Request:
{
"module": "FolderManagement or SharePoint or ThirdParty or Profile",
"location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
"subject_type": "User or Profile",
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or UserProfileName",
"permission": "read or write or design or owner or member or visitor or profilemembership", // See permission set of location
"valid_from": "YYYY-MM-DD", // optional date
"valid_through": "YYYY-MM-DD" // optional date
}
Permission Response:
{
"id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ", // System generated permission id
"module": "FolderManagement or SharePoint or ThirdParty or Profile",
"location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
"subject_type": "User or Profile",
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or UserProfileName",
"permission": "read or write or design or owner or member or visitor or profilemembership", // See permission set of location
"valid_from": "YYYY-MM-DD", // optional date
"valid_through": "YYYY-MM-DD" // optional date
}
Gets a list of permissions filtered by user_id or location.
This method only returns individual (direct) permissions or permissions via profiles on a location.
To get the effective permissions on a location, use Locations API effective-permissions.
| module | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Example: module=FolderManagement, SharePoint Can be one or more valid module strings, separated by commas. If omitted, falls back to |
| location | string Example: location=\\server\share\folder or http://host/path or ItemCollectionName/ItemName or ProfileName Either |
| subject_type | string (SubjectType) Enum: "User" "Profile" Can be |
| user_id | string Example: user_id=DOMAIN\account.name or DOMAIN\groupname or ProfileName Either |
| permission | string Example: permission=read or write or design or profilemembership |
| valid_from | string <date> |
| valid_through | string <date> |
[- {
- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
- "subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}
]Adds new privileges to a user or a profile on a certain location.
The request body must be a JSON object containing the module, location, subject_type, user_id, the permission to grant, and optional start (valid_from) and expiration (valid_through) dates.
If the supplied location uses supplementary permissions,
and the supplied user_id already has different permissions on the location,
the supplied permission is added to the user's permissions and
the start (valid_from) and expiration (valid_through) dates are replaced on all of the user's permissions on the location.
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location required | string Must be a UNC path, URL, 3rd-Party-Item location or profile name, depending on |
| subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be an Active Directory user |
| permission required | string See Locations API |
| valid_from | string or null <date> Optional start date, only valid for profile permissions. |
| valid_through | string or null <date> Optional expiration date. |
| comment | string or null Optional permission comment |
{- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
- "subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}{- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
- "subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}Gets the permission details of the provided permissionId.
| permissionId required | string System generated permission id. |
{- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
- "subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}Removes the permission identified by permissionId.
| permissionId required | string System generated permission id. |
| permission | string If the location uses supplementary permissions, the |
| comment | string Optional permission comment |
{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Updates the access rights (permission) or also start (valid_from) and expiry (valid_through) dates of a user or a profile to access a particular location.
The permission must already exist in the system.
It cannot be used to create new permissions.
The request body must be a JSON object containing the permission to update and optional start (valid_from) and expiry (valid_through) dates.
The permissionId must be passed in the URL.
If the start (valid_from) or expiry (valid_through) date is null or not provided in the request, it will be removed from AM.
If the location uses supplementary permissions, the permission parameter must contain the value *.
Only valid_from and valid_through are updated on all permissions of the user on the location.
| permissionId required | string System generated permission id. |
| permission required | string See Locations API |
| valid_from | string or null <date> Optional start date, only valid for profile permissions. |
| valid_through | string or null <date> Optional expiration date. |
| comment | string or null Optional permission comment |
{- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}{- "id": "Zm0tNDItYXUtRE9NQUlOXGFjY291bnQubmFtZQ",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ProfileName",
- "subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string"
}With the resource Requests, different kinds of requests can be managed.
All request types share the common path prefix /requests.
The following sections describe the types of requests that can be managed via the AM API.
Each request type supports different types of locations. Invalid combinations of request types and location types will result in a 409 Conflict error response with the message "Location not found". The Permission Assignment request type also supports requests for membership in a user profile.
| Request type | Supported location types |
|---|---|
| Permission Assignment | ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem, ManagedUserProfile |
| Permission Removal | ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem |
| Permission Update | ThirdPartyItem |
| Responsible Role Assignment | ManagedFolderCollection, RightsFolder, ManagedSiteCollection, ManagedSite, ThirdPartyItem |
| Location Creation | FolderCollection, ManagedFolderCollection, Folder, RightsFolder, SiteCollection, ManagedSiteCollection, Site, ManagedSite |
Adds a new request for a new managed location below a certain managed or unmanaged parent location.
The JSON representation of a new location request object is defined below:
{
"module": "FolderManagement or SharePoint",
"location": "\\\\server\\share\\folder or http://host/path",
"user_subject_type": "User", // Determines the type of user_id. Must always be User.
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname",
"requestor_subject_type": "User", // Determines the type of requestor_id. Must always be User.
"requestor_id": "DOMAIN\\account.name",
"new_location_name": "subfolder or subsite",
"site_template": "STS#0", // only required if module is SharePoint
"permission": "read or write or design", // optional
"comment": "string"
}
If the field permission is omitted,
the user will not be permitted on the new location,
but the location will still be created.
The field site_template is only required if module is SharePoint.
Available site templates can be requested from SharePoint,
e.g. via the REST API like this:
URL: http://{sharepoint-server}/{site-collection}/{site}/_api/web/GetAvailableWebTemplates(lcid=1033,doincludecrosslanguage=true)
Method GET
Query Parameters: $select=Name, $filter=IsHidden eq false and IsRootWebOnly eq false
Example: http://{sharepoint-server}/{site-collection}/{site}/_api/web/GetAvailableWebTemplates(lcid=1033,doincludecrosslanguage=true)?$select=Name&$filter=IsHidden eq false and IsRootWebOnly eq false
| new_location_name required | string The name for the new location. |
| site_template | string or null Only required if module is |
| permission | string or null Must be a valid permission from the permission set of the |
| comment | string or null Optional comment. Can be any text. |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location | string or null Must be a location matching the |
| user_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be the Active Directory user |
| requestor_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| requestor_id required | string Must be the active directory user |
{- "new_location_name": "subfolder or subsite",
- "site_template": "STS#0",
- "permission": "read or write or design",
- "comment": "string",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
- "user_subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "requestor_subject_type": "User",
- "requestor_id": "DOMAIN\\account.name"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Adds a new request for permission assignments on a location (e.g., a folder) and for membership assignment in a user profile.
These requests only work for locations that use the exclusive permission grant logic.
For those locations that use the supplementary permission grant logic,
the "Permission-Update-Request" must be used.
The JSON representation of a permission assignment request object is defined below:
{
"module": "FolderManagement or SharePoint or ThirdParty or Profile",
"location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
"user_subject_type": "User or Profile", // Determines the type of user_id. Can be User or Profile.
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
"requestor_subject_type": "User", // Determines the type of requestor_id. Must always be User.
"requestor_id": "DOMAIN\\account.name",
"permission": "read or write or design or owner or member or visitor or profilemembership", // See permission set of location
"valid_from": "YYYY-MM-DD", // optional date
"valid_through": "YYYY-MM-DD", // optional date
"comment": "string"
}
module must be one of [FolderManagement, SharePoint, ThirdParty, Profile]location must be a location matching the module, or the name of a managed user profile if Profile is selected as module.user_subject_type determines the type of user_id. Can be User or Profile.user_id must be the Active Directory user sAMAccountName or group name with NetBIOS domain name prefix or the Microsoft Entra user principal name or the ProfileName of the user or group or profile that should be granted the permission.requestor_subject_type determines the type of requestor_id. Must always be User.requestor_id must be the Active Directory user sAMAccountName with NetBIOS domain name prefix of the user requesting the permission for the aforementioned user or group.permission must be a valid permission from the permission set of the location (always use the english named value).valid_from is an optional start date. It is only processed if module is Profile. It must be a date before valid_through.valid_through is an optional expiration date. It must be a date in the future.comment is optional and can be any text.| permission required | string Must be a valid permission from the permission set of the |
| valid_from | string or null <date> Optional start date. It is only processed if |
| valid_through | string or null <date> Optional expiration date. It must be a date in the future. |
| comment | string or null Optional comment. Can be any text. |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location | string or null Must be a location matching the |
| user_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be the Active Directory user |
| requestor_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| requestor_id required | string Must be the active directory user |
{- "permission": "read or write or design or owner or member or visitor or profilemembership",
- "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
- "user_subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "requestor_subject_type": "User",
- "requestor_id": "DOMAIN\\account.name"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Adds a new permission removal request for a user on a certain location.
These requests only work for locations that use the exclusive permission grant logic.
For those locations that use the supplementary permission grant logic,
the "Permission-Update-Request" must be used.
The JSON representation of a permission removal request object is defined below:
{
"module": "FolderManagement or SharePoint or ThirdParty",
"location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName",
"user_subject_type": "User", // Determines the type of user_id. Must always be User.
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname",
"requestor_subject_type": "User", // Determines the type of requestor_id. Must always be User.
"requestor_id": "DOMAIN\\account.name",
"comment": "string"
}
| comment | string or null Optional comment. Can be any text. |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location | string or null Must be a location matching the |
| user_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be the Active Directory user |
| requestor_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| requestor_id required | string Must be the active directory user |
{- "comment": "string",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
- "user_subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "requestor_subject_type": "User",
- "requestor_id": "DOMAIN\\account.name"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Adds a new request for permission updates on a 3rd party item that uses the supplementary permission logic.
The JSON representation of a permission update request object is defined below:
{
"module": "ThirdParty",
"location": "ItemCollectionName/ItemName",
"user_subject_type": "User", // Determines the type of user_id. Must always be User.
"user_id": "DOMAIN\\account.name or DOMAIN\\groupname",
"requestor_subject_type": "User", // Determines the type of requestor_id. Must always be User.
"requestor_id": "DOMAIN\\account.name",
"permissions": [
"permission01",
"permission02"
], // See permission set of location
"valid_through": "YYYY-MM-DD", // optional date
"comment": "string"
}
module must be ThirdParty.location must be 3rd party item location (ItemCollectionName/ItemName).user_subject_type determines the type of user_id. Must always be User.user_id must be the active directory user sAMAccountName or group name with NetBIOS domain name prefix of the user or group that should be granted the permission.requestor_subject_type determines the type of requestor_id. Must always be User.requestor_id must be the active directory user sAMAccountName with NetBIOS domain name prefix of the user requesting the permission for the aforementioned user or group.permissions must be an array of valid permission from the permission set of the location or can be an empty array to remove permissions.valid_through is an optional expiration date. It must be a date in the future.comment is optional and can be any text.| permissions required | Array of strings Must be an array of valid permission from the permission set of the |
| valid_from | string or null <date> Optional start date. It is only processed if |
| valid_through | string or null <date> Optional expiration date. It must be a date in the future. |
| comment | string or null Optional comment. Can be any text. |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location | string or null Must be a location matching the |
| user_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be the Active Directory user |
| requestor_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| requestor_id required | string Must be the active directory user |
{- "permissions": [
- "permission01",
- "permission02"
], - "valid_from": "2019-08-24",
- "valid_through": "2019-08-24",
- "comment": "string",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
- "user_subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "requestor_subject_type": "User",
- "requestor_id": "DOMAIN\\account.name"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Adds a new request for the responsible role for a user on a certain location.
The JSON representation of a responsible role assignment request object is defined below:
{
"module": "FolderManagement or SharePoint or ThirdParty",
"location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName",
"user_subject_type": "User", // Determines the type of user_id. Must always be User.
"user_id": "DOMAIN\\account.name",
"requestor_subject_type": "User", // Determines the type of requestor_id. Must always be User.
"requestor_id": "DOMAIN\\account.name",
"comment": "string"
}
| comment | string or null Optional comment. Can be any text. |
| module required | string (TargetType) Enum: "FolderManagement" "SharePoint" "Profile" "ThirdParty" Determines the type of |
| location | string or null Must be a location matching the |
| user_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| user_id required | string Must be the Active Directory user |
| requestor_subject_type | string (SubjectType) Enum: "User" "Profile" Determines the type of |
| requestor_id required | string Must be the active directory user |
{- "comment": "string",
- "module": "FolderManagement",
- "location": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName or ManagedUserProfileName",
- "user_subject_type": "User",
- "user_id": "DOMAIN\\account.name or DOMAIN\\groupname or account.name@domain.tld or ProfileName",
- "requestor_subject_type": "User",
- "requestor_id": "DOMAIN\\account.name"
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}With the resource Scheduler, jobs can be scheduled.
It can be accessed by the path /scheduler.
Schedules a job that renews the access settings.
This method works differently depending on the value of field offset_minutes:
offset_minutes is greater than 0, it schedules the renew access settings job after the input provided time (minutes).offset_minutes is not provided or is equal to 0, it schedules the renew access settings job immediately if it is not already scheduled.The job being scheduled and the required format of path depend on the supplied module:
Supplied module |
Example path |
Job name |
|---|---|---|
FolderManagement |
\\server\share\folder |
MaintainFolderPermissions |
SharePoint |
http://host/path |
MaintainSitePermissions |
ThirdParty |
ItemCollectionName/ItemName |
MaintainItemPermissions |
| offset_minutes | integer <int32> [ 0 .. 2147483647 ] Optional delay in minutes. |
required | object (RenewAccessSettingsDataModel) |
{- "offset_minutes": 10,
- "data": {
- "module": "FolderManagement",
- "path": "\\\\server\\share\\folder or http://host/path or ItemCollectionName/ItemName"
}
}{- "message": "The request is invalid.",
- "model_state": {
- "model_property": [
- "Error description."
]
}
}Provides endpoints for managing and executing custom PowerShell scripts.
The Scripts API allows you to retrieve, schedule, and execute custom PowerShell scripts that have been configured in AccessManager. Scripts can be executed either immediately on the SelfServicePortal or scheduled for later execution on agent groups.
Base Path:/scripts
Execution Options:
• Immediate execution on SelfServicePortal (POST /execute)
• Scheduled execution on agent groups (POST /{scriptId}/execute)
Prerequisites:
• Scripts must be permitted for API execution (i.e., have IsApiExecutionPermitted enabled and not be disabled)
Returns a list of all scripts that are enabled and have API execution permitted. Use this endpoint to discover available scripts and their IDs before executing them.
Example Request:
GET /api/v1/scripts
Example Response:
[
{
"id": 1,
"path": "/reports/",
"name": "Generate-AuditReport",
"description": "Creates an audit report for the specified date range",
"use_windows_power_shell": false
},
{
"id": 2,
"path": "/maintenance/",
"name": "Cleanup-TempFiles",
"description": "Removes temporary files older than 30 days",
"use_windows_power_shell": true
}
]
[- {
- "id": 0,
- "path": "string",
- "name": "string",
- "description": "string",
- "use_windows_power_shell": true
}
]Returns detailed information about a single script. The script must have API execution permitted and must not be disabled.
Example Request:
GET /api/v1/scripts/42
Example Response:
{
"id": 42,
"path": "/automation/",
"name": "Sync-ADGroups",
"description": "Synchronizes Active Directory group memberships",
"use_windows_power_shell": false
}
| scriptId required | integer <int32> The unique identifier of the script to retrieve. |
{- "id": 0,
- "path": "string",
- "name": "string",
- "description": "string",
- "use_windows_power_shell": true
}Identifies the script via the {scriptId} route parameter and then either executes it
directly on the SelfServicePortal or schedules it on an agent group, controlled by
the schedule_on_agent property.
Mode 1: Direct Execution on SelfServicePortal (schedule_on_agent: false, default)
Executes the script synchronously on the SelfServicePortal server and returns the
complete execution result. Returns 200 OK with the execution result.
Mode 2: Scheduled Execution on Agent Group (schedule_on_agent: true)
Schedules the script for execution on an agent group. The execution can be delayed
by specifying offset_minutes. Returns 202 Accepted with no body.
Script Identification:
The script is identified exclusively by the {scriptId} route parameter.
The script_id and path properties in the request body are ignored by this endpoint.
To identify a script by path, use POST /api/v1/scripts/execute instead.
Request Body Properties:
| Property | Type | Required | Description |
|---|---|---|---|
parameters |
Dictionary<string, object>? |
No | Key-value pairs to pass as parameters to the PowerShell script. |
additional_info |
string? |
No | Descriptive text for the execution. Defaults to "API triggered execution" if omitted. |
schedule_on_agent |
bool |
No | If true, schedules execution on an agent group instead of running directly. Defaults to false. |
offset_minutes |
int |
No | Delay in minutes before agent execution. Only used when schedule_on_agent is true. Defaults to 0. |
agent_group_name |
string? |
No | The agent group to execute on. Only used when schedule_on_agent is true. Defaults to the default agent group. |
script_id |
int? |
Ignored | Not used by this endpoint. The script is identified by the route parameter. |
path |
string? |
Ignored | Not used by this endpoint. The script is identified by the route parameter. |
Example: Direct execution
POST /api/v1/scripts/42/execute
{
"parameters": {
"TargetOU": "OU=Users,DC=example,DC=com",
"DryRun": false
}
}
Example: Schedule on agent group (immediate)
POST /api/v1/scripts/42/execute
{
"schedule_on_agent": true,
"parameters": {
"TargetOU": "OU=Users,DC=example,DC=com"
}
}
Example: Schedule on agent group (delayed by 2 hours)
POST /api/v1/scripts/42/execute
{
"schedule_on_agent": true,
"offset_minutes": 120,
"parameters": { "Mode": "Full" },
"additional_info": "Nightly maintenance run",
"agent_group_name": "Maintenance-Agents"
}
Example Response (Direct execution — Success):
{
"script_id": 42,
"name": "Sync-ADGroups",
"description": "Synchronizes Active Directory group memberships",
"use_windows_power_shell": false,
"has_error": false,
"error": null,
"error_records": [],
"ps_object_infos": []
}
Example Response (Scheduled on agent):
HTTP/1.1 202 Accepted
| scriptId required | integer <int32> The unique identifier of the script, provided as a route parameter. |
The execution request containing optional parameters, additional_info,
and scheduling options (schedule_on_agent, offset_minutes, agent_group_name).
The script_id and path properties are ignored; the route parameter is used instead.
| offset_minutes | integer <int32> Optional delay in minutes. |
object Optional parameters to pass to the script. | |
| additional_info | string Optional additional information about the script execution. |
| schedule_on_agent | boolean If set to |
| agent_group_name | string or null Optional agent group name on which the script should be executed. If not provided, the script will be executed on the default agent group. |
{- "offset_minutes": 10,
- "parameters": {
- "param1": "value1",
- "param2": 123
}, - "additional_info": "Manual execution via API",
- "schedule_on_agent": false,
- "agent_group_name": "Default"
}{- "script_id": 0,
- "name": "string",
- "description": "string",
- "use_windows_power_shell": true,
- "has_error": false,
- "error": "string",
- "error_records": [
- {
- "exception_type": "System.Management.Automation.ItemNotFoundException",
- "message": "Cannot find path 'C:\\InvalidPath' because it does not exist.",
- "fully_qualified_error_id": "PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand",
- "category": "ObjectNotFound",
- "script_stack_trace": "at <ScriptBlock>, <No file>: line 5",
- "target_object": "C:\\InvalidPath"
}
], - "ps_object_infos": [
- {
- "property1": null,
- "property2": null
}
]
}This endpoint supports two execution modes controlled by the schedule_on_agent property:
Mode 1: Direct Execution on SelfServicePortal (schedule_on_agent: false, default)
Executes the script synchronously on the SelfServicePortal server and returns the
complete execution result, including any output objects and error information.
Returns 200 OK with the execution result.
Mode 2: Scheduled Execution on Agent Group (schedule_on_agent: true)
Schedules the script for execution on an agent group. The execution can be delayed
by specifying offset_minutes. Returns 202 Accepted with no body.
Script Identification:
The script is identified by path — the full path including the script name, e.g., /automation/Get-Report.
To identify a script by numeric ID instead, use POST /api/v1/scripts/{scriptId}/execute.
Request Body Properties:
| Property | Type | Required | Description |
|---|---|---|---|
path |
string |
Yes | The full script path including name (e.g., /automation/Get-Report). |
parameters |
Dictionary<string, object>? |
No | Key-value pairs to pass as parameters to the PowerShell script. |
additional_info |
string? |
No | Descriptive text for the execution. Defaults to "API triggered execution" if omitted. |
schedule_on_agent |
bool |
No | If true, schedules execution on an agent group instead of running directly. Defaults to false. |
offset_minutes |
int |
No | Delay in minutes before agent execution. Only used when schedule_on_agent is true. Defaults to 0. |
agent_group_name |
string? |
No | The agent group to execute on. Only used when schedule_on_agent is true. Defaults to the default agent group. |
Example: Direct execution by path
POST /api/v1/scripts/execute
{
"path": "/reports/Get-UserStats",
"parameters": {
"Department": "IT"
}
}
Example: Schedule on agent group (delayed by 2 hours)
POST /api/v1/scripts/execute
{
"path": "/automation/Sync-ADGroups",
"schedule_on_agent": true,
"offset_minutes": 120,
"parameters": { "Mode": "Full" },
"additional_info": "Nightly maintenance run",
"agent_group_name": "Maintenance-Agents"
}
Example Response (Direct execution — Success):
{
"script_id": 15,
"name": "Get-UserStats",
"description": "Retrieves user statistics by department",
"use_windows_power_shell": false,
"has_error": false,
"error": null,
"error_records": [],
"ps_object_infos": [
{ "BaseObject": "UserStats", "TotalUsers": 150, "ActiveUsers": 142 }
]
}
Example Response (Scheduled on agent):
HTTP/1.1 202 Accepted
The execution request containing the required path to identify the script,
optional parameters to pass to the script, optional additional_info describing the execution,
and scheduling options (schedule_on_agent, offset_minutes, agent_group_name).
| path required | string non-empty Required full path of the script including the name. |
| offset_minutes | integer <int32> Optional delay in minutes. |
object Optional parameters to pass to the script. | |
| additional_info | string Optional additional information about the script execution. |
| schedule_on_agent | boolean If set to |
| agent_group_name | string or null Optional agent group name on which the script should be executed. If not provided, the script will be executed on the default agent group. |
{- "path": "/automation/Get-UserReport",
- "offset_minutes": 10,
- "parameters": {
- "param1": "value1",
- "param2": 123
}, - "additional_info": "Manual execution via API",
- "schedule_on_agent": false,
- "agent_group_name": "Default"
}{- "script_id": 0,
- "name": "string",
- "description": "string",
- "use_windows_power_shell": true,
- "has_error": false,
- "error": "string",
- "error_records": [
- {
- "exception_type": "System.Management.Automation.ItemNotFoundException",
- "message": "Cannot find path 'C:\\InvalidPath' because it does not exist.",
- "fully_qualified_error_id": "PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand",
- "category": "ObjectNotFound",
- "script_stack_trace": "at <ScriptBlock>, <No file>: line 5",
- "target_object": "C:\\InvalidPath"
}
], - "ps_object_infos": [
- {
- "property1": null,
- "property2": null
}
]
}With the resource TargetSystemAccounts, information sets of Access Manager (AM) Users and their target system accounts (TSAs) can be obtained.
While an AM User is assigned within the Access Manager to resources, profiles and roles, the TSAs are the actual accounts in the target systems (e.g., Active Directory, SharePoint, etc.) that gain the permissions assigned to the AM User.
The user's user_id can be used for other API resources like Permissions,
while the TSAs target_system_account_name can be used outside of the Access Manager.
It consists of the SAM account name for AD accounts, and the UPN for Entra accounts.
Gets a possibly filtered list of all target system accounts known to the AM.
The list can optionally be filtered using a combination of query parameters. Omitted filters are not applied. The following query parameters are supported:
show_out_of_scope: If set to true, even target system accounts that are missing in the target system or have been set out of scope within the User Account Management are returned.
Setting this filter to false has the same effect as omitting it.
account_name: Load only the target system accounts with the given account_name.
user_id: Load only the target system accounts assigned to the given user_id.
A successful request will return a (possibly empty) unordered list of target system account objects.
Each target system account object contains:
a TargetSystemAccountId, an Access Manager internal id,
a TargetSystemAccountName, the login name of the account - the SAM account name for AD accounts, the UPN for Entra accounts,
the Type of the account - either ActiveDirectoryUser, ActiveDirectoryGroup or AzureUser,
the ExpirationDate of the account - can be null if none is set,
a user object, containing its user_id, which holds the assigned AM User's account name,
as well as the fields
out_of_scope, which is set to true for accounts that could no longer be found in their target system or have been removed within the User Account Management (UAM) module,
and enabled, which indicates whether the account is enabled within the target system.
| ShowOutOfScope | boolean Example: ShowOutOfScope=false If set to |
| AccountName | string Example: AccountName=domain\username or username@domain.de Filter the TargetSystemAccounts by their account name. |
| UserId | string Example: UserId=domain\username or username@domain.de Filter the TargetSystemAccounts by the name of their user (within the API, the |
[- {
- "target_system_account_id": 0,
- "target_system_account_name": "string",
- "type": "string",
- "expiration_date": "2026-12-31",
- "out_of_scope": false,
- "enabled": true,
- "user": {
- "user_id": "string"
}
}
]