Pix-Agent / docs /api_documentation.md
Cuong2004's picture
version 1.1
e83f5e9
|
raw
history blame
9.92 kB
# API Documentation
## Frontend Setup
```javascript
// Basic Axios setup
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.your-domain.com',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
// Error handling
api.interceptors.response.use(
response => response.data,
error => {
const errorMessage = error.response?.data?.detail || 'An error occurred';
console.error('API Error:', errorMessage);
return Promise.reject(errorMessage);
}
);
```
## Caching System
- All GET endpoints support `use_cache=true` parameter (default)
- Cache TTL: 300 seconds (5 minutes)
- Cache is automatically invalidated on data changes
## Authentication
Currently no authentication is required. If implemented in the future, use JWT Bearer tokens:
```javascript
const api = axios.create({
// ...other config
headers: {
// ...other headers
'Authorization': `Bearer ${token}`
}
});
```
## Error Codes
| Code | Description |
|------|-------------|
| 400 | Bad Request |
| 404 | Not Found |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
## PostgreSQL Endpoints
### FAQ Endpoints
#### Get FAQs List
```
GET /postgres/faq
```
Parameters:
- `skip`: Number of items to skip (default: 0)
- `limit`: Maximum items to return (default: 100)
- `active_only`: Return only active items (default: false)
- `use_cache`: Use cached data if available (default: true)
Response:
```json
[
{
"question": "How do I book a hotel?",
"answer": "You can book a hotel through our app or website.",
"is_active": true,
"id": 1,
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
]
```
Example:
```javascript
async function getFAQs() {
try {
const data = await api.get('/postgres/faq', {
params: { active_only: true, limit: 20 }
});
return data;
} catch (error) {
console.error('Error fetching FAQs:', error);
throw error;
}
}
```
#### Create FAQ
```
POST /postgres/faq
```
Request Body:
```json
{
"question": "How do I book a hotel?",
"answer": "You can book a hotel through our app or website.",
"is_active": true
}
```
Response: Created FAQ object
#### Get FAQ Detail
```
GET /postgres/faq/{faq_id}
```
Parameters:
- `faq_id`: ID of FAQ (required)
- `use_cache`: Use cached data if available (default: true)
Response: FAQ object
#### Update FAQ
```
PUT /postgres/faq/{faq_id}
```
Parameters:
- `faq_id`: ID of FAQ to update (required)
Request Body: Partial or complete FAQ object
Response: Updated FAQ object
#### Delete FAQ
```
DELETE /postgres/faq/{faq_id}
```
Parameters:
- `faq_id`: ID of FAQ to delete (required)
Response:
```json
{
"status": "success",
"message": "FAQ item 1 deleted"
}
```
#### Batch Operations
Create multiple FAQs:
```
POST /postgres/faqs/batch
```
Update status of multiple FAQs:
```
PUT /postgres/faqs/batch-update-status
```
Delete multiple FAQs:
```
DELETE /postgres/faqs/batch
```
### Emergency Contact Endpoints
#### Get Emergency Contacts
```
GET /postgres/emergency
```
Parameters:
- `skip`: Number of items to skip (default: 0)
- `limit`: Maximum items to return (default: 100)
- `active_only`: Return only active items (default: false)
- `use_cache`: Use cached data if available (default: true)
Response: Array of Emergency Contact objects
#### Create Emergency Contact
```
POST /postgres/emergency
```
Request Body:
```json
{
"name": "Fire Department",
"phone_number": "114",
"description": "Fire rescue services",
"address": "Da Nang",
"location": "16.0544, 108.2022",
"priority": 1,
"is_active": true
}
```
Response: Created Emergency Contact object
#### Get Emergency Contact
```
GET /postgres/emergency/{emergency_id}
```
#### Update Emergency Contact
```
PUT /postgres/emergency/{emergency_id}
```
#### Delete Emergency Contact
```
DELETE /postgres/emergency/{emergency_id}
```
#### Batch Operations
Create multiple Emergency Contacts:
```
POST /postgres/emergency/batch
```
Update status of multiple Emergency Contacts:
```
PUT /postgres/emergency/batch-update-status
```
Delete multiple Emergency Contacts:
```
DELETE /postgres/emergency/batch
```
### Event Endpoints
#### Get Events
```
GET /postgres/events
```
Parameters:
- `skip`: Number of items to skip (default: 0)
- `limit`: Maximum items to return (default: 100)
- `active_only`: Return only active items (default: false)
- `featured_only`: Return only featured items (default: false)
- `use_cache`: Use cached data if available (default: true)
Response: Array of Event objects
#### Create Event
```
POST /postgres/events
```
Request Body:
```json
{
"name": "Da Nang Fireworks Festival",
"description": "International Fireworks Festival Da Nang 2023",
"address": "Dragon Bridge, Da Nang",
"location": "16.0610, 108.2277",
"date_start": "2023-06-01T19:00:00",
"date_end": "2023-06-01T22:00:00",
"price": [
{"type": "VIP", "amount": 500000},
{"type": "Standard", "amount": 300000}
],
"url": "https://danangfireworks.com",
"is_active": true,
"featured": true
}
```
Response: Created Event object
#### Get Event
```
GET /postgres/events/{event_id}
```
#### Update Event
```
PUT /postgres/events/{event_id}
```
#### Delete Event
```
DELETE /postgres/events/{event_id}
```
#### Batch Operations
Create multiple Events:
```
POST /postgres/events/batch
```
Update status of multiple Events:
```
PUT /postgres/events/batch-update-status
```
Delete multiple Events:
```
DELETE /postgres/events/batch
```
### About Pixity Endpoints
#### Get About Pixity
```
GET /postgres/about-pixity
```
Response:
```json
{
"content": "PiXity is your smart, AI-powered local companion...",
"id": 1,
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
```
#### Update About Pixity
```
PUT /postgres/about-pixity
```
Request Body:
```json
{
"content": "PiXity is your smart, AI-powered local companion..."
}
```
Response: Updated About Pixity object
### Da Nang Bucket List Endpoints
#### Get Da Nang Bucket List
```
GET /postgres/danang-bucket-list
```
Response: Bucket List object with JSON content string
#### Update Da Nang Bucket List
```
PUT /postgres/danang-bucket-list
```
### Solana Summit Endpoints
#### Get Solana Summit
```
GET /postgres/solana-summit
```
Response: Solana Summit object with JSON content string
#### Update Solana Summit
```
PUT /postgres/solana-summit
```
### Health Check
```
GET /postgres/health
```
Response:
```json
{
"status": "healthy",
"message": "PostgreSQL connection is working",
"timestamp": "2023-01-01T00:00:00"
}
```
## MongoDB Endpoints
### Session Endpoints
#### Create Session
```
POST /session
```
Request Body:
```json
{
"user_id": "user123",
"query": "How do I book a room?",
"timestamp": "2023-01-01T00:00:00",
"metadata": {
"client_info": "web",
"location": "Da Nang"
}
}
```
Response: Created Session object with session_id
#### Update Session with Response
```
PUT /session/{session_id}/response
```
Request Body:
```json
{
"response": "You can book a room through our app or website.",
"response_timestamp": "2023-01-01T00:00:05",
"metadata": {
"response_time_ms": 234,
"model_version": "gpt-4"
}
}
```
Response: Updated Session object
#### Get Session
```
GET /session/{session_id}
```
Response: Session object
#### Get User History
```
GET /history
```
Parameters:
- `user_id`: User ID (required)
- `limit`: Maximum sessions to return (default: 10)
- `skip`: Number of sessions to skip (default: 0)
Response:
```json
{
"user_id": "user123",
"sessions": [
{
"session_id": "60f7a8b9c1d2e3f4a5b6c7d8",
"query": "How do I book a room?",
"timestamp": "2023-01-01T00:00:00",
"response": "You can book a room through our app or website.",
"response_timestamp": "2023-01-01T00:00:05"
}
],
"total_count": 1
}
```
#### Health Check
```
GET /health
```
## RAG Endpoints
### Create Embedding
```
POST /embedding
```
Request Body:
```json
{
"text": "Text to embed"
}
```
Response:
```json
{
"embedding": [0.1, 0.2, 0.3, ...],
"dimensions": 1536
}
```
### Process Chat Request
```
POST /chat
```
Request Body:
```json
{
"query": "Can you tell me about Pixity?",
"chat_history": [
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hello! How can I help you?"}
]
}
```
Response:
```json
{
"answer": "Pixity is a platform...",
"sources": [
{
"document_id": "doc123",
"chunk_id": "chunk456",
"chunk_text": "Pixity was founded in...",
"relevance_score": 0.92
}
]
}
```
### Direct RAG Query
```
POST /rag
```
Request Body:
```json
{
"query": "Can you tell me about Pixity?",
"namespace": "about_pixity",
"top_k": 3
}
```
Response: Query results with relevance scores
### Health Check
```
GET /health
```
## PDF Processing Endpoints
### Upload and Process PDF
```
POST /pdf/upload
```
Form Data:
- `file`: PDF file (required)
- `namespace`: Vector database namespace (default: "Default")
- `index_name`: Vector database index name (default: "testbot768")
- `title`: Document title (optional)
- `description`: Document description (optional)
- `user_id`: User ID for WebSocket updates (optional)
Response: Processing results with document_id
### Delete Documents in Namespace
```
DELETE /pdf/namespace
```
Parameters:
- `namespace`: Vector database namespace (default: "Default")
- `index_name`: Vector database index name (default: "testbot768")
- `user_id`: User ID for WebSocket updates (optional)
Response: Deletion results
### Get Documents List
```
GET /pdf/documents
```
Parameters:
- `namespace`: Vector database namespace (default: "Default")
- `index_name`: Vector database index name (default: "testbot768")
Response: List of documents in the namespace