Saltearse al contenido

Dominios

Los dominios son una forma de organizar y gestionar los datos y la lógica de negocio de su aplicación. Representan áreas específicas de funcionalidad y ayudan a separar responsabilidades, lo que hace que las asignaciones a las entidades sean más sencillas.

Los dominios pueden encapsular datos y comportamientos relacionados, lo que facilita la gestión de la complejidad y la aplicación de reglas de negocio. Por ejemplo, se podría acceder a múltiples entidades a través de un único dominio, al que solo pueden acceder usuarios con ciertos permisos.

Interacción con otros componentes de la aplicación

Sección titulada «Interacción con otros componentes de la aplicación»

Los dominios interactúan con varios componentes de la aplicación, entre ellos:

Los dominios pueden ayudar a filtrar y segmentar datos en función de criterios específicos, lo que facilita la gestión, el análisis y el trabajo con los servicios de datos. Al consultar datos, los dominios se pueden utilizar para especificar qué entidades y relaciones se deben incluir en los resultados, lo que garantiza que solo se devuelva información relevante.

Los dominios también se pueden utilizar para aplicar el control de acceso basado en roles y usuarios, lo que garantiza que solo los usuarios autorizados puedan acceder a datos y funcionalidades específicas. Por ejemplo, un usuario con un rol específico solo puede acceder a los datos dentro de un determinado dominio, mientras que otro usuario con un rol diferente puede tener acceso a múltiples dominios. Además, un usuario asignado a un dominio específico solo puede ver e interactuar con las entidades y relaciones dentro de ese dominio, si pertenece a sus permisos.

Visibilidad del menú dentro de los dominios

Sección titulada «Visibilidad del menú dentro de los dominios»

Algunos elementos del menú y acciones pueden estar restringidos en función de las asignaciones de dominio y los permisos del usuario. Es posible que solo se pueda acceder a algunos menús de categoría y elementos de menú si el usuario tiene acceso al dominio correspondiente, asignado por otro usuario con los permisos adecuados.

A continuación se muestran los endpoints disponibles para la gestión de dominios:

Recupera todos los dominios.

Endpoint:

GET /api/v1/domains

Parámetros:

NombreTipoDeDescripción
activebooleanoqueryFiltrar por estado activo (verdadero, falso, vacío)
namecadenaqueryFiltrar por nombre de dominio (coincidencia parcial)

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": 0,
"name": "Any domain",
"description": "Any description",
"subDomains": [
"string"
],
"parentId": 0,
"createdAt": "1970-01-01T00:00:00Z",
"updatedAt": "1970-01-01T00:00:00Z",
"active": true
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Recupera datos de un dominio específico por su ID.

Endpoint:

GET /api/v1/domains/:domainId

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": {
"id": 0,
"name": "Any domain",
"description": "Any description",
"subDomains": [
"string"
],
"parentId": 0,
"createdAt": "1970-01-01T00:00:00Z",
"updatedAt": "1970-01-01T00:00:00Z",
"active": true
},
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Agrega un nuevo dominio.

Endpoint:

PUT /api/v1/domains

Cuerpo de la solicitud:

{
"domain": {
"name": "Cualquier dominio",
"description": "Cualquier descripción",
"parentId": 0,
"active": true
}
}

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": {
"id": 0,
"name": "Any domain",
"description": "Any description",
"subDomains": [
"string"
],
"parentId": 0,
"createdAt": "1970-01-01T00:00:00Z",
"updatedAt": "1970-01-01T00:00:00Z",
"active": true
},
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Actualiza los campos de un dominio existente.

Endpoint:

PATCH /api/v1/domains/:domainId

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio

Cuerpo de la solicitud:

{
"name": "Cualquier dominio",
"description": "Cualquier descripción",
"parentId": 0,
"active": true
}

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": {
"id": 0,
"name": "Any domain",
"description": "Any description",
"subDomains": [
"string"
],
"parentId": 0,
"createdAt": "1970-01-01T00:00:00Z",
"updatedAt": "1970-01-01T00:00:00Z",
"active": true
},
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Actualiza el estado de activación de un dominio.

Endpoint:

PUT /api/v1/domains/:domainId/activation

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio

Cuerpo de la solicitud:

{
"active": false
}

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": {
"id": 0,
"name": "Any domain",
"description": "Any description",
"subDomains": [
"string"
],
"parentId": 0,
"createdAt": "1970-01-01T00:00:00Z",
"updatedAt": "1970-01-01T00:00:00Z",
"active": false
},
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Recupera los usuarios asociados a un dominio.

Endpoint:

GET /api/v1/domains/:domainId/users

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": 1,
"username": "username",
"lastName": "last_name",
"firstName": "first_name",
"email": "email@datascend.net"
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Agrega un usuario a un dominio.

Endpoint:

