Skip to main content

Web Services API Reference

RSA G&L 8.0+82 CommandsJSON & XMLBearer Token

The RSA Governance & Lifecycle Web Services API exposes identity governance operations, certification reviews, collections, and administrative tasks as parameterized HTTP commands. Every command executes against a unified endpoint distinguished by the cmd query parameter.

POST / GET https://<instance-host>/aveksa/command.submit?cmd=<command>&format=json

API Modules​

Browse the Web Services API commands organized across 9 functional modules:


High-Level Architecture Flow​


Setup and Quickstart​

Complete the following configuration steps before invoking API commands.

Step 1: Enable Web Services​

Web services are disabled by default. An administrator must enable them before any API call will succeed.

  1. Log in to RSA G&L as an administrator.
  2. Navigate to Admin → Web Services.
  3. Locate Web Services Interface (shows current state: On or Off).
  4. Click Edit, set Web Services Interface to On, and click OK.
Interface Disabled

All API calls to a server with web services disabled return HTTP 403 Unauthorized, regardless of credentials.

Step 2: Configure Client IP Allowlist​

The server validates the source IP address of every inbound request against an allowlist. Requests from unlisted addresses are rejected with HTTP 403.

  1. Navigate to Admin → Web Services.
  2. Under Allowed Addresses, click Add.
  3. Enter the client IP address or CIDR subnet (for example, 192.168.1.50 or 10.0.0.0/24).
  4. Click OK.

Add the IP address of every calling application server or developer machine. Keep this allowlist restricted to authorized systems.

Step 3: Register a Trusted Application​

A Trusted Application authenticates automated background services without requiring interactive user credentials. It is the recommended method for server-to-server integration.

  1. Navigate to Admin → Web Services → Trusted Application.
  2. Click Add.
  3. Enter a descriptive application name and specify the Concurrent Session Limit.
  4. Click OK.
  5. Copy the generated Client ID and Client Secret. The Client Secret is displayed only once.

Store these credentials securely in your password vault.

Session Limit Exceeded

Each call to loginTrustedApp creates a new session. Exceeding the concurrent session limit returns:

Concurrent session limit exceeded for this trusted application

Cache the Bearer token and reuse it across requests. Re-authenticate only when an API call returns HTTP 401.

Step 4: Verify User Permissions​

Permissions enforced on each API call correspond to the user specified in auth-user-id. That user must hold the required privilege for the target command:

Operation TypeRequired PrivilegeExample Commands
Read OperationsView access to the target objectfindUsers, findAccounts, getRunStatus
Change RequestsSystem:RequestAccesscreateChangeRequest, cancelChangeRequest
Approvals & Work ItemsReviewer role or System:ManageperformApproval, performWorkItem
Administrative ActionsSystem:ManagecollectAccounts, processRule, importMetadata

Use a dedicated service account with least-privilege permissions for programmatic integrations.

Step 5: Authenticate and Retrieve Token​

Invoke loginTrustedApp to obtain a Bearer token. Pass the Client ID and Client Secret in request headers.

curl -X POST \
"https://<instance-host>/aveksa/command.submit?cmd=loginTrustedApp&format=json" \
-H "ClientId: <client-id>" \
-H "ClientSecret: <client-secret>" \
-H "Content-Type: application/json"

Example JSON Response:

{
"token": "ta31012485e36e3be2c9:-28aff589:18a2295240d:-7bcd0.529824866054087"
}

Include this token in the Authorization header on all subsequent API requests:

Authorization: Bearer ta31012485e36e3be2c9:-28aff589:18a2295240d:-7bcd0.529824866054087

For interactive user flows, use Login User. Tokens generated by loginUser carry that user's permissions directly, so auth-user-id is not required.


Command Structure​

All requests target the unified command servlet:

https://<instance-host>/aveksa/command.submit?cmd=<command>&format=json&<params>
ParameterRequiredDescription
cmdYesTarget command name (for example, getChangeRequestStatus).
formatNoResponse format: json or xml (default). Use json for programmatic access.
auth-user-idConditionalRequired when using a trusted application token for commands executed on behalf of a user.
tokenNoLegacy token parameter (deprecated). Use the Authorization: Bearer <token> header instead.

