0.0.23 • Published 9 years ago

safe-rest v0.0.23

Weekly downloads
7
License
MIT
Repository
github
Last release
9 years ago

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.0

Clone repo

git clone https://github.com/sdurbin1/safe-rest.git

Install safe-rest

cd /path/to/safe-rest
npm install

Ensure mongo is running

Run in separate terminal, or in background

mongod --smallfiles

Populate database with test data

npm run-script db-fill

Edit config.js

Edit the appropriate line in config.js

exports.host = 'https://safe-app-<username>.c9users.io'

Run application

node app.js

Rest 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/analytics
GET /analytics/:analytic

Return an analytic

curl localhost:8080/analytics/56e816d8abda61a618bfccd5
PUT /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/56ea975aec9cc0f3098ae316
PUT /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-types
DELETE /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/56eaa1eae319c5af0c8dfc4d
GET /visualization-types

Return all visualizationTypes

curl localhost:8080/visualization-types
POST /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/56e8178dabda61a618bfccd9
PUT /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/sources
GET /sources/:source

Return a source

curl localhost:8080/sources/56e85075cbe2b94312e95daf
PUT /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/analytics
DELETE /sources/:source/analytics

Remove an analytic from a source (does not delete the analytic)

curl -X DELETE http://localhost:8080/sources/56eaec7a2308db1b1c6f795f/analytics/56eaa9fc51ed186110af1a80
GET /sources/:source/fields

Return all fields associated with a source

curl localhost:8080/sources/56eaec7a2308db1b1c6f795f/fields
POST /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 DELETE
GET /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/visualizations
GET /visualizations/:visualization

Return a visualization

curl localhost:8080/visualizations/570b93b007b51d710c748fb1
PUT /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/570b93b007b51d710c748fb1
POST /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/dashboards
GET /dashboards/:dashboard
curl http://localhost:8080/dashboards/570b9f8a877d26ac10c3b4f1
PUT /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 DELETE
GET /dashboards/:dashboard/visualizations

Return a list of visualizations associated with a dashboard

curl localhost:8080/dashboards/570ba706a4cc946212bdaa42/visualizations
PUT /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/570b968507b51d710c748fb2
GET /authenticate

Authenticate user

curl localhost:8080/authentication/authenticate
GET /execute/:visualization_id

Run analytic based on parameters of the provided visualization id and return json results.

curl localhost:8080/execute/572a1c11fbdcac91218b9a1f

Accept an optional list of filters

curl localhost:8080/execute/572a1c11fbdcac91218b9a1f -H 'Content-Type: application/json' --data '{"filters": [{"field": "Gender","operator": "=","value": "M"}]}'
0.0.23

9 years ago

0.0.22

9 years ago

0.0.21

9 years ago

0.0.20

9 years ago

0.0.19

9 years ago

0.0.18

10 years ago

0.0.17

10 years ago

0.0.15

10 years ago

0.0.14

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago