Hantera föreslagna värden i API

För alla strängfält i Experience Data Model (XDM) kan du definiera en enum som begränsar de värden som fältet kan importera till en fördefinierad uppsättning. Om du försöker importera data till ett uppräkningsfält och värdet inte matchar någon av dem som definierats i konfigurationen, nekas intag.

I motsats till enum lägger du till föreslagna värden till ett strängfält begränsar inte de värden som kan importeras. Föreslagna värden påverkar i stället vilka fördefinierade värden som är tillgängliga i Segmenteringsgränssnitt när strängfältet inkluderas som ett attribut.

OBSERVERA

Det finns en fördröjning på ungefär fem minuter för ett fälts uppdaterade föreslagna värden som ska återspeglas i segmenteringsgränssnittet.

Den här guiden beskriver hur du hanterar föreslagna värden med API för schemaregister. Anvisningar om hur du gör detta i användargränssnittet i Adobe Experience Platform finns i Användargränssnittsguide för uppräkningar och föreslagna värden.

Förutsättningar

I den här handboken förutsätts du känna till elementen i schemakompositionen i XDM och hur du använder API:t för schemaregister för att skapa och redigera XDM-resurser. Om du behöver en introduktion läser du i följande dokumentation:

Vi rekommenderar att du läser Utvecklingsregler för enum och föreslagna värden om du uppdaterar befintliga fält. Om du hanterar föreslagna värden för scheman som ingår i en union kan du läsa regler för att sammanfoga fasttext och föreslagna värden.

Disposition

I API:t är de begränsade värdena för enum fältet representeras av ett enum array, while a meta:enum -objektet innehåller egna visningsnamn för dessa värden:

"exampleStringField": {
  "type": "string",
  "enum": [
    "value1",
    "value2",
    "value3"
  ],
  "meta:enum": {
    "value1": "Value 1",
    "value2": "Value 2",
    "value3": "Value 3"
  },
  "default": "value1"
}

För uppräkningsfält tillåts inte schemaregistret meta:enum att utsträckas utöver de värden som anges i enum, eftersom ett försök att importera strängvärden utanför dessa begränsningar inte godkänns i valideringen.

Du kan också definiera ett strängfält som inte innehåller ett enum -arrayen och använder bara meta:enum objekt att ange föreslagna värden:

"exampleStringField": {
  "type": "string",
  "meta:enum": {
    "value1": "Value 1",
    "value2": "Value 2",
    "value3": "Value 3"
  },
  "default": "value1"
}

Eftersom strängen inte har en enum matris för att definiera begränsningar, dess meta:enum kan utökas så att den innehåller nya värden.

Lägga till föreslagna värden i ett standardfält

Utöka meta:enum av ett standardsträngfält kan du skapa egen namnbeskrivning för fältet i fråga i ett visst schema.

OBSERVERA

Föreslagna värden för strängfält kan bara läggas till på schemanivå. Med andra ord, utöka meta:enum för ett standardfält i ett schema påverkar inte andra scheman som använder samma standardfält.

Följande begäran lägger till föreslagna värden i standarden eventType fält (tillhandahålls av Klassen XDM ExperienceEvent) för det schema som identifieras under sourceSchema:

curl -X POST \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/descriptors \
  -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 '{
        "@type": "xdm:alternateDisplayInfo",
        "sourceSchema": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
        "sourceProperty": "/eventType",
        "title": {
            "en_us": "Enum Event Type"
        },
        "description": {
            "en_us": "Event type field with soft enum values"
        },
        "meta:enum": {
          "eventA": {
            "en_us": "Event Type A"
          },
          "eventB": {
            "en_us": "Event Type B"
          }
        }
      }'

När du har använt beskrivningen svarar schemaregistret med följande när schemat hämtas (svaret trunkeras för utrymme):

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
  "title": "Example Schema",
  "properties": {
    "eventType": {
      "type":"string",
      "title": "Enum Event Type",
      "description": "Event type field with soft enum values.",
      "meta:enum": {
        "customEventA": "Custom Event Type A",
        "customEventB": "Custom Event Type B"
      }
    }
  }
}
OBSERVERA

Om standardfältet redan innehåller värden under meta:enumskriver inte de nya värdena från beskrivningen över de befintliga fälten och läggs till i stället:

"standardField": {
   "type":"string",
   "title": "Example standard enum field",
   "description": "Standard field with existing enum values.",
   "meta:enum": {
       "standardEventA": "Standard Event Type A",
       "standardEventB": "Standard Event Type B",
       "customEventA": "Custom Event Type A",
       "customEventB": "Custom Event Type B"
   }
}

Hantera föreslagna värden för ett anpassat fält

Hantera meta:enum för ett anpassat fält kan du uppdatera fältets överordnade klass, fältgrupp eller datatyp genom en PATCH-begäran.

VARNING

I motsats till standardfält uppdaterar du meta:enum för ett anpassat fält påverkar alla andra scheman som använder det fältet. Om du inte vill att ändringarna ska spridas över olika scheman kan du skapa en ny anpassad resurs i stället:

Följande begäran uppdaterar meta:enum av ett fält för"lojalitetsnivå" som tillhandahålls av en anpassad datatyp:

curl -X PATCH \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes/_{TENANT_ID}.datatypes.8779fd45d6e4eb074300023a439862bbba359b60d451627a \
  -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": "replace",
          "path": "/loyaltyLevel/meta:enum",
          "value": {
            "ultra-platinum": "Ultra Platinum",
            "platinum": "Platinum",
            "gold": "Gold",
            "silver": "Silver",
            "bronze": "Bronze"
          }
        }
      ]'

När ändringen har tillämpats svarar schemaregistret med följande när schemat hämtas (svaret trunkeras för utrymme):

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
  "title": "Example Schema",
  "properties": {
    "loyaltyLevel": {
      "type":"string",
      "title": "Loyalty Level",
      "description": "The loyalty program tier that this customer qualifies for.",
      "meta:enum": {
        "ultra-platinum": "Ultra Platinum",
        "platinum": "Platinum",
        "gold": "Gold",
        "silver": "Silver",
        "bronze": "Bronze"
      }
    }
  }
}

Nästa steg

I den här guiden beskrivs hur du hanterar föreslagna värden för strängfält i API:t för schemaregister. Se guiden definiera anpassade fält i API om du vill ha mer information om hur du skapar olika fälttyper.

På denna sida