Commands creating or modifying resources use POST with an XML or JSON body. Read commands use GET.


Responses and Error Handling​

All commands return standard HTTP status codes:

Status CodeMeaningRecommended Action
200 OKSuccessParse response body.
401 UnauthorizedToken invalid or expiredRe-authenticate via loginTrustedApp and retry with new token.
403 ForbiddenAccess deniedVerify Web Services are enabled and client IP is on the allowlist.
404 Not FoundResource not foundVerify resource identifier or name passed in the request.
409 ConflictConflicting stateInspect active locks or retry with adjusted conflict parameters.
412 Precondition FailedParameter errorCorrect request parameters or payload formatting.
500 Server ErrorExecution failureCheck server logs (aveksaServer.log) and body structure.

Structured Error Responses​

By default, unhandled error responses return an HTML document. Enable CustomizeWebServiceErrorResponse under Admin → Web Services → Settings to receive structured JSON or XML error payloads:

{
"Error": "Password vault profile not found.\n Query String=cmd=notifyVaultPasswordChange&format=json"
}

Output Format Matrix:

CustomizeWebServiceErrorResponseformat parameterSuccess ResponseError Response
truejsonJSONJSON
truexmlXMLXML
truenot providedXMLXML
falsejsonJSONHTML
falsexmlXMLXML

Import Directory Configuration​

Commands that import files require a server-side staging directory to be defined:

  1. Navigate to Admin → Web Services.
  2. Under Import Directory, enter the absolute path to the directory on the RSA G&L server.
  3. Click OK.

Place target import archives in this directory before calling file-based import commands.


Troubleshooting​

HTTP 403 Forbidden on All Requests​

  • Root Cause: Web services interface is disabled globally, or the client IP address is not registered in the trusted allowlist.
  • Resolution:
    1. Navigate to Admin → Web Services and verify Web Services Interface is set to On.
    2. Under Allowed Addresses, verify that the client IP address or CIDR subnet is present in the allowlist.

HTTP 401 Unauthorized Immediately After Login​

  • Root Cause: Invalid Client ID or Client Secret passed in the authentication request.
  • Resolution: Regenerate credentials under Admin → Web Services → Trusted Application and ensure they match the request headers.

Concurrent Session Limit Exceeded​

  • Root Cause: loginTrustedApp was invoked repeatedly without reusing the cached token, exhausting the concurrent session limit.
  • Resolution:
    1. Cache the Bearer token after initial login and reuse it across requests.
    2. Re-authenticate only when an API call returns HTTP 401.

Missing Parameter auth-user-id​

  • Root Cause: A trusted application token was used on a command that acts on behalf of a user, but auth-user-id was omitted from the query string.
  • Resolution: Append &auth-user-id=<userId> to the request URL.

HTTP 412 Precondition Failed with format=json​

  • Root Cause: The invoked command does not support JSON output on your server version (fixed for all commands as of 8.1.0).
  • Resolution: Remove &format=json or set format=xml for legacy commands.

Invalid Attribute Name Error​

  • Root Cause: An attribute name in the request payload does not exist in the server-side configuration schema.
  • Resolution: Inspect aveksa-plug-ins.xml on the RSA G&L server to verify valid attribute definitions.

Empty HTTP 200 Response Body​

  • Root Cause: The operation succeeded, but the specific command returns an empty response payload by design.
  • Resolution: Verify that the HTTP response code is 200 OK. Commands such as cancelChangeRequest do not return payload content on success.

HTTP 403 on Role Commands with Trusted Application Token​

  • Root Cause: Product limitation where backend role management services require an interactive user session token (loginUser) with the Role Administrator capability, returning authorization errors when invoked with a Trusted Application token.
  • Resolution: Obtain a user session token via loginUser using an administrator account, and supply that token in the Authorization: Bearer <token> header for Role commands (createRole, editRole, deleteRole, getRoleVersion, addGroupToRole, removeGroupFromRole, commitRole).

References​

RSA Governance & Lifecycle Documentation

HTTP & Security Standards