API REST para gestionar informacion academica universitaria: centros, calendarios, materias, secciones, profesores, clases, edificios y aulas. Integra con SIIAU para sincronizar datos academicos.
- Java 21+ (probado con JDK 25)
- PostgreSQL 15+
- Maven (incluido via
mvnw, no requiere instalacion)
src/main/java/dev/cucei/siiapi/
├── config/ # Seguridad, CORS
├── common/ # Excepciones, paginacion
├── modules/
│ ├── calendario/ # Calendarios academicos
│ ├── centro/ # Centros universitarios
│ ├── materia/ # Materias/asignaturas
│ ├── profesor/ # Profesores
│ ├── seccion/ # Secciones (NRC)
│ ├── clase/ # Clases (horarios)
│ ├── edificio/ # Edificios
│ ├── aula/ # Aulas
│ └── sync/ # Sincronizacion SIIAU
└── info/ # Endpoint de informacion de la API
git clone <repo-url>
cd SIIAPI-SpringNo necesitas instalar Maven. El wrapper (mvnw) se encarga de todo.
Crea una base de datos PostgreSQL:
CREATE DATABASE siiapi;El profile dev esta activo por defecto. Configura la conexion en src/main/resources/application-dev.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/siiapi
username: postgres
password: postgresO usa variables de entorno:
export DB_URL=jdbc:postgresql://localhost:5432/siiapi
export DB_USERNAME=postgres
export DB_PASSWORD=postgresPara endpoints de escritura necesitas una API Key:
# Generar hash SHA-256 de tu key
echo -n "mi-api-key-secreta" | sha256sum
# Copia el hash generado
# Configurarlo
export API_KEYS_HASHED="el-hash-que-copiaste"# Compilar
./mvnw compile
# Ejecutar en modo desarrollo
./mvnw spring-boot:run
# O ejecutar el JAR
./mvnw package -DskipTests
java -jar target/siiapi-2.0.0.jarLa API estara disponible en http://localhost:8080.
# Info de la API
curl http://localhost:8080/
# Listar centros
curl http://localhost:8080/api/v2/centros
# Crear un centro (requiere API Key)
curl -X POST http://localhost:8080/api/v2/centros \
-H "Content-Type: application/json" \
-H "X-API-Key: mi-api-key-secreta" \
-d '{"name": "CUCEI", "siiauId": "CUCEI"}'# Base de datos
export DB_URL=jdbc:postgresql://tu-host:5432/siiapi
export DB_USERNAME=tu-usuario
export DB-password=tu-password
# Seguridad
export API_KEYS_HASHED="hash1,hash2,hash3" # Lista separada por comas./mvnw package -DskipTestsEsto genera target/siiapi-2.0.0.jar.
java -jar target/siiapi-2.0.0.jar --spring.profiles.active=prodO con Docker:
docker build -t siiapi .
docker run -p 8080:8080 \
-e DB_URL=jdbc:postgresql://db-host:5432/siiapi \
-e DB_USERNAME=postgres \
-e DB_PASSWORD=secreto \
-e API_KEYS_HASHED="hash1,hash2" \
siiapiEn application-prod.yml se desactiva show-sql y la DB se configura por variables de entorno. Hibernate crea las tablas automaticamente con ddl-auto: update.
Nota: Para produccion se recomienda usar migraciones Flyway en lugar de
ddl-auto: update.
| Metodo | Requiere API Key |
|---|---|
| GET | No |
| POST | Si |
| PUT | Si |
| PATCH | Si |
| DELETE | Si |
| OPTIONS | No |
Enviar la key en el header:
X-API-Key: tu-api-key
La key se hashea con SHA-256 y se compara contra la lista en API_KEYS_HASHED.
Ver docs/README.md para documentacion completa de cada endpoint.