validate([ 'q' => ['required', 'string', 'min:2', 'max:120'], 'type' => ['sometimes', 'array'], 'type.*' => [Rule::in(SiteSearch::TYPES)], 'limit' => ['sometimes', 'integer', 'min:1', 'max:50'], ]); $results = $search->search( $data['q'], app()->getLocale(), $data['type'] ?? SiteSearch::TYPES, (int) ($data['limit'] ?? 20), ); return response()->json([ 'data' => $results, 'meta' => ['query' => $data['q'], 'locale' => app()->getLocale(), 'count' => $results->count()], ]); } }