MinSalud.SIIFA.API.Seguridad (v1.0.2)

Download OpenAPI specification:Download

Auth

Autentica un usuario y retorna un JWT si las credenciales son válidas.

Este endpoint permite a los usuarios autenticarse proporcionando su nombre de usuario y contraseña. Si las credenciales son correctas, se genera y retorna un token JWT que puede ser utilizado para acceder a recursos protegidos.

Authorizations:
Bearer
Request Body schema:

Credenciales de usuario (nombre de usuario y contraseña).

userName
string or null
password
string or null

Responses

Request samples

Content type
{
  • "userName": "string",
  • "password": "string"
}

Response samples

Content type
No sample

Rol

Obtiene una lista de roles registrados en el sistema

Este endpoint permite consultar todos los roles del sistema

Control de acceso por roles:

  • SIIFA_Admin: Puede ver todos los roles del sistema sin restricciones

Sample request:

POST /api/Rol/GetRolList
{
  "id": "4687cc90-5789-40cd-9a18-d8fa83ec60e9",
  "name": "SIIFA_IPS"
}
Authorizations:
Bearer
query Parameters
object (MinSalud.SIIFA.API.Seguridad.Features.Rol.Queries.ListRol_Query)

Responses

Response samples

Content type
application/json
{
  • "paginaActual": 0,
  • "registrosPorPagina": 0,
  • "totalRegistros": 0,
  • "totalPaginas": 0,
  • "resultado": [
    ]
}

Obtiene la información detallada de un rol específico por su identificador único.

Este endpoint permite consultar los datos de un rol registrado en el sistema.

Sample request:

GET /api/Rol/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Authorizations:
Bearer
path Parameters
Id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string"
}

Elimina permanentemente un rol del sistema por su identificador único.

Este endpoint permite eliminar un rol del sistema de forma permanente. Esta operación es irreversible.

Restricciones importantes:

  • Solo usuarios con rol SIIFA_Admin pueden eliminar roles
  • El rol debe existir en la base de datos
  • No se pueden eliminar roles que estén asignados a usuarios

Sample request:

DELETE /api/Rol/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Authorizations:
Bearer
path Parameters
Id
required
string

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "errors": [
    ]
}

Crea un nuevo rol en el sistema.

Este endpoint permite registrar un nuevo rol en el sistema.

Datos requeridos:

  • Name: Nombre único del rol a crear (ej: SIIFA_IPS, SIIFA_ERP, etc.)

Validaciones automáticas:

  • El nombre del rol no debe existir previamente en el sistema
  • El nombre no puede estar vacío

Sample request:

POST /api/Rol
{
  "name": "SIIFA_IPS"
}
Authorizations:
Bearer
Request Body schema:

Objeto con el nombre del rol a crear.

name
string or null

Responses

Request samples

Content type
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "success": true,
  • "errors": [
    ]
}

Actualiza el nombre de un rol existente en el sistema.

Este endpoint permite modificar el nombre de un rol previamente registrado.

Datos requeridos:

  • Id: Identificador único del rol a actualizar
  • Name: Nuevo nombre del rol (debe ser único en el sistema)

Validaciones automáticas:

  • El Id debe corresponder a un rol existente
  • El nuevo nombre no debe estar en uso por otro rol
  • No se pueden eliminar roles que estén asignados a usuarios

Sample request:

PUT /api/Rol
{
  "rolId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "SIIFA_IPS_Nuevo"
}
Authorizations:
Bearer
Request Body schema:

Objeto con el Id y el nuevo nombre del rol.

id
string or null
name
string or null

Responses

Request samples

Content type
{
  • "id": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "errors": [
    ]
}

User

Obtiene una lista paginada de usuarios registrados en el sistema con control de acceso basado en roles.

Este endpoint permite consultar usuarios aplicando filtrado automático según el rol del usuario autenticado:

Control de acceso por roles:

  • SIIFA_Admin: Puede ver todos los usuarios del sistema sin restricciones
  • SIIFA_IPS, SIIFA_ERP, SIIFA_FITS (y sus variantes _Gestor, _Consulta): Solo pueden ver usuarios de su misma entidad (mismo NitEntidad en claims)

Filtros disponibles:

  • UserName: Búsqueda parcial por nombre de usuario
  • Email: Búsqueda parcial por correo electrónico
  • Documento: Búsqueda parcial por número de documento
  • NumPagina: Número de página para paginación (default: 1)
  • RegistrosPagina: Cantidad de registros por página (default: 10)
  • SortColumn: Columna para ordenamiento (username, email, primernombre, primerapellido, numerodocumento)
  • SortOrden: Orden ascendente (asc) o descendente (desc)

Información devuelta por cada usuario:

  • Datos personales (nombres, apellidos, documento, email, teléfono)
  • Lista de roles asignados (UserRoles con Id y Name)
  • Lista de claims del usuario (UserClaims con Id, ClaimType y ClaimValue)

