`GET [...]/rest.php/wikibase/v0/search/properties?language=en&q=...`
Request parameters (query parameters)
* `q` - search term
* `language` - language code
Response structure in pseudo-JSON
```
{
"results": [
{
"id": "P123",
"label": "<LABEL in language>"
"description": "<DESCRIPTION in language>"
},
...
]
}
```
Response:
- always respond with status code 200, even for an empty result list
- Error handling and validation to be the same as for[[ https://phabricator.wikimedia.org/T386226 | simple item search ]]
Not in scope:
- no special treatment of `haswbstatement` etc "keywords". Pass them as-is
- search results provided in an asynchronous response
In scope:
- including a matched data element in the response
- language fallback of labels or descriptions in the search results
- "input sanitization" that existing functionality interacting with Cirrus search/ Elastic search should be included here
- no hard dependency on Cirrus search extension -- the API should return no results/empty results list with no search backend. In other words, the first iteration does not have to do anything special when no Elastic search is there, but software should not "explode" (no code paths triggering exceptions etc)