docs: function(udidOrCallback, callback) {
      var self = this;
      var udid, cb;
  
      if(isFunction(udidOrCallback)) {
        cb = udidOrCallback;
      } else {
        udid = udidOrCallback;
        cb = callback;
      }
  
      if(!isFunction(cb)) {
        throw new Error('The QB.addressbook.get accept callback function is required.');
      }
  
      var ajaxParams = {
        'type': 'GET',
        'url': Utils.getUrl(config.urls.addressbook),
        'contentType': 'application/json; charset=utf-8',
        'isNeedStringify': true
      };
  
      if(udid) {
        ajaxParams.data = {'udid': udid};
      }
  
      this.service.ajax(ajaxParams, function(err, res) {
        if (err) {
          // Don't ask me why.
          // Thanks to backend developers for this
          var isFakeErrorEmptyAddressBook = self._isFakeErrorEmptyAddressBook(err);
  
          if(isFakeErrorEmptyAddressBook) {
            cb(null, []);
          } else {
            cb(err, null);
          }
        } else {
          cb(null, res);
        }
      });
    }