Skip to content

API Documentation ​

1. Base URLs ​

  • Backend API: {NEXT_PUBLIC_API_URL}/api/v1 (defaults to /api/v1)
  • LLM API: {NEXT_PUBLIC_LLM_API_URL} (defaults to /llm-api)

2. Authentication ​

All API endpoints require authentication. The system uses JWT (JSON Web Tokens) for authentication.

3. API Endpoints ​

3.1 User Management ​

Get Users ​

http
GET /api/v1/users
GET /api/v1/users?username={username}

Response:

typescript
interface UserData {
  username: string;
  email: string;
  role: string;
  company: string;
  password: string;
  chart_access: boolean;
  report_generation_access: boolean;
  user_management_access: boolean;
}

Create User ​

http
POST /api/v1/users

Request Body:

typescript
interface UserData {
  username: string;
  email: string;
  role: string;
  company: string;
  password: string;
  chart_access: boolean;
  report_generation_access: boolean;
  user_management_access: boolean;
}

Update User ​

http
PUT /api/v1/users/{username}
PATCH /api/v1/users/{username}

Request Body: Partial or complete UserData object

Delete User ​

http
DELETE /api/v1/users/{username}

3.2 Campaign Management ​

Get Campaign Filter Options ​

http
GET /api/v1/campaigns/filter-options

Response:

typescript
interface CampaignFilterOptions {
  channels: string[];
  age_groups: string[];
  countries: string[];
  date_range: {
    start: string;
    end: string;
  };
}

Get Filtered Campaigns ​

http
POST /api/v1/campaigns

Request Body:

typescript
interface CampaignFilters {
  channels?: string[];
  age_groups?: string[];
  countries?: string[];
  date_range?: {
    start: string;
    end: string;
  };
}

Get Monthly Aggregated Data ​

http
POST /api/v1/campaigns/monthly-aggregated

Request Body: CampaignFilters Response:

typescript
interface MonthlyPerformanceData {
  date: string;
  revenue: number;
  ad_spend: number;
  new_accounts: number;
}

3.3 Analytics ​

Get Channel Contribution ​

http
GET /api/v1/campaigns/channel-contribution

Response:

typescript
interface ChannelContributionData {
  channels: string[];
  contributions: number[];
}

Get Cost Metrics Heatmap ​

http
GET /api/v1/campaigns/cost-metrics-heatmap

Response:

typescript
interface CostMetricsHeatmapData {
  channels: string[];
  metrics: {
    [key: string]: number[];
  };
}

Get Latest Month Metrics ​

http
GET /api/v1/campaigns/latest-month-roi
GET /api/v1/campaigns/latest-month-revenue

Response:

typescript
interface LatestMonthROI {
  roi: number;
  date: string;
}

interface LatestMonthRevenue {
  revenue: number;
  date: string;
}

3.4 Prophet Predictions ​

Get Predictions ​

http
GET /api/v1/prophet-predictions?from_date={timestamp}&to_date={timestamp}

Response:

typescript
interface ProphetPredictionData {
  date: string;
  revenue: number;
  ad_spend: number;
  new_accounts: number;
}

Trigger Prediction Pipeline ​

http
POST /api/v1/prophet-pipeline/trigger

Request Body:

typescript
{
  forecast_months: number;
}

Check Pipeline Status ​

http
GET /api/v1/prophet-pipeline/status

3.5 LLM API ​

Process Query ​

http
POST /llm-api/api/query

Request Body:

typescript
interface QueryRequest {
  query: string;
}

Response:

typescript
interface QueryResponse {
  output: {
    type: "chart" | "description" | "report" | "error";
    result: string; // Base64 encoded for charts
  };
  original_query: string;
}

Health Check ​

http
GET /llm-api/api/health

Response:

typescript
interface HealthResponse {
  status: "ok" | "error";
  message: string;
  healthy: boolean;
  collections_count?: number;
}

3.6 Database Management ​

Get Database Structure ​

http
GET /api/v1/database/structure

Response:

typescript
interface DbStructure {
  tables: string[];
  relationships: {
    [key: string]: string[];
  };
}

List Databases ​

http
GET /api/v1/database

Response:

typescript
interface DatabaseListResponse {
  databases: string[];
}

Delete Database ​

http
POST /api/v1/database/delete

Request Body:

typescript
{
  database_name: string;
}

4. Error Handling ​

All API endpoints follow a consistent error response format:

typescript
interface ErrorResponse {
  error: {
    message: string;
    type?: string;
    details?: unknown;
  };
}

5. Response Status Codes ​

  • 200: Success
  • 400: Bad Request
  • 401: Unauthorized
  • 403: Forbidden
  • 404: Not Found
  • 500: Internal Server Error
  • 503: Service Unavailable

6. Data Types ​

6.1 Campaign Data ​

typescript
interface CampaignData {
  date: string;
  campaign_id: string;
  channel: string;
  age_group: string;
  ad_spend: number;
  views: number;
  leads: number;
  new_accounts: number;
  country: string;
  revenue: number;
}

6.2 Monthly Data ​

typescript
interface MonthlyData {
  date: string;
  revenue: number;
  ad_spend: number;
  new_accounts: number;
}

7. Rate Limiting ​

  • Standard rate limit: 100 requests per minute per IP
  • Burst limit: 20 requests per second per IP

8. CORS Configuration ​

The API supports CORS with the following configuration:

  • Allowed Origins: Configured through environment variables
  • Allowed Methods: GET, POST, PUT, PATCH, DELETE
  • Allowed Headers: Content-Type, Authorization
  • Max Age: 3600 seconds