Aprobaciones

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

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

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

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

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

Crear Aprobación

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

API Respuesta

El siguiente ejemplo muestra cómo las Aprobaciones API respuesta se ve como 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 claveÚnica Lógica - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 fuente - Especifica el origen de los datos ingeridos. Típicamente,manual indica la ingestión de datos a través de directo API invocación, mientras import significa la ingestión a través de un proceso basado en archivos.
3 entidadDeProcesamiento - Identifica la entidad de procesamiento a la que se aplica la configuración. Una configuración solo puede estar asociada con una única entidad de procesamiento.
4 fechaDeInicioActivo - Especifica la fecha y hora en que la configuración se activa, después de ser aprobada.
5 activeToDate - Especifica la fecha y hora en que la configuración se considerará inactiva, después de que sea aprobada.
6 estado - Representa el estado de aprobación de la configuración. Para las aprobaciones pendientes, este valor es siempre PENDING. Las Aprobaciones API actualmente solo admite la obtención de aprobaciones pendientes, por lo que este es el único estado disponible en API respuestas.
7 versión - Indica la versión de la configuración. Versioning comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio subsiguiente.
8 carga útil - Contiene el contenido de configuración real. Una vez que se otorga la aprobación, esta configuración se aplica a su respectiva colección.
9 creadoPor - Especifica el usuario que crea la configuración.
10 tipo De Aprobación - 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 tipoDeRegistro - Define el tipo de datos contenidos en la carga útil.
12 fecha Creación - Especifica la fecha y hora en que se crea la solicitud de aprobación.
13 diferencia - Disponible solo para aprobaciones de actualización. Proporciona una comparación de los cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Aprobación de Actualización

El siguiente ejemplo muestra cómo las Aprobaciones API respuesta se ve como 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 claveÚnica Lógica - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 fuente - Especifica el origen de los datos ingeridos. Típicamente,manual indica la ingestión de datos a través de directo API invocación, mientras import significa la ingestión a través de un proceso basado en archivos.
3 entidadDeProcesamiento - Identifica la entidad de procesamiento a la que se aplica la configuración. Una configuración solo puede estar asociada con una única entidad de procesamiento.
4 fechaDeInicioActivo - Especifica la fecha y hora en que la configuración se 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 estado - Representa el estado de aprobación de la configuración. Para las aprobaciones pendientes, este valor es siempre PENDING. Las Aprobaciones API actualmente solo admite la obtención de aprobaciones pendientes, por lo que este es el único estado disponible en API respuestas.
7 versión - Indica la versión de la configuración. Versioning comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio subsiguiente.
8 carga útil - Contiene el contenido de configuración real. Una vez que se concede la aprobación, esta configuración se aplica a su respectiva colección.
9 creadoPor - Especifica el usuario que crea la configuración.
10 tipo De Aprobación - 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 tipoDeRegistro - Define el tipo de datos contenidos en la carga útil.
12 fecha Creación - 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 los cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Configuración de diferencia en la 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 las operaciones de creación y eliminación.

Para cada campo que se actualice, la colección diff contendrá field Name, current Value y future Value.

Ejemplo de respuesta de diferencia 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 del campo, estableciéndolo en null, que será representado en la colección de diferencias como:

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

Eliminar Aprobación

El siguiente ejemplo muestra cómo las Aprobaciones API la respuesta se ve como 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 claveÚnica Lógica - Una clave única lógica que representa una configuración específica dentro de una colección de configuraciones.
2 fuente - Especifica el origen de los datos ingeridos. Típicamente,manual indica la ingestión de datos a través de directo API invocación, mientras import significa la ingestión a través de un proceso basado en archivos.
3 entidadDeProcesamiento - Identifica la entidad de procesamiento a la que se aplica la configuración. Una configuración solo puede estar asociada con una única entidad de procesamiento.
4 fechaDeInicioActivo - Especifica la fecha y hora en que la configuración se activa.
5 activeToDate - Especifica la fecha y hora en que la configuración se considerará inactiva, después de ser aprobada.
6 estado - Representa el estado de aprobación de la configuración. Para las aprobaciones pendientes, este valor es siempre PENDING. Las Aprobaciones API actualmente solo admite la obtención de aprobaciones pendientes, por lo que este es el único estado disponible en API respuestas.
7 versión - Indica la versión de la configuración. Versioning comienza en 1 cuando se crea la configuración y se incrementa en 1 con cada cambio subsiguiente.
8 carga útil - Contiene el contenido de configuración real. Una vez que se otorga la aprobación, esta configuración se aplica a su respectiva colección.
9 creadoPor - Especifica el usuario que crea la configuración.
10 tipo De Aprobación - 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 tipoDeRegistro - Define el tipo de datos contenidos en la carga útil.
12 fecha Creación - Especifica la fecha y hora en que se crea la solicitud de aprobación.
13 eliminadoPor -(Opcional) Especifica el usuario que solicita la eliminación de la configuración, aplicable únicamente en solicitudes de eliminación.
14 razón Eliminada -(Opcional) Especifica la razón proporcionada para la solicitud de eliminación.
15 diferencia - Disponible solo para aprobaciones de actualización. Proporciona una comparación de los cambios entre versiones. Este campo no está presente para aprobaciones de creación o eliminación.

Restricciones de Aprobación

Existen varias restricciones en las aprobaciones:

  1. Solo se puede tener una aprobación activa por configuración en un momento dado.

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

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

Si alguna de estas restricciones no se cumple, la API devolverá el siguiente error:

Código de estado HTTP Mensaje Descripción

400

Actualización de configuración no permitida

La configuración tiene aprobación pendiente.

Obtenga aprobaciones

Cuando un usuario desea obtener todas las aprobaciones pendientes, GET /settings-objects/approvals/{settingType} el punto final ofrece eso. El processingEntity El parámetro puede ser utilizado para filtrar las aprobaciones por el valor de la entidad de procesamiento combinado con el valor del tipo de configuración, si se proporciona en la solicitud.

{
   "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

Apruebe

Cuando un usuario desea aprobar la creación, actualización o eliminación de una configuración, existe el POST /settings-objects/approvals/{settingType}/{settingId}/approve punto final. El creador de la configuración no puede ser también el aprobador. El processingEntity el parámetro, si se proporciona en la solicitud, permite que restricted el acceso se basa en el valor de processingEntity en la solicitud y la Entidad de Procesamiento propietaria de la configuración. Una configuración será aprobada si su valor de processingEntity coincide con el valor de processingEntity de la solicitud.

A continuación se muestra un ejemplo del cuerpo de la solicitud para la configuración de aprobación:

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

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

Rechazar

Para rechazar la creación, actualización o eliminación de una configuración, existe el POST /settings-objects/approvals/{settingType}/{settingId}/reject punto final. El creador de la configuración puede rechazar su propia solicitud. El processingEntity el parámetro, si se proporciona en la solicitud, permite que restricted el acceso se basa en el valor processingEntity en la solicitud y la Entidad de Procesamiento propietaria de la configuración. Una configuración será rechazada si su valor processingEntity coincide con el valor processingEntity de la solicitud. A continuación se muestra un ejemplo del cuerpo de la solicitud para la configuración de rechazo:

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

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

Índices

Índices predeterminados para settings-approvals colección:

ipf.dps.mongodb.index-config.approvals {
  index-1 = ["processingEntity:ASC"]
  index-2 = ["entityId:ASC"]
  index-3 = ["entityCollection:ASC"]
  index-4 = ["lastUpdatedAt:ASC"]
}

Estos índices son configurables con la propiedad ipf.dps.mongodb.index-config.approvals. Más sobre índices en Creación del Índice DPS.