Widgets ******** This endpoint provides ability to persist charts. Where: - ``pk`` - is the widget id Definition ^^^^^^^^^^ - ``id`` - The ID of the widget - ``title`` - Title of the widget - ``content_object`` - Data source of the widget. XForm/Dataview - ``description`` Widget description - ``aggregation`` Description of an aggregation used during a group_by - ``order`` The order of the widget. The order will be made unique to the XForm/Dataview by linearly reordering - ``widget_type`` The Widget type - ``view_type``- Stores information to help the widget display the data - ``column`` - The column of the data being charted - ``group_by`` - This is another column (not equal to column) that the data should be grouped by - ``key`` - Unique identifier - ``metadata`` - json dict to store extra information. Create a new Widget ^^^^^^^^^^^^^^^^^^^^^ .. raw:: html
	POST /api/v1/widgets
Example ------- :: { "title": "My new title", "description": "new description", "aggregation": "mean", "order": 0, "content_object": "https://api.ona.io/api/v1/forms/9929", "widget_type": "charts", "view_type": "horizontal-bar", "column": "age" } Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] } Retrieve a Widget ^^^^^^^^^^^^^^^^^^^ .. raw:: html
	GET /api/v1/widgets/{pk}
Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] } List all Widgets ^^^^^^^^^^^^^^^^^ .. raw:: html
	GET /api/v1/widgets
Response -------- :: [ { "id": 1, "key": "3e87d40427914e56840fc0c5f17401c6", "title": "Tomorrow never comes", "description": "Movies", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "gender", "group_by": age, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] }, { "id": 2, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "gender", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] } ] Update a Widget ^^^^^^^^^^^^^^^^^ .. raw:: html
	PUT /api/v1/widgets/{pk}
Example ------- :: { "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "content_object": "https://api.ona.io/api/v1/forms/9929", "widget_type": "charts", "view_type": "horizontal-bar", "column": "age" } Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] } Patch a Widget ^^^^^^^^^^^^^^^^ .. raw:: html
	PATCH /api/v1/widgets/{pk}
Example ------- :: { 'column': 'gender' } Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "gender", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [] } Delete a Widget ^^^^^^^^^^^^^^^^^ .. raw:: html
	DELETE /api/v1/widgets/{pk}
Response -------- :: HTTP 204 NO CONTENT Widget Data ^^^^^^^^^^^ To get the widgets data, set the data flag to true. .. raw:: html
	GET /api/v1/widgets/{pk}?data=true
Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [ { "count": 2, "age": "21" }, { "count": 3, "age": "22" }, { "count": 1, "age": "23" }, ] } Widget Data With Valid Key ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. raw:: html
	GET /api/v1/widgets?key={valid widget key}
Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [ { "count": 2, "age": "21" }, { "count": 3, "age": "22" }, { "count": 1, "age": "23" }, ] } Filter Widget Using FormID ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. raw:: html
	GET /api/v1/widgets?xform={form id}
Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/forms/9929", "data": [ { "count": 2, "age": "21" }, { "count": 3, "age": "22" }, { "count": 1, "age": "23" }, ] } Filter Widget Using DataView ID ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. raw:: html
	GET /api/v1/widgets?dataview={dataview id}
Response -------- :: { "id": 1, "key": "e60c148d19464365b4e9a5d88f52694b", "title": "My new title updated", "description": "new description", "aggregation": "mean", "order": 0, "widget_type": "charts", "view_type": "horizontal-bar", "column": "age", "group_by": null, "content_object": "https://api.ona.io/api/v1/dataviews/12", "data": [ { "count": 2, "age": "21" }, { "count": 3, "age": "22" }, { "count": 1, "age": "23" }, ] }