Endpoint "schema"

Uno schema può essere considerato come la blueprint per i dati che desideri acquisire in Adobe Experience Platform. Ogni schema è composto da una classe e da zero o più gruppi di campi dello schema. L'endpoint /schemas nell'API Schema Registry consente di gestire in modo programmatico gli schemi all'interno dell'applicazione Experience.

Introduzione

L'endpoint API utilizzato in questa guida fa parte dell'Schema Registry API. Prima di continuare, consulta la guida introduttiva per i collegamenti alla documentazione correlata, una guida alla lettura delle chiamate API di esempio in questo documento e per le informazioni importanti sulle intestazioni necessarie per effettuare correttamente le chiamate a qualsiasi API di Experience Platform.

Recuperare un elenco di schemi list

È possibile elencare tutti gli schemi nel contenitore global o tenant effettuando una richiesta GET rispettivamente a /global/schemas o /tenant/schemas.

NOTE
Quando si elencano le risorse, il registro dello schema limita il set di risultati a 300 elementi. Per restituire risorse oltre questo limite, è necessario utilizzare i parametri di paging. È inoltre consigliabile utilizzare parametri di query aggiuntivi per filtrare i risultati e ridurre il numero di risorse restituite. Per ulteriori informazioni, vedere la sezione relativa ai parametri di query nel documento dell'appendice.

Formato API

GET /{CONTAINER_ID}/schemas?{QUERY_PARAMS}
Parametro
Descrizione
{CONTAINER_ID}
Contenitore che ospita gli schemi da recuperare: global per gli schemi creati da Adobe o tenant per gli schemi di proprietà dell'organizzazione.
{QUERY_PARAMS}
Parametri di query facoltativi in base ai quali filtrare i risultati. Per un elenco dei parametri disponibili, vedere il documento di appendice.

Richiesta

La richiesta seguente recupera un elenco di schemi dal contenitore tenant, utilizzando un parametro di query orderby per ordinare i risultati in base al relativo attributo title.

curl -X GET \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas?orderby=title \
  -H 'Accept: application/vnd.adobe.xed-id+json' \
  -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}'

Il formato della risposta dipende dall'intestazione Accept inviata nella richiesta. Le seguenti intestazioni Accept sono disponibili per gli schemi di elenco:

Intestazione Accept
Descrizione
application/vnd.adobe.xed-id+json
Restituisce un breve riepilogo di ciascuna risorsa. Questa è l’intestazione consigliata per l’elenco delle risorse. (Limite: 300)
application/vnd.adobe.xed+json
Restituisce lo schema JSON completo per ogni risorsa, con $ref e allOf originali inclusi. (Limite: 300)

Risposta

La richiesta precedente ha utilizzato l'intestazione application/vnd.adobe.xed-id+json Accept, pertanto la risposta include solo gli attributi title, $id, meta:altId e version per ogni schema. L'utilizzo dell'altra intestazione Accept (application/vnd.adobe.xed+json) restituisce tutti gli attributi di ogni schema. Selezionare l'intestazione Accept appropriata in base alle informazioni richieste nella risposta.

{
  "results": [
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/0238be93d3e7a06aec5e0655955901ec",
      "meta:altId": "_{TENANT_ID}.schemas.0238be93d3e7a06aec5e0655955901ec",
      "version": "1.4",
      "title": "Hotels"
    },
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/0ef4ce0d390f0809fad490802f53d30b",
      "meta:altId": "_{TENANT_ID}.schemas.0ef4ce0d390f0809fad490802f53d30b",
      "version": "1.0",
      "title": "Loyalty Members"
    }
  ],
  "_page": {
        "orderby": "title",
        "next": null,
        "count": 2
    },
    "_links": {
        "next": null,
        "global_schemas": {
            "href": "https://platform.adobe.io/data/foundation/schemaregistry/global/schemas"
        }
    }
}

Cercare uno schema lookup

Per cercare uno schema specifico, effettua una richiesta GET che include l’ID dello schema nel percorso.

