Saltar al contenido principal

Dominio de Cumplimiento

Endpoints RESTful para gestionar catálogos, controles, cálculos y puntos en la jerarquía de cumplimiento.

Descripción General​

Las APIs del Dominio de Cumplimiento proporcionan endpoints integrales para gestionar todos los aspectos de la jerarquía de cumplimiento, desde catálogos hasta puntos de garantía. Estas APIs están organizadas en cuatro dominios principales: Catálogos, Controles, Cálculos y Puntos.

Catálogos​

Resumen de Endpoints​

MétodoEndpointDescripción
POST/catalogs/draftsCrea un nuevo catálogo en borrador
PATCH/catalogs/:id/finalizeFinaliza un catálogo en borrador
GET/catalogsRecupera todos los catálogos de cumplimiento
GET/catalogs/:idRecupera un catálogo específico por ID
POST/catalogsCrea un nuevo catálogo de cumplimiento
PATCH/catalogs/:idActualiza un catálogo existente
DELETE/catalogs/:idElimina un catálogo
GET/catalogs/:catalogId/controlsRecupera todos los controles de un catálogo específico
POST/catalogs/:tpaId/pointsCalcula puntos de garantía para un cálculo

Operaciones en Borrador​

Crear Catálogo en Borrador​

POST /catalogs/drafts

Crea un nuevo catálogo en borrador. Los catálogos en borrador se pueden modificar libremente antes de finalizar.

Cuerpo de la Solicitud:

{
"name": "Nuevo Catálogo en Borrador",
"description": "Descripción del catálogo"
}

Respuesta (201 Creado):

{
"id": "catalog-id",
"name": "Nuevo Catálogo en Borrador",
"description": "Descripción del catálogo",
"status": "draft",
"createdAt": "2024-01-01T00:00:00Z"
}

PATCH /catalogs/:id/finalize

Finaliza un catálogo en borrador. Una vez finalizado, el catálogo tiene modificaciones restringidas.

Respuesta (200 OK):

{
"id": "catalog-id",
"name": "Catálogo Finalizado",
"status": "finalized",
"createdAt": "2024-01-01T00:00:00Z"
}

Operaciones Estándar​

Listar Catálogos​

GET /catalogs

GET /catalogs/:id

Recupera un catálogo específico por ID.

Respuesta (200 OK):

{
"id": "catalog-id",
"name": "Nombre del Catálogo",
"description": "Descripción del catálogo",
"status": "finalized",
"createdAt": "2024-01-01T00:00:00Z"
}

POST /catalogs

Crea un nuevo catálogo de cumplimiento.

Cuerpo de la Solicitud:

{
"name": "Nuevo Catálogo",
"description": "Descripción del catálogo"
}

Respuesta (201 Creado)

PATCH /catalogs/:id

Actualiza un catálogo existente.

Cuerpo de la Solicitud:

{
"name": "Nombre de Catálogo Actualizado",
"description": "Descripción actualizada"
}

Respuesta (200 OK)

DELETE /catalogs/:id

Elimina un catálogo.

Respuesta (200 OK)

Controles​

GET /catalogs/:catalogId/controls

Recupera todos los controles de un catálogo específico.

Parámetros de Consulta:

  • status (opcional): Filtrar controles por estado (finalized o draft). Si se omite, devuelve todos los controles.

Respuesta (200 OK):

[
{
"id": 1,
"name": "Nombre del Control",
"description": "Descripción del control",
"catalogId": "catalog-id",
"status": "finalized",
"type": "automated"
}
]

Cálculo de Puntos​

Calcular Puntos​

POST /catalogs/:tpaId/points

Calcula y recupera puntos de garantía para un cálculo mediante el ID de Acuerdo de Bluejay (tpaId). Este endpoint se integra con el Servicio de Registro externo para obtener estados de garantía.

Parámetros de Consulta:

  • from (opcional): Fecha de inicio para el cálculo de puntos (formato ISO 8601)
  • to (opcional): Fecha de fin para el cálculo de puntos (formato ISO 8601)
  • environment (opcional): Nombre del entorno (predeterminado: production)

Cuerpo de la Solicitud:

{
"controlIds": ["control-id-1", "control-id-2"]
}

O:

