# 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
LeaderoGuest.- 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
Leadertienen acceso.
PATCH /api/users/{id} Actualizar información del usuario
- Usuario con rol
Leaderde la division. - Usuario propietario del recurso
- Usuario con rol
DELETE /api/users/{id} Eliminar usuario
- Solo si el usuario es
Leaderde la division
- Solo si el usuario es
# Division Endpoints
- GET /api/divisions/ Listar divsiones si el usuario es Administrator (
is_superuser=Trueois_staff=True) - GET /api/divisions/{id}/ Información de la Division
- Solo si el usuario es
LeaderoGuestde la division.
- Solo si el usuario es
- PATCH /api/divisions/{id} Actualizar division
- Solo si el usuario es
Leaderde la division.
- Solo si el usuario es
- GET /api/division/{id}/users/ Listar todos los usuarios de la division
- Si el usuario es
LeaderoGuest. - Debe retornar solo
idyusernamedel usuario
- Si el usuario es
# Other Endpoints
- GET /api/info/ Información general del usuario y la aplicación
- Debe retornar:
idusernamedivision_namepublic_ip: IP publica del servidor