Formato API

GET /{CONTAINER_ID}/schemas/{SCHEMA_ID}
Parametro
Descrizione
{CONTAINER_ID}
Contenitore che ospita lo schema da recuperare: global per uno schema creato da Adobe o tenant per uno schema di proprietà dell'organizzazione.
{SCHEMA_ID}
meta:altId o $id con codifica URL dello schema che si desidera cercare.

Richiesta

La richiesta seguente recupera uno schema specificato dal relativo valore meta:altId nel percorso.

curl -X GET \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.f579a0b5f992c69458ea408ec36571f7da9de15901bab116 \
  -H 'Accept: application/vnd.adobe.xed+json' \
  -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}'

Il formato della risposta dipende dall'intestazione Accept inviata nella richiesta. Tutte le richieste di ricerca richiedono l'inclusione di version nell'intestazione Accept. Sono disponibili le seguenti Accept intestazioni:

Intestazione Accept
Descrizione
application/vnd.adobe.xed+json; version=1
Raw con $ref e allOf, con titoli e descrizioni.
application/vnd.adobe.xed-full+json; version=1
$ref e allOf risolti, con titoli e descrizioni.
application/vnd.adobe.xed-notext+json; version=1
Raw con $ref e allOf, nessun titolo o descrizione.
application/vnd.adobe.xed-full-notext+json; version=1
$ref e allOf risolti, nessun titolo o descrizione.
application/vnd.adobe.xed-full-desc+json; version=1
$ref e allOf risolti, descrittori inclusi.
application/vnd.adobe.xed-deprecatefield+json; version=1
$ref e allOf risolti, con titoli e descrizioni. I campi obsoleti sono indicati con un attributo meta:status di deprecated.

Risposta

In caso di esito positivo, la risposta restituisce i dettagli dello schema. I campi restituiti dipendono dall'intestazione Accept inviata nella richiesta. Prova a confrontare le risposte con intestazioni Accept diverse e a determinare quale sia il migliore per il tuo caso d'uso.

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/20af3f1d4b175f27ba59529d1b51a0c79fc25df454117c80",
  "meta:altId": "_{TENANT_ID}.schemas.20af3f1d4b175f27ba59529d1b51a0c79fc25df454117c80",
  "meta:resourceType": "schemas",
  "version": "1.1",
  "title": "Example schema",
  "type": "object",
  "description": "An example schema created within the tenant container.",
  "allOf": [
      {
          "$ref": "https://ns.adobe.com/xdm/context/profile",
          "type": "object",
          "meta:xdmType": "object"
      },
      {
          "$ref": "https://ns.adobe.com/{TENANT_ID}/mixins/443fe51457047d958f4a97853e64e0eca93ef34d7990583b",
          "type": "object",
          "meta:xdmType": "object"
      }
  ],
  "imsOrg": "{ORG_ID}",
  "meta:extensible": false,
  "meta:abstract": false,
  "meta:extends": [
      "https://ns.adobe.com/{TENANT_ID}/mixins/443fe51457047d958f4a97853e64e0eca93ef34d7990583b",
      "https://ns.adobe.com/xdm/common/auditable",
      "https://ns.adobe.com/xdm/data/record",
      "https://ns.adobe.com/xdm/context/profile"
  ],
  "meta:xdmType": "object",
  "meta:registryMetadata": {
      "repo:createdDate": 1602872911226,
      "repo:lastModifiedDate": 1603381419889,
      "xdm:createdClientId": "{CLIENT_ID}",
      "xdm:lastModifiedClientId": "{CLIENT_ID}",
      "xdm:createdUserId": "{USER_ID}",
      "xdm:lastModifiedUserId": "{USER_ID}",
      "eTag": "84b4da79b7445a4bf1c59269e718065effddb983c492f48e223d49c049c6d589",
      "meta:globalLibVersion": "1.15.4"
  },
  "meta:class": "https://ns.adobe.com/xdm/context/profile",
  "meta:containerId": "tenant",
  "meta:sandboxId": "ff0f6870-c46d-11e9-8ca3-036939a64204",
  "meta:sandboxType": "production",
  "meta:tenantNamespace": "_{TENANT_ID}"
}