Metadatos de paginación:

  • Total de registros encontrados
  • Total de páginas disponibles
  • Página actual
  • Registros por página

Sample request:

POST /api/User/GetUserList
{
  "userName": "juan",
  "email": "",
  "documento": "",
  "numPagina": 1,
  "registrosPagina": 10,
  "sortColumn": "username",
  "sortOrden": "asc"
}
Authorizations:
Bearer
query Parameters
UserName
string
Email
string
Documento
string
NitEntidad
string
NumPagina
integer <int32>
RegistrosPagina
integer <int32>
SortColumn
string
SortOrden
string

Responses

Response samples

Content type
application/json
{
  • "paginaActual": 0,
  • "registrosPorPagina": 0,
  • "totalRegistros": 0,
  • "totalPaginas": 0,
  • "resultado": [
    ]
}

Obtiene la información detallada de un usuario específico por su identificador único.

Este endpoint permite consultar los datos completos de un usuario, incluyendo:

Información personal:

  • Nombres y apellidos completos
  • Tipo y número de documento de identidad
  • Correo electrónico y número de teléfono
  • Nombre de usuario (UserName)

Información de seguridad:

  • Roles asignados al usuario
  • Claims personalizados (NitEntidad, permisos especiales, etc.)
  • Estado de activación de la cuenta
  • Información de último inicio de sesión

Validaciones:

  • El UserId debe ser un GUID válido
  • El usuario debe existir en la base de datos

Sample request:

GET /api/User/550e8400-e29b-41d4-a716-446655440000
Authorizations:
Bearer
path Parameters
UserId
required
string

Responses

Response samples

Content type
application/json
{
  • "idUsuario": "string",
  • "primerNombre": "string",
  • "segundoNombre": "string",
  • "primerApellido": "string",
  • "segundoApellido": "string",
  • "tipoDocumento": "string",
  • "numeroDocumento": "string",
  • "email": "string",
  • "phoneNumber": "string",
  • "twoFactorEnabled": true,
  • "activo": true,
  • "userRoles": [
    ],
  • "userClaims": [
    ]
}

Elimina permanentemente un usuario del sistema por su identificador único.

Este endpoint permite eliminar un usuario del sistema de forma permanente. Esta operación es irreversible y debe usarse con precaución.

Restricciones importantes:

  • Solo usuarios con rol SIIFA_Admin pueden eliminar usuarios
  • El usuario debe existir en la base de datos
  • No se pueden eliminar usuarios que tienen datos relacionados críticos (considere desactivar en lugar de eliminar)
  • El UserId debe ser un GUID válido

Validaciones automáticas:

  1. Validación de existencia:

    • El usuario debe existir en la base de datos
  2. Validación de permisos:

    • Solo SIIFA_Admin puede ejecutar esta operación
  3. Validación de integridad:

    • Verifica si el usuario tiene datos relacionados que impedirían la eliminación

Eliminaciones en cascada:

Al eliminar un usuario, se eliminarán automáticamente:

  • AspNetUserRoles: Todos los roles asignados al usuario
  • AspNetUserClaims: Todos los claims personalizados del usuario
  • AspNetUserLogins: Información de logins externos (si aplica)
  • AspNetUserTokens: Tokens de sesión y recuperación

Nota importante: Esta operación elimina el usuario y TODOS sus datos relacionados de forma permanente. No es posible recuperar la información después de la eliminación. Para deshabilitar temporalmente un usuario, considere usar el endpoint de actualización cambiando el campo Activo a false.

Sample request:

DELETE /api/User/550e8400-e29b-41d4-a716-446655440000
Authorizations:
Bearer
path Parameters
UserId
required
string

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "errors": [
    ]
}

Registra un nuevo usuario en el sistema con asignación de roles y claims.

Este endpoint permite crear un nuevo usuario en el sistema con validaciones automáticas de integridad.

Datos requeridos:

  • UserName: Nombre de usuario único (debe ser único en el sistema)
  • Email: Correo electrónico válido (debe ser único)
  • Password: Contraseña que cumple requisitos de seguridad
  • PrimerNombre: Primer nombre del usuario
  • PrimerApellido: Primer apellido del usuario
  • TipoDocumento: Tipo de documento de identidad (CC, CE, TI, etc.)
  • NumeroDocumento: Número de documento único

Datos opcionales:

  • SegundoNombre: Segundo nombre del usuario
  • SegundoApellido: Segundo apellido del usuario
  • PhoneNumber: Número de teléfono de contacto
  • Roles: Lista de roles a asignar (SIIFA_Admin, SIIFA_IPS, SIIFA_ERP, SIIFA_FITS, etc.)
  • Claims: Lista de claims personalizados (ej: NitEntidad para asociar a una entidad)

