Mise à jour à l’aide de la notation par patch JSON

L’exemple d’appel suivant montre comment mettre à jour un objet à l’aide d’un patch JSON, comme indiqué dans RFC-6902.

Pour plus d’informations sur la syntaxe JSON Patch, consultez le guide des principes de base des API.

Format d’API

PATCH /{OBJECT_TYPE}/{OBJECT_ID}
ParamètreDescription
{OBJECT_TYPE}

Type de Catalog objet à mettre à jour. Les objets valides sont :

  • batches
  • dataSets
  • dataSetFiles
{OBJECT_ID}Identifiant de l’objet spécifique que vous souhaitez mettre à jour.

Requête

La requête suivante met à jour les champs name et description d’un jeu de données avec les valeurs fournies dans chaque objet de patch JSON. Lors de l’utilisation d’un patch JSON, vous devez aussi définir l’en-tête Content-Type sur 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" }
      ]'

Réponse

Une réponse réussie renvoie un tableau contenant l’identifiant de l’objet mis à jour. Cet identifiant doit correspondre à celui envoyé dans la requête PATCH. En exécutant une requête GET pour cet objet, vous voyez maintenant que seules les valeurs name et description ont été mises à jour, tandis que toutes les autres valeurs restent inchangées.

[
    "@/dataSets/5ba9452f7de80400007fc52a"
]

Mise à jour à l’aide de la notation PATCH v2

Le point d’entrée /v2/dataSets/{DATASET_ID} offre un moyen plus flexible de mettre à jour des attributs de jeux de données complexes ou profondément imbriqués.

En règle générale, lorsque vous mettez à jour un champ profondément imbriqué (tel que a.b.c.d), chaque niveau du chemin d’accès doit déjà exister. S’il manque un niveau, vous devez les créer manuellement avant de définir la valeur finale. Cela nécessite souvent plusieurs opérations, ce qui ajoute de la complexité et augmente le risque d’erreurs.

Le point d’entrée /v2/dataSets/{DATASET_ID} crée automatiquement tous les niveaux manquants dans le chemin d’accès. Au lieu de vérifier et d’ajouter manuellement des b et des c avant de d définir, l’opération de v2 de PATCH effectue cette opération pour vous.

Lorsque vous envoyez une requête PATCH au point d’entrée /v2/dataSets/{DATASET_ID}, il vous suffit d’envoyer la structure finale et le système remplit les parties manquantes avant d’appliquer la mise à jour.

NOTE
Les en-têtes If-Match et If-None-Match sont facultatifs pour le point d’entrée /v2/dataSets/{id}. Les requêtes PATCH vers ce point d’entrée fusionnent dynamiquement les mises à jour, ce qui permet d’apporter des modifications sans récupérer la dernière version du jeu de données. Bien que cela réduise le risque de perte de données des mises à jour simultanées, vous pouvez utiliser If-Match avec les dernières etag pour vous assurer que les modifications ne s’appliquent qu’à une version spécifique. Sinon, If-None-Match empêche les mises à jour si le jeu de données n’a pas été modifié depuis la dernière version connue.

Format d’API

PATCH /V2/DATASETS/{DATASET_ID}
ParamètreDescription
{DATASET_ID}Identifiant du jeu de données à mettre à jour.

Requête

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"
            }
            }
        }
    }'

Réponse

Une réponse réussie renvoie un tableau contenant l’identifiant du jeu de données mis à jour, qui doit correspondre à l’identifiant envoyé dans la requête PATCH. L’exécution d’une requête GET pour cet objet indique désormais que l’objet extensions.adobe_lakeHouse.rowExpiration a été créé sans nécessiter d’étapes de création manuelles préalables.

[
    "@/dataSets/67b3077efa10d92ab7a71858"
]