Crea uno schema create

Il processo di composizione dello schema inizia assegnando una classe. La classe definisce gli aspetti comportamentali chiave dei dati (record o serie temporali), nonché i campi minimi necessari per descrivere i dati che verranno acquisiti.

Per istruzioni sulla creazione di uno schema senza classi o gruppi di campi, noto come schema basato su modello, vedere la sezione Creare uno schema basato su modello.

NOTE
La chiamata di esempio seguente è solo un esempio di base di come creare uno schema nell’API, con i requisiti minimi di composizione di una classe e nessun gruppo di campi. Per i passaggi completi su come creare uno schema nell'API, incluso come assegnare campi utilizzando gruppi di campi e tipi di dati, consulta l'esercitazione per la creazione di schemi.

Formato API

POST /tenant/schemas

Richiesta

La richiesta deve includere un attributo allOf che fa riferimento a $id di una classe. Questo attributo definisce la "classe base" che lo schema implementerà. In questo esempio, la classe base è una classe "Informazioni proprietà" creata in precedenza.

curl -X POST \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas \
  -H 'Authorization: Bearer {ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
        "title":"Property Information",
        "description": "Property-related information.",
        "type": "object",
        "allOf": [
          {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590"
          }
        ]
      }'
Proprietà
Descrizione
allOf
Array di oggetti, con ogni oggetto che fa riferimento a una classe o a un gruppo di campi di cui lo schema implementa i campi. Ogni oggetto contiene una singola proprietà ($ref) il cui valore rappresenta $id della classe o del gruppo di campi che il nuovo schema implementerà. È necessario specificare una classe, con zero o più gruppi di campi aggiuntivi. Nell'esempio precedente, il singolo oggetto nell'array allOf è la classe dello schema.

Risposta

In caso di esito positivo, la risposta restituisce lo stato HTTP 201 (Creato) e un payload contenente i dettagli dello schema appena creato, inclusi $id, meta:altId e version. Questi valori sono di sola lettura e sono assegnati da Schema Registry.

{
    "title": "Property Information",
    "description": "Property-related information.",
    "type": "object",
    "allOf": [
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590"
        }
    ],
    "meta:class": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
    "meta:abstract": false,
    "meta:extensible": false,
    "meta:extends": [
        "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
        "https://ns.adobe.com/xdm/data/record"
    ],
    "meta:containerId": "tenant",
    "imsOrg": "{ORG_ID}",
    "meta:altId": "_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67",
    "meta:xdmType": "object",
    "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/d5cc04eb8d50190001287e4c869ebe67",
    "version": "1.0",
    "meta:resourceType": "schemas",
    "meta:registryMetadata": {
        "repo:createDate": 1552088461236,
        "repo:lastModifiedDate": 1552088461236,
        "xdm:createdClientId": "{CREATED_CLIENT}",
        "xdm:repositoryCreatedBy": "{CREATED_BY}"
    }
}

L'esecuzione di una richiesta GET per elencare tutti gli schemi nel contenitore tenant includerebbe ora il nuovo schema. È possibile eseguire una richiesta di ricerca (GET) utilizzando l'URI $id codificato dall'URL per visualizzare direttamente il nuovo schema.

Per aggiungere campi aggiuntivi a uno schema, è possibile eseguire un'operazione PATCH per aggiungere gruppi di campi agli array allOf e meta:extends dello schema.

Crea uno schema basato su modelli create-model-based-schema

AVAILABILITY
Data Mirror e gli schemi basati su modelli sono disponibili per i titolari di licenze di Campagne orchestrate Adobe Journey Optimizer. Sono disponibili anche come versione limitata per gli utenti di Customer Journey Analytics, a seconda della licenza e dell'abilitazione della funzione. Contatta il tuo rappresentante Adobe per accedere.

