Find Change Request Items
Find change request items. The command uses the PV_CHANGE_REQUEST_DETAIL public view to find data. Any filters passed should be passed on this public view.
GET https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems
Request
Parameters
| findChangeRequestItems | |
| format | properties - (Default) Returns the response as key=value pairs. When multiple objects are returned, values are comma-delimited: key=value1,value2,value3.json - Returns the response as JSON.csv - Returns the response as comma-separated values.tsv - Returns the response as tab-separated values.xml - Returns the response as XML. |
| delimiter | The delimiter to use between values for csv and properties formats |
| returnColumns | The names of the columns to return. returnColumns may be a CSV list of multiple column names. The returnColumns parameter may also be listed multiple times (ie returnColumns=col1,col2&returnColumns=col3,col4) Refer to Columns table below. |
| returnMaxRows | The maximum number of objects to return |
| distinct | true, false Returns only distinct values, equivalent to the distinct keyword in SQL. |
| sortByColumns | The results will be sorted based on the columns listed using comma as the delimiter if multiple columns are specified. Refer to Columns table below. |
| sortDirection | Determines sorting order. asc for ascending, desc for descending. If not specified, the natural order returned by the database is used. |
| includeHeaderRow | true, false Include column headers when the return format is csv or tsv. (Default) true |
| ignoreCase | true, false Returns case-insensitive search results for specified filter parameters. (Default) false |
Filter Parameters
Any column listed in the Columns table can be passed as a filter parameter to narrow results. Filters are matched against the PV_CHANGE_REQUEST_DETAIL public view.
Query logic
| Scenario | Behavior |
|---|---|
Two different parameters: type=Role&state=Open | AND. Returns items where type is Role and state is Open. |
Same parameter repeated: state=Open&state=PendingApprovals | OR within that field. Returns items where state is Open or PendingApprovals. |
Mixed: type=Role&state=Open&state=PendingApprovals | (type is Role) AND (state is Open or PendingApprovals) |
A single API call cannot return items matching one filter OR another filter on a different parameter. OR logic between different filter parameters is not supported.
Workaround: Make separate requests for each filter value. Merge and deduplicate the results client-side.
Columns
| id | [Primary Key] Unique change request item identifier |
| change_request_id | [Foreign Key referencing CHANGE_REQUESTS.ID] The change request this item belongs to |
| request_type | Type of the parent change request |
| type | Type of the change request item |
| state | Current state of the change request item |
| change_data_description | Description of the data change for this item |
| operand_type | Type of the entity being acted upon |
| operand_id | [Foreign Key] ID of the operand entity |
| value_type | Type of the value being applied or revoked |
| value_id | [Foreign Key] ID of the value entity |
| parent_id | [Foreign Key] ID of the parent change request item |
| derived_type | Derived classification of the change request item |
| description | Description of this change request item |
| source_type | Source that originated this change request item |
| operand_name | Display name of the operand entity |
| value_name | Display name of the value entity |
| resource_name | Name of the resource associated with this item |
| action_name | Name of the action to be performed |
| operand_business_source_id | [Foreign Key] Business source ID of the operand |
| operand_app_id | [Foreign Key] Application ID of the operand |
| value_business_source_id | [Foreign Key] Business source ID of the value |
| value_app_id | [Foreign Key] Application ID of the value |
| affected_user_id | [Foreign Key referencing USERS.ID] ID of the user affected by this change request item |
Headers
Bearer token | |
| Accept | application/json |
| Content-Type | application/json |
Response
Parameters
The API returns the requested columns specified by returnColumns as output. If returnColumns is unspecified then all columns listed will be returned.
Examples
All columns
Omit returnColumns to return all fields for each item. This is useful when exploring the data for the first time.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "110",
"change_request_id": "102",
"request_type": "Create",
"type": "CreateAccount",
"state": "Cancelled",
"change_data_description": "XXX \"${User.AD_Login}${User.Domain}\" YYY \"Bachar, Gil\"",
"operand_type": "Account",
"operand_id": "100042",
"value_type": "User",
"value_id": "24",
"parent_id": "",
"derived_type": "Direct",
"description": "New account creation for Bachar, Gil triggered automatically by a dependent change item",
"source_type": "ExplicitAccess",
"operand_name": "${User.AD_Login}${User.Domain}",
"value_name": "Bachar, Gil",
"resource_name": "",
"action_name": "",
"operand_business_source_id": "32",
"operand_app_id": "32",
"value_business_source_id": "32",
"value_app_id": "32",
"affected_user_id": "24"
},
{
"id": "105",
"change_request_id": "102",
"request_type": "Create",
"type": "RequestForm",
"state": "Cancelled",
"change_data_description": "XXX \"Default Directory Form\" YYY \"Bachar, Gil\"",
"operand_type": "RF",
"operand_id": "4",
"value_type": "User",
"value_id": "24",
"parent_id": "",
"derived_type": "Direct",
"description": "",
"source_type": "ExplicitAccess",
"operand_name": "Default Directory Form",
"value_name": "Bachar, Gil",
"resource_name": "",
"action_name": "",
"operand_business_source_id": "",
"operand_app_id": "",
"value_business_source_id": "",
"value_app_id": "",
"affected_user_id": "24"
}
]
}
Specific columns
Use returnColumns to limit the response to the fields you need. This keeps the payload small and the mapping work simple.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state,operand_name,value_name,affected_user_id" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state,operand_name,value_name,affected_user_id"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state,operand_name,value_name,affected_user_id"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
- 412 Invalid column
{
"findChangeRequestItems": [
{
"id": "110",
"change_request_id": "102",
"type": "CreateAccount",
"state": "Cancelled",
"operand_name": "${User.AD_Login}${User.Domain}",
"value_name": "Bachar, Gil",
"affected_user_id": "24"
},
{
"id": "105",
"change_request_id": "102",
"type": "RequestForm",
"state": "Cancelled",
"operand_name": "Default Directory Form",
"value_name": "Bachar, Gil",
"affected_user_id": "24"
}
]
}
<html><head><title>Error</title></head><body>The parameter returncolumns contains an invalid column - 'invalid_col'. Query String=cmd=findChangeRequestItems&format=json&returnColumns=id,invalid_col</body></html>
Filter by a single value
Pass any column name as a query parameter to filter results. Only items that match the value are returned. The example below returns items where state is Completed.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&state=Completed" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"state": "Completed"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
state: "Completed"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "111",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
},
{
"id": "112",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
}
]
}
Filter with OR logic
Repeat the same parameter with different values to match any of them. The example returns items where state is Completed or Cancelled.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&state=Completed&state=Cancelled" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = [
("cmd", "findChangeRequestItems"),
("format", "json"),
("returnMaxRows", "2"),
("returnColumns", "id,change_request_id,type,state"),
("state", "Completed"),
("state", "Cancelled")
]
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
const params = new URLSearchParams();
params.append('cmd', 'findChangeRequestItems');
params.append('format', 'json');
params.append('returnMaxRows', '2');
params.append('returnColumns', 'id,change_request_id,type,state');
params.append('state', 'Completed');
params.append('state', 'Cancelled');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params,
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "110",
"change_request_id": "102",
"type": "CreateAccount",
"state": "Cancelled"
},
{
"id": "105",
"change_request_id": "102",
"type": "RequestForm",
"state": "Cancelled"
}
]
}
Filter with AND logic
Pass two different parameters to return only items that satisfy both conditions. The example returns items where type is AddAppRoleToAccount and state is Completed.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&type=AddAppRoleToAccount&state=Completed" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"type": "AddAppRoleToAccount",
"state": "Completed"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
type: "AddAppRoleToAccount",
state: "Completed"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "111",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
},
{
"id": "112",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
}
]
}
Case-insensitive filter
Filters are case-sensitive by default. Set ignoreCase=true to match regardless of case. The example passes state=completed in lowercase and still returns Completed records.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&state=completed&ignoreCase=true" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"state": "completed",
"ignoreCase": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
state: "completed",
ignoreCase: "true"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "111",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
},
{
"id": "112",
"change_request_id": "102",
"type": "AddAppRoleToAccount",
"state": "Completed"
}
]
}
Sort ascending
Use sortByColumns with a column name and sortDirection=asc to sort results from lowest to highest.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&sortByColumns=id&sortDirection=asc" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"sortByColumns": "id",
"sortDirection": "asc"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
sortByColumns: "id",
sortDirection: "asc"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "105",
"change_request_id": "102",
"type": "RequestForm",
"state": "Cancelled"
},
{
"id": "110",
"change_request_id": "102",
"type": "CreateAccount",
"state": "Cancelled"
}
]
}
Sort descending
Set sortDirection=desc to reverse the order.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=json&returnMaxRows=2&returnColumns=id,change_request_id,type,state&sortByColumns=id&sortDirection=desc" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "json",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"sortByColumns": "id",
"sortDirection": "desc"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "json",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
sortByColumns: "id",
sortDirection: "desc"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
{
"findChangeRequestItems": [
{
"id": "262",
"change_request_id": "221",
"type": "AddAppRoleToAccount",
"state": "Completed"
},
{
"id": "242",
"change_request_id": "201",
"type": "AddAppRoleToAccount",
"state": "Completed"
}
]
}
CSV with custom delimiter
Set format=csv for a comma-separated response. Use delimiter to change the separator character.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=csv&returnMaxRows=2&returnColumns=id,change_request_id,type,state&delimiter=~" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "csv",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"delimiter": "~"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.text)
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "csv",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
delimiter: "~"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
id~change_request_id~type~state
110~102~CreateAccount~Cancelled
105~102~RequestForm~Cancelled
CSV without header row
Set includeHeaderRow=false when your downstream system expects raw data rows without a header.
Request
- Curl
- Python
- Node.js
curl -K -X GET \
"https://instance.securid.com/aveksa/command.submit?cmd=findChangeRequestItems&format=csv&returnMaxRows=2&returnColumns=id,change_request_id,type,state&includeHeaderRow=false" \
-H "Authorization: Bearer <token>"
import requests
url = "https://instance.securid.com/aveksa/command.submit"
params = {
"cmd": "findChangeRequestItems",
"format": "csv",
"returnMaxRows": "2",
"returnColumns": "id,change_request_id,type,state",
"includeHeaderRow": "false"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, params=params, headers=headers)
print(response.text)
const axios = require('axios');
axios.get("https://instance.securid.com/aveksa/command.submit", {
params: {
cmd: "findChangeRequestItems",
format: "csv",
returnMaxRows: "2",
returnColumns: "id,change_request_id,type,state",
includeHeaderRow: "false"
},
headers: { Authorization: "Bearer <token>" }
}).then(r => console.log(r.data));
Response
- 200
110,102,CreateAccount,Cancelled
105,102,RequestForm,Cancelled
Error responses
A 401 is returned when the token is missing, invalid, or expired. A 412 is returned when returnColumns includes a column name that does not exist in the PV_CHANGE_REQUEST_DETAIL public view.
- 401 Invalid token
- 412 Invalid column
<html>
<head><title>Error</title></head>
<body>The token is not valid for the command 'findChangeRequestItems'. Token is invalid or expired</body>
</html>
<html>
<head><title>Error</title></head>
<body>The parameter returncolumns contains an invalid column - `invalid_col`.
Query String=cmd=findChangeRequestItems&format=json&returnColumns=id,invalid_col</body>
</html>
Verified with RSA Governance & Lifecycle version 8.0.0.188886 P10_HF01.