POST /entity/_text_search
Every call in this family: what the card records, the edge cases that live on the call, and the verdict of every entry that measured it. Each of those lines names the door holding that entry's rules. The map is corpus/INDEX.md.
Free-text search across several types at once, returning a flattened row that is not the _search shape. entity_types is required and its value doubles as the per-type filter.
There is no
fieldsparameter. Every row isname,linksandstatus, whatever the type, so a client that needs more re-reads the row by itslinks.self.attributes.linksis a two-element array of strings, the linked row's type and its name, and it is["", ""]for a type that links to nothing. It is not an entity reference and cannot be followed.entity_typesmaps a type to a filter, so one call can be scoped differently per type. That is the only place in the API where a filter is keyed by the type it applies to.The shape is checked per key, so one call cannot mix the two forms. The key holding the value the
Content-Typedoes not name decides the 400, and no type answers rows.One bad key fails the whole call: a field the type lacks, an operator its data type lacks, or a key no entity type is named by is 400 for every type in the map, not a type dropped from the answer.
A group under
api3_hashmay hold another group, to at least three levels, andorreturns the union of its branches. The array form takes basic condition arrays alone, and two of them are theandof both.The response has no
links, so paging ispage.numberand there is nothing that says a further page exists. Ask untildatais empty.textis matched case-insensitively against the row's name and against the name of the row underattributes.links. It is not matched againstdescription.
Measured by
046_search_without_a_path(findings) —/hierarchy/_expandand/hierarchy/_searchrefuse the vendor content types every other POST requires and takeapplication/jsonalone, so one shared POST helper 415s on half the API.
rules:doors/findings-filter053_text_search_matching(findings) —page.sizecaps at 25 and defaults to 25 with nolinks, so page withpage.number. Every word must match a case-insensitive substring of the name or of the linked row's name.
rules:doors/findings-filter063_text_search_filter_shape(findings) — Anentity_typesvalue follows the request Content-Type: an array of triples under api3_array, alogical_operatorgroup under api3_hash, which alone nests. The other shape is 400 code 103.
rules:doors/findings-filter
Silent on this call
post_entity_text_search— Free-text search across several types at once, returning a flattened row that is not the_searchshape.entity_typesis required and its value doubles as the per-type filter.053_text_search_matching—page.sizecaps at 25 and defaults to 25 with nolinks, so page withpage.number. Every word must match a case-insensitive substring of the name or of the linked row's name.
corpus/endpoints/post_entity_text_search.md