Creare uno schema basato su modello effettuando una richiesta POST all'endpoint /schemas. Gli schemi basati su modelli memorizzano dati strutturati in stile relazionale senza classi o gruppi di campi. Definisci i campi direttamente sullo schema e identifica lo schema come basato su modello utilizzando un tag di comportamento logico.

IMPORTANT
Per creare uno schema basato su modello, impostare meta:extends su "https://ns.adobe.com/xdm/data/adhoc-v2". Questo è un identificatore di comportamento logico (non un comportamento fisico o una classe). non fare riferimento a classi o gruppi di campi in allOf e non includere classi o gruppi di campi in meta:extends.

Creare prima lo schema con POST /tenant/schemas. Aggiungere quindi i descrittori richiesti con l'API dei descrittori (POST /tenant/descriptors):

NOTE
Nell'Editor schema dell'interfaccia utente, i descrittori di versione e di marca temporale vengono visualizzati rispettivamente come "Identificatore versione" e "Identificatore marca temporale".
CAUTION
Gli schemi basati su modelli sono non compatibili con gli schemi di unione. Non applicare il tag union a meta:immutableTags quando si utilizzano schemi basati su modelli. Questa configurazione è bloccata nell’interfaccia utente, ma non è attualmente bloccata dall’API. Per ulteriori informazioni sul comportamento dello schema di unione, consulta la guida dell'endpoint Unions.

Formato API

POST /tenant/schemas

Richiesta

curl --request POST \
  --url https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas \
  -H 'Accept: application/vnd.adobe.xed+json' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
  "title": "marketing.customers",
  "type": "object",
  "description": "Schema of the Marketing Customers table.",
  "definitions": {
    "customFields": {
      "type": "object",
      "properties": {
        "customer_id": {
          "title": "Customer ID",
          "description": "Primary key of the customer table.",
          "type": "string",
          "minLength": 1
        },
        "name": {
          "title": "Name",
          "description": "Name of the customer.",
          "type": "string"
        },
        "email": {
          "title": "Email",
          "description": "Email of the customer.",
          "type": "string",
          "format": "email",
          "minLength": 1
        }
      },
      "required": ["customer_id"]
    }
  },
  "allOf": [
    {
      "$ref": "#/definitions/customFields",
      "meta:xdmType": "object"
    }
  ],
  "meta:extends": ["https://ns.adobe.com/xdm/data/adhoc-v2"],
  "meta:behaviorType": "record"
}
'

Proprietà corpo della richiesta

Proprietà
Tipo
Descrizione
title
Stringa
Nome visualizzato dello schema.
description
Stringa
Breve spiegazione dello scopo dello schema.
type
Stringa
Deve essere "object" per gli schemi basati su modelli.
definitions
Oggetto
Contiene gli oggetti a livello di radice che definiscono i campi dello schema.
definitions.<name>.properties
Oggetto
Nomi di campi e tipi di dati.
allOf
Array
Fa riferimento alla definizione dell'oggetto a livello di radice (ad esempio, #/definitions/marketing_customers).
meta:extends
Array
Deve includere "https://ns.adobe.com/xdm/data/adhoc-v2" per identificare lo schema come basato su modello.
meta:behaviorType
Stringa
Imposta su "record". Usa "time-series" solo se abilitato e appropriato.
IMPORTANT
L’evoluzione dello schema per gli schemi basati su modelli segue le stesse regole aggiuntive degli schemi standard. Puoi aggiungere nuovi campi con una richiesta PATCH. Le modifiche, come la ridenominazione o la rimozione di campi, sono consentite solo se nel set di dati non sono stati acquisiti dati.

Risposta

In caso di esito positivo, la richiesta restituisce HTTP 201 (creato) e lo schema creato.

NOTE
Gli schemi basati su modelli non ereditano i campi predefiniti (ad esempio, id, timestamp o eventType). Definisci tutti i campi obbligatori in modo esplicito nello schema.

Risposta di esempio

