API Documentation
Base URL
https://webadmin.questventura.com/api/
Browsable API
Explora la API interactivamente usando la interfaz web de Django REST Framework.
Abrir API BrowserEstadísticas
Ve las estadísticas generales del sistema en formato JSON.
Ver EstadísticasAutenticación
Importante:
Todos los endpoints de la API requieren autenticación excepto donde se indique lo contrario.
Métodos de Autenticación Soportados:
- JWT (Recomendado): JSON Web Tokens para aplicaciones móviles/frontend
- Token Authentication: Tokens de API persistentes
- Session Authentication: Para uso desde el navegador web
1. Autenticación JWT
Obtener Token:
POST https://webadmin.questventura.com/api/auth/login/
Content-Type: application/json
{
"username": "tu_usuario",
"password": "tu_password"
}
Retorna: access token (24h) y refresh token (7 días)
Usar Token en Requests:
GET https://webadmin.questventura.com/api/viajes/
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
Incluye el token JWT en el header Authorization
Renovar Token:
POST https://webadmin.questventura.com/api/auth/refresh/
Content-Type: application/json
{
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGc..."
}
Verificar Token:
POST https://webadmin.questventura.com/api/auth/verify/
Content-Type: application/json
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGc..."
}
2. Endpoints de Utilidad
Probar Autenticación
Endpoint simple para verificar que la autenticación funciona
Endpoint simple para verificar que la autenticación funciona
Info de Usuario
Obtiene información del usuario autenticado
Obtiene información del usuario autenticado
Endpoints Disponibles
Listar Viajes
GETDetalle de Viaje
GETCrear Boleto
POSTURL: /api/boletos/create/
Descripción: Crea un nuevo boleto para un viaje
Crear Boleto Rápido
POSTURL: /api/boletos/quick-create/
Descripción: Crea un boleto con campos mínimos requeridos
Listar Boletos
GETEstadísticas
GETEjemplos de Uso
1. Obtener Lista de Viajes
Solicitud:
GET https://webadmin.questventura.com/api/viajes/
Parámetros opcionales:
trip_status- Filtrar por estado del viaje (ACTIVE, FINISHED, CANCELLED, UNDEFINED)dificultad- Filtrar por dificultad (Bajo, Medio, Alto)municipio- Filtrar por municipio de destinodepartamento- Filtrar por departamento de destinoavailable_only=true- Solo viajes disponibles
Ejemplo:
GET https://webadmin.questventura.com/api/viajes/?available_only=true&dificultad=Bajo&municipio=Medellín&trip_status=ACTIVE
2. Crear Boleto (Completo)
Solicitud:
POST https://webadmin.questventura.com/api/boletos/create/
Content-Type: application/json
{
"primer_nombre": "Juan",
"apellido": "Pérez",
"numero_de_telefono": "+1-555-0123",
"viaje": 1,
"status": "UNDEFINED",
"creado_desde": "api"
}
3. Crear Boleto (Rápido)
Solicitud:
POST https://webadmin.questventura.com/api/boletos/quick-create/
Content-Type: application/json
{
"primer_nombre": "María",
"apellido": "González",
"viaje_id": 1,
"numero_de_telefono": "+1-555-0456"
}
Nota: El estado se asigna automáticamente como "Reservado" y el origen como "api".
4. Códigos de Destino
Listar Destinos:
GET https://webadmin.questventura.com/api/destinations/
Parámetros opcionales:
- municipio: Filtrar por municipio
- departamento: Filtrar por departamento
Ejemplo: GET https://webadmin.questventura.com/api/destinations/?departamento=Antioquia
Crear Destino:
POST https://webadmin.questventura.com/api/destinations/
Content-Type: application/json
{
"municipio": "Bogotá",
"departamento": "Cundinamarca"
}
5. Ejemplo con JavaScript (Fetch API)
// Crear un boleto
async function createBoleto() {
const response = await fetch('https://webadmin.questventura.com/api/boletos/quick-create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
primer_nombre: 'Carlos',
apellido: 'Martínez',
viaje_id: 1,
numero_de_telefono: '+34-612-345-678'
})
});
const result = await response.json();
if (result.success) {
console.log('Boleto creado:', result.data);
} else {
console.error('Error:', result.message);
}
}
// Obtener viajes disponibles
async function getAvailableTrips() {
const response = await fetch('https://webadmin.questventura.com/api/viajes/?available_only=true');
const trips = await response.json();
console.log('Viajes disponibles:', trips);
}
Importante
- Actualmente la API permite acceso sin autenticación (solo para desarrollo)
- En producción, será necesario autenticarse para crear/modificar boletos
- Todos los endpoints devuelven datos en formato JSON
- Los errores incluyen mensajes descriptivos en español