数据摄取API

数据摄取API是一种高容量、低延迟、高度可用的服务,旨在以最小的延迟有效处理大量与人员和人员相关的数据摄取。

通过提交异步执行的请求来摄取数据。 通过订阅Marketo可观察性数据流中的事件,可以检索请求状态。

界面提供四种对象类型:人员、自定义对象、公司和程序成员。 该记录操作仅限“插入或更新”,但同时支持删除的程序成员除外。

NOTE
访问数据摄取API需要有权访问Marketo Engage性能层包。

身份验证

数据摄取API使用与Marketo REST API相同的OAuth 2.0身份验证方法来生成访问令牌,但必须通过HTTP标头X-Mkto-User-Token传递访问令牌。 您不能通过查询参数传递访问令牌。

通过标头访问令牌示例:

X-Mkto-User-Token: 11606815-aa7a-405a-80a1-f9683efa528b:ab

权限

数据摄取使用与Marketo REST API相同的权限模型,无需任何其他特殊权限即可使用,不过每个端点需要特定权限。

终结点
权限
人员
读写潜在客户
自定义对象
读写自定义对象
公司
读写公司
计划成员
读写潜在客户

支持的对象类型

对象类型
支持的操作
人员
更新插入(插入或更新)
自定义对象
更新插入(插入或更新)
公司
同步(createOnlyupdateOnlycreateOrUpdate)
计划成员
同步(更新插入状态)、删除(从程序中删除)

标头

数据摄取使用以下自定义HTTP标头。

请求

必需
描述
X-Correlation-Id
任意字符串(最大长度255个字符)。
可用于跟踪系统中的请求。 请参阅Marketo可观察性数据流
X-Request-Source
任意字符串(最大长度50个字符)。
可用于跟踪通过系统的请求源。 请参阅Marketo可观察性数据流

响应

必需
X-Request-Id
唯一请求ID。

请求

使用HTTP POST方法将数据发送到服务器。

数据表示以application/json形式包含在请求正文中。

域名是: mkto-ingestion-api.adobe.io

路径以/subscriptions/MunchkinId开头,其中MunchkinId特定于您的Marketo实例。 您可以在Marketo Engage UI中的​管理员 > 我的帐户 > 支持信息​下找到您的Munchkin ID。 路径的其余部分用于指定感兴趣的资源。

人员示例URL:

https://mkto-ingestion-api.adobe.io/subscriptions/556-RJS-213/persons

自定义对象的示例URL:

https://mkto-ingestion-api.adobe.io/subscriptions/556-RJS-213/customobjects/purchases

公司的示例URL:

https://mkto-ingestion-api.adobe.io/subscriptions/556-RJS-213/companies

项目群成员的示例URL:

https://mkto-ingestion-api.adobe.io/subscriptions/556-RJS-213/programmembers

响应

所有响应都通过X-Request-Id标头返回唯一的请求ID。

通过标头发送的请求ID示例:

X-Request-Id: WOUBf3fHJNU6sTmJqLL281lOmAEpMZFw

成功

呼叫成功后,将返回202状态。 未返回响应正文。

成功响应示例:

HTTP/1.1 202 Accepted
X-Request-Id: e3d92152-0fb1-444a-8f8f-29d5a2338598
Content-Length: 0
Date: Wed, 18 Oct 2023 18:56:49 GMT

错误

当调用产生错误时,会返回非202状态以及包含其他错误详细信息的响应正文。 响应正文为application/json,并包含一个包含成员error_code和message的对象。

以下是Adobe Developer Gateway中可重复使用的错误代码。

HTTP状态代码
error_code
条消息
401
401013
Oauth令牌无效
403
403010
缺少Oauth令牌
404
404040
未找到资源
429
429001
达到服务使用限制

以下是数据摄取API特有的错误代码,由3个区段组成。 前三位是状态(由Adobe Developer Gateway返回),后跟零“0”,后跟三位。

