{ "id": "140547", "key": "TIMOB-18098", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "16925", "description": "WatchKit Support--all going into 5.0 now", "name": "Release 5.0.0", "archived": true, "released": true, "releaseDate": "2015-09-16" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-07-28T22:37:00.000+0000", "created": "2014-11-25T22:40:43.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [ { "id": "16704", "description": "Release 3.5.0", "name": "Release 3.5.0", "archived": false, "released": true, "releaseDate": "2015-01-13" } ], "issuelinks": [], "assignee": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "updated": "2015-08-18T15:19:41.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "REPRODUCTION:\r\nBuild the application using a master version of the Titanium SDK and run in the Genymotion emulator.\r\nClick the 'Add Notification' button.\r\nBack out of the application till it closes.\r\nWait 30s for the notification to trigger.\r\n\r\nRESULTS:\r\nWhen the service tries to call the Android.NotificationManager.notify() method it throws an exception.\r\n\r\n{noformat}\r\n[WARN] : W/System.err java.lang.NullPointerException\r\n[WARN] : W/System.err \tat android.app.Notification$Builder.applyStandardTemplate(Notification.java:1630)\r\n[WARN] : W/System.err \tat android.app.Notification$Builder.makeContentView(Notification.java:1752)\r\n[WARN] : W/System.err \tat android.app.Notification$Builder.buildUnstyled(Notification.java:1800)\r\n[WARN] : W/System.err \tat android.app.Notification$Builder.build(Notification.java:1872)\r\n[WARN] : W/System.err \tat android.support.v4.app.NotificationCompatKitKat$Builder.build(NotificationCompatKitKat.java:114)\r\n[WARN] : W/System.err \tat android.support.v4.app.NotificationCompat$NotificationCompatImplKitKat.build(NotificationCompat.java:633)\r\n[WARN] : W/System.err \tat android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1503)\r\n[WARN] : W/System.err \tat ti.modules.titanium.android.notificationmanager.NotificationProxy.buildNotification(NotificationProxy.java:315)\r\n[WARN] : W/System.err \tat ti.modules.titanium.android.notificationmanager.NotificationManagerModule.notify(NotificationManagerModule.java:78)\r\n[WARN] : W/System.err \tat org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModule(Native Method)\r\n[WARN] : W/System.err \tat org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModule(V8Runtime.java:177)\r\n[WARN] : W/System.err \tat org.appcelerator.kroll.KrollRuntime.handleMessage(KrollRuntime.java:299)\r\n[WARN] : W/System.err \tat org.appcelerator.kroll.runtime.v8.V8Runtime.handleMessage(V8Runtime.java:203)\r\n[WARN] : W/System.err \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[WARN] : W/System.err \tat android.os.Looper.loop(Looper.java:136)\r\n[WARN] : W/System.err \tat org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)\r\n[WARN] : TiExceptionHandler (main) [5002,552687] Activity is null or already finishing, skipping dialog.\r\n[ERROR] : V8Exception Exception occurred at ExampleService.js:47 Uncaught Error Java Exception occurred\r\n{noformat}\r\n\r\nOTHER INFO:\r\nIf you hit the home button instead to close the application, the notification works.\r\n\r\nIf you remove the notify call from the service, the service runs OK.\r\n\r\nThis works fine with 3.4.0.GA and 3.4.1.GA.\r\n\r\n\r\n\r\n\r\n*./Resources/app.js*\r\n{code}\r\nvar win = Ti.UI.createWindow();\r\nvar btn = Ti.UI.createButton({\r\n title : 'Add Notification'\r\n});\r\nbtn.addEventListener('click', function(e) {\r\n var intent = Ti.Android.createServiceIntent({\r\n url : 'ExampleService.js'\r\n });\r\n intent.putExtra('title' , 'Richard III');\r\n intent.putExtra('message' , 'Now is the winter of our discontent...');\r\n intent.putExtra('timestamp', new Date(new Date().getTime() + 30 * 1000));\r\n intent.putExtra('interval', 5000);\r\n Ti.Android.startService(intent);\r\n Ti.App.Properties.setBool('bind', false);\r\n});\r\nwin.add(btn);\r\nwin.open();\r\n{code}\r\n\r\n*./Resources/ExampleService.js*\r\n{code}\r\nvar service = Ti.Android.currentService;\r\nvar serviceIntent = service.getIntent();\r\nvar timestamp = new Date(serviceIntent.getStringExtra('timestamp'));\r\n\r\nTi.API.info(service.serviceInstanceId);\r\n\r\nif (!Ti.App.Properties.getBool('bind')) {\r\n\t\t\r\n\tservice.addEventListener(\"taskremoved\", function(){\r\n\t Ti.API.info(\"**************************** taskremoved fired\"); \r\n\t});\r\n\tservice.addEventListener(\"pause\", function(){\r\n\t Ti.API.info(\"**************************** pause fired\"); \r\n\t});\r\n\tservice.addEventListener(\"resume\", function(){\r\n\t Ti.API.info(\"**************************** resume fired\"); \r\n\t});\r\n\t\r\n\tTi.App.Properties.setBool('bind', true);\r\n}\r\n\r\nif (new Date() > timestamp) {\r\n\r\n // Grab extra data sent with the intent\r\n var title = serviceIntent.getStringExtra('title');\r\n var message = serviceIntent.getStringExtra('message');\r\n \r\n // Create an intent that launches the application\r\n var intent = Ti.Android.createIntent({\r\n action : Ti.Android.ACTION_MAIN,\r\n className: 'com.appcelerator.testapns.ActionnewsActivity',\r\n packageName: 'com.appcelerator.testapns',\r\n flags : Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP\r\n });\r\n intent.addCategory(Ti.Android.CATEGORY_LAUNCHER);\r\n\r\n \r\n // Create notification\r\n var notification = Ti.Android.createNotification({\r\n contentIntent : Ti.Android.createPendingIntent({intent : intent}),\r\n contentTitle : title,\r\n contentText : message\r\n });\r\n \r\n // Send the notification\r\n Ti.Android.NotificationManager.notify(service.serviceInstanceId, notification);\r\n \r\n // Stop the service once the notification is sent\r\n Ti.Android.stopService(serviceIntent);\r\n} \r\n{code}\r\n\r\n*Replace android element with the following in tiapp.xml*\r\n{code}\r\n \r\n \r\n \r\n \r\n \r\n{code}", "attachment": [], "flagged": false, "summary": "Android: JavaScript Service calling the notify method throws an error if the application is backed out", "creator": { "name": "bhatfield", "key": "bhatfield", "displayName": "Benjamin Hatfield", "active": false, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "bhatfield", "key": "bhatfield", "displayName": "Benjamin Hatfield", "active": false, "timeZone": "America/Los_Angeles" }, "environment": "Mac OS X 10.9.5\r\nAppcelerator Studio, build: 3.4.1.201410281743\r\nTi SDK 3.5.0.v20141118102515, 3.6.0.v20141125154117, 3.4.1.GA, 3.4.0.GA\r\nCLI 3.5.0-dev\r\nGenymotion Google Nexus 7 - 4.4.4 - API 19 - 800x1280\r\nAndroid 5.0/API 21", "closedSprints": [ { "id": 445, "state": "closed", "name": "2015 Sprint 15 SDK", "startDate": "2015-07-18T00:30:28.848Z", "endDate": "2015-08-01T00:30:00.000Z", "completeDate": "2015-08-03T01:49:18.234Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "354538", "author": { "name": "dyan02", "key": "dyan02", "displayName": "ardy wongso", "active": true, "timeZone": "America/Los_Angeles" }, "body": "any update on this one? because it was working fine in 3.5.1 but no longer working in 4.0.0 \r\n\r\n[WARN] : W/System.err: java.lang.NullPointerException\r\n[WARN] : W/System.err: at android.app.Notification$Builder.applyStandardTemplate(Notification.java:2039)\r\n[WARN] : W/System.err: at android.app.Notification$Builder.makeContentView(Notification.java:2181)\r\n[WARN] : W/System.err: at android.app.Notification$Builder.buildUnstyled(Notification.java:2229)\r\n[WARN] : W/System.err: at android.app.Notification$Builder.build(Notification.java:2310)\r\n[WARN] : W/System.err: at android.support.v4.app.NotificationCompatKitKat$Builder.build(NotificationCompatKitKat.java:114)\r\n[WARN] : W/System.err: at android.support.v4.app.NotificationCompat$NotificationCompatImplKitKat.build(NotificationCompat.java:649)\r\n[WARN] : W/System.err: at android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1532)\r\n[WARN] : W/System.err: at ti.modules.titanium.android.notificationmanager.NotificationProxy.buildNotification(NotificationProxy.java:315)\r\n[WARN] : W/System.err: at ti.modules.titanium.android.notificationmanager.NotificationManagerModule.notify(NotificationManagerModule.java:78)\r\n[WARN] : W/System.err: at org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModule(Native Method)\r\n[WARN] : W/System.err: at org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModule(V8Runtime.java:177)\r\n[WARN] : W/System.err: at org.appcelerator.kroll.KrollRuntime.handleMessage(KrollRuntime.java:299)\r\n[WARN] : W/System.err: at org.appcelerator.kroll.runtime.v8.V8Runtime.handleMessage(V8Runtime.java:203)\r\n[WARN] : W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)\r\n[WARN] : W/System.err: at android.os.Looper.loop(Looper.java:136)\r\n[WARN] : W/System.err: at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)\r\n[WARN] : TiExceptionHandler: (main) [272,259562] Activity is null or already finishing, skipping dialog.", "updateAuthor": { "name": "dyan02", "key": "dyan02", "displayName": "ardy wongso", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-06-08T08:02:10.000+0000", "updated": "2015-06-09T01:10:42.000+0000" }, { "id": "355104", "author": { "name": "iamyellow", "key": "iamyellow", "displayName": "jordi domenech", "active": true, "timeZone": "Europe/Berlin" }, "body": "there's a bug, indeed:\r\nhttps://github.com/appcelerator/titanium_mobile/blob/17dc8754653daaff170ea0c18f74218168a5633e/android/modules/android/src/java/ti/modules/titanium/android/notificationmanager/NotificationProxy.java#L46\r\n\r\nthey're passing current activity to the notification (compat) builder. if there's no activity, will be null. makes a lot of sense it only happens from a service.", "updateAuthor": { "name": "iamyellow", "key": "iamyellow", "displayName": "jordi domenech", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-06-15T07:53:37.000+0000", "updated": "2015-06-15T07:53:37.000+0000" }, { "id": "355123", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "This issue is causing our app to crash when the it's woken from the background by the user tapping a push notification. It is a blocker for us moving to 4.0, as the crash happens very frequently using that SDK. Though we're also seeing crashes with 3.5.0 and 3.5.1 as well. \r\n\r\nWe are using the http://iamyellow.net/post/40100981563/gcm-appcelerator-titanium-module GCM module. Error messages are like the following, and looking at the gcm.js code, it appears that Jordi's comment above is correct in that the activity reference is null.\r\n\r\n{code}\r\n[ERROR] TiExceptionHandler: (main) [6202,11607] ----- Titanium Javascript Runtime Error -----\r\n[ERROR] TiExceptionHandler: (main) [0,11607] - In gcm.js:1,69\r\n[ERROR] TiExceptionHandler: (main) [1,11608] - Message: Uncaught Error: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference\r\n[ERROR] TiExceptionHandler: (main) [0,11608] - Source: a.addCategory(Ti.Android.CATEGORY_LAUNCHER),a.putExtra(\"ntfId\",s),a.putExtra(\"\r\n{code}", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-06-15T14:27:48.000+0000", "updated": "2015-06-15T14:27:48.000+0000" }, { "id": "356430", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "For reasons I don't understand, this issue has become worse for me. Our app is pretty much unable to handle push notifications because the intent fails to start every time. \r\n\r\n{code}\r\n06-30 14:06:51.234: W/System.err(19120): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.titanium.proxy.IntentProxy.putExtra(IntentProxy.java:198)\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModule(Native Method)\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModule(V8Runtime.java:177)\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.kroll.KrollRuntime.handleMessage(KrollRuntime.java:299)\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.kroll.runtime.v8.V8Runtime.handleMessage(V8Runtime.java:203)\r\n06-30 14:06:51.234: W/System.err(19120): \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n06-30 14:06:51.234: W/System.err(19120): \tat android.os.Looper.loop(Looper.java:145)\r\n06-30 14:06:51.234: W/System.err(19120): \tat org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)\r\n{code}\r\n\r\nIf the app is open when the message arrives, it is received and handled fine. If the app is in the background, we see the above in the adb logs. I have tried with 3.5.0.GA, 3.5.1.GA, 4.0.0.GA, and a nightly I built myself (don't recall the date of that build, but post GA). Tested on both Android 5.0 and 4.2.2 devices. ", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-06-30T18:21:03.000+0000", "updated": "2015-06-30T18:30:44.000+0000" }, { "id": "356723", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "My last comment above might not be related to the original bug after all. If a null value is passed to putExtra, then the line at https://github.com/appcelerator/titanium_mobile/blob/master/android/titanium/src/java/org/appcelerator/titanium/proxy/IntentProxy.java#L198 fails with the above error message. I added a simple check and have worked around the issue above. I'm unsure why code that worked before would now be passing null to putExtra.\r\n\r\n{code}\r\n@Kroll.method\r\npublic void putExtra(String key, Object value)\r\n{\r\n\tif (value == null) {\r\n\t\treturn;\r\n\t}\r\n...\r\n{code}\r\n", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-07-02T13:44:37.000+0000", "updated": "2015-07-02T13:44:37.000+0000" }, { "id": "356987", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "PRs for the change I noted in my previous comment:\r\n\r\nhttps://github.com/appcelerator/titanium_mobile/pull/6958 (master)\r\nhttps://github.com/appcelerator/titanium_mobile/pull/6957 (3_5_X)", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-07-06T14:44:19.000+0000", "updated": "2015-07-06T14:44:19.000+0000" }, { "id": "358344", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR for review: https://github.com/appcelerator/titanium_mobile/pull/6986 Use testing steps as above", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-07-27T08:25:22.000+0000", "updated": "2015-07-27T08:25:22.000+0000" }, { "id": "358345", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~timpoulsen] The PR that you did, how exactly is that bug reproduced? \r\n\r\nAnd it it's possible, if it's another issue, could you create a new ticket for that and put the PR there with testing steps or how to reproduce the bug? I'll take a look at it once the information is provided.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-07-27T08:27:37.000+0000", "updated": "2015-07-27T08:27:37.000+0000" }, { "id": "358465", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR has been merged for JavaScript Service calling the notify method throws an error if the application is backed out.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-07-28T23:27:05.000+0000", "updated": "2015-07-28T23:27:05.000+0000" }, { "id": "358811", "author": { "name": "nunocostapt", "key": "nunocostapt", "displayName": "Nuno Costa", "active": true, "timeZone": "Europe/Lisbon" }, "body": "@Ashraf Abu this PR is to be merged in 4.1_x branch ? Is only in the master at moment. \r\n\r\nThanks", "updateAuthor": { "name": "nunocostapt", "key": "nunocostapt", "displayName": "Nuno Costa", "active": true, "timeZone": "Europe/Lisbon" }, "created": "2015-08-02T14:43:31.000+0000", "updated": "2015-08-02T14:43:31.000+0000" }, { "id": "358813", "author": { "name": "ethraza", "key": "ethraza", "displayName": "Allan Brazute", "active": true, "timeZone": "America/Sao_Paulo" }, "body": "It seems not resolved within SDK 4.1.0.GA on Android 5.0.1 emulator:\r\n\r\nOutput from service trying to create a CATEGORY_LAUNCHER Notification when app is closed (back key):\r\n\r\n{panel:title=Trace}\r\n[INFO] : Service start...\r\n[WARN] : W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference\r\n[WARN] : W/System.err: \tat android.app.Notification$Builder.(Notification.java:1951)\r\n[WARN] : W/System.err: \tat android.support.v4.app.NotificationCompatApi21$Builder.(NotificationCompatApi21.java:68)\r\n[WARN] : W/System.err: \tat android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:746)\r\n[WARN] : W/System.err: \tat android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1532)\r\n[WARN] : W/System.err: \tat ti.modules.titanium.android.notificationmanager.NotificationProxy.buildNotification(NotificationProxy.java:314)\r\n[WARN] : W/System.err: \tat ti.modules.titanium.android.notificationmanager.NotificationManagerModule.notify(NotificationManagerModule.java:79)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:73)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1145)\r\n[WARN] : W/System.err: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[WARN] : W/System.err: \tat android.os.Looper.loop(Looper.java:135)\r\n[WARN] : W/System.err: \tat org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)\r\n[WARN] : TiExceptionHandler: (main) [12,729023] Activity is null or already finishing, skipping dialog.\r\n[ERROR] : V8Exception: Exception occurred at undefined:60: Uncaught Error: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference\r\n{panel}", "updateAuthor": { "name": "ethraza", "key": "ethraza", "displayName": "Allan Brazute", "active": true, "timeZone": "America/Sao_Paulo" }, "created": "2015-08-02T17:27:10.000+0000", "updated": "2015-08-02T17:45:29.000+0000" }, { "id": "358816", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~nunocostapt], [~ethraza@gmail.com] Hi. The fix should be in the next release which should be 5.0", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-08-03T02:12:16.000+0000", "updated": "2015-08-03T02:12:16.000+0000" }, { "id": "359726", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix.\r\n\r\nThe notify method does not throw an error if the application is backed out.\r\n\r\nClosing.\r\n\r\nEnvironment:\r\nAppc Studio : 4.2.0.201508062204\r\nTi SDK : 4.2.0.v20150812103137 (going to be 5.0 later)\r\nTi CLI : 4.1.4\r\nAlloy : 1.6.2\r\nMAC Yosemite : 10.10.4\r\nAppc NPM : 4.1.0\r\nAppc CLI : 4.2.0-44\r\nNode: v0.10.37\r\nGenymotion Emulator : Nexus 5 - Android 4.4.4\r\nNode : v0.10.37\r\nEnvironment : preproduction", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-08-12T21:00:13.000+0000", "updated": "2015-08-12T21:00:13.000+0000" }, { "id": "360197", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-08-18T15:19:41.000+0000", "updated": "2015-08-18T15:19:41.000+0000" } ], "maxResults": 14, "total": 14, "startAt": 0 } } }