XDM-velden definiëren in de API voor het schemaregister
Alle velden van het Experience Data Model (XDM) worden gedefinieerd met de standaard JSON Schema beperkingen die van toepassing zijn op hun veldtype, met extra beperkingen voor veldnamen die door Adobe Experience Platform worden afgedwongen. Met de API voor het schemaregister kunt u aangepaste velden in uw schema's definiëren met behulp van indelingen en optionele beperkingen. De XDM gebiedstypes worden blootgesteld door het gebied-vlakke attribuut, meta:xdmType
.
meta:xdmType
is een door het systeem gegenereerde waarde en daarom hoeft u deze eigenschap niet aan de JSON voor uw veld toe te voegen wanneer u de API gebruikt (behalve wanneer aangepaste kaarttypen maken). De beste manier is om JSON-schematypen te gebruiken (zoals string
en integer
) met de toepasselijke minimum/maximum-beperkingen zoals gedefinieerd in de onderstaande tabel.In deze handleiding wordt de juiste opmaak beschreven voor het definiëren van verschillende veldtypen, inclusief die met optionele eigenschappen. Meer informatie over optionele eigenschappen en typespecifieke trefwoorden is beschikbaar via de JSON-schemadocumentatie.
Zoek eerst het gewenste veldtype en gebruik de voorbeeldcode om uw API-aanvraag voor een veldgroep maken of een gegevenstype maken.
String string
String velden worden aangegeven door type: string
.
"sampleField": {
"title": "Sample String Field",
"description": "An example string field.",
"type": "string"
}
U kunt desgewenst beperken welke soorten waarden voor de tekenreeks kunnen worden ingevoerd via de volgende aanvullende eigenschappen:
pattern
: Een regex-patroon dat moet worden beperkt.minLength
: Een minimumlengte voor de tekenreeks.maxLength
: Een maximumlengte voor de tekenreeks.
"sampleField": {
"title": "Sample String Field",
"description": "An example string field with added constraints.",
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2
}
URI uri
URI velden worden aangegeven door type: string
met een format
eigenschap ingesteld op uri
. Er worden geen andere eigenschappen geaccepteerd.
"sampleField": {
"title": "Sample URI Field",
"description": "An example URI field.",
"type": "string",
"format": "uri"
}
Enum enum
Enum velden moeten type: string
, met de in een enum
array:
"sampleField": {
"title": "Sample Enum Field",
"description": "An example enum field.",
"type": "string",
"enum": [
"value1",
"value2",
"value3"
]
}
U kunt klant-onder ogen ziet etiketten voor elke waarde naar keuze verstrekken onder a meta:enum
eigenschap, waarbij elk label met een overeenkomstige waarde onder enum
.
"sampleField": {
"title": "Sample Enum Field",
"description": "An example enum field with customer-facing labels.",
"type": "string",
"enum": [
"value1",
"value2",
"value3"
],
"meta:enum": {
"value1": "Value 1",
"value2": "Value 2",
"value3": "Value 3"
}
}
meta:enum
waarde is niet een opsomming declareren of gegevensvalidatie zelfstandig uitvoeren. In de meeste gevallen worden tekenreeksen onder meta:enum
ook enum
om ervoor te zorgen dat gegevens worden beperkt. Er zijn echter gevallen waarin meta:enum
wordt verstrekt zonder overeenkomstige enum
array. Zie de zelfstudie aan voorgestelde waarden definiëren voor meer informatie .U kunt desgewenst een default
eigenschap om de standaardwaarde aan te geven enum
waarde die het veld zal gebruiken als er geen waarde is opgegeven.
"sampleField": {
"title": "Sample Enum Field",
"description": "An example enum field with customer-facing labels and a default value.",
"type": "string",
"enum": [
"value1",
"value2",
"value3"
],
"meta:enum": {
"value1": "Value 1",
"value2": "Value 2",
"value3": "Value 3"
},
"default": "value1"
}
default
waarde wordt opgegeven en het opsommingsveld wordt ingesteld op required
, wordt een record zonder geaccepteerde waarde voor dit veld niet gevalideerd bij invoer.Number number
Getalvelden worden aangegeven door type: number
en hebben geen andere vereiste eigenschappen.
"sampleField": {
"title": "Sample Number Field",
"description": "An example number field.",
"type": "number"
}
number
typen worden gebruikt voor elk numeriek type, gehele getallen of getallen met drijvende komma, terwijl integer
typen worden specifiek voor integrale getallen gebruikt. Zie de JSON-schemadocumentatie over numerieke typen voor meer informatie over de gebruiksgevallen voor elk type.Integer integer
Integer velden worden aangegeven door type: integer
en hebben geen andere vereiste velden.
"sampleField": {
"title": "Sample Integer Field",
"description": "An example integer field.",
"type": "integer"
}
integer
de types verwijzen specifiek naar integrale aantallen; number
typen worden gebruikt voor numerieke typen, gehele getallen of getallen met drijvende komma. Zie de JSON-schemadocumentatie over numerieke typen voor meer informatie over de gebruiksgevallen voor elk type.U kunt optioneel het bereik van het gehele getal beperken door minimum
en maximum
eigenschappen aan de definitie. Verscheidene andere numerieke types die door de Bouwer UI van het Schema worden gesteund zijn enkel integer
typen met specifieke minimum
en maximum
beperkingen, zoals Long, Short, en Byte.
"sampleField": {
"title": "Sample Integer Field",
"description": "An example integer field with added constraints.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
Long long
Het equivalent van een Long het gebied door de Bouwer van het Schema UI wordt gecreeerd is een integer
tekstveld met specifieke minimum
en maximum
waarden (-9007199254740992
en 9007199254740992
, respectievelijk).
"sampleField": {
"title": "Sample Long Field",
"description": "An example long field.",
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740992
}
Short short
Het equivalent van een Short het gebied door de Bouwer van het Schema UI wordt gecreeerd is een integer
tekstveld met specifieke minimum
en maximum
waarden (-32768
en 32768
, respectievelijk).
"sampleField": {
"title": "Sample Short Field",
"description": "An example short field.",
"type": "integer",
"minimum": -32768,
"maximum": 32768
}
Byte byte
Het equivalent van een Byte het gebied door de Bouwer van het Schema UI wordt gecreeerd is een integer
tekstveld met specifieke minimum
en maximum
waarden (-128
en 128
, respectievelijk).
"sampleField": {
"title": "Sample Byte Field",
"description": "An example byte field.",
"type": "integer",
"minimum": -128,
"maximum": 128
}
Boolean boolean
Boolean velden worden aangegeven door type: boolean
.
"sampleField": {
"title": "Sample Boolean Field",
"description": "An example boolean field.",
"type": "boolean"
}
U kunt desgewenst een default
De waarde die het veld zal gebruiken wanneer tijdens de invoer geen expliciete waarde wordt opgegeven.
"sampleField": {
"title": "Sample Boolean Field",
"description": "An example boolean field with a default value.",
"type": "boolean",
"default": false
}
default
waarde wordt opgegeven en het Booleaanse veld wordt ingesteld op required
, wordt een record zonder geaccepteerde waarde voor dit veld niet gevalideerd bij invoer.Date date
Date velden worden aangegeven door type: string
en format: date
. U kunt desgewenst ook een array van examples
aan hefboomwerking in gevallen waar u een koord van de steekproefdatum voor gebruikers wilt tonen die de gegevens manueel ingaan.
"sampleField": {
"title": "Sample Date Field",
"description": "An example date field with an example array item.",
"type": "string",
"format": "date",
"examples": ["2004-10-23"]
}
DateTime date-time
DateTime velden worden aangegeven door type: string
en format: date-time
. U kunt desgewenst ook een array van examples
aan hefboomwerking in gevallen waar u een steekproefdatetime koord voor gebruikers wilt tonen die de gegevens manueel ingaan.
"sampleField": {
"title": "Sample Datetime Field",
"description": "An example datetime field with an example array item.",
"type": "string",
"format": "date-time",
"examples": ["2004-10-23T12:00:00-06:00"]
}
Array array
Array velden worden aangegeven door type: array
en items
object dat het schema definieert van de items die de array accepteert.
U kunt array-items definiëren met behulp van primitieve typen, zoals een array van tekenreeksen:
"sampleField": {
"title": "Sample Array Field",
"description": "An example array field using a primitive type.",
"type": "array",
"items": {
"type": "string"
}
}
U kunt de arrayitems ook definiëren op basis van een bestaand gegevenstype door te verwijzen naar het $id
van het gegevenstype via een $ref
eigenschap. Het volgende is een array van Payment Item objecten:
"sampleField": {
"title": "Sample Array Field",
"description": "An example array field using a data type reference.",
"type": "array",
"items": {
"$ref": "https://ns.adobe.com/xdm/data/paymentitem"
}
}
Object object
Object velden worden aangegeven door type: object
en properties
object dat subeigenschappen voor het schemaveld definieert.
Elk subveld dat wordt gedefinieerd onder properties
kan worden gedefinieerd met elke primitieve waarde type
of door naar een bestaand gegevenstype te verwijzen via een $ref
eigenschap die naar de $id
van het betrokken gegevenstype:
"sampleField": {
"title": "Sample Object Field",
"description": "An example object field.",
"type": "object",
"properties": {
"field1": {
"type": "string"
},
"field2": {
"$ref": "https://ns.adobe.com/xdm/common/measure"
}
}
}
U kunt ook het gehele object definiëren door naar een gegevenstype te verwijzen, op voorwaarde dat het gegevenstype in kwestie zelf is gedefinieerd als type: object
:
"sampleField": {
"title": "Sample Object Field",
"description": "An example object field using a data type reference.",
"$ref": "https://ns.adobe.com/xdm/common/phoneinteraction"
}
Map map
Een kaartveld is in wezen een object
-type, veld met een onbeperkte set toetsen. Kaarten hebben, net als objecten, een type
waarde van object
, maar meta:xdmType
is expliciet ingesteld op map
.
Een kaart mogen om het even welke eigenschappen bepalen. IT moet één additionalProperties
schema om het type van waarden te beschrijven binnen de kaart (elke kaart kan slechts één enkel gegevenstype bevatten). De type
waarde moet ofwel string
of integer
.
Een kaartveld met tekenreekswaarden wordt bijvoorbeeld als volgt gedefinieerd:
"sampleField": {
"title": "Sample Map Field",
"description": "An example map field.",
"type": "object",
"meta:xdmType": "map",
"additionalProperties": {
"type": "string"
}
}
Zie de onderstaande sectie voor meer informatie over het maken van aangepaste kaartvelden.
Aangepaste toewijzingstypen maken custom-maps
Om "map-als"gegevens efficiënt in XDM te steunen, kunnen de voorwerpen met a worden geannoteerd meta:xdmType
instellen op map
om duidelijk te maken dat een voorwerp zou moeten worden beheerd alsof de belangrijkste reeks onbeperkt was. Gegevens die in kaartvelden worden ingevoerd, moeten tekenreekssleutels gebruiken en alleen tekenreeks- of geheel-getalwaarden (zoals bepaald door additionalProperties.type
).
XDM stelt de volgende beperkingen op het gebruik van deze opslagwenk:
- Type kaart MOET van het type zijn
object
. - Voor typen toewijzingen MOET GEEN eigenschap zijn gedefinieerd (met andere woorden, ze definiëren "lege" objecten).
- Kaarttypen MOETEN een
additionalProperties.type
veld dat de waarden beschrijft die binnen de kaart kunnen worden geplaatst, ofstring
ofinteger
.
Zorg ervoor dat u kaart-type gebieden wanneer absoluut noodzakelijk slechts gebruikt, aangezien zij de volgende prestatiesnadelen dragen:
- Responstijd van Adobe Experience Platform Query Service degradeert van drie seconden tot tien seconden voor 100 miljoen verslagen.
- Kaarten moeten minder dan 16 sleutels hebben of anders risico op verdere afbraak.
De gebruikersinterface van het Platform heeft ook beperkingen in hoe het de sleutels van kaart-type gebieden kan halen. Terwijl objecttekstvelden kunnen worden uitgebreid, worden kaarten als één veld weergegeven.
Volgende stappen
In deze handleiding wordt beschreven hoe u verschillende veldtypen in de API definieert. Zie de handleiding voor meer informatie over de opmaak van XDM-veldtypen Beperkingen voor XDM-veldtypen.