データタイプエンドポイント

データ型は、基本リテラルフィールドと同じ方法で、クラスまたはスキーマフィールドグループの参照タイプフィールドとして使用されます。主な違いは、データ型によって複数のサブフィールドを定義できる点です。 複数フィールド構造を一貫して使用できるという点ではフィールドグループに似ていますが、データタイプは、スキーマ構造の任意の場所に含めることができるのに対して、フィールドグループはルートレベルでのみ追加できるので、より柔軟です。 Schema Registry API の /datatypes エンドポイントを使用すると、エクスペリエンスアプリケーション内のデータタイプをプログラムで管理できます。

NOTE
フィールドが特定のデータタイプとして定義されている場合、同じフィールドを別のスキーマの異なるデータタイプで作成することはできません。 この制約は、組織のテナントに適用されます。

はじめに

このガイドで使用するエンドポイントは、Schema Registry API の一部です。 先に進む前に、はじめる前にを参照し、関連ドキュメントへのリンク、このドキュメントのサンプル API 呼び出しを読み取るためのガイドおよび任意の Experience Platform API を正常に呼び出すために必要なヘッダーに関する重要な情報を確認してください。

データタイプのリストの取得 list

/global/datatypes または /tenant/datatypes に対してそれぞれデータリクエストをおこなうことで、global コンテナまたは tenant コンテナの下のすべてのGETタイプをリストできます。

NOTE
リソースをリストする場合、スキーマレジストリでは結果セットを 300 項目に制限しています。 この制限を超えるリソースを返すには、ページングパラメーターを使用する必要があります。 また、追加のクエリパラメーターを使用して結果をフィルタリングし、返されるリソースの数を減らすこともお勧めします。 詳しくは、付録のドキュメントの クエリパラメーターに関する節を参照してください。

API 形式

GET /{CONTAINER_ID}/datatypes?{QUERY_PARAMS}
パラメーター
説明
{CONTAINER_ID}
取得するデータタイプのコンテナ:Adobeが作成したデータタイプの場合は global、組織が所有するデータタイプの場合は tenant
{QUERY_PARAMS}
結果をフィルタリングするオプションのクエリパラメーター。 使用可能なパラメーターのリストについては、 付録ドキュメントを参照してください。

リクエスト

次のリクエストは、orderby クエリパラメーターを使用してデータ型を title 属性で並べ替え、tenant コンテナからデータ型のリストを取得します。

curl -X GET \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes?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}'

応答の形式は、リクエストで送信される Accept ヘッダーによって異なります。 データタイプのリストに使用できる Accept ヘッダーは次のとおりです。

Accept ヘッダー
説明
application/vnd.adobe.xed-id+json
各リソースの短い概要を返します。 リソースをリストする場合は、このヘッダーをお勧めします。 (上限:300)
application/vnd.adobe.xed+json
各リソースの完全な JSON データタイプを返します。元の $refallOf が含まれます。 (上限:300)

応答

上記のリクエストでは application/vnd.adobe.xed-id+json Accept ヘッダーを使用しているので、応答には各データタイプの title$idmeta:altId および version 属性のみが含まれています。 もう一方の Accept ヘッダー(application/vnd.adobe.xed+json)を使用すると、各データタイプのすべての属性が返されます。 応答で必要な情報に応じて、適切な Accept ヘッダーを選択します。

{
  "results": [
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/78570e371092c032260714dd8bfd6d44",
      "meta:altId": "_{TENANT_ID}.datatypes.78570e371092c032260714dd8bfd6d44",
      "version": "1.0",
      "title": "Loyalty"
    },
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/4b0329b5573cbb7cb757db667d7fdf66",
      "meta:altId": "_{TENANT_ID}.datatypes.4b0329b5573cbb7cb757db667d7fdf66",
      "version": "1.0",
      "title": "Property Details"
    }
  ],
  "_page": {
    "orderby": "title",
    "next": null,
    "count": 2
  },
  "_links": {
    "next": null,
    "global_schemas": {
      "href": "https://platform.adobe.io/data/foundation/schemaregistry/global/datatypes?orderby=title"
    }
  }
}

データタイプの検索 lookup

データリクエストのパスにデータタイプの ID を含めることで、特定のGETタイプを検索できます。

API 形式