{
  "$id": "https://ns.adobe.com/<TENANT_ID>/schemas/<SCHEMA_UUID>",
  "meta:altId": "_<SCHEMA_ALT_ID>",
  "meta:resourceType": "schemas",
  "version": "1.0",
  "title": "marketing.customers",
  "description": "Schema of the Marketing Customers table.",
  "type": "object",
  "definitions": {
    "marketing_customers": {
      "type": "object",
      "properties": {
        "customer_id": {
          "title": "Customer ID",
          "description": "Primary key of the customer table.",
          "type": "string",
          "minLength": 1
        },
        "name": {
          "title": "Name",
          "description": "Name of the customer.",
          "type": "string"
        },
        "email": {
          "title": "Email",
          "description": "Email of the customer.",
          "type": "string",
          "format": "email",
          "minLength": 1
        }
      },
      "required": ["customer_id"]
    }
  },
  "allOf": [
    { "$ref": "#/definitions/marketing_customers" }
  ],
  "meta:extends": ["https://ns.adobe.com/xdm/data/adhoc-v2"],
  "meta:behaviorType": "record",
  "meta:containerId": "tenant"
}

Proprietà del corpo della risposta

Proprietà
Tipo
Descrizione
$id
Stringa
URL univoco dello schema creato. Da utilizzare nelle chiamate API successive.
meta:altId
Stringa
Identificatore alternativo dello schema.
meta:resourceType
Stringa
Tipo di risorsa (sempre "schemas").
version
Stringa
Versione dello schema assegnata al momento della creazione.
title
Stringa
Nome visualizzato dello schema.
description
Stringa
Breve spiegazione dello scopo dello schema.
type
Stringa
Il tipo di schema.
definitions
Oggetto
Definisce gli oggetti o i gruppi di campi riutilizzabili utilizzati nello schema. Questo include in genere la struttura dati principale ed è indicato nell'array allOf per definire la directory principale dello schema.
allOf
Array
Specifica l'oggetto principale dello schema facendo riferimento a una o più definizioni (ad esempio, #/definitions/marketing_customers).
meta:extends
Array
Identifica lo schema come basato su modello (adhoc-v2).
meta:behaviorType
Stringa
Tipo di comportamento (record o time-series, se abilitato).
meta:containerId
Stringa
Contenitore in cui è memorizzato lo schema (ad esempio, tenant).