HTTP状态代码
error_code
条消息
400
4000801
请求无效
400
4000802
数据无效
403
4030801
未授权
429
4290801
已达到每日配额
500
5000801
内部服务器错误

重试

检测到临时错误时,服务将重试操作三次。 第一次重试在5分钟的等待时段后发生,第二次在30分钟后发生,最后第三次在30分钟后发生。 重试有多种原因,主要是在从属服务超时或暂时不可用时。

端点

引入端点适用于人员、自定义对象、公司和项目群成员。

人员

用于更新插入人员记录的端点。

方法
路径
POST
/subscriptions/{munchkinId}/person

标头

Content-Type
application/json
X-Mkto-User-Token

请求正文

数据类型
必需
默认值
priority
字符串
请求的优先级:正常或高
普通
partitionName
字符串
人员分区的名称
默认
dedupeFields
对象
要消除重复的属性。 允许一个或两个属性名称。
在AND操作中使用两个属性。 例如,如果同时指定了emailfirstName,则它们都用于使用AND操作查找人员。
支持的属性包括: idemailsfdcAccountIdsfdcContactIdsfdcLeadId sfdcLeadOwnerId、自定义属性(仅限“字符串”和“整数”类型)、email
persons
对象数组
人员的属性名称 — 值对列表
-

所需的权限为Read-Write Lead

人员示例

请求

POST /subscriptions/{munchkinId}/persons

标头

Content-Type: application/json
X-Mkto-User-Token: {accessToken}

正文

{
   "priority": "high",
   "partitionName": "EMEA",
   "dedupeFields": {
      "field1": "email",
      "field2": "firstName"
   },
   "persons":[
      {
         "email": "brooklyn.parker@karnv.com",
         "firstName": "Brooklyn",
         "lastName": "Parker",
         "company": "Karnv"
      },
      {
         "email": "johnny.neal@yvu30.com",
         "firstName": "Johnny",
         "lastName": "Neal",
         "company": "Acme Inc"
      }
   ]
}

响应

HTTP/1.1 202
X-Request-ID: WOUBf3fHJNU6sTmJqLL281lOmAEpMZFw

自定义对象

用于更新插入自定义对象记录的端点。

方法
路径
POST
/subscriptions/{munchkinId}/customobjects/{customObjectAPIName}

标头

Content-Type
application/json
X-Mkto-User-Token

请求正文

数据类型
必需
默认值
priority
字符串
请求的优先级:正常、高
普通
dedupeBy
字符串
要重复数据删除的属性: dedupeFields、marketoGUID
删除重复字段
customObjects
对象数组
对象的属性名称 — 值对列表。
-

所需的权限为Read-Write Custom Object

如果在请求中指定了某人链接字段,且该人员不存在,则会发生多次重试。 如果在重试窗口(65分钟)期间添加该人员,则更新成功。 例如,如果链接字段为Email on Person,而Person不存在,则会发生重试。

自定义对象示例

请求

POST /subscriptions/{munchkinId}/customobjects/{customObjectAPIName}

标头

Content-Type: application/json
X-Mkto-User-Token: {accessToken}

正文

{
   "dedupeBy": "dedupeFields",
   "priority": "high",
   "customObjects": [
      {
         "email": "brooklyn.parker@karnv.com",
         "vin": "20UYA31581L000000",
         "make": "BMW",
         "model": "3-Series 330i",
         "year": 2003
      },
      {
         "email": "johnny.neal@yvu30.com",
         "vin": "19UYA31581L000000",
         "make": "BMW",
         "model": "3-Series 325i",
         "year": 1989
      }
   ]
}

响应

HTTP/1.1 202
X-Request-ID: WOUBf3fHJNU6sTmJqLL281lOmAEpMZFw

公司

用于同步公司记录的端点。 支持根据外部公司ID或Marketo内部ID执行重复数据删除的创建、更新和更新插入操作。

方法
路径
POST
/subscriptions/{munchkinId}/companies

标头