GET /{CONTAINER_ID}/datatypes/{DATA_TYPE_ID}
パラメーター
説明
{CONTAINER_ID}
取得するデータタイプを格納するコンテナ:Adobeが作成したデータタイプの場合は global、組織が所有するデータタイプの場合は tenant
{DATA_TYPE_ID}
検索するデータ型の meta:altId または URL エンコードされた $id

リクエスト

次のリクエストは、パスで指定された meta:altId 値によってデータタイプを取得します。

curl -X GET \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes/_{TENANT_ID}.datatypes.78570e371092c032260714dd8bfd6d44 \
  -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}'

応答の形式は、リクエストで送信される Accept ヘッダーによって異なります。 すべての参照リクエストには、Accept ヘッダーに version を含める必要があります。 次の Accept ヘッダーを使用できます。

Accept ヘッダー
説明
application/vnd.adobe.xed+json; version=1
$ref および allOf で生、タイトルと説明を含む
application/vnd.adobe.xed-full+json; version=1
$ref および allOf を解決、タイトルと説明を含む
application/vnd.adobe.xed-notext+json; version=1
$ref および allOf で生、タイトルや説明なし
application/vnd.adobe.xed-full-notext+json; version=1
$ref および allOf で解決、タイトルや説明なし
application/vnd.adobe.xed-full-desc+json; version=1
$ref および allOf で解決、説明を含む

応答

応答が成功すると、データタイプの詳細が返されます。 返されるフィールドは、リクエストで送信される Accept ヘッダーによって異なります。 様々な Accept ヘッダーを試して、応答を比較し、ユースケースに最適なヘッダーを判断します。

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/78570e371092c032260714dd8bfd6d44",
  "meta:altId": "_{TENANT_ID}.datatypes.78570e371092c032260714dd8bfd6d44",
  "meta:resourceType": "datatypes",
  "version": "1.0",
  "title": "Loyalty",
  "type": "object",
  "description": "Loyalty object containing loyalty-specific fields.",
  "definitions": {
    "customFields": {
      "properties": {
        "loyaltyId": {
          "title": "Loyalty ID",
          "description": "Unique loyalty program member ID. Should be in the format of an email address.",
          "type": "string",
          "meta:xdmType": "string"
        },
        "memberSince": {
          "title": "Member Since",
          "description": "Date person joined loyalty program.",
          "type": "string",
          "format": "date",
          "meta:xdmType": "date"
        },
        "points": {
          "title": "Points",
          "description": "Accumulated loyalty points",
          "type": "integer",
          "meta:xdmType": "int"
        },
        "loyaltyLevel": {
          "title": "Loyalty Level",
          "description": "The current loyalty program level to which the individual member belongs.",
          "type": "string",
          "enum": [
            "platinum",
            "gold",
            "silver",
            "bronze"
          ],
          "meta:enum": {
            "platinum": "Platinum",
            "gold": "Gold",
            "silver": "Silver",
            "bronze": "Bronze"
          },
          "meta:xdmType": "string"
        }
      },
      "type": "object",
      "meta:xdmType": "object"
    }
  },
  "allOf": [
    {
      "$ref": "#/definitions/customFields"
    }
  ],
  "imsOrg": "{ORG_ID}",
  "meta:extensible": true,
  "meta:abstract": true,
  "meta:xdmType": "object",
  "meta:registryMetadata": {
    "repo:createdDate": 1557529442681,
    "repo:lastModifiedDate": 1557529442681,
    "xdm:createdClientId": "{CLIENT_ID}",
    "xdm:lastModifiedClientId": "{CLIENT_ID}",
    "xdm:lastModifiedUserId": "{USER_ID}",
    "eTag": "50b8008b588e911314f9685240dd4c23a247f37179a6d9ff6ba3877dc11ca504",
    "meta:globalLibVersion": "1.15.4"
  },
  "meta:containerId": "tenant",
  "meta:tenantNamespace": "_{TENANT_ID}"
}

データタイプの作成 create

POSTのリクエストを行うことで、tenant コンテナの下にカスタムデータタイプを定義できます。

API 形式

POST /tenant/datatypes

リクエスト

フィールドグループとは異なり、データタイプを定義するのに meta:extends フィールドや meta:intendedToExtend フィールドは必要なく、競合を避けるためにフィールドをネストする必要もありません。

