{ "id": "154700", "key": "DAEMON-5", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "12519", "key": "DAEMON", "name": "Appcelerator Daemon" }, "fixVersions": [], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-03-19T22:23:31.000+0000", "created": "2016-02-03T23:42:56.000+0000", "epic": { "id": 154699, "key": "DAEMON-48", "name": "Appcelerator Daemon v1", "summary": "Appcelerator Daemon v1", "color": { "key": "color_9" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2016-10-21T22:23:05.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "15050", "name": "appcd-core", "description": "Core daemon logic: config, plugin loader, logging, dispatcher" } ], "description": "All the ability to filter JSON responses based on criteria from a dispatcher path.\r\n\r\nFor example, requests to `/appcd/status/system` would return only the system information:\r\n\r\n{code}\r\n{\r\n \"platform\": \"darwin\",\r\n \"arch\": \"x64\",\r\n \"cpus\": 8,\r\n \"hostname\": \"yojimbo.local\",\r\n \"loadavg\": [\r\n 1.609375,\r\n 1.78076171875,\r\n 1.80810546875\r\n ],\r\n \"memory\": {\r\n \"usage\": {\r\n \"rss\": 41881600,\r\n \"heapTotal\": 22978592,\r\n \"heapUsed\": 17236152\r\n },\r\n \"free\": 97452032,\r\n \"total\": 17179869184\r\n }\r\n}\r\n{code}", "attachment": [], "flagged": false, "summary": "appcd: JSON response filtering", "creator": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "environment": null, "closedSprints": [ { "id": 598, "state": "closed", "name": "2016 Sprint 06 Tooling", "startDate": "2016-03-12T01:30:46.475Z", "endDate": "2016-03-26T00:30:00.000Z", "completeDate": "2016-03-28T03:31:22.652Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "380165", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Most of the filtering is thanks to carefully crafted dispatcher paths (regexes) and the observable model, gawk.\r\n\r\nSo you can now run {{appcd exec /appcd/status}} to get a JSON object of the entire server status or add additional segments to the path to filter the response like {{appcd exec /appcd/status/system}}.\r\n\r\nYou can even monitor individual values: {{appcd exec /appcd/status/appcd/uptime}}.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-19T22:23:12.000+0000", "updated": "2016-03-19T22:23:12.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }