Notion
Required
Fields required for a valid configuration.
| Path | Type | Required | Description | Default | Constraints |
|---|---|---|---|---|---|
| required | object | Yes | Notion has no required connection fields; the integration token lives in the masked section. | — | no extra properties |
Masked
Sensitive fields under(secrets/credentials).
| Path | Type | Required | Description | Default | Constraints |
|---|---|---|---|---|---|
| masked | object | Yes | — | — | no extra properties |
| masked.notion_token | string | Yes | Notion API token used as a Bearer credential. Accepts an internal integration secret (ntn_...) or an OAuth public-integration access token. | — | — |
Optional
Optional configuration fields.
| Path | Type | Required | Description | Default | Constraints |
|---|---|---|---|---|---|
| optional | object | No | — | — | no extra properties |
| optional.connection | object | No | HTTP, version, and retry settings for Notion API calls. | — | no extra properties |
| optional.connection.max_retries | integer | No | Maximum retry attempts for transient API failures and rate limits | 3 | min 0, max 10 |
| optional.connection.notion_version | string | No | Notion-Version header sent with every request. Defaults to the data-sources API version. | 2025-09-03 | — |
| optional.connection.rate_limit_delay_seconds | number | No | Additional delay between API requests to reduce rate-limit pressure | 0 | min 0 |
| optional.connection.request_timeout_seconds | number | No | HTTP request timeout for Notion API calls | 30 | min 1 |
| optional.content | object | No | Notion content extraction controls. | — | no extra properties |
| optional.content.file_max_bytes | integer | No | Maximum bytes downloaded per file for MIME inference and text extraction | 5242880 | min 1024 |
| optional.content.include_comments | boolean | No | Include page and block comments and aggregate them into a per-page comments asset | true | — |
| optional.content.include_data_sources | boolean | No | Emit Notion data sources (databases) as assets with their schema and link their row pages | true | — |
| optional.content.include_files | boolean | No | Materialize files from file/image/pdf/video blocks, file properties, and page icon/cover as related assets | true | — |
| optional.content.include_linked_pages | boolean | No | Wire parent, relation, and mention references between pages into the asset links graph | true | — |
| optional.scope | object | No | Optional Notion scope filters. When omitted, all content shared with the integration is eligible for sampling. | — | no extra properties |
| optional.scope.data_source_ids | array | No | Restrict extraction to specific data source IDs (up to 250) | — | max items 250 |
| optional.scope.data_source_ids[] | string | No | — | — | — |
| optional.scope.page_ids | array | No | Restrict extraction to specific page IDs (up to 250) | — | max items 250 |
| optional.scope.page_ids[] | string | No | — | — | — |
| optional.scope.search_query | string | No | Optional full-text query passed to the Notion search endpoint to narrow discovery | — | min length 1 |
Extracted Metadata
Page
| Field | Type | Required | Description |
|---|---|---|---|
| page_id | string | Yes | Notion page id |
| title | string | Yes | Title of the page |
| links_count | integer | Yes | Number of linked or related assets |
| parent_type | string | No | Parent object type |
| parent_id | string | No | Parent object id |
| status | string | No | Status from properties |
| tags | string[] | No | Multi-select property values |
Data Source
| Field | Type | Required | Description |
|---|---|---|---|
| data_source_id | string | Yes | Notion data source id |
| name | string | Yes | Data source name |
| row_count | integer | Yes | Number of rows |
| columns | object[] | No | Columns as {name, type} objects (Notion property name and type) |
| parent_type | string | No | Parent object type |
| parent_id | string | No | Parent object id |
File
| Field | Type | Required | Description |
|---|---|---|---|
| selector | string | Yes | Selector for the file within the page |
| name | string | Yes | File name |
| is_external | boolean | Yes | Whether the file is externally hosted |
Comments
| Field | Type | Required | Description |
|---|---|---|---|
| comments_count | integer | Yes | Number of comments |
| page_id | string | Yes | Parent page id |
Examples
Internal integration workspace scan
Scan all pages, data sources, and comments shared with an internal Notion integration using its token
Config Payload
{
"type": "NOTION",
"required": {},
"masked": {
"notion_token": "ntn_your-internal-integration-token"
},
"optional": {
"content": {
"include_comments": true,
"include_files": true,
"include_data_sources": true
}
},
"sampling": {
"strategy": "AUTOMATIC",
"rows_per_page": 50
}
}Schedule
{
"enabled": true,
"preset": "nightly",
"cron": "28 1 * * *",
"timezone": "UTC"
}OAuth data-source compliance scan
Scan specific Notion data sources via an OAuth access token and run PII and secrets detection
Config Payload
{
"type": "NOTION",
"required": {},
"masked": {
"notion_token": "secret_your-oauth-access-token"
},
"optional": {
"scope": {
"data_source_ids": [
"11111111-2222-3333-4444-555555555555"
]
},
"content": {
"include_comments": true,
"include_files": true
}
},
"sampling": {
"strategy": "AUTOMATIC",
"rows_per_page": 30
},
"detectors": [
{
"type": "PII",
"enabled": true
},
{
"type": "SECRETS",
"enabled": true
}
]
}Schedule
{
"enabled": true,
"preset": "weekday_morning",
"cron": "41 7 * * 1-5",
"timezone": "UTC"
}Full workspace crawl with OCR
Crawl every shared page with OCR enabled to extract text from PDF and image attachments, with PII detection
Config Payload
{
"type": "NOTION",
"required": {},
"masked": {
"notion_token": "ntn_your-internal-integration-token"
},
"optional": {
"content": {
"include_comments": true,
"include_files": true,
"include_linked_pages": true,
"include_data_sources": true
}
},
"sampling": {
"strategy": "AUTOMATIC",
"enable_ocr": true
},
"detectors": [
{
"type": "PII",
"enabled": true
}
]
}Schedule
{
"enabled": true,
"preset": "weekly",
"cron": "9 3 * * 0",
"timezone": "UTC"
}