# Django REST API (AAAIMX)
API para gestion de miembros (usuarios) y divisiones del Capítulo AAAIMX
# Modelos
# Division
- id (default)
- name
- logo
- fanpage
# User
- id (UUID)
- username
- division (solo puede pertenecer a una Division)
- birthdate (Fecha)
# API
- Debe soportar autenticacion JWT
- Documentación con Swagger
- Acceso limitado de dominios (CORS)
- Debe soportar dos ambientes DEV y PROD
- Utilizar TDD (Test Development Driven)
# Auth Endpoints
- POST /api/auth/login/
- GET /api/auth/groups/ Listar todos los Grupos de autenticacion (Roles) sin paginación.
- Leader: Acceso completo al CRUD de Usuario en su división y RU Division
- Guest: Acceso de lectura en su division.
- User: RU su propio usuario
# User Endpoints
GET /api/users/ Debe listar todos los usuarios de una division si el usuario es
Leader
oGuest
.- Retornar todos los campos de Usuario.
- Busqueda por name, email.
- Todos los campos deben poder filtrarse.
- Todos los campos deben poder ordenarse
- Orden por defecto por fecha de creación (
date_joined
)
GET /api/users/{id}/ Obtener información de Usuario
- Debe incluir solo los campos:
- id
- username
- division: (
id
,name
) - birthdate
- Debe incluir solo los campos:
POST /api/users/ Crear un usuario para la Division
- Se debe establacer la contraseña
- Solo usuarios con rol
Leader
tienen acceso.
PATCH /api/users/{id} Actualizar información del usuario
- Usuario con rol
Leader
de la division. - Usuario propietario del recurso
- Usuario con rol
DELETE /api/users/{id} Eliminar usuario
- Solo si el usuario es
Leader
de la division
- Solo si el usuario es
# Division Endpoints
- GET /api/divisions/ Listar divsiones si el usuario es Administrator (
is_superuser=True
ois_staff=True
) - GET /api/divisions/{id}/ Información de la Division
- Solo si el usuario es
Leader
oGuest
de la division.
- Solo si el usuario es
- PATCH /api/divisions/{id} Actualizar division
- Solo si el usuario es
Leader
de la division.
- Solo si el usuario es
- GET /api/division/{id}/users/ Listar todos los usuarios de la division
- Si el usuario es
Leader
oGuest
. - Debe retornar solo
id
yusername
del usuario
- Si el usuario es
# Other Endpoints
- GET /api/info/ Información general del usuario y la aplicación
- Debe retornar:
id
username
division_name
public_ip
: IP publica del servidor