feat(api): GET /api/admin/search endpoint + regenerated client types

Expose full-text search over catalogue objects via a new admin endpoint
backed by the Meilisearch SearchClient. Validates visibility filter values,
short-circuits on empty queries, clamps pagination, and returns 503 when
search is not configured. Registered in OpenAPI; schema.d.ts regenerated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 11:48:32 +02:00
parent 9b1771d584
commit a87501b902
5 changed files with 418 additions and 1 deletions
+6 -1
View File
@@ -1,7 +1,9 @@
use axum::{Json, Router, extract::State, routing::get};
use utoipa::OpenApi;
use crate::{AppState, admin, admin_authorities, admin_objects, admin_vocab, health, public};
use crate::{
AppState, admin, admin_authorities, admin_objects, admin_search, admin_vocab, health, public,
};
#[derive(OpenApi)]
#[openapi(
@@ -26,6 +28,7 @@ use crate::{AppState, admin, admin_authorities, admin_objects, admin_vocab, heal
admin_vocab::create_vocabulary,
admin_vocab::list_terms,
admin_vocab::add_term,
admin_search::search_objects,
admin_authorities::list_authorities,
admin_authorities::create_authority
),
@@ -50,6 +53,8 @@ use crate::{AppState, admin, admin_authorities, admin_objects, admin_vocab, heal
admin_vocab::LabelInput,
admin_vocab::TermView,
admin_vocab::CreatedId,
admin_search::SearchHitView,
admin_search::SearchResultsView,
admin_authorities::AuthorityView,
admin_authorities::NewAuthorityRequest
)),