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 Browser
Estadísticas

Ve las estadísticas generales del sistema en formato JSON.

Ver Estadísticas

Autenticació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
Info de Usuario
Obtiene información del usuario autenticado

Endpoints Disponibles

Listar Viajes
GET

URL: /api/viajes/

Descripción: Obtiene la lista de todos los viajes disponibles

Probar Endpoint
Detalle de Viaje
GET

URL: /api/viajes/{id}/

Descripción: Obtiene los detalles de un viaje específico

Probar Endpoint
Crear Boleto
POST

URL: /api/boletos/create/

Descripción: Crea un nuevo boleto para un viaje

Crear Boleto Rápido
POST

URL: /api/boletos/quick-create/

Descripción: Crea un boleto con campos mínimos requeridos

Listar Boletos
GET

URL: /api/boletos/

Descripción: Obtiene la lista de todos los boletos

Probar Endpoint
Estadísticas
GET

URL: /api/stats/

Descripción: Obtiene estadísticas generales del sistema

Probar Endpoint

Ejemplos 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 destino
  • departamento - Filtrar por departamento de destino
  • available_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