必需
Content-Type
application/json
X-Mkto-User-Token
X-Correlation-Id
任意字符串(最大长度255个字符)
X-Request-Source
任意字符串(最大长度50个字符)

请求正文

数据类型
必需
默认值
action
字符串
同步操作: createOnlyupdateOnlycreateOrUpdate
createOrUpdate
dedupeBy
字符串
要取消重复的字段: dedupeFieldsidField(不区分大小写)。 对于createOnlycreateOrUpdate,只允许使用dedupeFields。 对于updateOnly,允许同时使用两者。
dedupeFields
input
对象数组
公司属性名称 — 值对的列表。 接受JSON键inputcompanies
-

input数组中的每个公司对象都支持以下字段:

数据类型
必需
描述
externalCompanyId
字符串
条件
外部公司标识符。 当dedupeBydedupeFields时必需。 dedupeByidField时不允许使用。
id
条件
Marketo内部公司ID。 当dedupeByidFieldactionupdateOnly时必需。 dedupeBydedupeFields时不允许使用。
company
字符串
公司名称。
(任何字段)
“任一”
描述公司定义的其他标准或自定义公司字段。 字段名称不区分大小写。

所需的权限为Read-Write Company

公司示例

请求

POST /subscriptions/{munchkinId}/companies

标头

Content-Type: application/json
X-Mkto-User-Token: {accessToken}

正文

{
   "action": "createOrUpdate",
   "dedupeBy": "dedupeFields",
   "input": [
      {
         "externalCompanyId": "ext-company-001",
         "company": "Acme Corporation",
         "industry": "Technology",
         "numberOfEmployees": 5000,
         "annualRevenue": 100000000
      },
      {
         "externalCompanyId": "ext-company-002",
         "company": "Globex Industries",
         "industry": "Manufacturing",
         "numberOfEmployees": 1200
      }
   ]
}

响应

HTTP/1.1 202
X-Request-ID: WOUBf3fHJNU6sTmJqLL281lOmAEpMZFw

公司按ID更新示例

{
   "action": "updateOnly",
   "dedupeBy": "idField",
   "input": [
      {
         "id": 12345,
         "company": "Acme Corporation (Renamed)",
         "numberOfEmployees": 5500
      }
   ]
}

公司验证规则

规则
详细信息
操作
必须为createOnlyupdateOnlycreateOrUpdate之一。 区分大小写。
重复数据删除者
必须为dedupeFieldsidField(不区分大小写)。 默认为dedupeFields
dedupeBy +操作
createOnlycreateOrUpdate仅允许dedupeFieldsupdateOnly 允许dedupeFieldsidField
dedupeBy=dedupeFields
每个公司必须具有externalCompanyId。 字段id不得存在。
dedupeBy=idField
每个公司必须具有id。 字段externalCompanyId不得存在。
input / companies
不得为null或为空。
每个请求的最大对象数
1,000

项目群成员(同步)

用于同步程序成员状态、向程序添加潜在客户或更新其程序状态的端点。

方法
路径
POST
/subscriptions/{munchkinId}/programmembers

标头

必需
Content-Type
application/json
X-Mkto-User-Token
X-Correlation-Id
任意字符串(最大长度255个字符)
X-Request-Source
任意字符串(最大长度50个字符)

请求正文

数据类型
必需
默认值
程序
对象数组
程序操作列表。 每个选项都指定了要同步的程序、目标状态和潜在客户。
-

programs数组中的每个对象都包含:

数据类型
必需
描述
programId
Marketo项目ID。 必须为正整数。
状态
字符串
要设置的项目群成员状态,例如"Member""Influenced"。 接受JSON键statusNamestatus。 该值不能为"Not in Program";请改用删除终结点。
成员
对象数组
要在项目群中添加或更新的潜在客户参考列表。 接受JSON键inputmembers

members数组中的每个对象都包含:

数据类型
必需
描述
leadId
Marketo商机ID。
(任何字段)
“任一”
其他自定义项目群成员字段。 字段名称不区分大小写。

