system-prompts-and-models-o.../dealix/docs/archive/api_md_DEPRECATED.md
2026-05-01 14:03:52 +03:00

202 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API Reference
**Interactive Swagger UI**: `http://localhost:8000/docs`
**ReDoc**: `http://localhost:8000/redoc`
**OpenAPI JSON**: `http://localhost:8000/openapi.json`
---
## Authentication
The current version ships **without auth on the public API** — add your own layer (API key header, JWT, OAuth) behind a reverse proxy for production.
Recommended: use a simple API key via middleware, or Cloudflare Access / Auth0 in front.
---
## Endpoints
### Root & Health
| Method | Path | Description |
| --- | --- | --- |
| GET | `/` | Service info |
| GET | `/health` | Full health including configured LLM providers |
| GET | `/ready` | Readiness probe |
| GET | `/live` | Liveness probe |
---
### Leads (Phase 8)
#### POST `/api/v1/leads`
Run a lead through the **full acquisition pipeline**.
**Request** (`LeadCreateRequest`):
```json
{
"company": "شركة التقنية المتقدمة",
"name": "أحمد محمد",
"email": "ahmed@example.sa",
"phone": "+966501234567",
"sector": "technology",
"company_size": "medium",
"region": "Saudi Arabia",
"budget": 50000,
"message": "نحتاج نظام AI لإدارة المبيعات",
"source": "website"
}
```
**Query parameters**:
- `auto_book: bool = true`
- `auto_proposal: bool = false`
**Response** (`PipelineResponse`):
```json
{
"lead": { "id": "lead_...", "fit_score": 0.82, "status": "qualified", ... },
"fit_score": { "overall_score": 0.82, "tier": "A", "reasons": [...], ... },
"extraction": { "pain_points": [...], "urgency_score": 0.7, ... },
"qualification": { "questions": [...], "bant_score": 0.5, ... },
"crm_sync": { "synced": true, "contact_id": "...", "deal_id": "..." },
"booking": { "provider": "calendly", "link": "https://calendly.com/...", ... },
"proposal": null,
"warnings": []
}
```
---
### Sales
#### POST `/api/v1/sales/script`
Get a bilingual sales script.
**Request** (`SalesScriptRequest`):
```json
{
"sector": "technology",
"locale": "ar",
"script_type": "opener",
"name": "أحمد",
"company": "شركتكم"
}
```
**Script types**: `opener`, `follow_up_1`, `follow_up_2`, `demo_confirm`, `proposal_cover`.
#### POST `/api/v1/sales/proposal`
Generate a one-off proposal (outside the pipeline).
---
### Sectors (Phase 9)
#### GET `/api/v1/sectors/{sector}`
Deep intel for a single Saudi sector.
**Path**: `sector` — one of: `technology`, `real_estate`, `healthcare`, `education`, `logistics`, `retail`, `finance`, `manufacturing`, `consulting`, `construction`, `oil_gas`, `tourism`.
**Query**: `enrich_with_llm=true` to add live LLM research on top of baseline.
#### GET `/api/v1/sectors/best/opportunity`
Returns the sector with the highest `growth_rate × ai_readiness`.
#### GET `/api/v1/sectors/target/list`
Top 5 target sectors.
#### POST `/api/v1/sectors/content`
Generate a content piece for a sector topic.
**Request**:
```json
{
"topic": "أفضل 3 استخدامات AI في قطاع الصحة السعودي",
"content_type": "article",
"channel": "blog",
"locale": "ar",
"length": 800
}
```
---
### Agents (direct execution, useful for testing)
| Method | Path | Description |
| --- | --- | --- |
| POST | `/api/v1/agents/intake` | Run just the Intake agent |
| POST | `/api/v1/agents/pain-extractor` | Run just the Pain extractor |
| POST | `/api/v1/agents/icp-match` | Run Intake + ICP |
| POST | `/api/v1/agents/research` | Run a market research question |
---
### Webhooks
#### GET / POST `/api/v1/webhooks/whatsapp`
Meta WhatsApp Cloud API webhook.
- `GET`: verification handshake (requires `hub.mode`, `hub.verify_token`, `hub.challenge`)
- `POST`: incoming messages — auto-routed through the acquisition pipeline
Verifies `X-Hub-Signature-256` HMAC if `WHATSAPP_APP_SECRET` is configured.
#### POST `/api/v1/webhooks/calendly`
Calendly event lifecycle notifications.
#### POST `/api/v1/webhooks/hubspot`
HubSpot subscription events.
---
## Error format
All `AICompanyError` subclasses map to 400:
```json
{
"error": "IntegrationError",
"detail": "HUBSPOT_ACCESS_TOKEN not configured"
}
```
Validation errors return 422 with FastAPI's default format.
---
## Rate limiting
Not enabled by default. Recommended: `slowapi` middleware or an upstream proxy (nginx, Cloudflare).
---
## cURL examples
```bash
# Submit a lead
curl -X POST http://localhost:8000/api/v1/leads \
-H "Content-Type: application/json" \
-d @examples/lead_payload.json
# Get Arabic opener script
curl -X POST http://localhost:8000/api/v1/sales/script \
-H "Content-Type: application/json" \
-d '{"sector":"healthcare","locale":"ar","script_type":"opener","name":"د. أحمد"}'
# Get healthcare sector intel with LLM enrichment
curl 'http://localhost:8000/api/v1/sectors/healthcare?enrich_with_llm=true'
# Best opportunity
curl http://localhost:8000/api/v1/sectors/best/opportunity
```