OR - Inscripciones
Inscripciones de colegios
Seguridad ¶
Procesos para ingresar en la aplicación, verificar estado y otros relacionados con seguridad
Verificar el login ¶
Se verifica que las credenciales del usuario son válidas (tabla schoolcontacts)
loginPOST/security/login{?usr,pwd}
Example URI
- usr
required string(required)usuario que se loggea (email)
- pwd
required string(required)password utilizado ya en formato MD5
200Headers
Content-Type: application/jsonBody
{
"id": 1,
"sessionid": "ABSKJDJHKDJHSKJDHKJHKJ",
"validthru": "20190405205812", // (Formato yymmddhhmmss)
"name": "Usuario de Prueba",
"schoolid": 1, // identificador del colegio a quien pertenece el contacto
"onboarding": true // aún en proceso de registro. Se debe validar que el colegio no esté inscrito en algún evento que esté disponible.
}400Headers
Content-Type: application/jsonBody
{
"msg": "Error en la llamada del servicio"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Clave inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Error inteno"
}Recupera clave del usuario ¶
Se valida que el correo enviado exista como un usuario (en schiilscontact) y se le envia un correo con el link al formulario de cambio de clave. El link debe enviarse con unhash almacenado en sessionid. SI el password es nulo no deben reconocerse el email como válido.
forgotPOST/security/forgot{?email}
Example URI
required string(required)cadena con formato valido de correo
200Headers
Content-Type: application/jsonBody
{
"email": "xxxx@xxxxx.com"
}401Headers
Content-Type: application/jsonBody
{
"msg": "No tenemos ningún usuario registrado con ese email"
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Recuperación de la clave del usuario ¶
Se procede a cambiar la la clave del usuario cuyo email y sessionid coincidan. El pwd viene en MD5
recoverPOST/security/recover{?hash,pwd}
Example URI
- hash
required string(required)hash enviado al correo
- pwd
required string(required)nuevo password (MD5) Se graba directamente como viene El password solo puede tener estos caracteres {a-zA-Z0-9_-#$}
200Headers
Content-Type: application/jsonBody
{
"msg": "Contraseña cambiada satisfactoriamente"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Hash incorrecto"
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Cambio de la clave del usuario ¶
Se procede a cambiar la la clave del usuario cuyo password anterior y sessionid coincidan. Los pwds viene en MD5
recoverPOST/security/pwdchange{?oldpwd,newpwd,sessionid}
Example URI
- oldpwd
required string(required)password anterior
- newpwd
required string(required)nuevo password (MD5) Se graba directamente como viene El password solo puede tener estos caracteres {a-zA-Z0-9_-#$}
- sessionid
required string(required)Identificador de la sesión
200Headers
Content-Type: application/jsonBody
{
"msg": "Contraseña cambiada satisfactoriamente"
}401Headers
Content-Type: application/jsonBody
{
"msg": "sessionid/passanterior incorrecto"
}500Headers
Content-Type: application/jsonBody
{
"msg": "error retornado al programador desde mysql_error()"
}Geografía ¶
Servicios relacionados con direcciones y ubicaciones
Listado de Estados ¶
Este servicio obtiene una lista de los estados existentes
listPOST/addresses/states/list{?filter,statusid,countryid,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- statusid
optional number(required)filtra por el estatus 0=Todos, 1=Solo Activos, 2=Solo Inactivos
- countryid
required number(required)Identificador del país
- order
required number(required)1=fecha de creacion, 2=nombre (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"name": "Miranda",
"status": {
"id": 1,
"dsc": "Activo"
}
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Listado de Municipios ¶
Este servicio obtiene una lista de los municipios existentes
listPOST/addresses/municipalities/list{?filter,statusid,stateid,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- statusid
optional number(required)filtra por el estatus 0=Todos, 1=Solo Activos, 2=Solo Inactivos
- stateid
required number(required)Indica el filtro por estado
- order
required number(required)1=id, 2=nombre (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"name": "Baruta",
"status": {
"id": 1,
"dsc": "Activo"
}
}
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Colegios ¶
Servicios relacionados con direcciones y ubicaciones
Un Colegio ¶
Este servicio obtiene un colegio en particular La respuesta 204 es cuando no se encuentra el registro.
entryGET/schools/entry{?id,sessionid}
Example URI
- id
required number(required)Identificador del Colegio
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"entry": {
"id": 1,
"name": "Colegio Uno",
"status": {
"id": 1,
"dsc": "Activa"
},
"address": {
"dsc": "Direcciín detallada",
"municipality": {
"id": 1,
"dsc": "Municipio"
},
"state": {
"id": 1,
"dsc": "Estado"
},
"country": {
"id": 1,
"dsc": "País"
},
},
"phone": "+581234567",
"groups": [
{
"id": 1,
"name": "Grupo UNO",
"assigned": true
},
...
],
"contacts": [
{
"id": 1,
"name": "Contacto Uno",
"phone": "+58 1234567",
"email": "contacto@correo.com"
},
...
]
}
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Actualizar un colegio ¶
Este servicio permitirá incluir o modificar un contacto
updatePOST/schools/update{?id,address,stateid,municipalityid,phone,groups,sessionid}
Example URI
- id
required number(required)Identificador del colegio.
- address
required string(required)Dirección escrita
- stateid
required string(required)Identificador del estado
- municipalityid
optional string(required)Identificador del municipio
- phone
required number(required)teléfono
- groups
required number(required)Identificadores de las agrupaciones separados por comas (Ej. “1,2,4”)
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID modificado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Incluir o modificar un contacto ¶
Este servicio permitirá incluir o modificar un contacto
updatePOST/schools/contact/update{?id,name,phone,email,sessionid}
Example URI
- id
required number(required)Identificador del contacto. Para incluirlo se debe enviar el ID en 0, si el ID es distinto de 0 se asume que es una modificación.
- name
required string(required)Nombre del Contacto
- phone
required number(required)teléfono
required string(required)correo electrónico
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID modificado o incluido
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}403Headers
Content-Type: application/jsonBody
{
"msg": "No tiene Privilegios"
}409Headers
Content-Type: application/jsonBody
{
"msg": "Duplicado"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Eliminar un contacto ¶
Este servicio permitirá eliminar un contacto
deletePOST/schools/contact/delete{?id,sessionid}
Example URI
- id
required number(required)Identificador del contacto.
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID eliminado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}403Headers
Content-Type: application/jsonBody
{
"msg": "No tiene Privilegios"
}409Headers
Content-Type: application/jsonBody
{
"msg": "Duplicado"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Grupos ¶
Servicios relacionados con grupo de colegios
Listado de Municipios ¶
Este servicio obtiene una lista de los grupos existentes
listPOST/groups/list{?filter,statusid,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- statusid
optional number(required)filtra por el estatus 0=Todos, 1=Solo Activos, 2=Solo Inactivos
- order
required number(required)1=id, 2=nombre (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"name": "Grupo 1",
"status": {
"id": 1,
"dsc": "Activo"
}
}
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Inscripciones ¶
Servicios relacionados con las inscripciones de colegios en eventos
Listado de eventos disponibles ¶
Este servicio obtiene una lista de los eventos en los que el colegio está inscrito o en los que se puede inscribir
listPOST/inscriptions/events/list{?filter,schoolid,modality,year,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- schoolid
required number(required)identificador del colegio
- modality
required number(required)-1=cualquiera, 0=presencial, 1=online
- year
required number(required)identificador del año
- order
required number(required)1=id, 2=nombre del eevnto (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"name": "Evento 1",
"image": {
"type": "image/jpeg",
"url": "https://....12.jpg"
},
"info": "",
"pupilamount": 125, // Precio por alumno
"discount": 0, // Porcentaje de descuento
"status": {
"event": 1, // 1=activo, 0=inactivo
"online": {
"from": "2025-01-01",
"to": "2025-01-01",
"schoolreg": 1, // 1=activo, 0=inactivo
"pupilreg": 1, // 1=activo, 0=inactivo
"paymentreg": 1, // 1=activo, 0=inactivo
,
"insite": {
"from": "2025-01-01",
"to": "2025-01-01",
"schoolreg": 1, // 1=activo, 0=inactivo
"pupilreg": 1, // 1=activo, 0=inactivo
"paymentreg": 1, // 1=activo, 0=inactivo
,
},
"inscription": {
"id": 1, // 0 si no se han inscrito aún
"modality": 0, // -1=sin definir, 0=presencial, 1=online
"estimated": 124,
"pupilpaid": 124,
"inscripted": 124,
"discount": 0,
}
}
...
],
"grades": [ // Filtro con los grados del evento
{
"id": 12,
"name": "1er año",
"status": "1",
},
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Un Evento ¶
Este servicio obtiene un evento en el que esté inscrito un colegio La respuesta 204 es cuando no se encuentra el registro.
entryGET/inscriptions/events/entry{?id,sessionid}
Example URI
- id
required number(required)Identificador del Evento
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"entry": {
"id": 1,
"name": "Evento 1",
"image": {
"type": "image/jpeg",
"url": "https://....12.jpg"
},
"info": "",
"pupilamount": 125, // Precio por alumno
"discount": 0, // Porcentaje de descuento
"actualxrate": 124.67,
"status": {
"event": 1, // 1=activo, 0=inactivo
"online": {
"from": "2025-01-01",
"to": "2025-01-01",
"schoolreg": 1, // 1=activo, 0=inactivo
"pupilreg": 1, // 1=activo, 0=inactivo
"paymentreg": 1, // 1=activo, 0=inactivo
,
"insite": {
"from": "2025-01-01",
"to": "2025-01-01",
"schoolreg": 1, // 1=activo, 0=inactivo
"pupilreg": 1, // 1=activo, 0=inactivo
"paymentreg": 1, // 1=activo, 0=inactivo
,
},
"inscription": {
"id": 1,
"modality": 0, // -1=sin definir, 0=presencial, 1=online
"estimated": 124,
"inscripted": 95,
"discount": 0,
},
"payments": [
{
"date": "2025-01-01",
"account": {
"name": "Zelle",
"details": "nombre@correo.com",
"currency": "USD"
},
"amount": 123.45,
"xrate": 1,
"pupils": 35 // número de alumnos que se iscriben seún el pago
},
...
]
},
"accounts": [
{
"id": 2,
"name": "Venezuela",
"details": "Venezuela",
"currency": "VES",
"status": 1
}
],
"currencies": [
{
"id": "USD",
"name": "Dólares",
"abbr": "$",
"reference": true
},
{
"id": "VES",
"name": "Bolívares",
"abbr": "Bs",
"reference": false
}
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Inscribirse ¶
Registra una inscripción o modifica los datos de una (si inscriptionid=0 se considera nueva) La respuesta 204 es cuando no se encuentra el registro.
inscriptionPOST/inscriptions/events/inscription{?eventid,inscriptionid,estimated,modality,sessionid}
Example URI
- eventid
required number(required)Identificador del Evento
- inscriptionid
required number(required)Identificador de la inscripción
- estimated
required number(required)Número de alumnos estimaods
- modality
required number(required)0=Presencial, 1=onLine
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id": 1 // inscriptionid actualizado o creado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Listado de alumnos inscritos ¶
Este servicio obtiene una lista de los alumnos inscritos
listPOST/inscriptions/inscripted/list{?filter,inscriptionid,gradeid,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- inscriptionid
required number(required)identificador de la inscripción
- gradeid
required number(required)Identidicador del grado 0=todos
- order
required number(required)1=id, 2=nombre del eevnto (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"name": "Pedro",
"surname": "Pérez",
"ci": "1232132312",
"gender": {
"id": "M",
"name": "Masculino"
},
"grade": {
"id": 1,
"name": "1er Grado"
},
"birthdate": "2004-01-01",
"age": 21,
}
...
],
"grades:[
{
"id": 1,
"name": "1er Grado"
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Incluir/Editar un alumno inscrito ¶
Este servicio permitirá incluir o modificar un alumno inscrito.
NOTA!! Cuando se esté incluyendo una nuevo alumno se debe intentar reciclar de la tabla de pupils el alumno utilizando la ci.
updatePOST/inscriptions/inscripted/update{?inscriptionid,pupilid,name,surname,ci,birthdate,genderid,gradeid,sessionid}
Example URI
- inscriptionid
required number(required)Identificador de la inscripción
- pupilid
required number(required)Identificador del alumno inscrito (0=nuevo alumno)
- name
required string(required)Nombre del Alumno
- surname
required string(required)Apellido del alumno
- ci
required string(required)cedula del alumno
- birthdate
required string(required)fecha de nacimiento en el formato yyyy-mm-dd
- genderid
required number(required)Identificador del sexo (“M” o “F”)
- gradeid
required number(required)Identificador del grado
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID de la inscripción modificado/incluido
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Borrar un alumno inscrito ¶
Este servicio permitirá eliminar un alumno inscrito.
deletePOST/inscriptions/inscripted/delete{?inscriptionid,pupilid,sessionid}
Example URI
- inscriptionid
required number(required)Identificador de la inscripción
- pupilid
required number(required)Identificador del alumno inscrito (0=nuevo alumno)
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID de la inscripción eliminado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}409Headers
Content-Type: application/jsonBody
{
"msg": "No encontrado"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Incluir alumnos masivamente ¶
Este servicio permitirá incluir alumnos en un grado masivamente NOTA!! Cuando se esté incluyendo un nuevo alumno se debe intentar reciclar de la tabla de pupils el alumno utilizando la ci.
updatePOST/inscriptions/inscripted/upload{?inscriptionid,text,gradeid,sessionid}
Example URI
- inscriptionid
required number(required)Identificador de la inscripción
- text
required string(required)texto contentivo de los registros a subir
- gradeid
required number(required)Identificador del grado
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID de la inscripción modificado/incluido
}400Headers
Content-Type: application/jsonBody
{
"msg": "Aquí se deben devolver los errores de formatos"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Listado de pagos ¶
Este servicio obtiene una lista de los alumnos inscritos
listPOST/inscriptions/payments/list{?filter,inscriptionid,order,offset,numofrec,sessionid}
Example URI
- filter
optional string(required)Se establece un filtro por el nombre
- inscriptionid
required number(required)identificador de la inscripción
- order
required number(required)1=id, 2=fecha, 3=cuenta (Usar valores negativos para orden descendente)
- offset
required number(required)Registro desde el que se empieza a mostrar el listado (el primero es 0)
- numofrec
required number(required)Número de registros mostrar
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"numofrecords": 3,
"records": [
{
"id": 1,
"date": "2025-01-01",
"ref": "000000001",
"confirmed": false,
"account": {
"id": 1,
"name": "Zelle",
"details": "persona@correo.com",
"currency": "USD",
"status": {
"id": 1,
"name": "Activo"
}
},
"amount": {
"value": 1234.56,
"currency": "USD",
"formatted": "USD 1.234,56"
},
"pupils": 124
}
...
],
"accounts": [
{
"id": 1,
"name": "Zelle",
"details": "persona@correo.com",
"currency": "USD",
"status": {
"id": 1,
"name": "Activo"
}
},
...
]
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Incluir/Editar un pago ¶
Este servicio permitirá incluir o modificar un pago a una inscripción. Debe devolver un 409 si el pago ya está confirmado
updatePOST/inscriptions/payments/update{?inscriptionid,paymentid,accountid,ref,date,amount,sessionid}
Example URI
- inscriptionid
required number(required)Identificador de la inscripción
- paymentid
required number(required)Identificador del pago (0 para incluir uno)
- accountid
required number(required)Identificador de la cuenta
- ref
required string(required)Referencia del pago
- date
required string(required)Fecha del pago (Formato YYYY-MM-DD)
- amount
required number(required)monto del pago
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1, // ID del pago modificado/incluido
"pupils": 35 // número de alumnos comprado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}Borrar un alumno inscrito ¶
Este servicio permitirá eliminar un pago. . Debe devolver un 409 si el pago ya está confirmado
deletePOST/inscriptions/payments/delete{?paymentid,sessionid}
Example URI
- paymentid
required number(required)Identificador del pago
- sessionid
required string(required)número de la sessión loggeada
200Headers
Content-Type: application/jsonBody
{
"id" : 1 // ID del pago borrado
}400Headers
Content-Type: application/jsonBody
{
"msg": "Descripción del mensaje de error"
}401Headers
Content-Type: application/jsonBody
{
"msg": "Sesión expirada o inválida"
}409Headers
Content-Type: application/jsonBody
{
"msg": "No encontrado"
}500Headers
Content-Type: application/jsonBody
{
"msg": "Descripcion del error"
}