====== Spectrum Protect Plus with RestAPI ======
https://github.com/sppautomation/sppclient
https://github.com/CristieNordic/SpectrumProtectRest
https://github.com/withspectrum/spectrum
RestAPI required a connection using port 443 HTTPS
Check on the SSP web interface to find the api links
=== Report ===
|post|/api/endeavour/report|Create report|
|get|/api/endeavour/report|Find all reports|
|get|/categories|Find report categories|
|get|/api/endeavour/report/categories/{categoryStr}|Find report category by ID|
|get|/api/endeavour/report/engine|Find report engine|
|get|/api/endeavour/report/{reportIdStr}|Find report by ID|
|put|/api/endeavour/report/{reportIdStr}|Update report by ID|
|post|/api/endeavour/report/{reportIdStr}|Perform action on report|
|delete|/api/endeavour/report/{reportIdStr}|Delete report by ID|
|get|/api/endeavour/report/{reportIdStr}/parameter|Find all report parameters by ID|
|get|/api/endeavour/report/{reportIdStr}/parameter/{parameterStr}|Find report parameter by report ID and parameter ID|
|get|/api/endeavour/report/{reportIdStr}/parameter/{parameterStr}/values|Find all report cascading parameter values by report ID and parameter ID|
===== Create a user =====
Create a user / password for the restAPI connection
===== Generate a session ID =====
user_pwd="restapiusr:passw0rd"\\
sspserver="https://spectrumPPsrv01"
# curl -sS -k -X POST -H 'Accept:application/json' -H 'Content-type:application/json' --user "${user_pwd}" ${sspserver}/api/endeavour/session | tr ',' '\n' | grep sessionid
{"sessionid":"52cc0f08a00a436caeafc76b4bedbeed"
# wsessionid=$(echo "x-endeavour-sessionid: 52cc0f08a00a436caeafc76b4bedbeed")
===== Get list of SSP report =====
When using at en of line : | jq '.' | egrep "name|displayName|href" | egrep -i "name|run"
# curl -sS -k -X GET -H 'Accept:application/json' -H 'Content-type:application/json' -H "$wsessionid" -H 'x-endeavour-auditrequest:false' ${sspserver}/api/endeavour/report
"name": "Configuration",
"displayName": "Configuration",
"href": "https://spectrumPPsrv01/api/endeavour/report/1002?action=run",
"name": "Protected VMs",
"displayName": "Protected and Unprotected VMs",
"href": "https://spectrumPPsrv01/api/endeavour/report/1003?action=run",
"name": "Protected Databases",
"displayName": "Protected and Unprotected Databases",
"href": "https://spectrumPPsrv01/api/endeavour/report/1004?action=run",
===== Get parameters of a specific report =====
After selecting a report, check it's parameters:
# curl -sS -k -X GET -H 'Accept:application/json' -H 'Content-type:application/json' -H "$wsessionid" -H 'x-endeavour-auditrequest:false' ${sspserver}/api/endeavour/report/1003?action=run | jq .
{
"links": {
"self": {
"rel": "self",
"href": "https://spectrumPPsrv01/api/endeavour/report/1003",
"title": "Protected and Unprotected Databases"
},
"up": {
"rel": "up",
"href": "https://spectrumPPsrv01/api/endeavour/report"
},
"customReports": {
"rel": "related",
"href": "https://spectrumPPsrv01/api/endeavour/report?filter=[{\"property\":\"parentId\",\"value\":\"1003\"}]"
},
"parameters": {
"rel": "related",
"href": "https://spectrumPPsrv01/api/endeavour/report/1003/parameter"
},
"schema": {
"rel": "related",
"href": "https://spectrumPPsrv01/api/endeavour/report/1003/schema",
"title": "schema"
},
"run": {
"schema": "https://spectrumPPsrv01/api/endeavour/report/1003/schema?action=run",
"rel": "action",
"href": "https://spectrumPPsrv01/api/endeavour/report/1003?action=run",
"title": "Run report"
}
},
"name": "Protected Databases",
"displayName": "Protected and Unprotected Databases",
"description": "Review the Protected and Unprotected Databases.",
"categoryDisplayName": "Protection",
"custom": false,
"creationTime": 1565277663455,
"paramValues": {
"ApplicationType": "(All)",
"ApplicationServer": [
"(All)"
],
"ApplicationServerType": "(All)",
"UnprotectedVMs": true,
"ShowProtectedVMs": false
},
"rbacPath": "root:0/report:0/reportcategory:ProtectionCategoryName/report:1003",
"id": "1003"
}
===== Build a report =====
Use POST, and you will receive a task ID
# curl -iL -sS -k -X POST -H 'Accept:application/json' -H 'Content-type:application/json' -H "$wsessionid" ${sspserver}/api/endeavour/report/1003?action=run -d '{"NodeCascadingParameterGroup-HypervisorType":["(All)"],"NodeCascadingParameterGroup-Hypervisor":["(All)"],"UnprotectedVMs":"false","OffloadedVMs":"false"}'
{"location":"https://spectrumPPsrv01/api/endeavour/task/1035"}
===== Check task status =====
# curl -sS -k -X GET -H 'Accept:application/json' -H 'Content-type:application/json' -H "$wsessionid" -H 'x-endeavour-auditrequest:false' ${sspserver}/api/endeavour/task/1035 | jq .
{
"links": {
"self": {
"rel": "self",
"href": "https://spectrumPPsrv01/api/endeavour/task/1035",
"hreflang": null,
"media": null,
"title": null,
"type": null,
"deprecation": null
},
"up": {
"rel": "up",
"href": "https://spectrumPPsrv01/api/endeavour/task",
"hreflang": null,
"media": null,
"title": null,
"type": null,
"deprecation": null
}
},
"name": null,
"status": "SUCCESS",
"type": "run",
"source": null,
"result": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected VMs_12-19-2019_15-25-10",
"custom": null,
"customStatus": null,
"initialTime": "1576765509158",
"completeTime": "1576765510039",
"id": "1035"
}
===== Check available Reports create by task =====
Replace by <%20>
# curl -sS -k -X GET -H 'Accept:application/json' -H 'Content-type:application/json' -H "$wsessionid" -H 'x-endeavour-auditrequest:false' ${sspserver}/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10 | jq .
{
"links": {
"self": {
"rel": "self",
"href": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10",
"title": "Protected and Unprotected VMs"
},
"delete": {
"rel": "delete",
"href": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10"
},
"pdf": {
"rel": "download",
"href": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10/download/pdf?esessionid=52cc0f08a00a436caeafc76b4bedbeed"
},
"excel": {
"rel": "download",
"href": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10/download/excel?esessionid=52cc0f08a00a436caeafc76b4bedbeed"
},
"view": {
"rel": "related",
"href": "https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10/view/html?esessionid=52cc0f08a00a436caeafc76b4bedbeed",
"title": "View"
}
},
"id": "29",
"name": "Protected VMs_12-19-2019_15-25-10",
"rbacPath": "root:0/reportinstance:0/reportinstance:29",
"fileDate": 1576765510000,
"category": "Protection",
"reportName": "Protected and Unprotected VMs",
"langType": "EN_US"
Here we have 3 reports available: pdf, csv and view (direct link for a web browser)
===== Download a report =====
Download localy the PDF report
# curl -iL -s -k -o report_db.pdf https://spectrumPPsrv01/api/endeavour/reportInstance/Protected%20VMs_12-19-2019_15-25-10/download/pdf?esessionid=52cc0f08a00a436caeafc76b4bedbeed