API Documentation
Frontend Setup
// 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:
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:
[
{
"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:
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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"status": "healthy",
"message": "PostgreSQL connection is working",
"timestamp": "2023-01-01T00:00:00"
}
MongoDB Endpoints
Session Endpoints
Create Session
POST /session
Request Body:
{
"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:
{
"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:
{
"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:
{
"text": "Text to embed"
}
Response:
{
"embedding": [0.1, 0.2, 0.3, ...],
"dimensions": 1536
}
Process Chat Request
POST /chat
Request Body:
{
"query": "Can you tell me about Pixity?",
"chat_history": [
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hello! How can I help you?"}
]
}
Response:
{
"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:
{
"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