类端点

所有Experience Data Model (XDM)架构都必须基于类。 类确定以该类为基础的所有架构都必须包含的公共属性的基本结构,以及哪些架构字段组适用于这些架构。 此外,架构的类确定架构将包含的数据的行为方面,其中有两种类型:

  • 记录:提供有关主题属性的信息。 主体可以是组织,也可以是个人。
  • 时间序列:提供记录主体直接或间接执行操作时的系统快照。
NOTE
有关数据行为类如何影响架构组成的更多信息,请参阅 模式组合基础.

/classes 中的端点 Schema Registry API允许您以编程方式管理体验应用程序中的类。

快速入门

本指南中使用的端点是 Schema Registry API. 在继续之前,请查看 快速入门指南 有关相关文档的链接,请参阅本文档中的示例API调用指南,以及有关成功调用任何Experience PlatformAPI所需的所需标头的重要信息。

检索类列表 list

您可以列出 globaltenant 通过向发出GET请求来容器 /global/classes/tenant/classes,则不会显示任何内容。

NOTE
在列出资源时,架构注册表将结果集限制为300个项目。 要返回超出此限制的资源,必须使用分页参数。 还建议使用其他查询参数来筛选结果并减少返回的资源数。 请参阅以下部分: 查询参数 详细信息,请参阅附录文档。

API格式

GET /{CONTAINER_ID}/classes?{QUERY_PARAMS}
参数
描述
{CONTAINER_ID}
要从中检索类的容器: global 对于Adobe创建的类或 tenant 属于您的组织的类。
{QUERY_PARAMS}
用于筛选结果的可选查询参数。 请参阅 附录文档 以获取可用参数的列表。

请求

以下请求从 tenant 容器,使用 orderby 查询参数,用于按类对类进行排序 title 属性。

curl -X GET \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/classes?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}/classes/01b7b1745e8ac4ed1e8784ec91b6afa7",
      "meta:altId": "_{TENANT_ID}.classes.01b7b1745e8ac4ed1e8784ec91b6afa7",
      "version": "1.0",
      "title": "Hotel"
    },
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/classes/d43b86253676af50da3f671ecdd26ff9",
      "meta:altId": "_{TENANT_ID}.classes.d43b86253676af50da3f671ecdd26ff9",
      "version": "1.1",
      "title": "Property"
    },
    {
      "$id": "https://ns.adobe.com/{TENANT_ID}/classes/366f015dbfea802455fbc46c3b27f771",
      "meta:altId": "_{TENANT_ID}.classes.366f015dbfea802455fbc46c3b27f771",
      "version": "1.0",
      "title": "Subscription"
    }
  ],
  "_page": {
    "orderby": "title",
    "next": null,
    "count": 3
  },
  "_links": {
    "next": null,
    "global_schemas": {
      "href": "https://platform.adobe.io/data/foundation/schemaregistry/global/classes"
    }
  }
}

查找类 lookup

通过在GET请求的路径中包含类的ID,可以查找特定类。

API格式

GET /{CONTAINER_ID}/classes/{CLASS_ID}
参数
描述
{CONTAINER_ID}
容纳要检索的类的容器: global Adobe创建的类或 tenant 属于您组织的类。
{CLASS_ID}
meta:altId 或URL编码 $id 您想要查找的课程的。

请求

以下请求按其检索类 meta:altId 路径中提供的值。

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

响应格式取决于 Accept 标头在请求中发送。 所有查找请求都需要 version 包含在 Accept 标头。 以下各项 Accept 标头可用:

Accept 标头
描述
application/vnd.adobe.xed+json; version=1
原始,替换为 $refallOf,具有标题和描述。
application/vnd.adobe.xed-full+json; version=1
$refallOf 已解决,具有标题和描述。
application/vnd.adobe.xed-notext+json; version=1
原始,替换为 $refallOf,无标题或描述。
application/vnd.adobe.xed-full-notext+json; version=1
$refallOf 已解决,无标题或描述。
application/vnd.adobe.xed-full-desc+json; version=1
$refallOf 已解决,包含描述符。

响应

成功的响应将返回类的详细信息。 返回的字段取决于 Accept 标头在请求中发送。 试验不同的 Accept 标头,用于比较响应并确定哪个标头最适合您的用例。

