User Tools

Site Tools


spp:spp_rest_api

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/reportCreate report
get/api/endeavour/reportFind all reports
get/categoriesFind report categories
get/api/endeavour/report/categories/{categoryStr}Find report category by ID
get/api/endeavour/report/engineFind 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}/parameterFind 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}/valuesFind 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 <space> 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
spp/spp_rest_api.txt · Last modified: 2021/01/01 21:25 (external edit)