docs: function initModelRead (args) {
      var controller = this
      var model = this.model
      // if model does not have id column then cannot use default controller
      if (!model.columnName('id')) {
          return
      }
      // make sure args is object
      args = requireValidOptionalObject(args)
      // make sure read is defined
      args.read = requireValidOptionalObject(args.read)
      // make sure query args are object
      var queryArgs = requireValidOptionalObject(args.read.query)
      // if specific with records not specified then default to model relations
      if (!defined(queryArgs.with)) {
          queryArgs.with = {}
          // load related records
          _.each(model.relations, (relation, relationName) => {
              // add all related models - limit results to 20
              queryArgs.with[relationName] = {
                  limit: 20,
              }
          })
      }
      // if with is false do not load any related records
      if (queryArgs.with === false) {
          delete queryArgs.with;
      }
      // get role
      var role = args.defaultRole || 'all'
      // save forms
      var forms = args.read && args.read.forms
      // index inputs
      var input = {
          // get current revision of instance
          current: 'query.current',
          // get record even if deleted
          deleted: 'query.deleted',
          // instance id
          id: 'params.id',
      }
      // links to display at top of page
      var links
      // use links from read view
      if (Array.isArray(args.read.links)) {
          links = _.cloneDeep(args.read.links)
      }
      // use global controller links
      else if (Array.isArray(args.links)) {
          links = _.cloneDeep(args.links)
      }
      // set default links
      else {
          links = []
      }
      // create path if it does not exist
      if (!this.paths['/:id']) {
          this.paths['/:id'] = {}
      }
      // add handler for GET /:id to get model instance
      this.paths['/:id'].get = [
          {
              before: function (args) {
                  return beforeRead(controller, args, forms, queryArgs)
              },
              input: input,
              method: function (args) {
                  // format response
                  return read(controller, args, links)
              },
              methodName: 'read',
              role: role,
              template: 'instance',
          },
      ]
  }