{
  "$id":"https://ns.adobe.com/{TENANT_ID}/classes/f8bbdc3c49d49eae62d1c17e867230ac3de6b5b63b0615ce",
  "meta:altId":"_{TENANT_ID}.classes.f8bbdc3c49d49eae62d1c17e867230ac3de6b5b63b0615ce",
  "meta:resourceType":"classes",
  "version":"1.1",
  "title":"Hotel",
  "type":"object",
  "description":"Base class for the Hotels schema",
  "definitions":{
    "customFields":{
      "type":"object",
      "properties":{
        "_{TENANT_ID}":{
          "type":"object",
          "properties":{
            "Address":{
              "title":"Address",
              "description":"",
              "isRequired":false,
              "$ref":"https://ns.adobe.com/xdm/common/address",
              "type":"object",
              "meta:xdmType":"object"
            },
            "phoneNumber":{
              "title":"Phone Number",
              "description":"",
              "isRequired":false,
              "$ref":"https://ns.adobe.com/xdm/context/phonenumber",
              "type":"object",
              "meta:xdmType":"object"
            },
            "brand":{
              "title":"Brand",
              "description":"",
              "type":"string",
              "isRequired":false,
              "meta:xdmType":"string"
            },
            "hotelId":{
              "title":"Hotel ID",
              "description":"",
              "type":"string",
              "isRequired":false,
              "meta:xdmType":"string"
            }
          },
          "meta:xdmType":"object"
        }
      },
      "meta:xdmType":"object"
    }
  },
  "allOf":[
    {
      "$ref":"https://ns.adobe.com/xdm/data/record",
      "type":"object",
      "meta:xdmType":"object"
    },
    {
      "$ref":"#/definitions/customFields",
      "type":"object",
      "meta:xdmType":"object"
    }
  ],
  "imsOrg":"{ORG_ID}",
  "meta:extensible":true,
  "meta:abstract":true,
  "meta:extends":[
    "https://ns.adobe.com/xdm/data/record"
  ],
  "meta:xdmType":"object",
  "meta:registryMetadata":{
    "repo:createdDate":1593643258779,
    "repo:lastModifiedDate":1597246362579,
    "xdm:createdClientId":"{CLIENT_ID}",
    "xdm:lastModifiedClientId":"{CLIENT_ID}",
    "xdm:createdUserId":"{USER_ID}",
    "xdm:lastModifiedUserId":"{USER_ID}",
    "eTag":"502f89ee16b8ab2e6b4ea09ecf0ab1e5614907db755051c1f3c65a273001d725",
    "meta:globalLibVersion":"1.15.4"
  },
  "meta:containerId":"tenant",
  "meta:tenantNamespace":"_{TENANT_ID}"
}

创建类 create

您可以在下定义自定义类 tenant POST的容器。

IMPORTANT
根据定义的自定义类构成架构时,您将无法使用标准字段组。 每个字段组定义它们在其中的兼容类 meta:intendedToExtend 属性。 开始定义与新类兼容的字段组后(通过使用 $id 新班的 meta:intendedToExtend 字段),则每次定义实现所定义类的架构时,都将能够重用这些字段组。 请参阅以下章节: 创建字段组创建模式 在其各自的端点指南中了解更多信息。
如果您计划基于实时客户配置文件中的自定义类使用架构,则还必须记住,合并架构仅基于共享同一类的架构构建。 如果您想在另一个类(如)的合并中包含自定义类架构 XDM个人资料 或 XDM ExperienceEvent中,您必须与使用该类的另一个架构建立关系。 请参阅上的教程 在API中的两个架构之间建立关系 了解更多信息。

API格式

POST /tenant/classes

请求

创建(POST)类的请求必须包括 allOf 包含 $ref 更改为以下两个值之一: https://ns.adobe.com/xdm/data/recordhttps://ns.adobe.com/xdm/data/time-series. 这些值表示类所基于的行为(分别表示记录或时间序列)。 有关记录数据与时序数据之间差异的更多信息,请参阅 模式组合基础.

定义类时,还可以在类定义中包含字段组或自定义字段。 这将导致添加字段组和字段包含在实现该类的所有架构中。 以下示例请求定义了一个名为“Property”的类,该类捕获有关公司拥有和运营的不同属性的信息。 它包括 propertyId 每次使用类时要包含的字段。

curl -X POST \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/classes \
  -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",
        "description":"Properties owned and operated by the company.",
        "type":"object",
        "definitions": {
          "property": {
            "properties": {
              "_{TENANT_ID}": {
                "type": "object",
                "properties": {
                  "property": {
                    "title": "Property Information",
                    "type": "object",
                    "description": "Information about different owned and operated properties.",
                    "properties": {
                      "propertyId": {
                        "title": "Property Identification Number",
                        "type": "string",
                        "description": "Unique Property identification number"
                      }
                    }
                  }
                }
              }
            },
            "type": "object"
          }
        },
        "allOf": [
          {
            "$ref": "https://ns.adobe.com/xdm/data/record"
          },
          {
            "$ref": "#/definitions/property"
          }
        ]
      }'
