Files
2026-07-13 13:30:30 +08:00

228 lines
5.5 KiB
JSON

{
"openapi": "3.0.0",
"info": {
"title": "GenWealth Advisor API",
"description": "An API for financial advisors to use to help their clients.",
"version": "1.0.0"
},
"servers": [
{
"url": "http://localhost:8080"
}
],
"paths": {
"/investments/search": {
"get": {
"summary": "Find investments by search terms",
"parameters": [
{
"name": "terms",
"in": "query",
"description": "The search terms to use",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "A list of investments that match the search terms",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Investment"
}
}
}
}
}
}
}
},
"/investments/semantic_search": {
"get": {
"summary": "Find investments with natural language prompts",
"parameters": [
{
"name": "prompt",
"in": "query",
"description": "The natural language prompt to use",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "A list of investments that match the natural language prompt",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Investment"
}
}
}
}
}
}
}
},
"/prospects/search": {
"get": {
"summary": "Find prospects with natural language prompt and optional filters",
"parameters": [
{
"name": "prompt",
"in": "query",
"description": "The natural language prompt to use",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "risk_profile",
"in": "query",
"description": "The risk profile of the prospect",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "min_age",
"in": "query",
"description": "The minimum age of the prospect",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "max_age",
"in": "query",
"description": "The maximum age of the prospect",
"required": false,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "A list of prospects that match the natural language prompt and optional filters",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Prospect"
}
}
}
}
}
}
}
},
"/chat": {
"get": {
"summary": "Chat with a financial advisor",
"parameters": [
{
"name": "prompt",
"in": "query",
"description": "The natural language prompt to use",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "user_id",
"in": "query",
"description": "The ID of the user",
"required": false,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "A response from the financial advisor",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"response": {
"type": "string"
}
}
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Investment": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"risk_level": {
"type": "string"
},
"return_rate": {
"type": "number"
}
}
},
"Prospect": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone_number": {
"type": "string"
},
"risk_profile": {
"type": "string"
},
"age": {
"type": "integer"
}
}
}
}
}
}