Obtener cambios incrementales

Este endpoint devuelve las asignaciones que han sufrido cambios desde la fecha indicada en la petición hasta la fecha actual.

GET /api/v1/businesses/{businessId}/assignments/incremental?since={yyyy-MM-ddTHH:mm:ss.SSS}

Si los datos incluidos en la petición son correctos, la respuesta contendrá las asignaciones que han cambiado desde la fecha indicada en el parámetro since hasta la fecha actual. Este parámetro debe ser una fecha dentro de los últimos 45 días en formato UTC.

Se trata de una respuesta paginada, por lo que, después de la primera llamada, en los encabezados de respuesta aparecerá un cursor a la página siguiente (next) que indica la URL de la siguiente petición incremental de asignaciones. Para obtener la siguiente página de datos, se debe realizar una petición a esa URL con el cursor:

GET /api/v1/businesses/{businessId}/assignments/incremental?cursor=*******

Será necesario repetir este proceso hasta que la respuesta no contenga la cabecera next, lo que indica que la paginación ha terminado y que no hay más datos que mostrar.

Ver ejemplo
[
    {
        "product": "0001-G",
        "day": "2024-07-17",
        "assignments": [
            {
                "person": "1006355",
                "orquestId": 3456,
                "presence": {
                    "worked": false,
                    "timeFrames": [
                        {
                            "startMinuteDay": 0,
                            "duration": 1425,
                            "paid": false,
                            "worked": false
                        }
                    ]
                },
                "virtual": false
            },
            {
                "person": "1006356",
                "orquestId": 1234,
                "presence": {
                    "worked": true,
                    "timeFrames": [
                        {
                            "startMinuteDay": 570,
                            "duration": 180,
                            "paid": true,
                            "location": {
                                "color": "#738ac8",
                                "description": "Carrying out opening tasks: opening boxes, reviewing funds",
                                "name": "KITCHEN OPENING",
                                "shortName": "KO",
                                "requiredLevel": 3,
                                "priority": 4,
                                "type": "VARIABLE",
                                "shouldAvoidOvercover": true,
                                "system": false,
                                "category": "ADMINISTRATIVE",
                                "product": "0001-G",
                                "id": "KITCHEN_OPENING"
                            },
                            "worked": true
                        },
                        {
                            "startMinuteDay": 420,
                            "duration": 150,
                            "paid": true,
                            "location": {
                                "color": "#ffffff",
                                "description": "Carrying out merchandise unloading",
                                "name": "Truck Unloading",
                                "shortName": "TU",
                                "requiredLevel": 3,
                                "priority": 5,
                                "maxResources": 1,
                                "type": "FIXED",
                                "shouldAvoidOvercover": true,
                                "system": false,
                                "category": "ADMINISTRATIVE",
                                "product": "0001-G",
                                "id": "Truck_Unloading"
                            },
                            "worked": true
                        }
                    ]
                },
                "virtual": false
            }
        ]
    },
    {
        "product": "0002-G",
        "day": "2024-07-03",
        "assignments": [
            {
                "person": "1006359",
                "orquestId": 6789,
                "presence": {
                    "worked": false,
                    "timeFrames": [
                        {
                            "startMinuteDay": 0,
                            "duration": 1425,
                            "paid": false,
                            "worked": false
                        }
                    ]
                },
                "virtual": false
            }
        ]
    }
]

Como se puede ver en el ejemplo, las asignaciones se agrupan por producto y día.

El objetivo de este endpoint es que un cliente pueda hacer peticiones recurrentes para mantener actualizados sus datos sin tener que realizar procesos de actualización excesivamente complejos. Gracias a esta petición, por tanto, se ofrece un listado que muestra el estado actual de las asignaciones para que solo se tengan que sobreescribir los datos desactualizados.

Por ejemplo, si se borra una asignación para un empleado en un día concreto, la API devuelve las asignaciones de todo el día para el producto implicado.

Aspectos que tener en cuenta

Orquest solo almacena los últimos 45 días de cambios incrementales. Si el cliente no realiza una petición de cambios incrementales en ese periodo de tiempo, tendrá que realizar una petición completa de asignaciones.

Debido a la complejidad de los datos, es difícil saber si un elemento ha cambiado cuando se hacen modificaciones masivas. Por ejemplo, al publicar un borrador, las asignaciones pueden cambiar en bloque, pero el resultado parece no haber cambiado porque una asignación idéntica ha reemplazado a otra.

Como las asignaciones se agrupan en conceptos mayores, es posible registrar un cambio en un día sin importar cuántas asignaciones individuales hayan cambiado para ese día. Por eso, es común recibir entidades que parecen no haber cambiado porque forman parte de un concepto mayor que sí ha cambiado.

El uso de este endpoint requiere que la funcionalidad sea activada previamente por el equipo de Orquest, dado su coste de cómputo y memoria al realizar auditorías sobre ciertas entidades. Por tanto, será necesario analizar el caso de uso y gestionar su habilitación.

Enlaces de interés

¿Qué es una asignación?