属性
描述
_{TENANT_ID}
TENANT_ID 您的组织的命名空间。 您的组织创建的所有资源都必须包含此资产,以避免与中的其他资源发生冲突。 Schema Registry.
allOf
新类将继承其属性的资源列表。 其中一项 $ref 数组中的对象定义类的行为。 在此示例中,类继承“记录”行为。

响应

成功的响应会返回HTTP状态201(已创建)以及包含新创建类的详细信息(包括 $idmeta:altId、和 version. 这三个值均为只读,由分配 Schema Registry.

{
  "title": "Property",
  "description": "Properties owned and operated by the company.",
  "type": "object",
  "definitions": {
    "property": {
      "properties": {
        "_{TENANT_ID}": {
          "type": "object",
          "properties": {
            "property": {
              "title": "Property Information",
              "type": "object",
              "description": "Information about different owned and operated properties.",
              "properties": {
                "propertyId": {
                  "title": "Property Identification Number",
                  "type": "string",
                  "description": "Unique Property identification number",
                  "meta:xdmType": "string"
                }
              },
              "meta:xdmType": "object"
            }
          },
          "meta:xdmType": "object"
        }
      },
      "type": "object",
      "meta:xdmType": "object"
    }
  },
  "allOf": [
    {
      "$ref": "https://ns.adobe.com/xdm/data/record"
    },
    {
      "$ref": "#/definitions/property"
    }
  ],
  "meta:abstract": true,
  "meta:extensible": true,
  "meta:extends": [
    "https://ns.adobe.com/xdm/data/record"
  ],
  "meta:containerId": "tenant",
  "imsOrg": "{ORG_ID}",
  "meta:altId": "_{TENANT_ID}.classes.19e1d8b5098a7a76e2c10a81cbc99590",
  "meta:xdmType": "object",
  "$id": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
  "version": "1.0",
  "meta:resourceType": "classes",
  "meta:registryMetadata": {
    "repo:createDate": 1552086405448,
    "repo:lastModifiedDate": 1552086405448,
    "xdm:createdClientId": "{CREATED_CLIENT}",
    "xdm:repositoryCreatedBy": "{CREATED_BY}"
  }
}

执行GET请求至 列出所有类tenant 容器现在将包含Property类。 您还可以 执行查找(GET)请求 使用URL编码 $id 直接查看新类。

更新类 put

您可以通过PUT操作替换整个类,实际上就是重写资源。 通过PUT请求更新类时,正文必须包括以下情况下所需的所有字段: 创建新类 在POST请求中。

NOTE
如果只想更新类的一部分而不是完全替换它,请参阅 更新类的一部分.

API格式

PUT /tenant/classes/{CLASS_ID}
参数
描述
{CLASS_ID}
meta:altId 或URL编码 $id 要重写的类的URL。

请求

以下请求重写一个现有类,更改其 descriptiontitle 它的一个领域。

curl -X PUT \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/classes/_{TENANT_ID}.classes.19e1d8b5098a7a76e2c10a81cbc99590 \
  -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",
        "description": "Base class for properties operated by a company.",
        "type": "object",
        "definitions": {
          "property": {
            "properties": {
              "_{TENANT_ID}": {
                "type": "object",
                "properties": {
                  "property": {
                    "title": "Property Information",
                    "type": "object",
                    "description": "Information about different owned and operated properties.",
                    "properties": {
                      "propertyId": {
                        "title": "Property ID",
                        "type": "string",
                        "description": "Unique Property ID string."
                      }
                    }
                  }
                }
              }
            },
            "type": "object"
          }
        },
        "allOf": [
          {
            "$ref": "https://ns.adobe.com/xdm/data/record"
          },
          {
            "$ref": "#/definitions/property"
          }
        ]
      }'

响应

成功的响应将返回已更新类的详细信息。

