Documentation for a newer release is available. View Latest

Aprobaciones

Esta función permite a los usuarios solicitar aprobación antes de que se aplique un cambio a una configuración. El cambio en sí puede ser uno de los siguientes:

  • create (es decir, crear una configuración con aprobación requiere que la aprobación sea aceptada antes de que la configuración se cree realmente)

  • update (es decir, actualizar una configuración existente con aprobación requiere que la aprobación sea aceptada antes de aplicar la actualización a la configuración)

  • delete (es decir, eliminar una configuración con aprobación significa que la configuración no se eliminará hasta que alguien apruebe este cambio)

El API permite recuperar todas las aprobaciones pendientes. La respuesta de Approvals contiene toda la información de la configuración.

Crear aprobación

Cuando un usuario intenta crear, actualizar o eliminar una configuración con el parámetro requiresApproval establecido en true, se crea una solicitud de aprobación.

Respuesta del API

El siguiente ejemplo muestra cómo se ve la respuesta del Approvals API para create approval:

{
  "settings" : [ {
    "logicalUniqueKey" : "001-BIC01112XXX", (1)
    "source" : "manual", (2)
    "processingEntity" : "001", (3)
    "activeFromDate" : "2023-01-01T10:00:00.000Z", (4)
    "activeToDate" : "2023-10-01T10:00:00.000Z", (5)
    "status" : "PENDING", (6)
    "version" : 1, (7)
    "payload" : { (8)
      "className" : "com.iconsolutions.ipf.dynamicsettings.v2.bdd.model.DpsSampleSetting",
      "routingBic" : "BIC01112XXX",
      "maxCounter" : 35,
      "maxValue" : 62.25,
      "amount" : 125.123456789,
      "enabled" : true,
      "creationDate" : "2023-06-30T12:00:00.000Z",
      "participantType" : "DIRECT",
      "countryCurrency" : {
        "country" : "GB",
        "currency" : "EUR"
      }
    },
    "createdBy" : "user-01", (9)
    "approvalType" : "CREATE", (10)
    "recordType" : "DpsSampleSetting", (11)
    "createdDate" : "2024-09-07T17:16:46.434Z", (12)
    "diff" : [ ] (13)
  } ]
}
1 logicalUniqueKey - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 source - Especifica el origen de los datos ingeridos. Normalmente, manual indica ingesta de datos mediante invocación directa del API, mientras que import indica ingesta a través de un proceso basado en archivos.
3 processingEntity - Identifica las entidades de procesamiento a las que aplica la configuración. Una configuración puede asociarse a múltiples entidades de procesamiento.
4 activeFromDate - Especifica la fecha y hora en que la configuración se vuelve activa, después de ser aprobada.
5 activeToDate - Especifica la fecha y hora en que la configuración se considerará inactiva, después de ser aprobada.
6 status - Representa el estado de aprobación de la configuración. Para aprobaciones pendientes, este valor es siempre PENDING. El Approvals API actualmente solo admite obtener aprobaciones pendientes, por lo que este es el único estado disponible en las respuestas del API.
7 version - Indica la versión de la configuración. El versionado comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio posterior.
8 payload - Contiene el contenido real de la configuración. Una vez concedida la aprobación, esta configuración se aplica a su colección correspondiente.
9 createdBy - Especifica el usuario que crea la configuración.
10 approvalType - Define el tipo de solicitud de aprobación. Los valores posibles incluyen:
  • CREATE: Una solicitud para crear una nueva configuración.

  • UPDATE: Una solicitud para modificar una configuración existente.

  • DELETE: Una solicitud para eliminar una configuración.

11 recordType - Define el tipo de datos contenidos en el payload.
12 createdDate - Especifica la fecha y hora en que se crea la solicitud de aprobación.
13 diff - Disponible solo para aprobaciones de actualización. Proporciona una comparación de cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Actualizar aprobación

El siguiente ejemplo muestra cómo se ve la respuesta del Approvals API para update approval:

