code: func (a *ActionDefinition) initQueryParams() {
  	// 3. Compute QueryParams from Params and set all path params as non zero attributes
  	if params := a.AllParams(); params != nil {
  		queryParams := DupAtt(params)
  		queryParams.Type = Dup(queryParams.Type)
  		if a.Params == nil {
  			a.Params = &AttributeDefinition{Type: Object{}}
  		}
  		a.Params.NonZeroAttributes = make(map[string]bool)
  		for _, route := range a.Routes {
  			pnames := route.Params()
  			for _, pname := range pnames {
  				a.Params.NonZeroAttributes[pname] = true
  				delete(queryParams.Type.ToObject(), pname)
  				if queryParams.Validation != nil {
  					req := queryParams.Validation.Required
  					for i, n := range req {
  						if n == pname {
  							queryParams.Validation.Required = append(req[:i], req[i+1:]...)
  							break
  						}
  					}
  				}
  			}
  		}
  		a.QueryParams = queryParams
  	}
  }
docs: // initQueryParams extract the query parameters from the action params.