{ "openapi": "3.1.0", "info": { "title": "Scholarship Matcher", "description": "Semantic scholarship search — returns ranked scholarship links matching a user's academic profile.", "version": "1.0.0" }, "servers": [ { "url": "https://kabir08-fundora.hf.space" } ], "paths": { "/match": { "post": { "operationId": "matchScholarships", "summary": "Find scholarships that match a user's profile", "description": "Accepts a free-text profile description and returns the most relevant scholarships from a pre-indexed database covering DAAD, GyanDhan, Chevening, UCL, Commonwealth, and more.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MatchRequest" } } } }, "responses": { "200": { "description": "List of matching scholarships", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MatchResponse" } } } }, "400": { "description": "Invalid request" }, "503": { "description": "Index still building — retry in a minute" } } } }, "/health": { "get": { "operationId": "healthCheck", "summary": "Check if the service is running", "responses": { "200": { "description": "Service health status", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string" }, "index_ready": { "type": "boolean" } } } } } } } } }, "/index_status": { "get": { "operationId": "indexStatus", "summary": "Get index build status and item count", "responses": { "200": { "description": "Index status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IndexStatus" } } } } } } } }, "components": { "schemas": { "MatchRequest": { "type": "object", "required": ["profile"], "properties": { "profile": { "type": "string", "description": "The user's academic background, field of study, nationality, degree level, and any other relevant information.", "example": "I am a Nigerian student with a Bachelor's in Computer Science seeking a fully funded Master's in the UK or Germany." }, "top_k": { "type": "integer", "description": "Number of scholarships to return (1-50, default 10).", "default": 10, "minimum": 1, "maximum": 50 } } }, "ScholarshipResult": { "type": "object", "properties": { "title": { "type": "string", "description": "Scholarship name or programme title." }, "link": { "type": "string", "description": "Direct URL to the scholarship page." }, "description": { "type": "string", "description": "Short description or eligibility snippet." }, "source": { "type": "string", "description": "Website the scholarship was sourced from (e.g. DAAD, GyanDhan)." } } }, "MatchResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/ScholarshipResult" } }, "total_indexed": { "type": "integer", "description": "Total number of scholarships in the index." }, "index_ready": { "type": "boolean" } } }, "IndexStatus": { "type": "object", "properties": { "ready": { "type": "boolean" }, "total_items": { "type": "integer" }, "error": { "type": "string", "nullable": true }, "build_started_at": { "type": "number", "nullable": true } } } } } }