Per aggiungere campi a uno schema basato su modello dopo la creazione, effettuare una richiesta PATCH. Gli schemi basati su modelli non ereditano o evolvono automaticamente. Modifiche strutturali come la ridenominazione o l’eliminazione di campi sono consentite solo se nel set di dati non sono stati acquisiti dati. Una volta che i dati esistono, sono supportate solo modifiche aggiuntive (come l'aggiunta di nuovi campi).

È possibile aggiungere nuovi campi a livello di radice (all'interno della definizione radice o della radice properties), ma non è possibile rimuovere, rinominare o modificare il tipo di campi esistenti.

CAUTION
L’evoluzione dello schema diventa limitata dopo che un set di dati è stato inizializzato utilizzando lo schema. Pianifica in anticipo i nomi e i tipi di campo: una volta acquisiti i dati, non è più possibile eliminare o modificare i campi.

Aggiornare uno schema put

Puoi sostituire un intero schema tramite un’operazione PUT, essenzialmente riscrivendo la risorsa. Quando si aggiorna uno schema tramite una richiesta PUT, il corpo deve includere tutti i campi necessari per creare un nuovo schema in una richiesta POST.

NOTE
Se si desidera aggiornare solo una parte di uno schema anziché sostituirla completamente, vedere la sezione relativa all'aggiornamento di una parte di uno schema.

Formato API

PUT /tenant/schemas/{SCHEMA_ID}
Parametro
Descrizione
{SCHEMA_ID}
meta:altId o $id con codifica URL dello schema che si desidera riscrivere.

Richiesta

La seguente richiesta sostituisce uno schema esistente, modificandone gli attributi title, description e allOf.

curl -X PUT \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67 \
  -H 'Authorization: Bearer {ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
        "title":"Commercial Property Information",
        "description": "Information related to commercial properties.",
        "type": "object",
        "allOf": [
          {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/01b7b1745e8ac4ed1e8784ec91b6afa7"
          }
        ]
      }'

Risposta

In caso di esito positivo, la risposta restituisce i dettagli dello schema aggiornato.

{
    "title":"Commercial Property Information",
    "description": "Information related to commercial properties.",
    "type": "object",
    "allOf": [
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/01b7b1745e8ac4ed1e8784ec91b6afa7"
        }
    ],
    "meta:class": "https://ns.adobe.com/{TENANT_ID}/classes/01b7b1745e8ac4ed1e8784ec91b6afa7",
    "meta:abstract": false,
    "meta:extensible": false,
    "meta:extends": [
        "https://ns.adobe.com/{TENANT_ID}/classes/01b7b1745e8ac4ed1e8784ec91b6afa7",
        "https://ns.adobe.com/xdm/data/record"
    ],
    "meta:containerId": "tenant",
    "imsOrg": "{ORG_ID}",
    "meta:altId": "_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67",
    "meta:xdmType": "object",
    "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/d5cc04eb8d50190001287e4c869ebe67",
    "version": "1.0",
    "meta:resourceType": "schemas",
    "meta:registryMetadata": {
        "repo:createDate": 1552088461236,
        "repo:lastModifiedDate": 1552088470592,
        "xdm:createdClientId": "{CREATED_CLIENT}",
        "xdm:repositoryCreatedBy": "{CREATED_BY}"
    }
}

Aggiornare una parte di uno schema patch

È possibile aggiornare una parte di uno schema utilizzando una richiesta PATCH. Schema Registry supporta tutte le operazioni Patch JSON standard, inclusi add, remove e replace. Per ulteriori informazioni sulla patch JSON, consulta la guida delle API fondamentali.

NOTE
Se desideri sostituire un'intera risorsa con nuovi valori invece di aggiornare singoli campi, consulta la sezione sulla sostituzione di uno schema tramite un'operazione PUT.

Una delle operazioni più comuni di PATCH consiste nell’aggiungere a uno schema gruppi di campi definiti in precedenza, come illustrato nell’esempio seguente.

Formato API

PATCH /tenant/schemas/{SCHEMA_ID}
Parametro
Descrizione
{SCHEMA_ID}
URI $id con codifica URL o meta:altId dello schema che si desidera aggiornare.

Richiesta

La richiesta di esempio seguente aggiunge un nuovo gruppo di campi a uno schema aggiungendo il valore $id del gruppo di campi sia all'array meta:extends che all'array allOf.

Il corpo della richiesta è un array e ogni oggetto elencato rappresenta una modifica specifica di un singolo campo. Ogni oggetto include l'operazione da eseguire (op), il campo in cui deve essere eseguita l'operazione (path) e le informazioni da includere nell'operazione (value).

curl -X PATCH\
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67 \
  -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 '[
        {
          "op": "add",
          "path": "/meta:extends/-",
          "value":  "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
        },
        {
          "op": "add",
          "path": "/allOf/-",
          "value":  {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
          }
        }
      ]'

Risposta

La risposta mostra che entrambe le operazioni sono state eseguite correttamente. Il gruppo di campi $id è stato aggiunto all'array meta:extends e un riferimento ($ref) al gruppo di campi $id ora viene visualizzato nell'array allOf.

