MinSalud.SIIFA.API.Seguridad
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
Version: v1.0.2
BasePath:
All rights reserved
http://apache.org/licenses/LICENSE-2.0.html
Access
- HTTP Bearer Token authentication (JWT)
[ Jump to Models ]
Table of Contents
Autentica un usuario y retorna un JWT si las credenciales son válidas. (apiAuthLoginPost)
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.
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"errors" : [ "errors", "errors" ],
"token" : "token"
}
Example data
Content-Type: text/json
Custom MIME type example not yet supported: text/json
Example data
Content-Type: text/plain
Custom MIME type example not yet supported: text/plain
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: text/json
Custom MIME type example not yet supported: text/json
Example data
Content-Type: text/plain
Custom MIME type example not yet supported: text/plain
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
text/plain
application/json
text/json
Responses
200
Autenticación exitosa, retorna el token JWT.
MinSalud.SIIFA.API.Seguridad.Features.Auth.Commands.Login_Result
400
Credenciales inválidas.
Microsoft.AspNetCore.Mvc.ProblemDetails
Up
get /api/Rol/GetRolList
Obtiene una lista de roles registrados en el sistema (apiRolGetRolListGet)
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"
}
Query parameters
query (optional)
Query Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"totalRegistros" : 1,
"paginaActual" : 0,
"resultado" : [ {
"segundoNombre" : "segundoNombre",
"primerNombre" : "primerNombre",
"primerApellido" : "primerApellido",
"segundoApellido" : "segundoApellido",
"userName" : "userName",
"userId" : "userId",
"tipoDocumento" : "tipoDocumento",
"userRoles" : [ {
"name" : "name",
"id" : "id"
}, {
"name" : "name",
"id" : "id"
} ],
"phoneNumber" : "phoneNumber",
"numeroDocumento" : "numeroDocumento",
"userClaims" : [ {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
}, {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
} ],
"email" : "email",
"activo" : true
}, {
"segundoNombre" : "segundoNombre",
"primerNombre" : "primerNombre",
"primerApellido" : "primerApellido",
"segundoApellido" : "segundoApellido",
"userName" : "userName",
"userId" : "userId",
"tipoDocumento" : "tipoDocumento",
"userRoles" : [ {
"name" : "name",
"id" : "id"
}, {
"name" : "name",
"id" : "id"
} ],
"phoneNumber" : "phoneNumber",
"numeroDocumento" : "numeroDocumento",
"userClaims" : [ {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
}, {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
} ],
"email" : "email",
"activo" : true
} ],
"totalPaginas" : 5,
"registrosPorPagina" : 6
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Lista de roles obtenida exitosamente.
MinSalud.SIIFA.API.Seguridad.Utilities.PaginadorGenerico_1__MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_Result_MinSalud.SIIFA.API.Seguridad_Version_1.0.0.0_Culture_neutral_PublicKeyToken_null__
400
Parámetros de consulta inválidos. Verifique los valores de paginación y ordenamiento.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. El usuario no tiene permisos para consultar usuarios.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al procesar la consulta.
Microsoft.AspNetCore.Mvc.ProblemDetails
Elimina permanentemente un rol del sistema por su identificador único. (apiRolIdDelete)
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
Path parameters
Id (required)
Path Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"success" : true,
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Rol eliminado exitosamente.
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.DeleteRol_Result
400
ID de rol inválido.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. Solo SIIFA_Admin puede eliminar roles.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Rol no encontrado. No existe un rol con el ID especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. El rol no puede ser eliminado porque está asignado a usuarios.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al eliminar el rol.
Microsoft.AspNetCore.Mvc.ProblemDetails
Obtiene la información detallada de un rol específico por su identificador único. (apiRolIdGet)
Este endpoint permite consultar los datos de un rol registrado en el sistema.
Sample request:
GET /api/Rol/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Path parameters
Id (required)
Path Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"name" : "name",
"id" : "id"
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Rol encontrado exitosamente.
MinSalud.SIIFA.API.Seguridad.Features.Rol.Queries.DetailRolById_Result
400
ID de rol inválido.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Rol no encontrado. No existe un rol con el ID especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al obtener el rol.
Microsoft.AspNetCore.Mvc.ProblemDetails
Crea un nuevo rol en el sistema. (apiRolPost)
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"
}
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"id" : "id",
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Rol creado exitosamente. Retorna el Id generado.
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.AddRol_Result
400
Datos inválidos. Verifique que el nombre del rol sea válido.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. Se requiere rol SIIFA_Admin.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. Ya existe un rol con el mismo nombre.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al crear el rol.
Microsoft.AspNetCore.Mvc.ProblemDetails
Actualiza el nombre de un rol existente en el sistema. (apiRolPut)
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"
}
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Rol actualizado exitosamente.
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.UpdateRol_Result
400
Datos inválidos. Verifique los campos requeridos.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. Se requiere rol SIIFA_Admin.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Rol no encontrado. No existe un rol con el Id especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. Ya existe un rol con el mismo nombre.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al actualizar el rol.
Microsoft.AspNetCore.Mvc.ProblemDetails
Up
get /api/User/GetUserList
Obtiene una lista paginada de usuarios registrados en el sistema con control de acceso basado en roles. (apiUserGetUserListGet)
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"
}
Query parameters
UserName (optional)
Query Parameter — default: null
Email (optional)
Query Parameter — default: null
Documento (optional)
Query Parameter — default: null
NitEntidad (optional)
Query Parameter — default: null
NumPagina (optional)
Query Parameter — default: null format: int32
RegistrosPagina (optional)
Query Parameter — default: null format: int32
SortColumn (optional)
Query Parameter — default: null
SortOrden (optional)
Query Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"totalRegistros" : 1,
"paginaActual" : 0,
"resultado" : [ {
"segundoNombre" : "segundoNombre",
"primerNombre" : "primerNombre",
"primerApellido" : "primerApellido",
"segundoApellido" : "segundoApellido",
"userName" : "userName",
"userId" : "userId",
"tipoDocumento" : "tipoDocumento",
"userRoles" : [ {
"name" : "name",
"id" : "id"
}, {
"name" : "name",
"id" : "id"
} ],
"phoneNumber" : "phoneNumber",
"numeroDocumento" : "numeroDocumento",
"userClaims" : [ {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
}, {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
} ],
"email" : "email",
"activo" : true
}, {
"segundoNombre" : "segundoNombre",
"primerNombre" : "primerNombre",
"primerApellido" : "primerApellido",
"segundoApellido" : "segundoApellido",
"userName" : "userName",
"userId" : "userId",
"tipoDocumento" : "tipoDocumento",
"userRoles" : [ {
"name" : "name",
"id" : "id"
}, {
"name" : "name",
"id" : "id"
} ],
"phoneNumber" : "phoneNumber",
"numeroDocumento" : "numeroDocumento",
"userClaims" : [ {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
}, {
"claimType" : "claimType",
"claimValue" : "claimValue",
"id" : 5
} ],
"email" : "email",
"activo" : true
} ],
"totalPaginas" : 5,
"registrosPorPagina" : 6
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Lista paginada de usuarios obtenida exitosamente con roles y claims asociados.
MinSalud.SIIFA.API.Seguridad.Utilities.PaginadorGenerico_1__MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_Result_MinSalud.SIIFA.API.Seguridad_Version_1.0.0.0_Culture_neutral_PublicKeyToken_null__
400
Parámetros de consulta inválidos. Verifique los valores de paginación y ordenamiento.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. El usuario no tiene permisos para consultar usuarios.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al procesar la consulta.
Microsoft.AspNetCore.Mvc.ProblemDetails
Registra un nuevo usuario en el sistema con asignación de roles y claims. (apiUserPost)
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:
-
Validación de unicidad:
- El UserName no debe existir en el sistema
- El Email no debe estar registrado
- El NumeroDocumento debe ser único
-
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
-
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"
}
]
}
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"userId" : "userId",
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Usuario registrado exitosamente. Retorna el ID del nuevo usuario y confirmación.
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.AddUser_Result
400
Datos inválidos. Verifique campos requeridos, formatos y validaciones de unicidad.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. Ya existe un usuario con el mismo UserName, Email o NumeroDocumento.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al crear el usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
Registra un nuevo usuario en el sistema con asignación de roles y claims. (apiUserPublicPost)
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:
-
Validación de unicidad:
- El UserName no debe existir en el sistema
- El Email no debe estar registrado
- El NumeroDocumento debe ser único
-
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
-
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"
}
]
}
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"userId" : "userId",
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Usuario registrado exitosamente. Retorna el ID del nuevo usuario y confirmación.
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.AddUser_Result
400
Datos inválidos. Verifique campos requeridos, formatos y validaciones de unicidad.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. Ya existe un usuario con el mismo UserName, Email o NumeroDocumento.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al crear el usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
Actualiza la información de un usuario existente en el sistema. (apiUserPut)
Este endpoint permite modificar los datos de un usuario previamente registrado con control de acceso basado en roles.
Control de acceso:
-
SIIFA_Admin:
- Puede modificar TODOS los datos de cualquier usuario
- Puede cambiar NitEntidad
- Puede asignar cualquier rol
-
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
-
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:
-
Validación de existencia:
- El UserId debe corresponder a un usuario existente
-
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
-
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"]
}
Consumes
This API call consumes the following media types via the request header:
application/json
text/json
application/*+json
Request body
Return type
Example data
Content-Type: application/json
{
"success" : true,
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Usuario actualizado exitosamente. Retorna confirmación de la actualización.
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.UpdateUser_Result
400
Datos inválidos. Verifique campos requeridos, formatos y validaciones.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Prohibido. No tiene permisos para modificar este usuario o asignar los roles solicitados.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Usuario no encontrado. No existe un usuario con el UserId especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. Error al actualizar roles o claims del usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al actualizar el usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
Up
delete /api/User/{UserId}
Elimina permanentemente un usuario del sistema por su identificador único. (apiUserUserIdDelete)
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:
-
Validación de existencia:
- El usuario debe existir en la base de datos
-
Validación de permisos:
- Solo SIIFA_Admin puede ejecutar esta operación
-
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
Path parameters
UserId (required)
Path Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"success" : true,
"errors" : [ "errors", "errors" ]
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Usuario eliminado exitosamente junto con todos sus datos relacionados.
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.DeleteUser_Result
400
ID de usuario inválido. Debe ser un GUID válido.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
403
Acceso denegado. Solo SIIFA_Admin puede eliminar usuarios.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Usuario no encontrado. No existe un usuario con el ID especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
409
Conflicto. El usuario no puede ser eliminado porque tiene datos relacionados críticos.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al eliminar el usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
Up
get /api/User/{UserId}
Obtiene la información detallada de un usuario específico por su identificador único. (apiUserUserIdGet)
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
Path parameters
UserId (required)
Path Parameter — default: null
Return type
Example data
Content-Type: application/json
{
"segundoNombre" : "segundoNombre",
"primerNombre" : "primerNombre",
"primerApellido" : "primerApellido",
"idUsuario" : "idUsuario",
"segundoApellido" : "segundoApellido",
"tipoDocumento" : "tipoDocumento",
"twoFactorEnabled" : true,
"userRoles" : [ {
"name" : "name"
}, {
"name" : "name"
} ],
"phoneNumber" : "phoneNumber",
"numeroDocumento" : "numeroDocumento",
"userClaims" : [ {
"claimType" : "claimType",
"claimValue" : "claimValue"
}, {
"claimType" : "claimType",
"claimValue" : "claimValue"
} ],
"email" : "email",
"activo" : true
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Example data
Content-Type: application/json
{
"instance" : "instance",
"detail" : "detail",
"type" : "type",
"title" : "title",
"status" : 0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
Usuario encontrado exitosamente con toda su información detallada.
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserById_Result
400
ID de usuario inválido. Debe ser un GUID válido.
Microsoft.AspNetCore.Mvc.ProblemDetails
401
No autorizado. Token de autenticación inválido o no proporcionado.
Microsoft.AspNetCore.Mvc.ProblemDetails
404
Usuario no encontrado. No existe un usuario con el ID especificado.
Microsoft.AspNetCore.Mvc.ProblemDetails
500
Error interno del servidor al obtener el usuario.
Microsoft.AspNetCore.Mvc.ProblemDetails
(getWeatherForecast)
Return type
Example data
Content-Type: application/json
[ {
"date" : {
"month" : 6,
"year" : 0,
"dayOfYear" : 5,
"dayNumber" : 5,
"day" : 1
},
"summary" : "summary",
"temperatureC" : 2,
"temperatureF" : 7
}, {
"date" : {
"month" : 6,
"year" : 0,
"dayOfYear" : 5,
"dayNumber" : 5,
"day" : 1
},
"summary" : "summary",
"temperatureC" : 2,
"temperatureF" : 7
} ]
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
text/plain
application/json
text/json
Responses
200
Success
[ Jump to Methods ]
Table of Contents
Microsoft.AspNetCore.Mvc.ProblemDetails -
MinSalud.SIIFA.API.Seguridad.Features.Auth.Commands.Login_Command -
MinSalud.SIIFA.API.Seguridad.Features.Auth.Commands.Login_Result -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.AddRol_Command -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.AddRol_Result -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.DeleteRol_Result -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.UpdateRol_Command -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Commands.UpdateRol_Result -
MinSalud.SIIFA.API.Seguridad.Features.Rol.Queries.DetailRolById_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.AddUserPublic_Command -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.AddUser_Command -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.AddUser_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.DeleteUser_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.UpdateUser_Command -
MinSalud.SIIFA.API.Seguridad.Features.User.Commands.UpdateUser_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserById_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserById_UserClaims -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserById_UserRoles -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_Result -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_ResultClaims -
MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_ResultRoles -
MinSalud.SIIFA.API.Seguridad.Utilities.PaginadorGenerico_1__MinSalud.SIIFA.API.Seguridad.Features.User.Queries.GetUserList_Result_MinSalud.SIIFA.API.Seguridad_Version_1.0.0.0_Culture_neutral_PublicKeyToken_null__ - PaginadorGenerico_Result
MinSalud.SIIFA.API.Seguridad.WeatherForecast -
System.DateOnly -
System.DayOfWeek -
type (optional)
title (optional)
status (optional)
detail (optional)
instance (optional)
userName (optional)
password (optional)
success (optional)
token (optional)
errors (optional)
id (optional)
success (optional)
errors (optional)
success (optional)
errors (optional)
id (optional)
name (optional)
success (optional)
errors (optional)
id (optional)
name (optional)
primerNombre (optional)
segundoNombre (optional)
primerApellido (optional)
segundoApellido (optional)
tipoDocumento (optional)
numeroDocumento (optional)
email (optional)
nitEntidad (optional)
rolesSolicitados (optional)
primerNombre (optional)
segundoNombre (optional)
primerApellido (optional)
segundoApellido (optional)
tipoDocumento (optional)
numeroDocumento (optional)
email (optional)
nitEntidad (optional)
rolesSolicitados (optional)
userId (optional)
success (optional)
errors (optional)
success (optional)
errors (optional)
userId (optional)
primerNombre (optional)
segundoNombre (optional)
primerApellido (optional)
segundoApellido (optional)
tipoDocumento (optional)
numeroDocumento (optional)
email (optional)
phoneNumber (optional)
nitEntidad (optional)
activo (optional)
rolesSolicitados (optional)
success (optional)
errors (optional)
idUsuario (optional)
primerNombre (optional)
segundoNombre (optional)
primerApellido (optional)
segundoApellido (optional)
tipoDocumento (optional)
numeroDocumento (optional)
email (optional)
phoneNumber (optional)
twoFactorEnabled (optional)
activo (optional)
userRoles (optional)
userClaims (optional)
claimType (optional)
claimValue (optional)
userId (optional)
userName (optional)
primerNombre (optional)
segundoNombre (optional)
primerApellido (optional)
segundoApellido (optional)
tipoDocumento (optional)
numeroDocumento (optional)
email (optional)
phoneNumber (optional)
activo (optional)
userRoles (optional)
userClaims (optional)
id (optional)
claimType (optional)
claimValue (optional)
id (optional)
name (optional)
paginaActual (optional)
registrosPorPagina (optional)
Integer Número de registros de la página devuelta. format: int32
totalRegistros (optional)
Integer Total de registros de consulta. format: int32
totalPaginas (optional)
Integer Total de páginas de la consulta. format: int32
resultado (optional)
date (optional)
temperatureC (optional)
temperatureF (optional)
summary (optional)
year (optional)
month (optional)
day (optional)
dayOfWeek (optional)
dayOfYear (optional)
dayNumber (optional)