データタイプ自体のフィールド構造を定義する場合は、プリミティブ型(stringobject など)を使用するか、$ref 属性を使用して他の既存のデータタイプを参照できます。 様々な XDM フィールドタイプで想定される形式に関する詳細なガイダンスについては、API でのカスタム XDM フィールドの定義に関するガイドを参照してください。

次のリクエストは、サブプロパティ yearBuiltpropertyType、および location を持つ「Property Construction」オブジェクト データ タイプを作成します。

curl -X POST \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes \
  -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 Construction",
        "description": "Information related to the property construction",
        "type": "object",
        "properties": {
          "yearBuilt": {
            "type": "integer",
            "title": "Year Built",
            "description": "The year the property was constructed."
          },
          "propertyType": {
            "type": "string",
            "title": "Property Type",
            "description": "Type of building or structure in which the property exists.",
            "enum": [
              "freeStanding",
              "mall",
              "shoppingCenter"
            ],
            "meta:enum": {
              "freeStanding": "Free Standing Building",
              "mall": "Mall Space",
              "shoppingCenter": "Shopping Center"
            }
          },
          "location": {
            "title": "Location",
            "description": "The physical location of the property.",
            "$ref": "https://ns.adobe.com/xdm/common/address"
          }
        }
      }'

応答

正常な応答は、HTTP ステータス 201(作成済み)と、新しく作成されたデータタイプの詳細($idmeta:altIdversionを含む)を含むペイロードを返します。これら 3 つの値は読み取り専用で、Schema Registry によって割り当てられます。

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/669ffcc61cf5e94e8640dbe6a15f0f24eb3cd1ddbbfb6b36",
  "meta:altId": "_{TENANT_ID}.datatypes.669ffcc61cf5e94e8640dbe6a15f0f24eb3cd1ddbbfb6b36",
  "meta:resourceType": "datatypes",
  "version": "1.0",
  "title": "Property Construction",
  "type": "object",
  "description": "Information related to the property construction",
  "properties": {
    "yearBuilt": {
      "type": "integer",
      "title": "Year Built",
      "description": "The year the property was constructed.",
      "meta:xdmType": "int"
    },
    "propertyType": {
      "type": "string",
      "title": "Property Type",
      "description": "Type of building or structure in which the property exists.",
      "enum": [
        "freeStanding",
        "mall",
        "shoppingCenter"
      ],
      "meta:enum": {
        "freeStanding": "Free Standing Building",
        "mall": "Mall Space",
        "shoppingCenter": "Shopping Center"
      },
      "meta:xdmType": "string"
    },
    "location": {
      "title": "Location",
      "description": "The physical location of the property.",
      "$ref": "https://ns.adobe.com/xdm/common/address",
      "type": "object",
      "meta:xdmType": "object"
    }
  },
  "refs": [
    "https://ns.adobe.com/xdm/common/address"
  ],
  "imsOrg": "{ORG_ID}",
  "meta:extensible": true,
  "meta:abstract": true,
  "meta:xdmType": "object",
  "meta:registryMetadata": {
    "repo:createdDate": 1670885230789,
    "repo:lastModifiedDate": 1670885230789,
    "xdm:createdClientId": "{CLIENT_ID}",
    "xdm:lastModifiedClientId": "{CLIENT_ID}",
    "xdm:createdUserId": "{USER_ID}",
    "xdm:lastModifiedUserId": "{USER_ID}",
    "eTag": "d3cc803a1f8daa06b7c150d882bd337d88f4d5d5f08d36cfc4c2849dc0255f7e",
    "meta:globalLibVersion": "1.38.3.1"
  },
  "meta:containerId": "tenant",
  "meta:sandboxId": "1bd86660-c5da-11e9-93d4-6d5fc3a66a8e",
  "meta:sandboxType": "production",
  "meta:tenantNamespace": "_{TENANT_ID}"
}

テナントコンテナで すべてのGET型をリストする」というデータリクエストを実行すると、プロパティの詳細データタイプが含まれるようになりました。または、URL エンコードされた $id URI を使用して 検索(GET)リクエストを実行し、新しいデータタイプを直接表示できます。

データタイプの更新 put

PUT操作(基本的にリソースの書き換え)を実行して、データタイプ全体を置き換えることができます。 PUTリクエストを通じてデータタイプを更新する場合、本文は、POSTリクエストで 新しいデータタイプの作成を行う際に必要なすべてのフィールドを含める必要があります。

