Samenstelling

In API, worden de beperkte waarden voor een enum gebied vertegenwoordigd door een enum serie, terwijl een meta:enum voorwerp vriendschappelijke vertoningsnamen voor die waarden verstrekt:

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

Voor opsommingsvelden staat het schemaregister niet toe dat meta:enum wordt uitgebreid tot meer dan de waarden in enum , omdat pogingen om tekenreekswaarden buiten deze beperkingen in te voeren, geen validatie zouden doorstaan.

Alternatief, kunt u een koordgebied bepalen dat geen enum serie bevat en slechts het meta:enum voorwerp gebruikt om gesuggereerde waarden aan te duiden:

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

Aangezien de tekenreeks geen enum -array heeft om beperkingen te definiëren, kan de eigenschap meta:enum worden uitgebreid met nieuwe waarden.

Voorgestelde waarden toevoegen aan een standaardveld

Om meta:enum van een standaardkoordgebied uit te breiden, kunt u a vriendschappelijke naambeschrijvervoor het gebied in kwestie in een bepaald schema tot stand brengen.

NOTE
Voorgestelde waarden voor tekenreeksvelden kunnen alleen op schemaniveau worden toegevoegd. Met andere woorden, het uitbreiden van meta:enum van een standaardveld in één schema heeft geen invloed op andere schema's die hetzelfde standaardveld gebruiken.

Het volgende verzoek voegt gesuggereerde waarden aan het standaard eventType gebied (door de klasse XDM ExperienceEventwordt verstrekt) voor het schema toe dat onder sourceSchema wordt geïdentificeerd:

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

Nadat de descriptor is toegepast, reageert de schemaregistratie met het volgende wanneer het schema wordt opgehaald (reactie afgebroken voor ruimte):

{
  "$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"
      }
    }
  }
}
NOTE
Als het standaardveld al waarden onder meta:enum bevat, overschrijven de nieuwe waarden van het descriptorbestand de bestaande velden niet en worden deze toegevoegd:
"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"
   }
}

Voorgestelde waarden voor een aangepast veld beheren

Als u de meta:enum van een aangepast veld wilt beheren, kunt u de bovenliggende klasse, veldgroep of het gegevenstype van het veld bijwerken via een PATCH-aanvraag.

WARNING
In tegenstelling tot standaardvelden heeft het bijwerken van de meta:enum van een aangepast veld invloed op alle andere schema's waarin dat veld wordt gebruikt. Als u geen veranderingen over schema's wilt verspreiden, denk in plaats daarvan na creërend een nieuwe douanemiddel:

Met de volgende aanvraag wordt de meta:enum van een veld voor een "loyaliteitsniveau" bijgewerkt dat door een aangepast gegevenstype wordt verschaft:

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

Na het toepassen van de verandering, antwoordt de Registratie van het Schema met het volgende wanneer het terugwinnen van het schema (reactie beknot voor ruimte):

{
  "$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"
      }
    }
  }
}

Volgende stappen

Deze gids behandelde hoe te om voorgestelde waarden voor koordgebieden in de Registratie API van het Schema te beheren. Zie de gids op bepalend douanegebieden in APIvoor meer informatie over hoe te om verschillende gebiedstypes tot stand te brengen.