docs: function (context, callback) {
  
              if (this.$resourceConfiguration.$.upsert === true) {
                  callback(new HttpError("Please create with PUT", 405));
                  return;
              }
  
              var self = this,
                  model,
                  processor;
  
              flow()
                  .seq("collection", function (cb) {
                      self._findCollection(context, cb);
                  })
                  .seq(function () {
                      model = this.vars.collection.createItem();
  
                      var payload = context.request.params;
  
                      processor = self.$restHandler.$restDataSource.getProcessorForModel(model);
  
                      model.set(processor.parse(model, payload));
  
                      if (model.createdField) {
                          model.set(model.createdField, new Date());
                      }
                  })
                  .seq(function () {
                      self._generateAutoValues(model);
                  })
                  .seq(function (cb) {
                      self._validate(model, context, cb);
                  })
                  .seq(function (cb) {
                      self._beforeModelSave(model, context, cb);
                  })
                  .seq(function (cb) {
                      self._beforeModelCreate(model, context, cb);
                  })
                  // validate and save model
                  .seq(function (cb) {
                      model.validateAndSave({action: DataSource.ACTION.CREATE }, cb);
                  })
                  .seq(function (cb) {
                      self._afterModelCreate(model, context, cb);
                  }).
                  exec(function (err, results) {
                      if (!err) {
                          // TODO: do correct invalidation
                          results.collection.invalidatePageCache();
  
                          var body = JSON.stringify(processor.compose(model, null));
  
                          var response = context.response;
                          response.writeHead(201, "", {
                              'Content-Type': 'application/json',
                              'Location': context.request.urlInfo.uri + "/" + model.identifier()
                          });
  
                          response.write(body);
                          response.end();
  
                          callback(null);
                      } else {
                          if (!(err instanceof HttpError)) {
                              var statusCode = 400;
                              // TODO: add more error handling
                              err = new HttpError(err, statusCode);
                          }
                          callback(err);
                      }
                  });
          }