NOTE
データタイプを完全に置き換えるのではなく、一部のみを更新する場合は、 データタイプの一部の更新の節を参照してください。

API 形式

PUT /tenant/datatypes/{DATA_TYPE_ID}
パラメーター
説明
{DATA_TYPE_ID}
再書き込みするデータタイプの meta:altId または URL エンコードされた $id

リクエスト

次のリクエストでは、既存のデータタイプを書き換え、新しい floorSize フィールドを追加しています。

curl -X PUT \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes/_{TENANT_ID}.datatypes.7602bc6e97e5786a31c95d9e6531a1596687433451d97bc1 \
  -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 Construction",
        "description": "Information related to the property construction",
        "type": "object",
        "properties": {
          "yearBuilt": {
            "type": "integer",
            "title": "Year Built",
            "description": "The year the property was constructed."
          },
          "propertyType": {
            "type": "string",
            "title": "Property Type",
            "description": "Type of building or structure in which the property exists.",
            "enum": [
              "freeStanding",
              "mall",
              "shoppingCenter"
            ],
            "meta:enum": {
              "freeStanding": "Free Standing Building",
              "mall": "Mall Space",
              "shoppingCenter": "Shopping Center"
            }
          },
          "floorSize" {
            "type": "integer",
            "title": "Floor Size",
            "description": "The floor size of the property, in square feet."
          }
        }
      }'

応答

応答が成功すると、更新されたデータタイプの詳細が返されます。

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/7602bc6e97e5786a31c95d9e6531a1596687433451d97bc1",
  "meta:altId": "_{TENANT_ID}.datatypes.7602bc6e97e5786a31c95d9e6531a1596687433451d97bc1",
  "meta:resourceType": "datatypes",
  "version": "1.0",
  "title": "Property Construction",
  "type": "object",
  "description": "Information related to the property construction",
  "properties": {
    "yearBuilt": {
      "type": "integer",
      "title": "Year Built",
      "description": "The year the property was constructed.",
      "meta:xdmType": "int"
    },
    "propertyType": {
      "type": "string",
      "title": "Property Type",
      "description": "Type of building or structure in which the property exists.",
      "enum": [
        "freeStanding",
        "mall",
        "shoppingCenter"
      ],
      "meta:enum": {
        "freeStanding": "Free Standing Building",
        "mall": "Mall Space",
        "shoppingCenter": "Shopping Center"
      },
      "meta:xdmType": "string"
    },
    "floorSize" {
      "type":  "integer",
      "title":  "Floor Size",
      "description":  "The floor size of the property, in square feet.",
      "meta:xdmType": "int"
    }
  },
  "refs": [],
  "imsOrg": "{ORG_ID}",
  "meta:extensible": true,
  "meta:abstract": true,
  "meta:xdmType": "object",
  "meta:registryMetadata": {
    "repo:createdDate": 1604524729435,
    "repo:lastModifiedDate": 1604524729435,
    "xdm:createdClientId": "{CLIENT_ID}",
    "xdm:lastModifiedClientId": "{CLIENT_ID}",
    "xdm:createdUserId": "{USER_ID}",
    "xdm:lastModifiedUserId": "{USER_ID}",
    "eTag": "1c838764342756868ca1297869f582a38d15f03ed0acfc97fda7532d22e942c7",
    "meta:globalLibVersion": "1.15.4"
  },
  "meta:containerId": "tenant",
  "meta:sandboxId": "ff0f6870-c46d-11e9-8ca3-036939a64204",
  "meta:sandboxType": "production",
  "meta:tenantNamespace": "_{TENANT_ID}"
}

データタイプの一部を更新 patch

PATCHリクエストを使用して、データタイプの一部を更新できます。 Schema Registry は、addremovereplace など、標準の JSON パッチ操作をすべてサポートしています。 JSON パッチについて詳しくは、API の基本ガイドを参照してください。

NOTE
個々のフィールドを更新する代わりに、リソース全体を新しい値で置き換える場合は、PUTを使用したデータ型の置き換えの節を参照してください。

API 形式

PATCH /tenant/data type/{DATA_TYPE_ID}
パラメーター
説明
{DATA_TYPE_ID}
更新するデータタイプの URL エンコードされた $id URI または meta:altId

