Files
taller-wox/material/openapi-tools-spec.yaml
farentsen a062b45c51 feat: initial implementation taller-wox.fitlabs.dev
Portal FastAPI + 5 endpoints REST para Bootcamp Agentic AI con
watsonx Orchestrate (FactorIT). Single container, Coolify-ready.

- Landing brandeado FIT con formulario de registro (honeypot anti-bot)
- Tokens itsdangerous para descargas (24h expiry)
- 5 endpoints API: historical/available procedures, member-insights,
  schedule, generate-report (Jinja2 + Plotly)
- SQLite con upsert-on-email para leads + log de descargas
- Admin endpoints (HTTP Basic): leads.json, leads.csv, stats
- 23 tests pytest pasando
- Dockerfile listo para Coolify con volúmenes persistentes
  (/app/leads.db, /app/app/data/reports_output, /app/material)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 03:04:28 +00:00

356 lines
12 KiB
YAML

openapi: 3.0.3
info:
title: BenefitsAgent Tools
version: 1.0.0
servers:
- url: https://taller-wox.fitlabs.dev/api
description: Local development server
paths:
/historical-procedures:
post:
summary: This tool enables intelligent analysis and summarization of the historical
procedures dataset.
description: |-
This tool enables intelligent analysis and summarization of the historical procedures dataset.
### Key Features
- Filtering on any combination of columns
- Grouping and aggregation of results
### Dataset Overview
Detected columns:
- **member_name**: e.g., Alice, Bob, Charlie...
- **relationship**: e.g., Mother, Father, Son...
- **age**: e.g., 42, 45, 12...
- **gender**: e.g., Female, Male
- **procedure**: e.g., Annual Physical Exam, Appendectomy, CT Scan...
- **procedure_type**: e.g., preventive, surgery, diagnostic...
- **location**: e.g., City Hospital, Green Valley Clinic, Sunrise Health...
- **date**: e.g., 2024-04-28, 2023-05-02, 2022-05-11...
- **in_network**: e.g., True, False
- **member_plan**: e.g., Gold PPO, Family Plan - Silver EPO
- **accepted_plans**: e.g., Gold PPO, Family Plan - Silver EPO, Medicare Advantage, Gold PPO, Family Plan - Silver EPO, Family Plan - Silver EPO, Medicare Advantage...
- **cost_facility**: e.g., 29.4, 48.02, 30.8...
- **cost_physician**: e.g., 199.09, 189.75, 128.9...
- **cost_anesthesia**: e.g., 0.0, 2024.21, 2257.4...
- **cost_medication**: e.g., 4.19, 5.53, 7.15...
- **total_cost**: e.g., 232.68, 243.3, 166.85...
- **facility_rating**: e.g., 4.7, 4.5, 4.6...
- **notes**: e.g., Annual Physical Exam performed at City Hospital., Appendectomy performed at City Hospital., CT Scan performed at Green Valley Clinic....
### Example Input:
```json
{
"filters": [
{
"column": "member_name",
"operator": "equals",
"value": "Alice"
}
]
}
{
"filters": [
{
"column": "member_name",
"operator": "contains",
"value": "Ali"
}
]
}
{
"filters": [
{
"column": "member_name",
"operator": "ne",
"value": "Alice"
}
]
}
{
"filters": [
{
"column": "age",
"operator": "gt",
"value": 22.69
}
]
}
{
"filters": [
{
"column": "age",
"operator": "lt",
"value": 27.73
}
]
}
{
"filters": [
{
"column": "age",
"operator": "ge",
"value": 25
}
]
}
{
"filters": [
{
"column": "age",
"operator": "le",
"value": 25
}
]
}
{
"filters": [
{
"column": "age",
"operator": "ne",
"value": 25
}
]
}
{
"group_by": [
"member_name",
"relationship"
]
}
{
"filters": [
{
"column": "member_name",
"operator": "equals",
"value": "Alice"
},
{
"column": "age",
"operator": "ge",
"value": 12.0
}
],
"group_by": [
"relationship"
]
}
```
Example Questions:
- "What rows match member_name = Alice?" → `{"filters": [{"column": "member_name", "operator": "equals", "value": "Alice"}]}`
- "What rows do not match member_name = Alice?" → `{"filters": [{"column": "member_name", "operator": "ne", "value": "Alice"}]}`
- "What rows contain 'Ali' in member_name?" → `{"filters": [{"column": "member_name", "operator": "contains", "value": "Ali"}]}`
- "What rows have age greater than 25.21?" → `{"filters": [{"column": "age", "operator": "gt", "value": 25.21}]}`
- "What rows have age less than 25.21?" → `{"filters": [{"column": "age", "operator": "lt", "value": 25.21}]}`
- "What rows have age greater than or equal to 25.21?" → `{"filters": [{"column": "age", "operator": "ge", "value": 25.21}]}`
- "What rows have age less than or equal to 25.21?" → `{"filters": [{"column": "age", "operator": "le", "value": 25.21}]}`
- "What rows do not have age equal to 25.21?" → `{"filters": [{"column": "age", "operator": "ne", "value": 25.21}]}`
- "What is the average of age grouped by member_name?" → `{"group_by": ["member_name"]}`
- "What is the total age for member_name = 25.210526315789473 grouped by relationship?" → `{"filters": [{"column": "member_name", "operator": "equals", "value": "25.210526315789473"}], "group_by": ["relationship"]}`
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProcedureQuery'
responses:
'200':
description: Successful result
content:
application/json:
schema:
type: object
properties:
result:
type: object
/available-procedures:
post:
summary: This tool enables intelligent analysis and summarization of the available
procedures dataset.
description: |-
This tool enables intelligent analysis and summarization of the available procedures dataset.
### Key Features
- Filtering on any combination of columns
- Grouping and aggregation of results
### Dataset Overview
Detected columns:
- **procedure**: e.g., Angioplasty, Annual Physical Exam, Appendectomy...
- **location**: e.g., City Hospital, Regional Medical Center, Green Valley Clinic...
- **facility_rating**: e.g., 4.7, 4.3, 4.5...
- **distance_miles**: e.g., 5.2, 12.6, 1.2...
- **gold_ppo_plan_accepted**: e.g., True, False
- **silver_epo_plan_accepted**: e.g., True
- **accepted_plans**: e.g., Gold PPO, Family Plan - Silver EPO, Medicare Advantage, Family Plan - Silver EPO, Bronze HDHP, Medicaid, Gold PPO, Family Plan - Silver EPO...
- **cost_facility**: e.g., 9432.8, 23594.95, 3807.32...
- **cost_physician**: e.g., 4774.57, 4897.27, 5687.8...
- **cost_anesthesia**: e.g., 1894.37, 581.04, 293.41...
- **cost_medication**: e.g., 834.8, 783.86, 1301.58...
- **total_cost**: e.g., 16936.54, 29857.12, 11090.11...
### Example Input:
```json
{
"filters": [
{
"column": "procedure",
"operator": "equals",
"value": "Angioplasty"
}
]
}
{
"filters": [
{
"column": "procedure",
"operator": "contains",
"value": "Ang"
}
]
}
{
"filters": [
{
"column": "procedure",
"operator": "ne",
"value": "Angioplasty"
}
]
}
{
"filters": [
{
"column": "facility_rating",
"operator": "gt",
"value": 4.01
}
]
}
{
"filters": [
{
"column": "facility_rating",
"operator": "lt",
"value": 4.9
}
]
}
{
"filters": [
{
"column": "facility_rating",
"operator": "ge",
"value": 4
}
]
}
{
"filters": [
{
"column": "facility_rating",
"operator": "le",
"value": 4
}
]
}
{
"filters": [
{
"column": "facility_rating",
"operator": "ne",
"value": 4
}
]
}
{
"group_by": [
"procedure",
"location"
]
}
{
"filters": [
{
"column": "procedure",
"operator": "equals",
"value": "Angioplasty"
},
{
"column": "facility_rating",
"operator": "ge",
"value": 4.5
}
],
"group_by": [
"location"
]
}
```
Example Questions:
- "What rows match procedure = Angioplasty?" → `{"filters": [{"column": "procedure", "operator": "equals", "value": "Angioplasty"}]}`
- "What rows do not match procedure = Angioplasty?" → `{"filters": [{"column": "procedure", "operator": "ne", "value": "Angioplasty"}]}`
- "What rows contain 'Ang' in procedure?" → `{"filters": [{"column": "procedure", "operator": "contains", "value": "Ang"}]}`
- "What rows have facility_rating greater than 4.45?" → `{"filters": [{"column": "facility_rating", "operator": "gt", "value": 4.45}]}`
- "What rows have facility_rating less than 4.45?" → `{"filters": [{"column": "facility_rating", "operator": "lt", "value": 4.45}]}`
- "What rows have facility_rating greater than or equal to 4.45?" → `{"filters": [{"column": "facility_rating", "operator": "ge", "value": 4.45}]}`
- "What rows have facility_rating less than or equal to 4.45?" → `{"filters": [{"column": "facility_rating", "operator": "le", "value": 4.45}]}`
- "What rows do not have facility_rating equal to 4.45?" → `{"filters": [{"column": "facility_rating", "operator": "ne", "value": 4.45}]}`
- "What is the average of facility_rating grouped by procedure?" → `{"group_by": ["procedure"]}`
- "What is the total facility_rating for procedure = 4.450442477876106 grouped by location?" → `{"filters": [{"column": "procedure", "operator": "equals", "value": "4.450442477876106"}], "group_by": ["location"]}`
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProcedureQuery'
responses:
'200':
description: Successful result
content:
application/json:
schema:
type: object
properties:
result:
type: object
/member-insights:
get:
summary: Returns member data including plan information and overdue procedures.
description: |-
Returns member data including:
- Plan information (medical, pharmacy, mental health, wellness, tax documents)
- Overdue preventive procedures
responses:
'200':
description: Member profile and plan data
content:
application/json:
schema:
type: object
properties:
result:
type: object
/schedule:
get:
summary: Provides appointment scheduling guidance.
description: Provides appointment scheduling guidelines to help users arrange
medical visits through a live scheduling system.
responses:
'200':
description: Synthetic appointment instructions
content:
application/json:
schema:
type: object
properties:
result:
type: string
components:
schemas:
ProcedureQuery:
type: object
properties:
filters:
type: string
description: JSON-encoded list of filter objects
example: '[{"column": "procedure", "operator": "equals", "value": "X ray"}]'
group_by:
type: string
description: JSON-encoded list of columns to group by
example: '["facility_rating"]'