跳到主要内容
版本:Next

Notion

Notion 源连接器

描述

Notion 源连接器用于从 Notion API 读取数据。它基于 HTTP 源连接器实现,并会根据 passwordversion 配置自动添加 Authorization: Bearer <password>Notion-Version: <version> 请求头。

主要特性

源选项

名称类型是否必需默认值描述
urlString-Notion API 请求 URL,例如 https://api.notion.com/v1/users
passwordString-Notion 集成 Token。连接器会把它作为 Authorization Bearer Token 发送。
versionString-Notion API 版本,例如 2022-06-28。连接器会把它作为 Notion-Version 请求头发送。
methodStringgetHTTP 请求方法。支持 GETPOST
headersMap-额外 HTTP 请求头。AuthorizationNotion-Version 会由 passwordversion 设置。
paramsMap-随请求发送的查询参数。
bodyString-HTTP 请求体,通常与 method = "POST" 一起使用。
formatStringtext响应格式。读取 Notion JSON 并转换为 SeaTunnel 字段时使用 json;返回原始响应内容时使用 text
schemaConfig-输出结构。format = "json" 时需要配置。
schema.fieldsConfig-用于解析 JSON 响应的字段名和 SeaTunnel 数据类型。
content_fieldString-JSONPath 表达式,用于先选取响应中的嵌套内容,再按 schema 解析。
json_fieldConfig-字段级 JSONPath 映射。当不同输出字段来自不同 JSON 路径时,与 schema 一起使用。
pageingConfig-继承自 HTTP 源连接器的分页配置。
poll_interval_millisInt-以流模式使用时,两次请求之间的间隔毫秒数。
retryInt-HTTP 请求发生 IOException 时的最大重试次数。
retry_backoff_multiplier_msInt100重试退避时间倍数,单位毫秒。
retry_backoff_max_msInt10000最大重试退避时间,单位毫秒。
json_filed_missed_return_nullBooleanfalse配置的 JSON 字段不存在时返回 null。
common-optionsConfig-源插件通用参数,详情请参考 Source 通用选项
提示

password 是敏感的 Notion 集成 Token。请避免在共享作业文件中硬编码真实 Token,优先使用 SeaTunnel 变量替换或部署环境的密钥管理方式注入。

使用说明

  • 如果希望把 Notion JSON 响应解析成带类型的 SeaTunnel 行,请设置 format = "json" 并配置 schema
  • 当 Notion 响应把记录包在嵌套数组中时,可以使用 content_field,例如 $.results.*
  • 只有当每个输出字段都需要单独的 JSONPath 表达式时,才需要使用 json_field
  • passwordversion 会覆盖 AuthorizationNotion-Version 请求头,headers 中只需要放其他自定义请求头。

任务示例

读取用户列表

env {
parallelism = 1
job.mode = "BATCH"
}

source {
Notion {
url = "https://api.notion.com/v1/users"
password = "<notion-integration-token>"
version = "2022-06-28"
method = "GET"
format = "json"
content_field = "$.results.*"
schema = {
fields {
object = string
id = string
type = string
person = {
email = string
}
name = string
avatar_url = string
}
}
}
}

sink {
Console {
}
}

使用 JSONPath 提取字段

source {
Notion {
url = "https://api.notion.com/v1/users"
password = "<notion-integration-token>"
version = "2022-06-28"
method = "GET"
format = "json"
json_field = {
id = "$.results[*].id"
type = "$.results[*].type"
name = "$.results[*].name"
}
schema = {
fields {
id = string
type = string
name = string
}
}
}
}

变更日志