docs: function (context, callback) {
              var self = this,
                  model;
  
              flow()
                  .seq("collection", function (cb) {
                      self._findCollection(context, cb, false);
                  })
                  .seq(function (cb) {
                      var modelFactory = self._getModelFactory();
                      var id = self.$resourceId;
                      id = modelFactory.prototype.convertIdentifier(id);
                      model = this.vars.collection.createItem(id);
  
                      if (context) {
                          // TODO: build options
                      }
                      self._beforeModelFetch(model, context, cb);
                  })
                  .seq(function (cb) {
                      model.fetch(null, cb);
                  })
                  .seq(function () {
                      // fetch hrefs for all sub models and sub collections
                      self._fetchAllHrefsForModel(model, context);
                  })
                  .exec(function (err) {
                      if (!err) {
                          var processor = self.$restHandler.$restDataSource.getProcessorForModel(model);
  
                          var body = JSON.stringify(processor.compose(model, "GET", self._getCompositionOptions(context))),
                              response = context.response;
  
                          response.writeHead(200, {
                              'Content-Type': 'application/json'
                          });
  
                          response.write(body);
                          response.end();
  
                          callback(null);
                      } else {
                          if (!(err instanceof HttpError)) {
                              var statusCode = 500;
                              if (err === DataSource.ERROR.NOT_FOUND) {
                                  statusCode = 404;
                              }
                              err = new HttpError(err, statusCode);
                          }
                          callback(err);
                      }
  
                  });
          }