{
"controlIds": "control-id-1,control-id-2"
}

Respuesta (200 OK):

{
"storedPoints": [
{
"id": "point-id",
"computationId": "computation-id",
"value": 95.5,
"timestamp": "2024-01-01T00:00:00Z",
"agreementId": "tpa-xxx"
}
],
"updatedCount": 2
}

Controles​

Resumen de Endpoints​

MétodoEndpointDescripción
POST/controls/draftsCrea un nuevo control en borrador
PATCH/controls/:id/finalizeFinaliza un control en borrador
GET/controlsRecupera todos los controles
GET/controls/pendingRecupera todos los controles pendientes
GET/controls/:idRecupera un control específico por ID
POST/controlsCrea un nuevo control
PATCH/controls/:idActualiza un control existente
DELETE/controls/:idElimina un control
GET/controls/:id/panelsRecupera todos los paneles asociados a un control
POST/controls/:id/panel/:panelIdAgrega un panel a un control
DELETE/controls/:id/panels/:panelIdElimina un panel de un control

Operaciones en Borrador​

Crear Control en Borrador​

POST /controls/drafts

Crea un nuevo control en borrador. Los controles en borrador se pueden modificar libremente antes de finalizar.

Cuerpo de la Solicitud:

{
"name": "Control en Borrador",
"description": "Descripción del control",
"catalogId": "catalog-id",
"type": "automated",
"criteria": {}
}

Respuesta (201 Creado)

Finalizar Control​

PATCH /controls/:id/finalize

Finaliza un control en borrador. Una vez finalizado, el control tiene modificaciones restringidas.

Respuesta (200 OK)

Operaciones Estándar​

Listar Controles​

GET /controls

Recupera todos los controles.

Parámetros de Consulta:

  • status (opcional): Filtrar controles por estado (finalized o draft). Si se omite, devuelve todos los controles.

Respuesta (200 OK):

[
{
"id": 1,
"name": "Nombre del Control",
"description": "Descripción del control",
"catalogId": "catalog-id",
"status": "finalized",
"type": "automated"
}
]

Obtener Controles Pendientes​

GET /controls/pending

Recupera todos los controles pendientes.

Parámetros de Consulta:

  • status (opcional): Filtrar controles por estado (finalized o draft).

Respuesta (200 OK)

Obtener Control​

GET /controls/:id

Recupera un control específico por ID.

Respuesta (200 OK)

Crear Control​

POST /controls

Crea un nuevo control.

Cuerpo de la Solicitud:

{
"name": "Nombre del Control",
"description": "Descripción del control",
"catalogId": "catalog-id",
"type": "automated",
"criteria": {}
}

Respuesta (201 Creado)

Actualizar Control​

PATCH /controls/:id

Actualiza un control existente.

Cuerpo de la Solicitud:

{
"name": "Nombre de Control Actualizado",
"description": "Descripción actualizada"
}

Respuesta (200 OK)

Eliminar Control​

DELETE /controls/:id

Elimina un control.

Respuesta (200 OK)

Gestión de Paneles​

Obtener Paneles de Control​

GET /controls/:id/panels

Recupera todos los paneles asociados a un control.

Respuesta (200 OK):

[
{
"id": 1,
"controlId": 1,
"name": "Nombre del Panel"
}
]

Agregar Panel al Control​

POST /controls/:id/panel/:panelId

Agrega un panel a un control.

Respuesta (200 OK)

Eliminar Panel del Control​

DELETE /controls/:id/panels/:panelId

Elimina un panel de un control.

Respuesta (200 OK)

Cálculos​

Resumen de Endpoints​

MétodoEndpointDescripción
GET/computations/:idRecupera un cálculo por grupo de cálculo (UUID)
POST/computations/bulkCrea múltiples cálculos a la vez
DELETE/computationsElimina todos los cálculos
GET/controls/:controlId/computationsRecupera todos los cálculos para un control específico
GET/controls/:controlId/computations/:createdAtRecupera cálculos para un control filtrados por fecha
PUT/controls/:controlId/computationsEstablece el intervalo de cálculo para un cálculo
DELETE/controls/:controlId/computationsElimina todos los cálculos de un control específico

Operaciones Estándar​

Obtener Cálculo​

