safe-rest v0.0.23
safe-rest
Install node and update to latest version
As of May 4, 2016, the latest version is 6.0.0.
nvm install v6.0.0
nvm alias default v6.0.0Clone repo
git clone https://github.com/sdurbin1/safe-rest.gitInstall safe-rest
cd /path/to/safe-rest
npm installEnsure mongo is running
Run in separate terminal, or in background
mongod --smallfilesPopulate database with test data
npm run-script db-fillEdit config.js
Edit the appropriate line in config.js
exports.host = 'https://safe-app-<username>.c9users.io'Run application
node app.jsRest API and example calls
POST /analytics
Create an analytic
curl localhost:8080/analytics/ -H "Content-Type: application/json" --data '{"name": "Normal Distribution"}'GET /analytics
Return all analytics
curl localhost:8080/analyticsGET /analytics/:analytic
Return an analytic
curl localhost:8080/analytics/56e816d8abda61a618bfccd5PUT /analytics/:analytic
Update an analytic
curl localhost:8080/analytics/56ea975aec9cc0f3098ae316 -H "Content-Type: application/json" -X PUT --data '{"name":"New Name"}' DELETE /analytics/:analytic
Delete an analytic
curl -X DELETE http://localhost:8080/analytics/56ea975aec9cc0f3098ae316PUT /analytics/:analytic/visualization-types
Add an existing visualization-type to an analytic
curl localhost:8080/analytics/56eac298ee121e4b18d92259/visualization-types -X PUT --data 'visualizationTypes=56eaa1eae319c5af0c8dfc4d&visualizationTypes=56eaa1f1e319c5af0c8dfc4f'GET /analytics/:analytic/visualization-types
Return a list of visualizationTypes associated with an analytic
curl localhost:8080/analytics/56e816d2abda61a618bfccd4/visualization-typesDELETE /analytics/:analytic/visualization-types/:visualization-type
Remove a visualizationType from an analytic (does not delete the visualizationType)
curl -X DELETE http://localhost:8080/analytics/56eac298ee121e4b18d92259/visualization-types/56eaa1eae319c5af0c8dfc4dGET /visualization-types
Return all visualizationTypes
curl localhost:8080/visualization-typesPOST /visualization-types
Create a visualizationType
curl http://localhost:8080/visualization-types -H "Content-Type: application/json" -X POST --data '{"name":"Area"}'GET /visualization-types/:visualization-type
Return a visualizationType
curl localhost:8080/visualization-types/56e8178dabda61a618bfccd9PUT /visualization-types/:visualization-type
Update a visualizationType
curl -X PUT http://localhost:8080/visualization-types/56eaa1eae319c5af0c8dfc4d/ --data 'name=Area'DELETE /visualization-types/:visualization-type
Delete a visualizationType
curl -X DELETE http://localhost:8080/visualization-types/56eaa1eae319c5af0c8dfc4d/POST /sources
Create a source
curl localhost:8080/sources -H "Content-Type: application/json" -X POST --data '{"name": "CSV_01222016", "fields": [{"name":"Age","dataType":"Number"},{"name":"County","dataType":"String"},{"name":"Height","dataType":"Number"},{"name":"Latitude","dataType":"Number"},{"name":"Longitude","dataType":"Number"},{"name":"Street Address","dataType":"String"},{"name":"Weight","dataType":"Number"}]}'GET /sources
Return all sources
curl localhost:8080/sourcesGET /sources/:source
Return a source
curl localhost:8080/sources/56e85075cbe2b94312e95dafPUT /sources/:source
Update a source
curl localhost:8080/sources/56eaec7a2308db1b1c6f795f -H "Content-Type: application/json" -X PUT --data '{"fields": [{"name":"Age","dataType":"Number"},{"name":"County","dataType":"String"},{"name":"Height","dataType":"Number"},{"name":"Latitude","dataType":"Number"},{"name":"Longitude","dataType":"Number"},{"name":"Street Address","dataType":"String"},{"name":"Weight","dataType":"Number"}]}'DELETE /sources/:source
Delete a source
curl -X DELETE http://localhost:8080/sources/56eaec7a2308db1b1c6f795f/PUT /sources/:source/analytics
curl localhost:8080/sources/56eaec7a2308db1b1c6f795f/analytics -X PUT --data 'analytics=56eaa9fc51ed186110af1a80&analytics=56eac298ee121e4b18d92259'GET /sources/:source/analytics
Return all analytics associated with a source
curl localhost:8080/sources/56e865818c792b4f18f64f24/analyticsDELETE /sources/:source/analytics
Remove an analytic from a source (does not delete the analytic)
curl -X DELETE http://localhost:8080/sources/56eaec7a2308db1b1c6f795f/analytics/56eaa9fc51ed186110af1a80GET /sources/:source/fields
Return all fields associated with a source
curl localhost:8080/sources/56eaec7a2308db1b1c6f795f/fieldsPOST /sources/:source/data
Upload a csv document. Creates a new collection with name "sourceId", and inserts document, "document"
curl localhost:8080/sources/56eaec7a2308db1b1c6f795f/data -H "Content-Type: application/json" --data '{"document":[{"Age":21,"County":"Anne Arundel","Height":61,"Latitude":31.33,"Longitude":33.00,"Street Address":"123 Main St.","Weight":133},{"Age":33,"County":"Howard","Height":67,"Latitude":31.33,"Longitude":33.00,"Street Address":"456 Main St.","Weight":188},{"Age":29,"County":"Anne Arundel","Height":63,"Latitude":31.33,"Longitude":33.00,"Street Address":"789 Main St.","Weight":142}]}'Optionally include a list of fields
curl localhost:8080/sources/56eaec892308db1b1c6f7960/data -H "Content-Type: application/json" --data '{"fields": [{"name":"Age","dataType":"Number"},{"name":"County","dataType":"String"},{"name":"Height","dataType":"Number"},{"name":"Latitude","dataType":"Number"},{"name":"Longitude","dataType":"Number"},{"name":"Street Address","dataType":"String"},{"name":"Weight","dataType":"Number"}],"document":[{"Age":21,"County":"Anne Arundel","Height":61,"Latitude":31.33,"Longitude":33.00,"Street Address":"123 Main St.","Weight":133},{"Age":33,"County":"Howard","Height":67,"Latitude":31.33,"Longitude":33.00,"Street Address":"456 Main St.","Weight":188},{"Age":29,"County":"Anne Arundel","Height":63,"Latitude":31.33,"Longitude":33.00,"Street Address":"789 Main St.","Weight":142}]}'POST /sources/data
Upload a csv document and create source.
curl localhost:8080/sources/data -H "Content-Type: application/json" --data '{"source": {"name":"TEST","fields": [{"name":"Age","dataType":"Number"},{"name":"County","dataType":"String"},{"name":"Height","dataType":"Number"},{"name":"Latitude","dataType":"Number"},{"name":"Longitude","dataType":"Number"},{"name":"Street Address","dataType":"String"},{"name":"Weight","dataType":"Number"}]},"document":[{"Age":21,"County":"Anne Arundel","Height":61,"Latitude":31.33,"Longitude":33.00,"Street Address":"123 Main St.","Weight":133},{"Age":33,"County":"Howard","Height":67,"Latitude":31.33,"Longitude":33.00,"Street Address":"456 Main St.","Weight":188},{"Age":29,"County":"Anne Arundel","Height":63,"Latitude":31.33,"Longitude":33.00,"Street Address":"789 Main St.","Weight":142}]}'DELETE /sources/:source/data
Delete csv document associated with source
curl localhost:8080/sources/5720ade7587a45660a46cdcb/data -X DELETEGET /sources/:source/query
Queries a data source based on a set of filters. Note: "id" field in filters data is not needed.
curl localhost:8080/sources/56eaec7a2308db1b1c6f795f/query -H "Content-Type: application/json" --data '{"filters": [{"id": "1","field": "Age","operator": ">","value": 25},{"id": "2","field": "County","operator": "=","value": "Howard"}]}'POST /visualizations
Create a new visualization
curl http://localhost:8080/visualizations -H "Content-Type: application/json" -X POST --data '{"name":"Visualization1", "source":"56eaec7a2308db1b1c6f795f", "visualizationType":"57055c4c43176c9118cffc95", "analytic":"56eac298ee121e4b18d92259", "visualizationParams":{"title": {"text": "Monthly Average Temperature"},"subtitle": {"text": "Source: WorldClimate.com"}}, "analyticParams": [{"groupBy": ["Age"]}], "filters":[{ "id": 1,"field": "Age","operator": ">","value": 35},{"id": 2,"field": "County","operator": "=","value": "Howard"}], "analyticParams":[{"groupBy":"Age"}]}'GET /visualizations
Return all visualizations
curl http://localhost:8080/visualizationsGET /visualizations/:visualization
Return a visualization
curl localhost:8080/visualizations/570b93b007b51d710c748fb1PUT /visualizations/:visualization
Update a visualization
curl http://localhost:8080/visualizations/570b93b007b51d710c748fb1 -H "Content-Type: application/json" -X PUT --data '{"analyticParams":[{"groupBy":"AGE"}]}'DELETE /visualizations/:visualization
Delete a visualization
curl -X DELETE http://localhost:8080/visualizations/570b93b007b51d710c748fb1POST /dashboards
Create a dashboard
curl http://localhost:8080/dashboards -X POST --data 'title=Dashboard&visualizations=570b968507b51d710c748fb2&visualizations=570b9e54ddef419e0fda43a9'GET /dashboards
Return all dashboards
curl http://localhost:8080/dashboardsGET /dashboards/:dashboard
curl http://localhost:8080/dashboards/570b9f8a877d26ac10c3b4f1PUT /dashboards/:dashboard
Update a dashboard
curl http://localhost:8080/dashboards/570b9f8a877d26ac10c3b4f1 -X PUT --data 'title=Dashboard1'DELETE /dashboards/:dashboard
Delete a dashboard
curl http://localhost:8080/dashboards/570b9f8a877d26ac10c3b4f1 -X DELETEGET /dashboards/:dashboard/visualizations
Return a list of visualizations associated with a dashboard
curl localhost:8080/dashboards/570ba706a4cc946212bdaa42/visualizationsPUT /dashboards/:dashboard/visualizations
Add an existing visualization to a dashboard
curl localhost:8080/dashboards/570ba706a4cc946212bdaa42/visualizations -X PUT --data 'visualizations=570b9e54ddef419e0fda43a9'DELETE /dashboards/:dashboard/visualizations/:visualization
Remove a visualization from a dashboard (does not delete the visualization)
curl -X DELETE localhost:8080/dashboards/570ba706a4cc946212bdaa42/visualizations/570b968507b51d710c748fb2GET /authenticate
Authenticate user
curl localhost:8080/authentication/authenticateGET /execute/:visualization_id
Run analytic based on parameters of the provided visualization id and return json results.
curl localhost:8080/execute/572a1c11fbdcac91218b9a1fAccept an optional list of filters
curl localhost:8080/execute/572a1c11fbdcac91218b9a1f -H 'Content-Type: application/json' --data '{"filters": [{"field": "Gender","operator": "=","value": "M"}]}'9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago