{"ok":true,"meta":{"generatedAt":"2026-06-30T13:18:20.616Z"},"data":{"version":"tzv3-search-v3","endpoint":"/api/search","policyEndpoint":"/api/search/policy","indexManifestEndpoint":"/api/search/index-manifest","auditCommand":"npm run search:audit","provider":"local-keyword-fallback","currentMode":"validated keyword search over active catalog payload","productionTarget":{"engine":"Elastic Cloud","index":"profiles","searchPath":"/{index}/_search","instantSearchTargetMs":150,"requiredEnvironment":["ELASTICSEARCH_URL","ELASTICSEARCH_API_KEY"]},"indexManifest":{"version":"tzv3-search-index-manifest-v1","endpoint":"/api/search/index-manifest","productionReady":true,"index":{"provider":"Elastic Cloud","name":"profiles","searchPath":"/{index}/_search","documentVersion":"tzv3-search-profile-document-v1","documentCount":8,"bulkAction":"index","idField":"slug"},"documentCount":8,"slugs":["sofia","mira","vera","lina","ksenia","darina","emma","nikol"],"hashes":{"settings":"53b7d72463b4b50d5223d5549c7b0dbe1a0eff185d821d02b257b638aad45fee","mappings":"af64be91ab32520c1b39b0b758137bbfbd6214e90d81e28086717ee51ee9f243","documents":"8f360482b07dc95c202fd8016a73393585c34dbcbb9608601b004afce4f2d864","fullIndexInput":"74defefad6ca9dd8a06313e0a4c9b69991ef65152583cbdef0631ca07e949b51"},"importEnvironment":["ELASTICSEARCH_URL","ELASTICSEARCH_API_KEY","ELASTICSEARCH_INDEX","ELASTICSEARCH_SEARCH_PATH","UPSTASH_REDIS_REST_URL","UPSTASH_REDIS_REST_TOKEN","SEARCH_CACHE_TTL_SECONDS"],"auditCommand":"npm run search:audit"},"cache":{"provider":"none-local","target":"Upstash Redis for hot filters and repeated search results","ttlSeconds":60,"requiredEnvironment":["UPSTASH_REDIS_REST_URL","UPSTASH_REDIS_REST_TOKEN"],"keyPrivacy":"cache keys are SHA-256 hashes of normalized query fields, not raw search text"},"adapter":{"configured":false,"routeRuntime":"server","elasticSearchBody":"multi_match over name, slug, city, district, style, mood, tags, languages, intro, details","resultContract":"Elastic hits must expose profile slug through _source.slug or fields.slug; /api/search returns only active catalog payloads","fallback":"If Elastic or Redis fails, /api/search degrades to database/static keyword search without storing the query.","audit":"search:audit performs read-only Elastic _search and Upstash Redis GET probes before production launch."},"semanticSearch":{"provider":"pending-approved-provider","endpoint":"/api/match","purpose":"intent parsing and embeddings ranking after moderation approval","requiredEnvironment":["OPENAI_API_KEY"]},"queryContract":{"fields":["q","city","style","status","limit"],"maxQueryLength":120,"maxLimit":100,"emptyQueryBehavior":"returns filtered catalog"},"privacy":{"storesPersonalQueriesLocally":false,"serverTrackingInLocalMode":false,"requiresAnalyticsApprovalBeforeQueryLogging":true}}}