def GET(self, deviceId, notificationId):
    """
      Get single notification

      ::

          GET /_notifications/{deviceId}/{notificationId}

      Returns:

      ::

          {
            "uid": "e78599c4-758b-4c6e-87b1-daabaccff798",
            "timestamp": "2014-02-07 16:26:44",
            "metric": "e5511f295a474037a75bc966d02b67d2",
            "acknowledged": 0,
            "seen": 0,
            "windowsize": 3600,
            "device": "9a90eaf2-6374-4230-aa96-0830c0a737fe"
          }

      :param uid: Notification ID
      :type uid: str
      :param timestamp: Notification timestamp
      :type timestamp: timestamp
      :param metric: Metric that triggered notification
      :type metric: str
      :param acknowledged: Acknowledged status
      :type acknowledged: int
      :param seen: Seen status
      :type seen: int
      :param windowsize: Notification window in seconds during which no other
        notifications for a given instance should be sent to a given device
      :type windowsize: int
      :param device: Device ID
      :type device: str
    """
    # Update the last_timestamp for the notification device.
    try:
      with web.ctx.connFactory() as conn:
        repository.updateNotificationDeviceTimestamp(conn, deviceId)
    except ObjectNotFoundError:
      return web.notfound("Notification device not found: %s" % deviceId)

    try:
      with web.ctx.connFactory() as conn:
        notificationRow = repository.getNotification(conn,
                                                     notificationId,
                                                     NotificationHandler.fields)
      notificationDict = dict([(col, notificationRow[col])
                              for col in NotificationHandler.fields])

      if notificationRow["device"] != deviceId:
        return web.notfound("Device not found: %s" % deviceId)

      self.addStandardHeaders()
      return utils.jsonEncode(notificationDict)
    except ObjectNotFoundError:
      return web.notfound("Notification not found: %s" % notificationId)
  def GET(self, deviceId):
    """
      Get notification history for device

      ::

          GET /_notifications/{deviceId}/history

      :param limit: (optional) max number of records to return
      :type limit: int

      Returns:

      ::

          [
            {
              "uid": "e78599c4-758b-4c6e-87b1-daabaccff798",
              "timestamp": "2014-02-07 16:26:44",
              "metric": "e5511f295a474037a75bc966d02b67d2",
              "acknowledged": 0,
              "windowsize": 3600,
              "device": "9a90eaf2-6374-4230-aa96-0830c0a737fe"
            },
            ...
          ]


      :param uid: Notification ID
      :type uid: str
      :param timestamp: Notification timestamp
      :type timestamp: timestamp
      :param metric: Metric that triggered notification
      :type metric: str
      :param acknowledged: Acknowledged status
      :type acknowledged: int
      :param seen: Seen status
      :type seen: int
      :param windowsize: Notification window in seconds during which no other
        notifications for a given instance should be sent to a given device
      :type windowsize: int
      :param device: Device ID
      :type device: str
    """
    # Update the last_timestamp for the notification device.
    try:
      with web.ctx.connFactory() as conn:
        repository.updateNotificationDeviceTimestamp(conn, deviceId)
    except ObjectNotFoundError:
      return web.notfound("Notification device not found: %s" % deviceId)

    queryParams = dict(urlparse.parse_qsl(web.ctx.env['QUERY_STRING']))
    if "limit" in queryParams:
      limit = int(queryParams["limit"])
    else:
      limit = None
    self.addStandardHeaders()
    with web.ctx.connFactory() as conn:
      notificationRows = repository.getUnseenNotificationList(
        conn, deviceId, limit, NotificationHandler.fields)

    notificationList = [dict([(col, notification[col])
                             for col in NotificationHandler.fields])
                        for notification in notificationRows]

    return utils.jsonEncode(notificationList)