POST /api/v1/domains/:domainId/users/:userId

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio
userIdnúmeropathEl ID del usuario

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": "1",
"email": "email@datascend.net",
"username": "username",
"createdAt": "2022-01-05T16:27:16.560Z",
"updatedAt": "2022-01-05T16:27:16.560Z",
"deletedAt": "2022-01-05T16:27:16.560Z",
"active": true,
"firstName": "first_name",
"lastName": "last_name",
"assistant": "",
"assistantPhone": "",
"description": "description",
"salutation": "salutation",
"title": "title",
"doNotCall": false,
"department": 1,
"addresses": [
{
"id": 18,
"street": "street",
"city": "city",
"state": "state",
"postalcode": "postal_code",
"country": "country",
"userId": 25
}
],
"phones": [
{
"id": 1,
"phoneTypeId": "2",
"phoneNumber": "1234",
"active": true,
"typeDescription": "description",
"userId": 1
}
],
"createdBy": "0",
"modifiedUserId": "0",
"photo": "undefined"
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Elimina un usuario de un dominio.

Endpoint:

DELETE /api/v1/domains/:domainId/users/:userId

Parámetros:

NombreTipoDeDescripción
domainIdnúmeropathEl ID del dominio
userIdnúmeropathEl ID del usuario

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": "1",
"email": "email@datascend.net",
"username": "username",
"createdAt": "2022-01-05T16:27:16.560Z",
"updatedAt": "2022-01-05T16:27:16.560Z",
"deletedAt": "2022-01-05T16:27:16.560Z",
"active": true,
"firstName": "first_name",
"lastName": "last_name",
"assistant": "",
"assistantPhone": "",
"description": "description",
"salutation": "salutation",
"title": "title",
"doNotCall": false,
"department": 1,
"addresses": [
{
"id": 18,
"street": "street",
"city": "city",
"state": "state",
"postalcode": "postal_code",
"country": "country",
"userId": 25
}
],
"phones": [
{
"id": 1,
"phoneTypeId": "2",
"phoneNumber": "1234",
"active": true,
"typeDescription": "description",
"userId": 1
}
],
"createdBy": "0",
"modifiedUserId": "0",
"photo": "undefined"
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Gestión de entidades dentro de los dominios

Sección titulada «Gestión de entidades dentro de los dominios»

Mover un registro de entidad a un nuevo dominio

Sección titulada «Mover un registro de entidad a un nuevo dominio»

Mueve un registro de entidad de su dominio actual a otro.

Endpoint:

PUT /api/v1/entities/:entity/:id/domain?version=:version

Parámetros:

NombreTipoDeDescripción
versioncadenaqueryLa versión de la aplicación.
entitycadenapathEl nombre de la entidad.
idnúmeropathEl ID de la entidad.

Cuerpo de la solicitud:

{
"newDomain": 1
}

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": {
"id": 0,
"domain": 1,
"createdBy": "string",
"updatedBy": "string",
"dateUpdated": "string",
"dateCreated": "string",
"securityGroup": "string",
"data": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Recupera los dominios asociados a un rol específico.

Endpoint:

GET /api/v1/roles/:roleId/domains?page=1&limit=10

Parámetros:

NombreTipoDeDescripción
roleIdcadenapathEl ID del rol.
pagenúmeroqueryPara paginación.
limitnúmeroqueryEl número de resultados por página.

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": 0,
"parentId": 0,
"totalCount": "1",
"name": "Any domain",
"description": "Any description"
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Agrega un dominio específico a un rol.

Endpoint:

PUT /api/v1/roles/:roleId/domains/:domainId

Parámetros:

NombreTipoDeDescripción
roleIdcadenapathEl ID del rol.
domainIdcadenapathEl ID del dominio que se va a agregar.

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
{
"id": 0,
"parentId": 0,
"totalCount": "1",
"name": "Any domain",
"description": "Any description"
}
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Elimina un dominio específico de un rol.

Endpoint:

DELETE /api/v1/roles/:roleId/domains/:domainId

Parámetros:

NombreTipoDeDescripción
roleIdcadenapathEl ID del rol.
domainIdcadenapathEl ID del dominio que se va a eliminar.

Respuesta de ejemplo:

{
"status": 200,
"error": false,
"message": "string",
"data": [
{}
]
}

Recupera una lista de dominios asociados a un usuario específico.

Endpoint:

GET /api/v1/users-data/:userId/domains

Parámetros:

NombreTipoDeDescripción
userIdcadenapathEl ID del usuario.

Respuesta de ejemplo:

{
"error": false,
"status": 200,
"message": "string",
"errors": [
{}
],
"data": [
1
],
"pagination": {
"hasPreviousPage": true,
"hasNextPage": true,
"previousPage": 0,
"nextPage": 0,
"recordsTotal": 0,
"currentPage": 0,
"startIndex": 0,
"numPages": 0,
"limit": 0
}
}

Alterna un dominio para un usuario específico, lo que normalmente significa agregarlo si no existe o eliminarlo si existe.

Endpoint:

PATCH /api/v1/users-data/:userId/domains/:domain

Parámetros:

NombreTipoDeDescripción
userIdcadenapathEl ID del usuario.
domaincadenapathEl dominio que se va a alternar.

Respuesta de ejemplo:

{
"id": "2",
"userId": "1",
"domainId": "1"
}