{
    "title": "Property Information",
    "description": "Property-related information.",
    "type": "object",
    "allOf": [
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590"
        },
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
        }
    ],
    "meta:class": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
    "meta:abstract": false,
    "meta:extensible": false,
    "meta:extends": [
        "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
        "https://ns.adobe.com/xdm/data/record",
        "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
    ],
    "meta:containerId": "tenant",
    "imsOrg": "{ORG_ID}",
    "meta:altId": "_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67",
    "meta:xdmType": "object",
    "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/d5cc04eb8d50190001287e4c869ebe67",
    "version": "1.1",
    "meta:resourceType": "schemas",
    "meta:registryMetadata": {
        "repo:createDate": 1552088461236,
        "repo:lastModifiedDate": 1552088649634,
        "xdm:createdClientId": "{CREATED_CLIENT}",
        "xdm:repositoryCreatedBy": "{CREATED_BY}"
    }
}

Abilitare uno schema per l’utilizzo in Real-Time Customer Profile union

Per consentire a uno schema di partecipare a Real-Time Customer Profile, è necessario aggiungere un tag union all'array meta:immutableTags dello schema. Per farlo, devi effettuare una richiesta PATCH per lo schema in questione.

IMPORTANT
I tag immutabili sono tag destinati a essere impostati, ma non rimossi.

Formato API

PATCH /tenant/schemas/{SCHEMA_ID}
Parametro
Descrizione
{SCHEMA_ID}
URI $id o meta:altId con codifica URL dello schema che si desidera abilitare.

Richiesta

La richiesta di esempio seguente aggiunge un array meta:immutableTags a uno schema esistente, assegnando all'array un singolo valore stringa di union per abilitarlo per l'utilizzo nel profilo.

curl -X PATCH\
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67 \
  -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 '[
        {
          "op": "add",
          "path": "/meta:immutableTags",
          "value": ["union"]
        }
      ]'

Risposta

In caso di esito positivo, la risposta restituisce i dettagli dello schema aggiornato, mostrando che l'array meta:immutableTags è stato aggiunto.

{
    "title": "Property Information",
    "description": "Property-related information.",
    "type": "object",
    "allOf": [
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590"
        },
        {
            "$ref": "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
        }
    ],
    "meta:class": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
    "meta:abstract": false,
    "meta:extensible": false,
    "meta:extends": [
        "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
        "https://ns.adobe.com/xdm/data/record",
        "https://ns.adobe.com/{TENANT_ID}/mixins/e49cbb2eec33618f686b8344b4597ecf"
    ],
    "meta:containerId": "tenant",
    "imsOrg": "{ORG_ID}",
    "meta:altId": "_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67",
    "meta:xdmType": "object",
    "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/d5cc04eb8d50190001287e4c869ebe67",
    "version": "1.1",
    "meta:resourceType": "schemas",
    "meta:registryMetadata": {
        "repo:createDate": 1552088461236,
        "repo:lastModifiedDate": 1552088649634,
        "xdm:createdClientId": "{CREATED_CLIENT}",
        "xdm:repositoryCreatedBy": "{CREATED_BY}"
    },
    "meta:immutableTags": [
      "union"
    ]
}

Ora puoi visualizzare l’unione per la classe di questo schema per confermare che i campi dello schema sono rappresentati. Per ulteriori informazioni, consulta la guida dell'endpoint Unions.

Eliminare uno schema delete

Talvolta può essere necessario rimuovere uno schema dal registro degli schemi. Questa operazione viene eseguita eseguendo una richiesta DELETE con l’ID schema fornito nel percorso.

Formato API

DELETE /tenant/schemas/{SCHEMA_ID}
Parametro
Descrizione
{SCHEMA_ID}
URI $id con codifica URL o meta:altId dello schema che si desidera eliminare.

Richiesta

curl -X DELETE \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.d5cc04eb8d50190001287e4c869ebe67 \
  -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}'

Risposta

In caso di esito positivo, la risposta restituisce lo stato HTTP 204 (nessun contenuto) e un corpo vuoto.

Puoi confermare l’eliminazione tentando una richiesta di ricerca (GET) nello schema. È necessario includere un'intestazione Accept nella richiesta, ma dovrebbe ricevere lo stato HTTP 404 (Non trovato) perché lo schema è stato rimosso dal registro degli schemi.

recommendation-more-help
62e9ffd9-1c74-4cef-8f47-0d00af32fc07