====== 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