This is a standard ApplicationSearch method which will let you list, query, or search for objects. For documentation on these endpoints, see Conduit API: Using Search Endpoints.
maniphest.search
API Method: maniphest.search
- Summary
- Read information about tasks.
- Returns
- map<string, wild>
- Errors
- ERR-CONDUIT-CORE: See error message for details.
- OAuth Scope
- OAuth clients may never call this method.
Method Description
Prebuilt Queries
You can choose a builtin or saved query as a starting point for filtering results by selecting it with queryKey. If you don't specify a queryKey, the query will start with no constraints.
For example, many applications have builtin queries like "active" or "open" to find only active or enabled results. To use a queryKey, specify it like this:
{ ... "queryKey": "active", ... }
The table below shows the keys to use to select builtin queries and your saved queries, but you can also use any query you run via the web UI as a starting point. You can find the key for a query by examining the URI after running a normal search.
You can use these keys to select builtin queries and your configured saved queries:
| Query Key | Name | Builtin |
|---|---|---|
| UADEx7VaU.JR | Bekannte Bugs | Custom |
| 6ZugkEy4fAmS | Offene Haupt-Tickets | Custom |
| open | Open Tasks | Builtin |
| o85Z1cctyLhL | Newly Created | Custom |
| WhK6oczdOtcC | Recently Closed | Custom |
| UsX_f3.0HOl6 | Recently Created | Custom |
| o8EY2WEIUCxo | Recently Updated | Custom |
| Wi0mCmh9HrUc | Zuordnungsbedarf | Custom |
| ia8H3DFqIajQ | Nicht zugewiesen | Custom |
| BfI36wO.OiHa | Zur Sichtung | Custom |
| all | All Tasks | Builtin |
Constraints
You can apply custom constraints by passing a dictionary in constraints. This will let you search for specific sets of results (for example, you may want show only results with a certain state, status, or owner).
If you specify both a queryKey and constraints, the builtin or saved query will be applied first as a starting point, then any additional values in constraints will be applied, overwriting the defaults from the original query.
Different endpoints support different constraints. The constraints this method supports are detailed below. As an example, you might specify constraints like this:
{ ... "constraints": { "authorPHIDs": ["PHID-USER-1111", "PHID-USER-2222"], "flavors": ["cherry", "orange"], ... }, ... }
This API endpoint supports these constraints:
| Key | Label | Type | Description |
|---|---|---|---|
| ids | IDs | list<int> | Search for objects with specific IDs. |
| phids | PHIDs | list<phid> | Search for objects with specific PHIDs. |
| assigned | Assigned To | list<user> | Search for tasks owned by a user from a list. |
| authorPHIDs | Authors | list<user> | Search for tasks with given authors. |
| statuses | Statuses | list<string> | Search for tasks with given statuses. |
| priorities | Priorities | list<int> | Search for tasks with given priorities. |
| subtypes | Subtypes | list<string> | Search for tasks with given subtypes. |
| columnPHIDs | Columns | list<phid> | |
| hasParents | Open Parents | bool | |
| hasSubtasks | Open Subtasks | bool | |
| parentIDs | Parent IDs | list<int> | |
| subtaskIDs | Subtask IDs | list<int> | |
| group | Group By | Not supported. | |
| createdStart | Created After | epoch | |
| createdEnd | Created Before | epoch | |
| modifiedStart | Updated After | epoch | |
| modifiedEnd | Updated Before | epoch | |
| closedStart | Closed After | epoch | |
| closedEnd | Closed Before | epoch | |
| closerPHIDs | Closed By | list<user> | Search for tasks closed by certain users. |
| query | Query | string | Find objects matching a fulltext search query. See "Search User Guide" in the documentation for details. |
| subscribers | Subscribers | list<user> | Search for objects with certain subscribers. |
| projects | Tags | list<project> | Search for objects tagged with given projects. |
| spaces | Spaces | list<phid> | Search for objects in certain spaces. |
| custom.maniphest.custom-field.target | Komponente | list<string> | Select für die Komponent: Wiki, Backend, GitHub, Phorge, Mail, Infra, Other |
| custom.maniphest.custom-field.task-type | Kategorie der Aufgabe | list<string> | Select für Aufgaben-Kategorie: General, Code Review, Orga, Other |
| custom.maniphest.custom-field.bot-type | Bot-Ticket-Typ | list<string> | Select für Bot-Ticket-Typ: Kein Bot, Wartung, Feature, Bug, Task, Job, Approval, Other |
| custom.maniphest.custom-field.req-category | Anforderungskategorie | list<string> | Select für Request/Anforderungskategorie: Extension (existing/new), Lua, Gadget, Core, Other |
| custom.maniphest.custom-field.phorge-type | Phorge-Ticket-Typ | list<string> | Select für Phorge-Ticket-Typ: Access, Project Request, Field, Form, Dashboard, No |
| custom.maniphest.custom-field.impact_repro_temp | Reproduzierbarkeit | list<string> | Select für Reproduzierbarkeit: Reproduzierbar, Nicht reproduzierbar, Nur temporär, Unklar |
| custom.maniphest.custom-field.impact_production | Produktion | bool | Checkbox für Impact Produktionssystem: Betrifft ein produktives System |
| custom.maniphest.custom-field.impact_data_loss | Datenverlust | bool | Checkbox für Impact Datenverlust: Führt zu Datenverlust oder Fehlfunktion |
| custom.maniphest.custom-field.impact_many_users | Nutzer | bool | Checkbox für Impact viele Nutzer: Viele Nutzer betroffen |
| custom.maniphest.custom-field.content-type | Art der Changes | list<string> | Select für Content-Änderung: Kategorie, Move, Struktur, Übersetzung, Import, Other |
| custom.maniphest.custom-field.design-type | Design-Thema | list<string> | Select für Design-Thema |
| custom.maniphest.custom-field.maintenance-type | Wartungstyp | list<string> | Select für Wartungstyp: Server-Update, DB-Wartung, Backup, Logfile, Infra-Change, Routine, Bot-Skript, Downtime, Other |
| custom.maniphest.custom-field.maintenance-target | System | list<string> | Select für Wartungsziel: Webserver, Datenbank, MediaWiki, Extensions, Infra, Bots, Storage, Other |
| custom.maniphest.custom-field.maintenance-interval | Wartungsintervall | list<string> | Select für Wartungsintervall: Einmalig, Täglich, Wöchentlich, Monatlich, Vierteljährlich, Jährlich, Other |
| custom.manifest.custom.field.maintenance-date | Geplantes Datum | Not supported. | |
| custom.maniphest.custom-field.maintenance-downtime | Downtime | bool | Checkbox für Wartung Downtime: Downtime zu erwarten |
| custom.maniphest.custom-field.maintenance-announcement | Ankündigung | bool | Checkbox für Wartung Ankündigung: Es ist eine Ankündigung oder Wartungsmeldung erforderlich |
| custom.maniphest.custom-field.abuse-type | Typ des Abuse-Tickets | list<string> | Select für Abuse-Ticket-Typ: Filter-Add, Filter-Debug, Whitelist, Blacklist, Spam, Automation, Massaction, Other |
| custom.maniphest.custom-field.abuse-reason | Grund/Motivation | list<string> | Select für Abuse-Grund: False Positive, Repeat Abuse, Spam, Pattern, Exception, Other |
| custom.maniphest.custom-field.legal-type | Typ des Legal-Tickets | list<string> | Select für Legal-Ticket-Typ: Copyright, License, Plagiarism, Document, Other |
| custom.maniphest.custom-field.legal-status | Status/Bewertung | list<string> | Select für Legal-Ticket-Status: Open, Review, Resolved, Escalate, Clarify |
| custom.maniphest.custom-field.security-type | Typ des Security-Tickets | list<string> | Select für Security-Ticket-Typ: Vulnerability, Auth, Rights, Privacy, Whistle, Compromise, Backdoor, Phishing, Other |
| custom.maniphest.custom-field.security-criticality | Sicherheits-Kritikalität | list<string> | Select für Security-Kritikalität: Critical, High, Medium, Low, Info, No |
Result Ordering
Use order to choose an ordering for the results.
Either specify a single key from the builtin orders (these are a set of meaningful, high-level, human-readable orders) or specify a custom list of low-level columns.
To use a high-level order, choose a builtin order from the table below and specify it like this:
{ ... "order": "newest", ... }
These builtin orders are available:
| Key | Description | Columns |
|---|---|---|
| priority | Priority | priority, id |
| updated | Date Updated (Latest First) | updated, id |
| outdated | Date Updated (Oldest First) | -updated, -id |
| newest | Creation (Newest First) | id |
| oldest | Creation (Oldest First) | -id |
| closed | Date Closed (Latest First) | closed, id |
| title | Title | title, id |
| custom.maniphest.custom-field.impact_production | Produktion | custom.maniphest.custom-field.impact_production, id |
| -custom.maniphest.custom-field.impact_production | Produktion (Reversed) | -custom.maniphest.custom-field.impact_production, -id |
| custom.maniphest.custom-field.impact_data_loss | Datenverlust | custom.maniphest.custom-field.impact_data_loss, id |
| -custom.maniphest.custom-field.impact_data_loss | Datenverlust (Reversed) | -custom.maniphest.custom-field.impact_data_loss, -id |
| custom.maniphest.custom-field.impact_many_users | Nutzer | custom.maniphest.custom-field.impact_many_users, id |
| -custom.maniphest.custom-field.impact_many_users | Nutzer (Reversed) | -custom.maniphest.custom-field.impact_many_users, -id |
| custom.manifest.custom.field.maintenance-date | Geplantes Datum | custom.manifest.custom.field.maintenance-date, id |
| -custom.manifest.custom.field.maintenance-date | Geplantes Datum (Reversed) | -custom.manifest.custom.field.maintenance-date, -id |
| custom.maniphest.custom-field.maintenance-downtime | Downtime | custom.maniphest.custom-field.maintenance-downtime, id |
| -custom.maniphest.custom-field.maintenance-downtime | Downtime (Reversed) | -custom.maniphest.custom-field.maintenance-downtime, -id |
| custom.maniphest.custom-field.maintenance-announcement | Ankündigung | custom.maniphest.custom-field.maintenance-announcement, id |
| -custom.maniphest.custom-field.maintenance-announcement | Ankündigung (Reversed) | -custom.maniphest.custom-field.maintenance-announcement, -id |
| relevance | Relevance | rank, fulltext-modified, id |
You can choose a low-level column order instead. To do this, provide a list of columns instead of a single key. This is an advanced feature.
In a custom column order:
- each column may only be specified once;
- each column may be prefixed with - to invert the order;
- the last column must be a unique column, usually id; and
- no column other than the last may be unique.
To use a low-level order, choose a sequence of columns and specify them like this:
{ ... "order": ["color", "-name", "id"], ... }
These low-level columns are available:
| Key | Unique |
|---|---|
| id | Yes |
| custom.maniphest.custom-field.impact_production | No |
| custom.maniphest.custom-field.impact_data_loss | No |
| custom.maniphest.custom-field.impact_many_users | No |
| custom.manifest.custom.field.maintenance-date | No |
| custom.maniphest.custom-field.maintenance-downtime | No |
| custom.maniphest.custom-field.maintenance-announcement | No |
| rank | No |
| fulltext-created | No |
| fulltext-modified | No |
| priority | No |
| owner | No |
| status | No |
| project | No |
| title | No |
| updated | No |
| closed | No |
Object Fields
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 about the object that most callers will be interested in.
For example, the results may look something like this:
{ ... "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:
| Key | Type | Description |
|---|---|---|
| title | string | The title of the task. |
| description | remarkup | The task description. |
| authorPHID | phid | Original task author. |
| ownerPHID | phid? | Current task owner, if task is assigned. |
| status | map<string, wild> | Information about task status. |
| priority | map<string, wild> | Information about task priority. |
| points | points | Point value of the task. |
| subtype | string | Subtype of the task. |
| closerPHID | phid? | User who closed the task, if the task is closed. |
| dateClosed | int? | Epoch timestamp when the task was closed. |
| spacePHID | phid? | PHID of the policy space this object is part of. |
| dateCreated | int | Epoch timestamp when the object was created. |
| dateModified | int | Epoch timestamp when the object was last updated. |
| policy | map<string, wild> | Map of capabilities to current policies. |
| custom.maniphest.custom-field.difficulty | wild | |
| custom.maniphest.custom-field.header-general | wild | --- Trenner --- für Allgemeinen Bereich |
| custom.maniphest.custom-field.target | wild | Select für die Komponent: Wiki, Backend, GitHub, Phorge, Mail, Infra, Other |
| custom.maniphest.custom-field.task-type | wild | Select für Aufgaben-Kategorie: General, Code Review, Orga, Other |
| custom.maniphest.custom-field.bot-type | wild | Select für Bot-Ticket-Typ: Kein Bot, Wartung, Feature, Bug, Task, Job, Approval, Other |
| custom.manuphest.custom-field.req-header | wild | --- Trenner --- für Request-Details |
| custom.maniphest.custom-field.req-category | wild | Select für Request/Anforderungskategorie: Extension (existing/new), Lua, Gadget, Core, Other |
| custom.maniphest.custom-field.impact | wild | Select für Impact Themen: Auth, DB, Governance, Performance, Security, UI/UX |
| custom.maniphest.custom-field.req-goal | wild | Remarkup für Request/Anforderung: Nutzen |
| custom.maniphest.custom-field.phorge-type | wild | Select für Phorge-Ticket-Typ: Access, Project Request, Field, Form, Dashboard, No |
| custom.maniphest.custom-field.config-header | wild | --- Trenner --- für Konfigurationsänderungen |
| custom.maniphest.custom-field.config-type | wild | Select für Konfigurationsänderung: Rechte, Settings, Extension, Defaults, Namespace, API, Other |
| custom.maniphest.custom-field.docs-header | wild | --- Trenner --- für Dokumentations-Details |
| custom.maniphest.custom-field.docs-audience | wild | Select für Zielgruppe der Dokumentation: Dev, Admin, Editor, All |
| custom.maniphest.custom-field.docs-location | wild | Select für Zielort der Dokumentation: Code, GitHub, Wiki |
| custom.maniphest.custom-field.content-header | wild | --- Trenner --- für Content-Änderungen |
| custom.maniphest.custom-field.content-target | wild | Link für Content-Zielseite: Seite, Kategorie oder Bereich |
| custom.maniphest.custom-fild.bug-header | wild | --- Trenner --- für Bug-Details |
| custom.maniphest.custom-field.bug-expected | wild | Remarkup (Bug) für erwartetes Verhalten |
| custom.maniphest.custom-field.bug-classification | wild | Select für Bug-Klassifikation: UI, Templates, Lua, Extension, Rights, Unknown, Other |
| custom.maniphest.custom-field.impact_repro_temp | wild | Select für Reproduzierbarkeit: Reproduzierbar, Nicht reproduzierbar, Nur temporär, Unklar |
| custom.maniphest.custom-field.bug-steps | wild | Remarkup (Bug) für Reproduktion |
| custom.maniphest.custom-field.bug-systemdetails | wild | Textfeld für Bug: System-Details |
| custom.maniphest.custom-field.impact_production | wild | Checkbox für Impact Produktionssystem: Betrifft ein produktives System |
| custom.maniphest.custom-field.impact_data_loss | wild | Checkbox für Impact Datenverlust: Führt zu Datenverlust oder Fehlfunktion |
| custom.maniphest.custom-field.impact_many_users | wild | Checkbox für Impact viele Nutzer: Viele Nutzer betroffen |
| custom.maniphest.custom-field.content-type | wild | Select für Content-Änderung: Kategorie, Move, Struktur, Übersetzung, Import, Other |
| custom.maniphest.custom-field.design-type | wild | Select für Design-Thema |
| custom.maniphest.custom-field.impact_header | wild | --- Trenner --- für Impact Checkbos-Bereich |
| custom.maniphest.custom-field.maintenance-header | wild | --- Trenner --- für Wartungsdetails |
| custom.maniphest.custom-field.maintenance-type | wild | Select für Wartungstyp: Server-Update, DB-Wartung, Backup, Logfile, Infra-Change, Routine, Bot-Skript, Downtime, Other |
| custom.maniphest.custom-field.maintenance-target | wild | Select für Wartungsziel: Webserver, Datenbank, MediaWiki, Extensions, Infra, Bots, Storage, Other |
| custom.maniphest.custom-field.maintenance-interval | wild | Select für Wartungsintervall: Einmalig, Täglich, Wöchentlich, Monatlich, Vierteljährlich, Jährlich, Other |
| custom.manifest.custom.field.maintenance-date | wild | Datum für geplante Wartung |
| custom.maniphest.custom-field.maintenance-downtime | wild | Checkbox für Wartung Downtime: Downtime zu erwarten |
| custom.maniphest.custom-field.maintenance-announcement | wild | Checkbox für Wartung Ankündigung: Es ist eine Ankündigung oder Wartungsmeldung erforderlich |
| custom.maniphest.custom-field.abuse-header | wild | --- Trenner --- für Abuse-Ticket Details |
| custom.maniphest.custom-field.abuse-type | wild | Select für Abuse-Ticket-Typ: Filter-Add, Filter-Debug, Whitelist, Blacklist, Spam, Automation, Massaction, Other |
| custom.maniphest.custom-field.abuse-reason | wild | Select für Abuse-Grund: False Positive, Repeat Abuse, Spam, Pattern, Exception, Other |
| custom.maniphest.custom-field.abuse-filter-id | wild | Integer für Abuse-Filter-ID: Nummer oder Name des betroffenen Filters (optional) |
| custom.maniphest.custom-field.legal-header | wild | --- Trenner --- für Legal-Ticket Details |
| custom.maniphest.custom-field.legal-type | wild | Select für Legal-Ticket-Typ: Copyright, License, Plagiarism, Document, Other |
| custom.maniphest.custom-field.legal-status | wild | Select für Legal-Ticket-Status: Open, Review, Resolved, Escalate, Clarify |
| custom.maniphest.custom-field.securty-header | wild | --- Trenner --- für Security-Ticket Details |
| custom.maniphest.custom-field.security-type | wild | Select für Security-Ticket-Typ: Vulnerability, Auth, Rights, Privacy, Whistle, Compromise, Backdoor, Phishing, Other |
| custom.maniphest.custom-field.security-criticality | wild | Select für Security-Kritikalität: Critical, High, Medium, Low, Info, No |
| custom.maniphest.custom-field.import-header | wild | --- Trenner --- für Import-Details |
| custom.maniphest.custom-field.import-source | wild | |
| custom.maniphest.custom-field.import-id | wild | Integer für Import-Ticket-ID: ID, Nummer oder Link des alten Tickets |
| custom.maniphest.custom-field.import-author | wild | Textfeld für Import-Autor: Name oder Benutzername aus dem Quellsystem |
| custom.maniphest.custom-field.import-created | wild | Datum für Import: ursprüngliche Ticketerstellung |
| custom.maniphest.custom-field.import-status | wild | Select für Import-Status: Neu, Offen, Geschlossen, In Bearbeitung, Other |
| custom.maniphest.custom-field.import-done | wild | Datum für Import: ursprüngliche Ticket-Erledigung |
| custom.maniphest.custom-field.import-history | wild | Remarkup für Import-Historie: Infos/Historie aus dem Quellsystem |
| custom.maniphest.custom-fild.decision-header | wild | --- Trenner --- für Decision-Details |
| custom.maniphest.custom-field.decision-options | wild | Remarkup für Entscheidung: Optionen |
| custom.maniphest.custom-field.decision-who | wild | Select für Entscheidungsträger: Operator, Tech, Admin, Editorial, Other |
| custom.maniphest.custom-field.detail-header | wild | --- Trenner --- für Aufgaben-Details |
| custom.maniphest.custom-field.notes | wild | Textfeld für zusätzliche Bearbeitungshinweise |
Attachments
By default, only basic information about objects is returned. If you want more extensive information, you can use available attachments to get more information in the results (like subscribers and projects).
Generally, requesting more information means the query executes more slowly and returns more data (in some cases, much more data). You should normally request only the data you need.
To request extra data, specify which attachments you want in the attachments parameter:
{ ... "attachments": { "subscribers": true }, ... }
This example specifies that results should include information about subscribers. In the return value, each object will now have this information filled out in the corresponding attachments value:
{ ... "data": [ { ... "attachments": { "subscribers": { "subscriberPHIDs": [ "PHID-WXYZ-2222", ], "subscriberCount": 1, "viewerIsSubscribed": false } }, ... }, ... ], ... }
These attachments are available:
| Key | Name | Description |
|---|---|---|
| columns | Workboard Columns | Get the workboard columns where an object appears. |
| subscribers | Subscribers | Get information about subscribers. |
| projects | Projects | Get information about projects. |
Paging and Limits
Queries are limited to returning 100 results at a time. If you want fewer results than this, you can use limit to specify a smaller limit.
If you want more results, you'll need to make additional queries to retrieve more pages of results.
The result structure contains a cursor key with information you'll need in order to fetch the next page of results. After an initial query, it will usually look something like this:
{ ... "cursor": { "limit": 100, "after": "1234", "before": null, "order": null } ... }
The limit and order fields are describing the effective limit and order the query was executed with, and are usually not of much interest. The after and before fields give you cursors which you can pass when making another API call in order to get the next (or previous) page of results.
To get the next page of results, repeat your API call with all the same parameters as the original call, but pass the after cursor you received from the first call in the after parameter when making the second call.
If you do things correctly, you should get the second page of results, and a cursor structure like this:
{ ... "cursor": { "limit": 5, "after": "4567", "before": "7890", "order": null } ... }
You can now continue to the third page of results by passing the new after cursor to the after parameter in your third call, or return to the previous page of results by passing the before cursor to the before parameter. This might be useful if you are rendering a web UI for a user and want to provide "Next Page" and "Previous Page" links.
If after is null, there is no next page of results available. Likewise, if before is null, there are no previous results available.
Call Method
Examples
- Use the Conduit API Tokens panel in Settings to generate or manage API tokens.
- If you submit parameters, these examples will update to show exactly how to encode the parameters you submit.
-d api.token=api-token \
-d param=value \
...