Validaciones automáticas aplicadas:

  1. Validación de unicidad:

    • El UserName no debe existir en el sistema
    • El Email no debe estar registrado
    • El NumeroDocumento debe ser único
  2. Validación de formato:

    • Email debe tener formato válido
    • Password debe cumplir política de seguridad
    • Campos de texto no deben exceder longitudes máximas
  3. Validación de roles:

    • Los roles especificados deben existir en el sistema
    • Solo SIIFA_Admin puede asignar ciertos roles

Sample request:

POST /api/User
{
  "userName": "juan.perez",
  "email": "juan.perez@example.com",
  "password": "P@ssw0rd123!",
  "primerNombre": "Juan",
  "segundoNombre": "Carlos",
  "primerApellido": "Pérez",
  "segundoApellido": "Gómez",
  "tipoDocumento": "CC",
  "numeroDocumento": "1234567890",
  "phoneNumber": "+57 300 1234567",
  "roles": ["SIIFA_IPS"],
  "claims": [
    {
      "claimType": "NitEntidad",
      "claimValue": "900123456"
    }
  ]
}
Authorizations:
Bearer
Request Body schema:

Objeto con los datos del usuario a registrar.

primerNombre
string or null
segundoNombre
string or null
primerApellido
string or null
segundoApellido
string or null
tipoDocumento
string or null
numeroDocumento
string or null
email
string or null
nitEntidad
string or null
rolesSolicitados
Array of strings or null

Responses

Request samples

Content type
{
  • "primerNombre": "string",
  • "segundoNombre": "string",
  • "primerApellido": "string",
  • "segundoApellido": "string",
  • "tipoDocumento": "string",
  • "numeroDocumento": "string",
  • "email": "string",
  • "nitEntidad": "string",
  • "rolesSolicitados": [
    ]
}

Response samples

Content type
application/json
{
  • "userId": "string",
  • "success": true,
  • "errors": [
    ]
}

Actualiza la información de un usuario existente en el sistema.

Este endpoint permite modificar los datos de un usuario previamente registrado con control de acceso basado en roles.

Control de acceso:

  1. SIIFA_Admin:

    • Puede modificar TODOS los datos de cualquier usuario
    • Puede cambiar NitEntidad
    • Puede asignar cualquier rol
  2. SIIFA_ERP, SIIFA_IPS, SIIFA_FITS (y variantes _Gestor):

    • Solo pueden modificar usuarios de su misma entidad (mismo NitEntidad)
    • Pueden modificar: nombres, apellidos, tipo documento, número documento, email
    • Pueden asignar roles solo dentro de su ámbito:
      • SIIFA_IPS: puede asignar SIIFA_IPS, SIIFA_IPS_Gestor, SIIFA_IPS_Consulta
      • SIIFA_ERP: puede asignar SIIFA_ERP, SIIFA_ERP_Gestor, SIIFA_ERP_Consulta
      • SIIFA_FITS: puede asignar SIIFA_FITS, SIIFA_FITS_Gestor, SIIFA_FITS_Consulta
    • NO pueden modificar NitEntidad
  3. Otros roles:

    • No tienen permisos para modificar usuarios (devolverá 403)

Datos requeridos:

  • UserId: Identificador único (GUID) del usuario a actualizar
  • PrimerNombre: Primer nombre del usuario
  • PrimerApellido: Primer apellido del usuario
  • TipoDocumento: Tipo de documento (CC, CE, TI, etc.)
  • NumeroDocumento: Número de documento de identidad
  • Email: Correo electrónico (debe ser válido)

Campos opcionales:

  • SegundoNombre: Segundo nombre del usuario
  • SegundoApellido: Segundo apellido del usuario
  • NitEntidad: NIT de la entidad (solo Admin puede modificar)
  • RolesSolicitados: Lista de roles a asignar (según permisos del usuario que ejecuta)

Restricciones:

  • El UserName se sincroniza automáticamente con el Email
  • No se puede cambiar la contraseña mediante este endpoint
  • Los roles operativos solo pueden modificar usuarios de su misma entidad
  • Los roles operativos solo pueden asignar roles de su propio ámbito
  • El usuario a modificar debe existir en la base de datos

Validaciones automáticas:

  1. Validación de existencia:

    • El UserId debe corresponder a un usuario existente
  2. Validación de permisos:

    • Verifica que el usuario tenga rol Admin o roles operativos
    • Para roles operativos, valida que el NitEntidad coincida
    • Valida que los roles a asignar estén dentro del ámbito permitido
  3. Validación de formato:

    • Email debe tener formato válido
    • Todos los campos requeridos deben estar presentes

Sample request (Admin - puede modificar todo):

