{"record":{"id":"c7b65939da6266f3","repo":"phacility/phabricator","slug":"parameter-fulltext-is-no-longer-supported-use-m","errorCode":null,"errorMessage":"Parameter \"fullText\" is no longer supported. Use method \"maniphest.search\" with the \"query\" constraint instead.","messagePattern":"Parameter \"fullText\" is no longer supported\\. Use method \"maniphest\\.search\" with the \"query\" constraint instead\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php","lineNumber":105,"sourceCode":"      $query->withAuthors($authors);\n    }\n\n    $projects = $request->getValue('projectPHIDs');\n    if ($projects) {\n      $query->withEdgeLogicPHIDs(\n        PhabricatorProjectObjectHasProjectEdgeType::EDGECONST,\n        PhabricatorQueryConstraint::OPERATOR_AND,\n        $projects);\n    }\n\n    $ccs = $request->getValue('ccPHIDs');\n    if ($ccs) {\n      $query->withSubscribers($ccs);\n    }\n\n    $full_text = $request->getValue('fullText');\n    if ($full_text) {\n      throw new Exception(\n        pht(\n          'Parameter \"fullText\" is no longer supported. Use method '.\n          '\"maniphest.search\" with the \"query\" constraint instead.'));\n    }\n\n    $status = $request->getValue('status');\n    if ($status) {\n      $query->withStatus($status);\n    }\n\n    $order = $request->getValue('order');\n    if ($order) {\n      $query->setOrder($order);\n    }\n\n    $limit = $request->getValue('limit');\n    if ($limit) {\n      $query->setLimit($limit);","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php#L87-L123","documentation":"The frozen Conduit method 'maniphest.query' rejects any request containing a non-empty 'fullText' parameter. Full-text search was removed from ManiphestTaskQuery, so the old parameter is explicitly blocked instead of silently ignored. The exception points you at the replacement: the modern 'maniphest.search' endpoint with the 'query' constraint.","triggerScenarios":"Calling conduit method maniphest.query with a non-empty 'fullText' key in the params dict (e.g. $parameters['fullText'] = 'crash on login'). Any value that passes the truthiness check in ManiphestQueryConduitAPIMethod::execute throws before any other filter is applied.","commonSituations":"Legacy scripts, Arcanist-based tools, or third-party integrations written against old Phabricator that did full-text task search via maniphest.query. After upgrading an instance to a version where fulltext was dropped from ManiphestTaskQuery, every search call that passes fullText starts failing immediately.","solutions":["Migrate the call to maniphest.search, passing the search string as the 'query' constraint: $params = array('query' => $full_text) plus the modern constraint/attachments/paging structure.","Remove the 'fullText' key entirely if full-text filtering is no longer needed; the rest of maniphest.query (ids, phids, ownerPHIDs, status, order, limit, offset) still works.","For richer filters (projects, statuses, owners), rebuild them as maniphest.search 'constraints' objects, since maniphest.query is frozen and will not regain full-text support."],"exampleFix":"// before (old frozen method)\n$result = $conduit->callMethodSynchronous('maniphest.query', array(\n  'fullText' => 'crash on login',\n  'status'   => 'open',\n));\n\n// after (modern method)\n$result = $conduit->callMethodSynchronous('maniphest.search', array(\n  'query' => 'crash on login',\n  'constraints' => array(\n    'statuses' => array('open'),\n  ),\n));","handlingStrategy":"fallback","validationCode":"// Before calling maniphest.query, drop or migrate fullText\nif (isset($params['fullText']) && $params['fullText'] !== '') {\n  $params['query'] = $params['fullText'];\n  unset($params['fullText']);\n  // route to maniphest.search instead of maniphest.query\n}","typeGuard":null,"tryCatchPattern":"try {\n  $result = $conduit->callMethodSynchronous('maniphest.query', $params);\n} catch (ConduitClientException $e) {\n  if (strpos($e->getMessage(), 'fullText') !== false) {\n    // degrade: reissue as maniphest.search with 'query' constraint\n    $result = $conduit->callMethodSynchronous('maniphest.search', array(\n      'query' => $params['fullText'],\n    ));\n  } else {\n    throw $e;\n  }\n}","preventionTips":["Standardize new integrations on maniphest.search; treat maniphest.query as read-only legacy.","Lint integration configs for the fullText key before deployment."],"tags":["phabricator","maniphest","conduit","deprecated-api","fulltext-search"],"backgroundTag":"removed-api-parameter","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}