所需的权限为Read-Write Lead

程序成员同步示例

请求

POST /subscriptions/{munchkinId}/programmembers

标头

Content-Type: application/json
X-Mkto-User-Token: {accessToken}

正文

{
   "programs": [
      {
         "programId": 1001,
         "status": "Member",
         "members": [
            {
               "leadId": 10001
            },
            {
               "leadId": 10002
            }
         ]
      },
      {
         "programId": 1002,
         "status": "Influenced",
         "members": [
            {
               "leadId": 10003
            }
         ]
      }
   ]
}

响应

HTTP/1.1 202
X-Request-ID: e3d92152-0fb1-444a-8f8f-29d5a2338598

程序成员同步验证规则

规则
详细信息
程序
不得为null或为空。
programId
必需。 必须为正整数。
状态
必需。 不得为空。 不得为"Not in Program"(区分大小写)。 请改用删除端点。
成员
不得为null或为空。
leadId
输入数组中的每个成员均需要此参数。
每个请求的最大潜在客户数
所有项目总计拥有1,000名成员。

项目群成员(删除)

用于从程序中删除潜在客户的端点。 这会将潜在客户的成员资格状态设置为"Not in Program",并从该计划中删除该成员。

NOTE
此端点使用POST而不是DELETE,因为请求需要包含结构化数据的JSON主体。
方法
路径
POST
/subscriptions/{munchkinId}/programmembers/delete

标头

必需
Content-Type
application/json
X-Mkto-User-Token
X-Correlation-Id
任意字符串(最大长度255个字符)
X-Request-Source
任意字符串(最大长度50个字符)

请求正文

数据类型
必需
默认值
程序
对象数组
程序删除操作的列表。 每个都指定了一个项目和要删除的潜在客户。
-

programs数组中的每个对象都包含:

数据类型
必需
描述
programId
Marketo项目ID。 必须为正整数。
成员
对象数组
要从项目群中删除的潜在客户引用列表。 接受JSON键inputmembers

members数组中的每个对象都包含:

数据类型
必需
描述
leadId
Marketo商机ID。

所需的权限为Read-Write Lead

程序成员删除示例

请求

POST /subscriptions/{munchkinId}/programmembers/delete

标头

Content-Type: application/json
X-Mkto-User-Token: {accessToken}

正文

{
   "programs": [
      {
         "programId": 1001,
         "members": [
            {
               "leadId": 10001
            },
            {
               "leadId": 10002
            }
         ]
      },
      {
         "programId": 1002,
         "members": [
            {
               "leadId": 10003
            }
         ]
      }
   ]
}

响应

HTTP/1.1 202
X-Request-ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890

项目群成员删除验证规则

规则
详细信息
程序
不得为null或为空。
programId
必需。 必须为正整数。
成员
不得为null或为空。
leadId
输入数组中的每个成员均需要此参数。
每个请求的最大潜在客户数
所有项目总计拥有1,000名成员。

限制

以下是护栏的更新列表:

  • 最大请求大小:1 MB
  • 每种对象类型每个请求的最大对象数:1,000
  • 每个客户端每秒最大请求数ID:5,000
  • 每天最大对象数:10,000,000

这些限制统一适用于人员、自定义对象、公司和程序成员。 对于项目群成员,“每个请求的对象”是单个请求中所有项目的潜在客户引用总数。

数据摄取API与REST API

以下是数据摄取API与其他Marketo REST API之间的差异列表:

  • 若要进行身份验证,必须使用X-Mkto-User-Token标头传递访问令牌
  • URL域名是mkto-ingestion-api.adobe.io
  • URL路径以/subscriptions/MunchkinId开头
  • 没有查询参数
  • 如果调用成功,将返回202状态,并且响应正文为空
  • 如果调用失败,则返回非202状态,并且响应正文包含{ "error_code" : "Error Code", "message" : "Message" }
  • 请求ID通过X-Request-Id标头返回
recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59