Referencia de API · Reportes
Endpoints para consulta de reportes y autenticación requerida (JWT).
Autenticación requerida
Todas las solicitudes deben incluir token JWT (excepto
Todas las solicitudes deben incluir token JWT (excepto
/login).
Authorization: Bearer {access_token}
POST
Autenticación · Obtener Token
/api/v2/auth/login
Endpoint público para obtener token JWT mediante credenciales.
{
"username": "agente_ventas",
"password": "*******"
}
{
"nombre": "Carlos",
"paterno": "Torres",
"materno": null,
"email": null,
"habitat": "Xcaret",
"puesto": null,
"perfil": "Cajero",
"preferencias": {
"idiomaId": 1,
"agenciaId": 28044,
"medioVentaId": 6,
"configurarUpgrade": false,
"configurarFyV": false
},
"permisos": {
"disponibilidadTemporal": false
},
"token": {
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"expirationMinutes": 60,
"tokenType": "Bearer"
}
}
El token debe incluirse en el header
Authorization: Bearer {accessToken}
para los reportes.
GET
Reporte de comisiones
/api/v2/reportes/comisiones
Devuelve el detalle de comisiones generadas por reservas dentro de un rango de fechas y hábitat específico.
Parámetros de consulta
| Parámetro | Tipo | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
| FechaInicio | string (date) | requerido | Fecha inicial, formato ISO (YYYY-MM-DD). | 2026-05-10 |
| FechaFin | string (date) | requerido | Fecha final, formato ISO (YYYY-MM-DD). Máximo 31 días después de FechaInicio. | 2026-05-12 |
| HabitatId | integer (int32) | requerido | Identificador del hábitat. | 3 = Xcaret | 4 = Xel-Ha |
curl -X GET "https://reservasapi.delphinus.com.mx/api/v2/reportes/comisiones?FechaInicio=2026-12-01&FechaFin=2026-12-15&HabitatId=3" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZ2VudGVfdmVudGFzIn0.abc" \ -H "Accept: application/json"
GET /api/v2/reportes/comisiones?FechaInicio=2026-12-01&FechaFin=2026-12-15&HabitatId=3 HTTP/1.1
Host: https://reservasapi.delphinus.com.mx
Authorization: Bearer {access_token}
[
{
"guia": "GUID-1001",
"confirma": "DEL-99801",
"ticket": 4421,
"claveGuia": "CUN-DF-01",
"servicio": "Nado con Delfines Plus",
"importeUsd": 125.50,
"importeMxn": 2572.75,
"importeUsdSinIva": 108.19,
"fecha": "2026-12-05",
"agencia": "Agencia Cancún"
}
]
Puede devolver array vacío [] si no existen comisiones en el rango.
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Error en los parámetros de la petición.",
"instance": null,
"code": "Parameters.Invalid",
"traceId": null,
"errors": {
"fechaFin": [
"El rango de fechas no puede exceder los 31 días."
]
}
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.2",
"title": "Unauthorized",
"status": 401,
"detail": "Acceso no autorizado. Token inválido o expirado.",
"instance": null,
"code": "Auth.Unauthorized",
"traceId": null,
"errors": { }
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.1",
"title": "Internal Server Error",
"status": 500,
"detail": "Ocurrió un error interno inesperado.",
"instance": null,
"code": "Server.InternalError",
"traceId": null,
"errors": { }
}
Modelos de datos
string → Valor obligatorio
string nullable
→ Puede ser string o
null
string opcional
→ Puede estar ausente
string | null → Mismo que nullable
// ---------- LoginRequest (Request Body) ---------- { "username": "string", // Requerido "password": "string" // Requerido } // ---------- LoginResponse (200 OK) ---------- { "nombre": "string", // Nombre del usuario "paterno": string | null, // Puede ser null "materno": string | null, // Puede ser null "email": string | null, // Puede ser null "habitat": "string", "puesto": string | null, "perfil": "string", "preferencias": { // Objeto anidado "idiomaId": 1, "agenciaId": 28044, "medioVentaId": 7, "configurarUpgrade": false, "configurarFyV": false }, "permisos": { "disponibilidadTemporal": false }, "token": { "accessToken": "jwt_token", "expirationMinutes": 60, "tokenType": "Bearer" } } // Ejemplo con valores null { "nombre": "Carlos", "paterno": null, // ← null explícito "materno": null, "email": null, "habitat": "Cancún", "puesto": null, ... }
Propiedades con nullable pueden ser
null o un string
válido.
{
// Todos los campos son obligatorios y siempre presentes
"guia": "string", // Nombre del guía
"confirma": "string", // Confirmación de la reserva
"ticket": 0, // Número de ticket (integer)
"claveGuia": "string", // Clave del guía
"servicio": "string", // Nombre del servicio
"importeUsd": 0.0, // Importe en dólares (double)
"importeMxn": 0.0, // Importe en pesos mexicanos (double)
"importeUsdSinIva": 0.0, // Importe en USD sin IVA (double)
"fecha": "2026-12-31", // Fecha en formato YYYY-MM-DD
"agencia": "string" // Nombre de la agencia
}
{
"type": string | null, // URI del tipo de error
"title": string | null, // Título legible del error
"status": 400, // Código HTTP (integer)
"detail": string | null, // Descripción detallada
"instance": string | null, // URI que identifica la instancia
"code": string, // Código del error
"traceId": string | null, // TraceId del error
"errors": { }, // Diccionario de errores
}
// Ejemplo con valores reales
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Error en los parámetros de la petición.",
"instance": null,
"code": "Parameters.Invalid",
"traceId": null,
"errors": {
"fechaFin": [
"El rango de fechas no puede exceder los 31 días."
]
}
}
Nota sobre campos
nullable:
En la respuesta,
recibirás el valor o explícitamente null.