PUT /api/User
{
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "primerNombre": "Juan",
  "segundoNombre": "Carlos",
  "primerApellido": "Pérez",
  "segundoApellido": "Gómez",
  "tipoDocumento": "CC",
  "numeroDocumento": "1234567890",
  "email": "juan.perez@example.com",
  "nitEntidad": "900123456",
  "rolesSolicitados": ["SIIFA_IPS", "SIIFA_IPS_Gestor"]
}

Sample request (SIIFA_IPS - modificación limitada):

PUT /api/User
{
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "primerNombre": "María",
  "primerApellido": "López",
  "tipoDocumento": "CC",
  "numeroDocumento": "9876543210",
  "email": "maria.lopez@ips.com",
  "rolesSolicitados": ["SIIFA_IPS_Consulta"]
}
Authorizations:
Bearer
Request Body schema:

Objeto con los datos actualizados del usuario. Debe incluir el UserId y todos los campos requeridos.

userId
string or null
primerNombre
string or null
segundoNombre
string or null
primerApellido
string or null
segundoApellido
string or null
tipoDocumento
string or null
numeroDocumento
string or null
email
string or null
phoneNumber
string or null
nitEntidad
string or null
activo
boolean
rolesSolicitados
Array of strings or null

Responses

Request samples

Content type
{
  • "userId": "string",
  • "primerNombre": "string",
  • "segundoNombre": "string",
  • "primerApellido": "string",
  • "segundoApellido": "string",
  • "tipoDocumento": "string",
  • "numeroDocumento": "string",
  • "email": "string",
  • "phoneNumber": "string",
  • "nitEntidad": "string",
  • "activo": true,
  • "rolesSolicitados": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "errors": [
    ]
}

Registra un nuevo usuario en el sistema con asignación de roles y claims.

Este endpoint permite crear un nuevo usuario en el sistema con validaciones automáticas de integridad. No es necesaria autenticación ni autorización para su consumo.

Datos requeridos:

  • UserName: Nombre de usuario único (debe ser único en el sistema)
  • Email: Correo electrónico válido (debe ser único)
  • Password: Contraseña que cumple requisitos de seguridad
  • PrimerNombre: Primer nombre del usuario
  • PrimerApellido: Primer apellido del usuario
  • TipoDocumento: Tipo de documento de identidad (CC, CE, TI, etc.)
  • NumeroDocumento: Número de documento único

Datos opcionales:

  • SegundoNombre: Segundo nombre del usuario
  • SegundoApellido: Segundo apellido del usuario
  • PhoneNumber: Número de teléfono de contacto
  • Roles: Lista de roles a asignar (SIIFA_Admin, SIIFA_IPS, SIIFA_ERP, SIIFA_FITS, etc.)
  • Claims: Lista de claims personalizados (ej: NitEntidad para asociar a una entidad)

Validaciones automáticas aplicadas:

  1. Validación de unicidad:

    • El UserName no debe existir en el sistema
    • El Email no debe estar registrado
    • El NumeroDocumento debe ser único
  2. Validación de formato:

    • Email debe tener formato válido
    • Password debe cumplir política de seguridad
    • Campos de texto no deben exceder longitudes máximas
  3. Validación de roles:

    • Los roles especificados deben existir en el sistema
    • Solo SIIFA_Admin puede asignar ciertos roles

Sample request:

POST /api/User
{
  "userName": "juan.perez",
  "email": "juan.perez@example.com",
  "password": "P@ssw0rd123!",
  "primerNombre": "Juan",
  "segundoNombre": "Carlos",
  "primerApellido": "Pérez",
  "segundoApellido": "Gómez",
  "tipoDocumento": "CC",
  "numeroDocumento": "1234567890",
  "phoneNumber": "+57 300 1234567",
  "roles": ["SIIFA_IPS"],
  "claims": [
    {
      "claimType": "NitEntidad",
      "claimValue": "900123456"
    }
  ]
}
Authorizations:
Bearer
Request Body schema:

Objeto con los datos del usuario a registrar.

primerNombre
string or null
segundoNombre
string or null
primerApellido
string or null
segundoApellido
string or null
tipoDocumento
string or null
numeroDocumento
string or null
email
string or null
nitEntidad
string or null
rolesSolicitados
Array of strings or null

Responses

Request samples

Content type
{
  • "primerNombre": "string",
  • "segundoNombre": "string",
  • "primerApellido": "string",
  • "segundoApellido": "string",
  • "tipoDocumento": "string",
  • "numeroDocumento": "string",
  • "email": "string",
  • "nitEntidad": "string",
  • "rolesSolicitados": [
    ]
}

Response samples

Content type
application/json
{
  • "userId": "string",
  • "success": true,
  • "errors": [
    ]
}

WeatherForecast

GetWeatherForecast

Authorizations:
Bearer

Responses

Response samples

Content type
No sample