GET /computations/:id

Recupera un cálculo por grupo de cálculo (UUID). Soporta ejecución asíncrona con verificación de disponibilidad.

Respuesta (200 OK):

{
"id": "computation-uuid",
"name": "Nombre del Cálculo",
"formula": "fórmula de cálculo",
"computationGroup": "uuid"
}

Respuesta (202 Aceptado):

{
"message": "Computation not ready yet"
}

Crear Cálculos en Lote​

POST /computations/bulk

Crea múltiples cálculos a la vez.

Cuerpo de la Solicitud:

{
"computations": [
{
"name": "Cálculo 1",
"formula": "fórmula 1"
},
{
"name": "Cálculo 2",
"formula": "fórmula 2"
}
],
"done": true
}

Respuesta (201 Creado)

Eliminar Todos los Cálculos​

DELETE /computations

Elimina todos los cálculos.

Respuesta (204 Sin Contenido)

Específicos de Control​

Obtener Cálculos por Control​

GET /controls/:controlId/computations

Recupera todos los cálculos para un control específico.

Respuesta (200 OK):

[
{
"id": "computation-id",
"controlId": 1,
"name": "Nombre del Cálculo",
"formula": "fórmula de cálculo"
}
]

Obtener Cálculos por Control y Fecha​

GET /controls/:controlId/computations/:createdAt

Recupera cálculos para un control filtrados por fecha de creación.

Respuesta (200 OK)

Actualizar Intervalo de Cálculo​

PUT /controls/:controlId/computations

Establece el intervalo de cálculo para un cálculo por ID de control y fecha de creación.

Cuerpo de la Solicitud:

{
"interval": "*/5 * * * *"
}

Respuesta (204 Sin Contenido)

Eliminar Cálculos por Control​

DELETE /controls/:controlId/computations

Elimina todos los cálculos de un control específico.

Respuesta (204 Sin Contenido)

Puntos​

Resumen de Endpoints​

MétodoEndpointDescripción
GET/points/:idRecupera un punto por grupo de cálculo (UUID)
DELETE/points/:idElimina un punto
GET/points/catalog/:tpaIdRecupera puntos por ID de Acuerdo de Bluejay
PUT/points/computationGroup/:computationGroupActualiza puntos por ID de grupo de cálculo

Operaciones Estándar​

Obtener Punto​

GET /points/:id

Recupera un punto por grupo de cálculo (UUID).

Respuesta (200 OK):

{
"id": "point-id",
"computationId": "computation-id",
"value": 95.5,
"timestamp": "2024-01-01T00:00:00Z",
"metadata": {}
}

Eliminar Punto​

DELETE /points/:id

Elimina un punto.

Respuesta (204 Sin Contenido)

Obtener Puntos por ID TPA​

GET /points/catalog/:tpaId

Recupera puntos por ID de Acuerdo de Bluejay (tpaId).

Respuesta (200 OK):

[
{
"id": "point-id",
"computationId": "computation-id",
"value": 95.5,
"timestamp": "2024-01-01T00:00:00Z",
"agreementId": "tpa-xxx"
}
]

Grupo de Cálculo​

Actualizar Puntos por Grupo de Cálculo​

PUT /points/computationGroup/:computationGroup

Actualiza puntos por ID de grupo de cálculo (UUID).

Cuerpo de la Solicitud:

{
"guaranteeValue": 95.5,
"guaranteeResult": true,
"metrics": {},
"scope": {}
}

Respuesta (200 OK):

{
"message": "Points updated successfully",
"points": [
{
"id": "point-id",
"computationId": "computation-id",
"value": 95.5
}
]
}

Autenticación​

Todos los endpoints requieren autenticación JWT mediante token Bearer en el encabezado de autorización:

Authorization: Bearer <jwt-token>

Notas​

  • Todos los endpoints tienen como prefijo el API_PREFIX configurado en el entorno
  • Las entidades en borrador se pueden modificar libremente, mientras que las entidades finalizadas tienen modificaciones restringidas
  • El endpoint calculatePoints se integra con el Servicio de Registro externo para obtener estados de garantía
  • Los cálculos soportan ejecución asíncrona con verificación de disponibilidad mediante el UUID del grupo de cálculo