{
  "settings" : [ {
    "logicalUniqueKey" : "001-BIC01112XXX", (1)
    "source" : "manual", (2)
    "processingEntity" : "001", (3)
    "activeFromDate" : "2023-02-01T10:00:00.000Z", <4>,
    "activeToDate" : "2023-10-01T10:00:00.000Z", (5)
    "status" : "PENDING", (6)
    "version" : 1, (7)
    "payload" : { (8)
      "className" : "com.iconsolutions.ipf.dynamicsettings.v2.bdd.model.DpsSampleSetting",
      "routingBic" : "BIC01112XXX",
      "maxCounter" : 36,
      "maxValue" : 63.36,
      "amount" : 126.987654321,
      "enabled" : false,
      "creationDate" : "2023-07-15T14:15:00.000Z",
      "participantType" : "INDIRECT",
      "countryCurrency" : {
        "country" : "RS",
        "currency" : "RSD"
      }
    },
    "createdBy" : "JRGC6", (9)
    "approvalType" : "UPDATE", (10)
    "recordType" : "DpsSampleSetting", (11)
    "createdDate" : "2024-09-07T17:16:49.596Z", (12)
    "diff" : [ { (13)
      "fieldName" : "amount",
      "currentValue" : "125.123456789",
      "futureValue" : "126.987654321"
    }, {
      "fieldName" : "countryCurrency.country",
      "currentValue" : "GB",
      "futureValue" : "RS"
    }, {
      "fieldName" : "countryCurrency.currency",
      "currentValue" : "EUR",
      "futureValue" : "RSD"
    }, {
      "fieldName" : "creationDate",
      "currentValue" : "2023-06-30T12:00:00Z",
      "futureValue" : "2023-07-15T14:15:00Z"
    }, {
      "fieldName" : "enabled",
      "currentValue" : "true",
      "futureValue" : "false"
    }, {
      "fieldName" : "maxCounter",
      "currentValue" : "35",
      "futureValue" : "36"
    }, {
      "fieldName" : "maxValue",
      "currentValue" : "62.25",
      "futureValue" : "63.36"
    }, {
      "fieldName" : "participantType",
      "currentValue" : "DIRECT",
      "futureValue" : "INDIRECT"
    } ]
  } ]
}
1 logicalUniqueKey - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 source - Especifica el origen de los datos ingeridos. Normalmente, manual indica ingesta de datos mediante invocación directa del API, mientras que import indica ingesta a través de un proceso basado en archivos.
3 processingEntity - Identifica las entidades de procesamiento a las que aplica la configuración. Una configuración puede asociarse a múltiples entidades de procesamiento.
4 activeFromDate - Especifica la fecha y hora en que la configuración se vuelve activa, después de ser aprobada.
5 activeToDate - Especifica la fecha y hora en que la configuración se considerará inactiva, después de ser aprobada.
6 status - Representa el estado de aprobación de la configuración. Para aprobaciones pendientes, este valor es siempre PENDING. El Approvals API actualmente solo admite obtener aprobaciones pendientes, por lo que este es el único estado disponible en las respuestas del API.
7 version - Indica la versión de la configuración. El versionado comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio posterior.
8 payload - Contiene el contenido real de la configuración. Una vez concedida la aprobación, esta configuración se aplica a su colección correspondiente.
9 createdBy - Especifica el usuario que crea la configuración.
10 approvalType - Define el tipo de solicitud de aprobación. Los valores posibles incluyen:
  • CREATE: Una solicitud para crear una nueva configuración.

  • UPDATE: Una solicitud para modificar una configuración existente.

  • DELETE: Una solicitud para eliminar una configuración.

11 recordType - Define el tipo de datos contenidos en el payload.
12 createdDate - Especifica la fecha y hora en que se crea la solicitud de aprobación.
13 diff - Disponible solo para aprobaciones de actualización. Proporciona una comparación de cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Diferencia de configuraciones en aprobación de actualización

