228 lines
5.5 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|