Unified search across all entity types — projects, assets, data connections, catalog entities (databases, schemas, tables, columns), files, artifacts, agents, and models. Results are filtered to entities the authenticated user can access.
Query modes (set via the mode field):
semantic (default): Plain natural language. q is run through BM25 and, when an embedding service is configured, also vectorised for hybrid RRF ranking. Best for conversational queries.
structured: Elasticsearch-style query string in query. Parsed by the Lark grammar and translated to SQL predicates against the search_attributes JSONB column and the ParadeDB BM25 index. Supports field:value, wildcards, boolean AND/OR/NOT, exists checks, tag filtering, and extension field comparisons. Replaces the retired GET /search/metadata endpoint.
hybrid: Both legs simultaneously. q drives semantic ranking; query applies structural constraints. Results are merged via Reciprocal Rank Fusion (RRF).
Pagination: pass session_id from the first response on subsequent pages to reuse the scope session and avoid re-running the OpenFGA ListObjects fan-out.
Structured query syntax examples:
service.name:mysql AND tags.tagFQN:PII* — PII-tagged tables in a MySQL service
NOT _exists_:owners AND entity_type:table — tables missing owners
NOT _exists_:columns.description — tables with undescribed columns
extension.is_pii_tagged:1 AND databaseSchema.name:public — PII tables in public schema
(tags.tagFQN:SENSITIVITY_TAGS.Confidential OR tags.tagFQN:SENSITIVITY_TAGS.Restricted) AND service.name:snowflake — confidential or restricted Snowflake entities
Documentation Index
Fetch the complete documentation index at: https://docs.emergence.ai/llms.txt
Use this file to discover all available pages before exploring further.
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Request body for POST /search/global.
The execution mode is inferred automatically from the fields provided:
Semantic — provide q only. Natural language, BM25 + optional vector RRF::
{"q": "tables with customer revenue data"}
Structured — provide query only. Elasticsearch-style predicates::
{"query": "service.name:mysql AND tags.tagFQN:PII*"}
Hybrid — provide both. q drives BM25/vector; query applies hard constraints::
{"q": "customer revenue", "query": "service.name:snowflake AND NOT _exists_:owners"}
+-----------------------------------------+----------------------------------------------+
| Expression | Meaning |
+=========================================+==============================================+
| users | BM25 full-text match on embedded_text |
+-----------------------------------------+----------------------------------------------+
| name:users | Exact name match |
+-----------------------------------------+----------------------------------------------+
| name:user* | Trailing-wildcard name match |
+-----------------------------------------+----------------------------------------------+
| service.name:"mysql" | Filter by data source name |
+-----------------------------------------+----------------------------------------------+
| database.name:"prod" | Filter by database name |
+-----------------------------------------+----------------------------------------------+
| databaseSchema.name:"public" | Filter by schema name |
+-----------------------------------------+----------------------------------------------+
| tags.tagFQN:PII* | Tag FQN prefix match |
+-----------------------------------------+----------------------------------------------+
| tags.tagFQN:SENSITIVITY_TAGS.Conf* | Exact tag FQN prefix |
+-----------------------------------------+----------------------------------------------+
| extension.is_pii_tagged:1 | Boolean extension field (1/true/0/false) |
+-----------------------------------------+----------------------------------------------+
| extension.is_sensitivity_tagged:0 | Entities not sensitivity-tagged |
+-----------------------------------------+----------------------------------------------+
| _exists_:description | Has a description |
+-----------------------------------------+----------------------------------------------+
| NOT _exists_:description | Missing description |
+-----------------------------------------+----------------------------------------------+
| NOT _exists_:owners | Missing owners |
+-----------------------------------------+----------------------------------------------+
| NOT _exists_:columns.description | Has columns missing descriptions |
+-----------------------------------------+----------------------------------------------+
| _exists_:columns.tags.tagFQN:PII* | Has PII-tagged columns |
+-----------------------------------------+----------------------------------------------+
| entity_type:table | Restrict to a specific entity type |
+-----------------------------------------+----------------------------------------------+
| entity_id:snowflake-prod.analytics.* | FQN prefix scope (all children) |
+-----------------------------------------+----------------------------------------------+
| A AND B, A OR B, NOT A | Boolean operators |
+-----------------------------------------+----------------------------------------------+
| (A OR B) AND C | Grouping |
+-----------------------------------------+----------------------------------------------+
Natural language search query. Passed to the BM25 index and (when an embedding service is configured) vectorised for the vector leg of RRF. Example: 'tables containing customer revenue data'
1Elasticsearch-style query string. Parsed by the Lark grammar and translated to SQL predicates against search_attributes JSONB and the ParadeDB BM25 index. Example: 'service.name:mysql AND tags.tagFQN:PII* AND NOT exists:owners'
1Result ordering. RELEVANCE (default): ranked by BM25/RRF score. NAME: alphabetical by title. CREATED_AT: by creation time. RELEVANCE is ignored for STRUCTURED mode with no bare-word terms.
relevance, name, created_at Sort direction for NAME and CREATED_AT. ASC (default) or DESC. Has no effect when sort_by=RELEVANCE — relevance scores are always ranked highest-first.
asc, desc Page size (1–100, default 20)
1 <= x <= 100Pagination offset (default 0)
x >= 0Permission session token from a previous response. Pass this on subsequent paginated requests to reuse the scope materialisation and avoid re-running the OpenFGA ListObjects fan-out on every page.
Successful Response
Response body for POST /search/global.