La diferencia de aprobación solo se completa para las solicitudes de actualización que requieren aprobación, y no para operaciones de creación y eliminación.

Para cada campo que se actualiza, la colección diff contendrá fieldName, currentValue y futureValue.

Ejemplo de respuesta del diff de aprobación:

{
   "settings":[
      {
         "logicalUniqueKey":"001-BIC01112XXX",
         "source":"manual",
         "processingEntity":"001",
         "activeFromDate":"2023-02-01T10:00:00Z",
         "activeToDate":"2027-02-01T10:00:00Z",
         "status":"ACTIVE_APPROVAL_PENDING",
         "version":1,
         "payload":{
            "className":"com.iconsolutions.ipf.dynamicsettings.v2.bdd.model.DpsSampleSetting",
            "routingBic":"BIC01112XXX",
            "maxCounter":36,
            "maxValue":63.36,
            "amount":126.987654321,
            "enabled":false,
            "creationDate":"2023-07-15T14:15:00Z",
            "participantType":"DIRECT",
            "countryCurrency":{
               "country":"RS",
               "currency":"RSD"
            }
         },
         "createdBy":"admin",
         "createdDate":"2024-10-10T11:38:57.062Z",
         "approvalType":"UPDATE",
         "diff":[
              {
                "fieldName": "maxCounter",
                "currentValue": "35",
                "futureValue": "36"
              },
              {
                "fieldName": "participantType",
                "currentValue": "INDIRECT",
                "futureValue": "DIRECT"
              }
         ]
      }
   ]
}

Es posible eliminar el valor de un campo estableciéndolo a null, lo cual se representará en la colección diff como:

{
  "diff": [
    {
      "fieldName": "maxCounter",
      "currentValue": "35",
      "futureValue": null
    }
  ]
}

Eliminar aprobación

El siguiente ejemplo muestra cómo se ve la respuesta del Approvals API para delete approval:

"settings" : [ {
"logicalUniqueKey" : "001-BIC01112XXX", (1)
"source" : "manual", (2)
"processingEntity" : "001", (3)
"activeFromDate" : "2023-01-01T10:00:00.000Z", (4)
"activeToDate" : "2023-10-01T10:00:00.000Z", (5)
"status" : "PENDING", (6)
"version" : 1, (7)
"payload" : { (8)
"className" : "com.iconsolutions.ipf.dynamicsettings.v2.bdd.model.DpsSampleSetting",
"routingBic" : "BIC01112XXX",
"maxCounter" : 35,
"maxValue" : 62.25,
"amount" : 125.123456789,
"enabled" : true,
"creationDate" : "2023-06-30T12:00:00.000Z",
"participantType" : "DIRECT",
"countryCurrency" : {
"country" : "GB",
"currency" : "EUR"
}
},
"createdBy" : "user-01", (9)
"approvalType" : "DELETE", (10)
"recordType" : "DpsSampleSetting", (11)
"createdDate" : "2024-09-07T17:16:46.434Z", (12)
"deletedBy": "user-02", (13)
"deletedReason": "not needed" (14)
"diff" : [ ] (15)
} ]
}
1 logicalUniqueKey - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 source - Especifica el origen de los datos ingeridos. Normalmente, manual indica ingesta de datos mediante invocación directa del API, mientras que import indica ingesta a través de un proceso basado en archivos.
3 processingEntity - Identifica las entidades de procesamiento a las que aplica la configuración. Una configuración puede asociarse a múltiples entidades de procesamiento.
4 activeFromDate - Especifica la fecha y hora en que la configuración se vuelve activa.
5 activeToDate - Especifica la fecha y hora en que la configuración se considerará inactiva, después de ser aprobada.
6 status - Representa el estado de aprobación de la configuración. Para aprobaciones pendientes, este valor es siempre PENDING. El Approvals API actualmente solo admite obtener aprobaciones pendientes, por lo que este es el único estado disponible en las respuestas del API.
7 version - Indica la versión de la configuración. El versionado comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio posterior.
8 payload - Contiene el contenido real de la configuración. Una vez concedida la aprobación, esta configuración se aplica a su colección correspondiente.
9 createdBy - Especifica el usuario que crea la configuración.
10 approvalType - Define el tipo de solicitud de aprobación. Los valores posibles incluyen:
  • CREATE: Una solicitud para crear una nueva configuración.

  • UPDATE: Una solicitud para modificar una configuración existente.

  • DELETE: Una solicitud para eliminar una configuración.

