1. Introduction
This document describes the REST API for Skedler v2.8.
Note: Please note that these APIs are not supported in Skedler v3.x. Skedler v3.x API support is targeted for December 2017.
To use a REST API, your application will make a HTTP or CURL request and parse the response. The response format is JSON.
Your methods will be the standard HTTP methods like GET, PUT, POST and DELETE. Because the REST API is based on open standards, you can use any web development language to access the API.
With REST API you can,
- Generate and mail quick reports.
- Create reports and filters
- Set and get email configuration details and timezone settings.
- Get all the scheduled reports and filter list.
2. REST API Overview
- Settings API
- Reports API
- Filters API
- License API
- Miscellaneous API
3. REST API Details
1. Settings API
a) Save configuration settings
e) Upload default logo for all the reports
2. Reports API
b) Get a report
j) Generate a adhoc/quick report
k) Upload custom logo for all report
3. Filters API
b) Add query to existing filter
4. License API
a) Activate Skedler license key Online
5. Miscellaneous API
4. How to call the REST API
Skedler REST API supports standard HTTP/CURL along with basic authentication if you are using Kibana Shield Plugin.
This example uses CURL without basic authentication,
- curl -H "Content-Type:application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/settings/getsettings
This example uses CURL with basic auth if your are using Kibana Shield Plugin
- curl -u <username> -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/settings/getsettings
If your email settings require authentication use the following curl command to save the email setting with authentication.
curl -u <username> -H "Accept:application/json" http://<your_skedler_server>:<your_skedler_port>/api/settings/savesettings -d <Data Params>
5. Settings API
Title |
Save Configuration Settings (email, timezone) |
URL |
|
Method |
POST |
URL Params |
None |
Data Params |
{ "emailconfig": { "host": [string], "port": [numeric], "ssl": [boolean], "from": [string], "adminMail": [string] }, "timezone": [string] } Example: { "emailconfig": { "host": "pro.turbo-smtp.com", "port": 25, "ssl": true, "from": "skedlertest@guidanz.net", "adminMail": "skedlerAdmin@guidanz.com" }, "timezone": "Asia/Kolkota" } |
Success Response |
{"status": "success"} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Accept:application/json" http://<your_skedler_server>:<your_skedler_port>/api/settings/savesettings -d <Data Params> |
Notes |
|
Title |
Turn Off email settings |
URL |
|
Method |
POST |
URL Params |
None |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Accept:application/json" http://<your_skedler_server>:<your_skedler_port>/api/settings/savesettings -d <Data Params> |
Notes |
|
Title |
Save timezone |
URL |
|
Method |
POST |
URL Params |
None |
Data Params |
{ "timezone": [string] } Example: { "timezone": "Asia/Kolkota" }
|
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Accept:application/json" http://<your_skedler_server>:<your_skedler_port>/api/settings/savesettings -d <Data Params> |
Notes |
|
Title |
Get all the setting details |
URL |
|
Method |
GET |
URL Params |
None |
Data Params |
None |
Success Response |
EmailEnable : true { "status": "success", "data": { "emailconfig": { "host": "pro.turbo-smtp.com", "port": 25, "ssl": true, "from": "skedlertest@guidanz.net", "password":"U2FsdGVkX199hwv8ZWM9e4TPa47PpHrvLxsLvzhlNos=" }, "timezone": "Asia/Kolkota" } } EmailEnable:false { "status": "success", "data": { "emailenable": false, "timezone": "Asia/Kolkota" } } } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type:application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/settings/getsettings |
Notes |
|
Title |
Upload Default logo for all the reports |
URL |
|
Method |
POST |
URL Params |
None |
Data Params |
None |
Success Response |
{“status” : “success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -F "image=@/<localpath>/logo.jpg" http://<your_skedler_server>:<your_skedler_port>/api/settings/uploadLogo |
Notes |
|
6. Reports API
Title |
Create a report |
URL |
/api/reports/createreport |
Method |
POST |
URL Params |
None |
Data Params |
Example: { "id": [string] - Report name, "kibana_object_id": [string] - Dashboard name in kibana, "kibana_object_type": [string] - dashboard/search, "filter_name": [string]- filtername/by default No Filter, "includefilter": [boolean]- true/false, "folderpath": [string] - Path to store the report, "reportFormat": [string]- pdf/png/excel, "emailDetails": { "to": [array of string separated by comma], "cc": [array of string separated by comma], "subject": [string], "message": [string] }, "schedule": { "type":[string] - hourly/daily/weekly/monthly/yearly, "interval":[string] - [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "minutes": [string], - [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59], "hours": [string], - [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "months": [string] - [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "days": [string] - ["mon","tue","wed","thu","fri","sat","sun","monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] "everyWeekdays": [boolean] - true/false }, "useDashboardTime": [boolean] true/false, "timeWindow": { "type": [string], relative/absolute "from": { "val": [string], "type":[string] hours/days/weeks/months/years }, "to": { "val": [string], "type":[string] hours/days/weeks/months/years }, "roundOff": [boolean] true/flase }, "excelEnabled": [boolean] true/false, "layout": { "reportTitle": [string], "layoutType":[string], DefaultFont/A4/A3/Letter/Tabloid/Legal "smartLayout": [boolean], true/false "orientation": [string], portrait/landscape "reportFont":[string], "reportLogo":[string] noLogo/defaultLogo } } Example { "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "filter_name": "No Filter", "includefilter": true, "folderpath": "", "reportFormat": "pdf", "emailDetails": { "to": ["skedler@guidanzl.com"], "cc": [], "subject": "Test sample report", "message": "Hi \nCheck out the report \nThanks" }, "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "useDashboardTime": false, "timeWindow": { "type": "relative", "from": { "val": "15:1", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "excelEnabled": true, "layout": { "reportTitle": "Report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportFont": "Default Font", "reportLogo": "noLogo" } } |
Success Response |
{“status” : “success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<Data param>’ http://<your_skedler_server>:<your_skedler_port>/api/reports/createreport |
Notes |
l Configure the following variables if the “schedule” “ type” is, “hourly” - hours, minutes and interval “daily” - hours, minutes and interval (or) hours, minutes and everyWeekdays “weekly” - hours, minutes and days “monthly” - hours, minutes, interval and months “yearly” - hours, minutes, interval and months l “timeWindow” "type” - relative “from” - “val” should be greater than “to” - “val” “from” - “type” -hours/days/weeks/months/years “to” - “type” -hours/days/weeks/months/years “from” and “to” - “type” should be same “roundOff” is applicable Example "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, “to": { "val": "0", "type": "minutes" }, "roundOff": true }
"type” - absolute “from” and “to” - “type” is not necessary “roundOff” not applicable Example "timeWindow": { "type": "absolute", "from": { "val": "15:01" }, “to": { "val": "18:30" } }
You can create a quick report using the following fields, If email setting is enabled add the field “emailDetails” "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "emailDetails": { "to": ["skedler@guidanzl.com"] } You can also create a quick report using filter query "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "query": "city:castro valley", "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "emailDetails": { "to": ["skedler@guidanzl.com"] } |
Title |
Get a report |
URL |
/api/reports/getreport/<reportid> |
Method |
GET |
URL Params |
reportid - [string] - Report name |
Data Params |
None |
Success Response |
{ "status": "success", "data": { "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "filter_name": "No Filter", "includefilter": true, "folderPath": "", "reportFormat": "pdf", "emailDetails": { "to": ["skedler@guidanz.com"], "cc": [], "subject": "Test sample report", "message": "Hi \nCheck out the report \nThanks" }, "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "useDashboardTime": false, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "excelEnabled": true, "layout": { "reportTitle": "Report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportFont": "Default Font", "reportLogo": "noLogo" } } } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/reports/getreport/reportid |
Notes |
|
Title |
Update a report |
URL |
/api/reports/updatereport |
Method |
POST |
URL Params |
None |
Data Params |
Example: { "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "filter_name": "No Filter", "includefilter": true, "folderpath": "", "reportFormat": "pdf", "emailDetails": { "to": ["skedler@guidanz.com"], "cc": [], "subject": "Test sample report", "message": "Hi \nCheck out the report \nThanks" }, "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "useDashboardTime": false, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "excelEnabled": true, "layout": { "reportTitle": "Report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportFont": "Default Font", "reportLogo": "noLogo" } } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<data param>’ http://<your_skedler_server>:<your_skedler_port>/api/reports/updatereport |
Notes |
Fill the required fields to be updated. Field “id” cannot be changed. |
Title |
Delete a report |
URL |
http://<your_skedler_server>:<your_skedler_port>/api/reports/deletereport/<reportid> |
Method |
DELETE |
URL Params |
reportid - String - Report name |
Data Params |
None |
Success Response |
{ "status": "success" } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X DELETE http://<your_skedler_server>:<your_skedler_port>/api/reports/deletereport/reportid |
Notes |
|
Title |
Pause a scheduled report |
URL |
http://<your_skedler_server>:<your_skedler_port>/api/reports/deletereport/<reportid> |
Method |
PUT |
URL Params |
reportid - String - Report name |
Data Params |
None |
Success Response |
{“status”:”success”}
|
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X PUT http://<your_skedler_server>:<your_skedler_port>/api/reports/pausereport/reportid |
Notes |
|
Title |
Resume a paused report |
URL |
http://<your_skedler_server>:<your_skedler_port>/api/reports/deletereport/<reportid> |
Method |
PUT |
URL Params |
reportid - String - Report name |
Data Params |
None |
Success Response |
{“status”:”success”}
|
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X PUT http://<your_skedler_server>:<your_skedler_port>/api/reports/resumereport/reportid |
Notes |
|
Title |
Get report list by size |
URL |
/api/reports/getreportlist/<size> |
Method |
GET |
URL Params |
size[Integer] |
Data Params |
None |
Success Response |
{ "status": "success", "data": [{ "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "filter_name": "No Filter", "includefilter": true, "folderPath": "", "reportFormat": "pdf", "emailDetails": { "to": ["skedler@guidanz.com"], "cc": [], "subject": "Test sample report", "message": "Hi \nCheck out the report \nThanks" }, "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "useDashboardTime": false, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "excelEnabled": true, "layout": { "reportTitle": "Report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportFont": "Default Font", "reportLogo": "noLogo" } }] } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Accept:application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/reports/getreportlist/<size> |
Notes |
|
Title |
Get all reports |
URL |
|
Method |
GET |
URL Params |
None |
Data Params |
None |
Success Response |
{ "status": "success", "data": [{ "id": "Report", "kibana_object_id": "New Dashboard", "kibana_object_type": "dashboard", "filter_name": "No Filter", "includefilter": true, "folderPath": "", "reportFormat": "pdf", "emailDetails": { "to": ["skedler@guidanz.com"], "cc": [], "subject": "Test sample report", "message": "Hi \nCheck out the report \nThanks" }, "schedule": { "type": "monthly", "interval": 1, "minutes": 10, "hours": 2, "months": 2 }, "useDashboardTime": false, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "excelEnabled": true, "layout": { "reportTitle": "Report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportFont": "Default Font", "reportLogo": "noLogo" } }] } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Accept:application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/reports/getallreports |
Notes |
|
Title |
Generate/mail a report |
URL |
api/reports/mailnow |
Method |
POST |
URL Params |
None |
Data Params |
{ "kibana_object_type": "dashboard", "kibana_object_id": "New Dashboard", "filter_name": "No Filter", "reportFormat": "pdf", "emailDetails": { "subject": “Mail a report", "message": "Hi \nCheckout the report \nThanks", "to": ["skedler@guidanz.com"], "cc": “” }, "layout": { "reportFont": "Default Font", "reportTitle": "New-Dashboard_report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportLogo": "defaultLogo", "reportLogoPath": "" }, "folderpath": "", "excelEnabled": false, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "useDashboardTime": true, "includefilter": false } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<data param> ' http://<your_skedler_server>:<your_skedler_port>/api/reports/mailnow |
Notes |
You can mail/generate a quick report using the following fields, "kibana_object_type": "dashboard", "kibana_object_id": "New Dashboard", "emailDetails": { "subject": “Mail a report", "message": "Hi \nCheckout the report \nThanks", "to": ["skedler@guidanz.com"] } |
Title |
Generate a adhoc/quick report |
URL |
/api/reports/adhoc |
Method |
POST |
URL Params |
None |
Data Params |
{ "kibana_object_type": "dashboard", "kibana_object_id": "New Dashboard", "query": "sannnnnn", "reportFormat": "pdf", "emailDetails": { "subject": "Report", "message": "Hi \nCheckout the report \nThanks", "to": ["skedler@guidanz.com"] }, "layout": { "reportFont": "Default Font", "reportTitle": "New-Dashboard_report", "layoutType": "Default Size", "smartLayout": false, "orientation": "portrait", "reportLogo": "defaultLogo", "reportLogoPath": "" }, "timeWindow": { "type": "relative", "from": { "val": "15", "type": "minutes" }, "to": { "val": "0", "type": "minutes" }, "roundOff": false }, "useDashboardTime": true } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<data param> ' http://<your_skedler_server>:<your_skedler_port>/api/reports/adhoc |
Notes |
You can mail/generate a quick report passing query filter, "kibana_object_type": "dashboard", "kibana_object_id": "New Dashboard", "query": "city:castro", "emailDetails": { "subject": “Mail a report", "message": "Hi \nCheckout the report \nThanks", "to": ["skedler@guidanz.com"], "cc": “” } |
Title |
Upload custom logo |
URL |
/api/reports/customlogo |
Method |
POST |
URL Params |
None |
Data Params |
None |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -F “id=Report” -F "image=@/<localpath>/logo.jpg" http://<your_skedler_server>:<your_skedler_port>/api/reports/customlogo |
Notes |
|
7. Filters API
Title |
Create filter with query |
URL |
/api/filters/createfilter |
Method |
POST |
URL Params |
None |
Data Params |
Example { "filtername": [string], Name of the filter "filters": [{ "filter": [string] , query "emaillist":[array of string separated by comma], "folder": [string] Path to generate the report }] } Example { "filtername": "Test filter", "filters": [{ "filter": "city:castro vally", "emaillist":["test@guidanz.com", "skedler@guidanz.com"], "folder": "/home/user/opt" }] } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<Data Param>’ http://<your_skedler_server>:<your_skedler_port>/api/filters/createfilter |
Notes |
You can create a quick filter using the following fields, { "filtername": "Test filter", "filters": [{ "filter": "city:castro vally" }] } |
Title |
Add query to the existing filter |
URL |
/api/filters/addfilterquery |
Method |
POST |
URL Params |
None |
Data Params |
Example { "filtername": [string], Name of the filter "filters": [{ "filter": [string] , query "emaillist":[array of string separated by comma], "folder": [string] Path to generate the report }] } Example { "filtername": "Test filter", "filters": [{ "filter": "city:castro vally", "emaillist":["test@guidanz.com", "skedler@guidanz.com"], "folder": "/home/user/opt" }] } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d '<Data Param>’ http://<your_skedler_server>:<your_skedler_port>/api/filters/addfilterquery |
Notes |
You can create a quick filter using the following fields, { "filtername": "Test filter", "filters": [{ "filter": "city:castro vally" }] } |
Title |
Get filter list by size |
URL |
/api/filters/getfilterlist/<size> |
Method |
GET |
URL Params |
size - size of filter list |
Data Params |
None |
Success Response |
{ "status": "success", "data": [{ "filtername": "test filter", "filters": [{ "filter": "city:castro", "emaillist":["test@guidanz.com", "skedler@guidanz.com"], "folder": "" }, { "filter": "*", "emaillist":["test@guidanz.com", "skedler@guidanz.com"], "folder": "" }] }] }
|
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/filters/getfilterlist/<size> |
Notes |
|
Title |
Get all filters |
URL |
/api/filters/getallfilters |
Method |
GET |
URL Params |
None |
Data Params |
|
Success Response |
{ "status": "success", "data": [{ "filtername": "Test filter", "filters": [{ "filter": "city:castro vally", "emaillist":["test@guidanz.com", "skedler@guidanz.com"], "folder": "/home/user/opt" }] }] } |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/filters/getallfilters |
Notes |
|
Title |
Delete a filter |
URL |
/api/filters/deleteFilter/<filtername> |
Method |
DELETE |
URL Params |
filtername - String |
Data Params |
None |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X DELETE http://<your_skedler_server>:<your_skedler_port>/api/filters/deleteFilter/<filtername> |
Notes |
|
8. License API
Title |
Activate Skedler License key Online |
URL |
/api/activate |
Method |
POST |
URL Params |
None |
Data Params |
Without proxy: { "details": { "key": "1111-1111-1111-1111", "name": "XYZ", "company": "ABC corp.", "email": "xyz@domain" } } With proxy: { "details": { "key": "1111-1111-1111-1111", "name": "XYZ", "company": "ABC corp.", "email": "xyz@domain" }, "proxy": { "protocol": "", "proxyType": "manualProxy", "proxyIp": "10.200.1.1", "port": "", "userName": "", "password": "" } } |
Success Response |
{“status”:”success”} |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X POST -d <data param> http://<your_skedler_server>:<your_skedler_port>/api/activate |
Notes |
|
9. Miscellaneous API
Title |
Get font list |
URL |
/api/misc/getfonts |
Method |
GET |
URL Params |
None |
Data Params |
None |
Success Response |
["Default Font","OpenSans-Regular-webfont"] |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/misc/getfonts |
Notes |
|
Title |
Get layout size list |
URL |
/api/misc/getlayoutlist |
Method |
GET |
URL Params |
None |
Data Params |
None |
Success Response |
["A4","Letter","Legal","A3","Tabloid","Default Size"] |
Error Response |
{ "status": "error", "error": <errormessage> } |
Sample call |
curl -H "Content-Type: application/json" -X GET http://<your_skedler_server>:<your_skedler_port>/api/misc/getlayoutlist |
Notes |
|