The Skurio Alerts and Results API can be used to create ‘downstream’ client applications which ingest data from the Skurio platform to carry out additional notifications, enrichments, alerting or automation.
Example use cases could be:
‘Upstream’ client applications can also be used to create alert monitors in the Skurio platform from an existing data source.
Example upstream use cases could be:
All API calls will require two API keys to authenticate. Both are provided in the headers.
Authorization : the app API key you obtain from api.skurio.com - this is 80 characters, with no hyphens X-Auth-Skurio-Key : the API token you obtain from [email protected] which authorises you against your Skurio DRP account. This is a 40 character UUID format, including hyphens
The basic structure of a downlink client should be:
For example, you may have some very noisy threat intelligence alerts which generate a large number of results - you may not want to bring those into your downstream client.
You may want to consider a simple UI allowing your users to select which Folders and/or Alerts are included or excluded in the connected data. You can optionally use the GET /folders resource to build a list of folders.
You should poll the Skurio API for new results no more frequently than every 30 minutes.
You will need to iterate through all alertIds you wish to retrieve results for, and call the POST /alerts/{alertId}/results endpoint to get a filtered list of new results since the last polling time for that alert.
Using the type=detailed parameter will include all the key data parameters for up to 50 results in a single call, which is sufficient for the majority of applications. However, this method does not return the complete text content for the entire message due to size limitations - if this is needed, it must be retrieved for each individual result using the GET /alerts/{alertId}/results/{resultId} resource.
For reliability, your client should maintain an individual dateFrom timestamp for each alertID, rather than using a single dateFrom timestamp (“give me all results for this alert since I last asked you for all results from this alertID”). This will avoid any results being missed due to processing time as you iterate through the alerts.
Alternatively, you can store the dateTime of the latest resultID previously received from that alertId, and use that as a starting point for each call to that alert (“give me all results for this alert since the last result I succesfully retrieved from this alert”). This will provide increased resilience in the event that your API client is interrupted, and will avoid losing any data.