11 recordType - Define el tipo de datos contenidos en el payload.
12 createdDate - Especifica la fecha y hora en que se crea la solicitud de aprobación.
13 deletedBy - (Opcional) Especifica el usuario que solicita la eliminación de la configuración, aplicable solo en solicitudes de eliminación.
14 deletedReason - (Opcional) Especifica la razón proporcionada para la solicitud de eliminación.
15 diff - Disponible solo para aprobaciones de actualización. Proporciona una comparación de cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Restricciones de aprobación

Existen varias restricciones sobre las aprobaciones:

  1. Solo una aprobación por configuración puede estar activa al mismo tiempo.

  2. Una vez que se solicita una aprobación, no puede actualizarse hasta que la primera sea aceptada o rechazada.

  3. Cuando hay una aprobación pendiente para alguna configuración, la configuración no puede actualizarse hasta que la aprobación sea aceptada o rechazada.

Si no se cumplen estas restricciones, el API devolverá el siguiente error:

HTTP Status code Message Description

400

Update setting not allowed

Setting has pending approval.

Obtener aprobaciones

Cuando un usuario desea obtener todas las aprobaciones pendientes, el endpoint GET /settings-objects/approvals/{settingType} lo ofrece. Además del parámetro de ruta settingType, hay un parámetro opcional processingEntity que puede usarse para filtrar aprobaciones por el valor de la entidad de procesamiento combinado con el valor del tipo de configuración.

{
   "settings":[
      {
         "logicalUniqueKey":"001-BIC01112XXX",
         "source":"manual",
         "processingEntity":"001",
         "activeFromDate":"2023-01-01T10:00:00Z",
         "activeToDate":"2027-01-01T10:00:00Z",
         "status":"PENDING",
         "version":1,
         "payload":{
            "className":"com.iconsolutions.ipf.dynamicsettings.v2.bdd.model.DpsSampleSetting",
            "routingBic":"BIC01112XXX",
            "maxCounter":35,
            "maxValue":62.25,
            "amount":125.123456789,
            "enabled":true,
            "creationDate":"2023-06-30T12:00:00Z",
            "participantType":"DIRECT",
            "countryCurrency":{
               "country":"GB",
               "currency":"EUR"
            }
         },
         "createdBy":"user-01",
         "createdDate":"2024-10-10T11:38:57.062Z",
         "approvalType":"CREATE",
         "diff":[

         ]
      }
   ]
}

Aprobar/Rechazar una aprobación

Aprobar

Cuando un usuario desea aprobar la creación, actualización o eliminación de una configuración, existe el endpoint POST /settings-objects/approvals/{settingType}/{settingId}/approve. El creador de la configuración no puede ser también el aprobador.

Aquí hay un ejemplo del cuerpo de la solicitud para la petición de aprobación:

{
  "approvedBy": "approved-by",
  "approvedReason": "approved-reason"
}

La respuesta debe ser el estado 200 OK sin cuerpo de respuesta.

Rechazar

Para rechazar la creación, actualización o eliminación de una configuración, existe el endpoint POST /settings-objects/approvals/{settingType}/{settingId}/reject. El creador de la configuración puede rechazar su propia solicitud.

Aquí hay un ejemplo del cuerpo de la solicitud para la petición de rechazo:

{
  "rejectedBy": "rejected-by",
  "rejectedReason": "rejected-reason"
}

La respuesta debe ser el estado 200 OK sin cuerpo de respuesta.