{
  "title": "Property",
  "description": "Base class for properties operated by a company.",
  "type": "object",
  "definitions": {
    "property": {
      "properties": {
        "_{TENANT_ID}": {
          "type": "object",
          "properties": {
            "property": {
              "title": "Property Information",
              "type": "object",
              "description": "Information about different owned and operated properties.",
              "properties": {
                "propertyId": {
                  "title": "Property ID",
                  "type": "string",
                  "description": "Unique Property ID string",
                  "meta:xdmType": "string"
                }
              },
              "meta:xdmType": "object"
            }
          },
          "meta:xdmType": "object"
        }
      },
      "type": "object",
      "meta:xdmType": "object"
    }
  },
  "allOf": [
    {
      "$ref": "https://ns.adobe.com/xdm/data/record"
    },
    {
      "$ref": "#/definitions/property"
    }
  ],
  "meta:abstract": true,
  "meta:extensible": true,
  "meta:extends": [
    "https://ns.adobe.com/xdm/data/record"
  ],
  "meta:containerId": "tenant",
  "imsOrg": "{ORG_ID}",
  "meta:altId": "_{TENANT_ID}.classes.19e1d8b5098a7a76e2c10a81cbc99590",
  "meta:xdmType": "object",
  "$id": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
  "version": "1.0",
  "meta:resourceType": "classes",
  "meta:registryMetadata": {
    "repo:createDate": 1552086405448,
    "repo:lastModifiedDate": 1552086405448,
    "xdm:createdClientId": "{CREATED_CLIENT}",
    "xdm:repositoryCreatedBy": "{CREATED_BY}"
  }
}

更新类的一部分 patch

您可以使用PATCH请求来更新类的一部分。 此 Schema Registry 支持所有标准JSON修补程序操作,包括 addremove、和 replace. 有关JSON修补程序的详细信息,请参见 API基础知识指南.

NOTE
如果要使用新值替换整个资源,而不是更新各个字段,请参阅 使用PUT操作替换类.

API格式

PATCH /tenant/class/{CLASS_ID}
参数
描述
{CLASS_ID}
URL编码 $id URI或 meta:altId 要更新的类的。

请求

下面的示例请求更新了 description 现有类的,并且 title 它的一个领域。

请求正文采用数组的形式,每个列出的对象表示对单个字段的特定更改。 每个对象都包含要执行的操作(op),应该对哪个字段执行操作(path),以及操作中应包含哪些信息(value)。

curl -X PATCH \
  https://platform.adobe.io/data/foundation/schemaregistry/tenant/classes/_{TENANT_ID}.classes.19e1d8b5098a7a76e2c10a81cbc99590 \
  -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":  "Base class for properties operated by a company."},
        { "op": "replace", "path": "/definitions/property/properties/_{TENANT_ID}/properties/property/properties/propertyId/title", "value": "Unique Property ID string" }
      ]'

响应

响应显示两个操作均已成功执行。 此 description 已更新,以及 titlepropertyId 字段。

{
  "title": "Property",
  "description": "Base class for properties operated by a company.",
  "type": "object",
  "definitions": {
    "property": {
      "properties": {
        "_{TENANT_ID}": {
          "type": "object",
          "properties": {
            "property": {
              "title": "Property Information",
              "type": "object",
              "description": "Information about different owned and operated properties.",
              "properties": {
                "propertyId": {
                  "title": "Property ID",
                  "type": "string",
                  "description": "Unique Property ID string",
                  "meta:xdmType": "string"
                }
              },
              "meta:xdmType": "object"
            }
          },
          "meta:xdmType": "object"
        }
      },
      "type": "object",
      "meta:xdmType": "object"
    }
  },
  "allOf": [
    {
      "$ref": "https://ns.adobe.com/xdm/data/record"
    },
    {
      "$ref": "#/definitions/property"
    }
  ],
  "meta:abstract": true,
  "meta:extensible": true,
  "meta:extends": [
    "https://ns.adobe.com/xdm/data/record"
  ],
  "meta:containerId": "tenant",
  "imsOrg": "{ORG_ID}",
  "meta:altId": "_{TENANT_ID}.classes.19e1d8b5098a7a76e2c10a81cbc99590",
  "meta:xdmType": "object",
  "$id": "https://ns.adobe.com/{TENANT_ID}/classes/19e1d8b5098a7a76e2c10a81cbc99590",
  "version": "1.0",
  "meta:resourceType": "classes",
  "meta:registryMetadata": {
    "repo:createDate": 1552086405448,
    "repo:lastModifiedDate": 1552086405448,
    "xdm:createdClientId": "{CREATED_CLIENT}",
    "xdm:repositoryCreatedBy": "{CREATED_BY}"
  }
}

删除类 delete

有时可能需要从架构注册表中删除类。 这是通过使用路径中提供的类ID执行DELETE请求来完成的。

API格式

DELETE /tenant/classes/{CLASS_ID}
参数
描述
{CLASS_ID}
URL编码 $id URI或 meta:altId 要删除的类的。

请求

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