Actualización mediante la notación de parches de JSON

La siguiente llamada de ejemplo muestra cómo actualizar un objeto mediante el parche JSON, como se describe en RFC-6902.

Para obtener más información sobre la sintaxis de parches de JSON, consulte la guía de aspectos básicos de la API.

Formato de API

PATCH /{OBJECT_TYPE}/{OBJECT_ID}
ParámetroDescripción
{OBJECT_TYPE}

El tipo de objeto Catalog que se va a actualizar. Los objetos válidos son:

  • batches
  • dataSets
  • dataSetFiles
{OBJECT_ID}El identificador del objeto específico que desea actualizar.

Solicitud

La siguiente solicitud actualiza los campos name y description de un conjunto de datos a los valores proporcionados en cada objeto de parche JSON. Al utilizar el parche JSON, también debe establecer el encabezado Content-Type en application/json-patch+json.

curl -X PATCH \
  https://platform.adobe.io/data/foundation/catalog/dataSets/5ba9452f7de80400007fc52a \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json-patch+json' \
  -d '[
        { "op": "add", "path": "/name", "value": "New Dataset Name" },
        { "op": "add", "path": "/description", "value": "New description for dataset" }
      ]'

Respuesta

Una respuesta correcta devuelve una matriz que contiene el ID del objeto actualizado. Este ID debe coincidir con el enviado en la solicitud de PATCH. Al realizar una petición GET para este objeto, ahora se muestra que solamente se han actualizado name y description, mientras que el resto de valores permanecen sin cambios.

[
    "@/dataSets/5ba9452f7de80400007fc52a"
]

Actualización mediante la notación de PATCH v2

El extremo /v2/dataSets/{DATASET_ID} proporciona una forma más flexible de actualizar atributos de conjuntos de datos complejos o profundamente anidados.

Normalmente, cuando se actualiza un campo anidado profundamente (como a.b.c.d), cada nivel de la ruta de acceso ya debe existir. Si falta algún nivel, debe crear manualmente cada uno antes de establecer el valor final. Esto a menudo requiere varias operaciones, lo que añade complejidad y aumenta la posibilidad de errores.

El extremo /v2/dataSets/{DATASET_ID} crea automáticamente los niveles que faltan en la ruta de acceso. En lugar de comprobar y agregar manualmente b y c antes de establecer d, la operación de PATCH v2 hace esto por usted.

Cuando envía una solicitud de PATCH al extremo /v2/dataSets/{DATASET_ID}, solo necesita enviar la estructura final y el sistema rellena las partes que faltan antes de aplicar la actualización.

NOTE
Los encabezados If-Match y If-None-Match son opcionales para el extremo /v2/dataSets/{id}. Las solicitudes de PATCH a este extremo combinan actualizaciones de forma dinámica, lo que permite realizar modificaciones sin recuperar la última versión del conjunto de datos. Aunque esto reduce el riesgo de pérdida de datos debido a las actualizaciones simultáneas, puede usar If-Match con la última etag para asegurarse de que los cambios se apliquen únicamente a una versión específica. Como alternativa, If-None-Match evita actualizaciones si el conjunto de datos no ha cambiado desde la última versión conocida.

Formato de API

PATCH /V2/DATASETS/{DATASET_ID}
ParámetroDescripción
{DATASET_ID}El identificador del conjunto de datos que se va a actualizar.

Solicitud

curl -X PATCH https://platform.adobe.io/data/foundation/catalog/v2/dataSets/67b3077efa10d92ab7a71858 \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
        "extensions": {
            "adobe_lakeHouse": {
            "rowExpiration": {
                "ttlValue": "P9Y"
            }
            }
        }
    }'

Respuesta

Una respuesta correcta devuelve una matriz que contiene el ID del conjunto de datos actualizado, que debe coincidir con el ID enviado en la solicitud de PATCH. Al realizar una petición GET para este objeto, ahora se muestra que el objeto extensions.adobe_lakeHouse.rowExpiration se ha creado sin requerir pasos de creación manuales previos.

[
    "@/dataSets/67b3077efa10d92ab7a71858"
]