private function buildFieldsBox(PhabricatorApplicationSearchEngine $engine) { $info = pht(<<<EOTEXT Objects matching your query are returned as a list of dictionaries in the `data` property of the results. Each dictionary has some metadata and a `fields` key, which contains the information abou the object that most callers will be interested in. For example, the results may look something like this: ```lang=json, name="Example Results" { ... "data": [ { "id": 123, "phid": "PHID-WXYZ-1111", "fields": { "name": "First Example Object", "authorPHID": "PHID-USER-2222" } }, { "id": 124, "phid": "PHID-WXYZ-3333", "fields": { "name": "Second Example Object", "authorPHID": "PHID-USER-4444" } }, ... ] ... } ``` This result structure is standardized across all search methods, but the available fields differ from application to application. These are the fields available on this object type: EOTEXT ); $specs = $engine->getAllConduitFieldSpecifications(); $rows = array(); foreach ($specs as $key => $spec) { $type = $spec->getType(); $description = $spec->getDescription(); $rows[] = array($key, $type, $description); } $table = id(new AphrontTableView($rows))->setHeaders(array(pht('Key'), pht('Type'), pht('Description')))->setColumnClasses(array('pri', 'mono', 'wide')); return id(new PHUIObjectBoxView())->setHeaderText(pht('Object Fields'))->setCollapsed(true)->appendChild($this->buildRemarkup($info))->appendChild($table); }