リクエスト

次のリクエスト例では、既存のデータタイプの description を更新し、新しい floorSize フィールドを追加します。

リクエスト本文は配列の形式をとり、リストされた各オブジェクトは、個々のフィールドに対する特定の変更を表します。 各オブジェクトには、実行する操作(op)、操作を実行するフィールド(path)、その操作に含める情報(value)が含まれます。

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": "/description",
          "value": "Construction-related information for a company-operated property."
        },
        {
          "op": "add",
          "path": "/properties/floorSize",
          "value": {
            "type": "integer",
            "title": "Floor Size",
            "description": "The floor size of the property, in square feet."
          }
        }
      ]'

応答

応答には、両方の操作が正常に実行されたことが示されます。description が更新され、definitionsfloorSize が追加されました。

{
  "$id": "https://ns.adobe.com/{TENANT_ID}/datatypes/8779fd45d6e4eb074300023a439862bbba359b60d451627a",
  "meta:altId": "_{TENANT_ID}.datatypes.8779fd45d6e4eb074300023a439862bbba359b60d451627a",
  "meta:resourceType": "datatypes",
  "version": "1.2",
  "title": "Property Details",
  "type": "object",
  "description": "Details relating to a property operated by the company.",
  "definitions": {
    "property": {
      "properties": {
        "_{TENANT_ID}": {
        "type": "object",
        "properties": {
            "propertyName": {
              "type": "string",
              "title": "Property Name",
              "description": "Name of the property"
            },
            "propertyCity": {
              "title": "Property City",
              "description": "City where the property is located.",
              "type": "string"
            },
            "propertyCountry": {
              "title": "Property Country",
              "description": "Country where the property is located.",
              "type": "string"
            },
            "phoneNumber": {
              "title": "Phone Number",
              "description": "Primary phone number for the property.",
              "type": "string"
            },
            "propertyType": {
              "type": "string",
              "title": "Property Type",
              "description": "Type and primary use of property.",
              "enum": [
                  "retail",
                  "yoga",
                  "fitness"
              ],
              "meta:enum": {
                  "retail": "Retail Store",
                  "yoga": "Yoga Studio",
                  "fitness": "Fitness Center"
              }
            },
            "propertyConstruction": {
              "$ref": "https://ns.adobe.com/{TENANT_ID}/datatypes/24c643f618647344606222c494bd0102"
            }
          }
        }
      }
    }
  },
  "allOf": [
    {
      "$ref": "#/definitions/customFields",
      "type": "object",
      "meta:xdmType": "object"
    }
  ],
  "imsOrg": "{ORG_ID}",
  "meta:extensible": true,
  "meta:abstract": true,
  "meta:intendedToExtend": [
    "https://ns.adobe.com/xdm/context/profile"
  ],
  "meta:xdmType": "object",
  "meta:registryMetadata": {
    "repo:createdDate": 1594941263588,
    "repo:lastModifiedDate": 1594941538433,
    "xdm:createdClientId": "{CLIENT_ID}",
    "xdm:lastModifiedClientId": "{CLIENT_ID}",
    "xdm:createdUserId": "{USER_ID}",
    "xdm:lastModifiedUserId": "{USER_ID}",
    "eTag": "5e8a5e508eb2ed344c08cb23ed27cfb60c841bec59a2f7513deda0f7af903021",
    "meta:globalLibVersion": "1.15.4"
  },
  "meta:containerId": "tenant",
  "meta:tenantNamespace": "_{TENANT_ID}"
}

データタイプの削除 delete

場合によっては、スキーマレジストリからデータタイプを削除する必要があります。 これを行うには、パスで指定されたデータタイプ ID を使用してDELETEリクエストを実行します。

API 形式

DELETE /tenant/datatypes/{DATA_TYPE_ID}
パラメーター
説明
{DATA_TYPE_ID}
削除するデータタイプの URL エンコードされた $id URI または meta:altId

リクエスト

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

応答

リクエストが成功した場合は、HTTP ステータス 204(コンテンツなし)が空白の本文とともに返されます。

削除を確認するには、データタイプに対して ルックアップ(GET)リクエストを試みます。 リクエストには Accept ヘッダーを含める必要がありますが、データタイプがスキーマレジストリから削除されたので、HTTP ステータス 404 (見つかりません)を受け取ります。

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