Add Notion plugin#74
Conversation
Community plugin integrating Notion via the REST API (OAuth 2.0). Indexes workspace users, data sources and pages, and adds data streams for page properties, page content, comments and database schema, plus an overview dashboard and per-object perspectives. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughAdds the Notion v1 plugin metadata, OAuth UI and validation, custom types, discovery and detail data streams with transform scripts, index mappings, default dashboards, scopes, and documentation. ChangesNotion Plugin v1 Implementation
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Actionable comments posted: 11
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@plugins/Notion/v1/dataStreams/dataSourceRows.json`:
- Line 30: The dataSourceRows stream currently declares timeframes as false on
line 30, but according to coding guidelines, non-time-based data streams must
explicitly expose "none" as the available timeframe to prevent UI warnings and
default-timeframe mismatches. Replace the timeframes property value from false
to an array containing the string "none" to properly declare explicit
no-timeframe support.
- Around line 24-25: The date-time fields lastEditedTime and createdTime in the
dataSourceRows.json configuration are incorrectly using the "date" semantic
shape when they should use "timestamp" instead. Update both field definitions to
change the shape property from "date" to "timestamp" to accurately represent
date-time values for proper downstream formatting and semantic handling.
In `@plugins/Notion/v1/dataStreams/dataSourceSchema.json`:
- Line 21: The timeframes property in the dataSourceSchema.json file for the
Notion data stream is set to false, but must be explicitly set to the string
value "none" to comply with coding guidelines and prevent UI warnings and
incorrect default behavior. Locate the timeframes property declaration and
change its value from false to "none".
In `@plugins/Notion/v1/dataStreams/dataSourcesSearch.json`:
- Line 28: The timeframes property in the dataSourcesSearch.json file is
currently set to the boolean value false, but it should explicitly declare
"none" as a string value instead. Change the timeframes property from false to
the string "none" to properly indicate that the data source does not support
time-based filtering and to comply with coding guidelines that prevent UI
warnings and incorrect default behavior.
In `@plugins/Notion/v1/dataStreams/pageComments.json`:
- Line 41: The pageComments.json stream currently sets timeframes to false,
which does not explicitly declare time-based filtering support and can cause UI
warnings and incorrect defaults. Replace the timeframes property value from
false to an explicit declaration of "none" to properly indicate that this stream
does not support time-based filtering. This aligns with the requirement that
non-time-based data streams must explicitly declare "none" as an available
timeframe.
In `@plugins/Notion/v1/dataStreams/pageContent.json`:
- Line 26: In the pageContent data stream configuration, locate the "timeframes"
property and replace the false value with an explicit "none" option. This
ensures the stream properly declares that it does not support time-based
filtering and aligns with the coding guidelines for data streams that don't
support time-based filtering.
In `@plugins/Notion/v1/dataStreams/pageProperties.json`:
- Line 24: The `timeframes` field in the pageProperties.json file is set to
`false`, which violates the stream contract for non-time-filterable streams and
can cause UI warnings. Replace the `timeframes: false` declaration with
`"timeframes": ["none"]` to explicitly declare that this stream does not support
time-based filtering, as required by the coding guidelines.
In `@plugins/Notion/v1/dataStreams/pagesSearch.json`:
- Line 39: The pagesSearch data stream in pagesSearch.json currently has
timeframes set to false on line 39, but according to coding guidelines, streams
that don't support time-based filtering must explicitly declare "none" as the
timeframe value instead of false. Change the value of the timeframes property
from false to the string "none" to comply with the guidelines and ensure proper
UI behavior without warnings.
In `@plugins/Notion/v1/dataStreams/usersList.json`:
- Line 27: In the usersList.json data stream configuration, change the
"timeframes" property from the boolean value false to the string value "none".
This explicitly declares that the stream does not support time-based filtering,
which aligns with the coding guidelines and prevents UI warnings and incorrect
default behavior.
In `@plugins/Notion/v1/docs/README.md`:
- Around line 1-52: In the Known limitations section, locate the Page volume
bullet point which currently states "workspaces with large databases can import
a very large number of `Notion Page` objects" and replace the weak intensifier
phrase "very large number" with a stronger, more direct term such as "many" or
"considerable number" to make the statement clearer and more impactful.
In `@plugins/Notion/v1/ui.json`:
- Around line 3-4: The clientId field in the ui.json configuration lacks a
required placeholder attribute. For the clientId field object (which currently
has name and label properties), add a new placeholder property with a
descriptive example value such as "Enter your Notion client ID" to meet the
guidelines requirement that all text fields include placeholders for better user
guidance.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 1d2086e9-5eec-4b06-ad09-1763c2b3d7dd
⛔ Files ignored due to path filters (1)
plugins/Notion/v1/icon.svgis excluded by!**/*.svg
📒 Files selected for processing (29)
plugins/Notion/v1/configValidation.jsonplugins/Notion/v1/custom_types.jsonplugins/Notion/v1/dataStreams/currentUser.jsonplugins/Notion/v1/dataStreams/dataSourceRows.jsonplugins/Notion/v1/dataStreams/dataSourceSchema.jsonplugins/Notion/v1/dataStreams/dataSourcesSearch.jsonplugins/Notion/v1/dataStreams/pageComments.jsonplugins/Notion/v1/dataStreams/pageContent.jsonplugins/Notion/v1/dataStreams/pageProperties.jsonplugins/Notion/v1/dataStreams/pagesSearch.jsonplugins/Notion/v1/dataStreams/scripts/currentUser.jsplugins/Notion/v1/dataStreams/scripts/dataSourceRows.jsplugins/Notion/v1/dataStreams/scripts/dataSourceSchema.jsplugins/Notion/v1/dataStreams/scripts/dataSourcesSearch.jsplugins/Notion/v1/dataStreams/scripts/pageComments.jsplugins/Notion/v1/dataStreams/scripts/pageContent.jsplugins/Notion/v1/dataStreams/scripts/pageProperties.jsplugins/Notion/v1/dataStreams/scripts/pagesSearch.jsplugins/Notion/v1/dataStreams/usersList.jsonplugins/Notion/v1/defaultContent/manifest.jsonplugins/Notion/v1/defaultContent/notionDataSource.dash.jsonplugins/Notion/v1/defaultContent/notionPage.dash.jsonplugins/Notion/v1/defaultContent/notionUser.dash.jsonplugins/Notion/v1/defaultContent/overview.dash.jsonplugins/Notion/v1/defaultContent/scopes.jsonplugins/Notion/v1/docs/README.mdplugins/Notion/v1/indexDefinitions/default.jsonplugins/Notion/v1/metadata.jsonplugins/Notion/v1/ui.json
🧩 Plugin PR Summary📦 Modified Plugins
📋 Results
🔍 Validation Details✅
|
There was a problem hiding this comment.
♻️ Duplicate comments (1)
plugins/Notion/v1/docs/README.md (1)
17-32: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winUse the public-connection setup flow here.
Notion's current docs say public connections are created in the Developer portal, require an installation scope, and use the OAuth page picker; the manual
Connections → Connect toflow is for internal connections. As written, this section sends users through the wrong setup path and can leave the plugin without the pages it expects. (developers.notion.com)Suggested rewrite
-1. Go to [Notion → My integrations](https://www.notion.so/my-integrations) and click **New connection**. -2. Give it a name (e.g. *SquaredUp*) and associate it with the workspace you want to monitor. -3. Select OAuth as the Authentication method -4. If required, select a specific workspace. -5. Under **Redirect URIs**, add the SquaredUp redirect URI for your region — copy the one that matches your tenant: +1. Go to Notion's Developer portal → **Public connections** → **Create new connection**. +2. Enter the connection name, development workspace, redirect URI(s), installation scope, and capabilities. +3. Copy the **Client ID** and **Client Secret** from the **Configuration** tab. ... -Notion only returns content that has been explicitly shared with the integration. In each page or database you want monitored, open the **•••** menu → **Connections** → **Connect to** → select your integration. +During the OAuth flow, select the pages/databases you want the connection to access.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/Notion/v1/docs/README.md` around lines 17 - 32, The Notion setup steps in the README are using the manual internal-connection flow, but this plugin needs the public connection/OAuth flow instead. Update the instructions in the Notion docs section to reference the Developer portal public integration setup, the required installation scope, and the OAuth page picker, and remove or replace the “Connections → Connect to” sharing guidance so it matches the public connection behavior for the plugin.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@plugins/Notion/v1/docs/README.md`:
- Around line 17-32: The Notion setup steps in the README are using the manual
internal-connection flow, but this plugin needs the public connection/OAuth flow
instead. Update the instructions in the Notion docs section to reference the
Developer portal public integration setup, the required installation scope, and
the OAuth page picker, and remove or replace the “Connections → Connect to”
sharing guidance so it matches the public connection behavior for the plugin.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 9fd6a692-72e4-4d74-930b-90363795b759
📒 Files selected for processing (1)
plugins/Notion/v1/docs/README.md
TimWheeler-SQUP
left a comment
There was a problem hiding this comment.
Reviewed not tested, one nit, should the codeowners file be updated with the new plugin?
Approved.










🔌 Plugin overview
🖼️ Plugin screenshots
Plugin configuration
Default dashboards
🧪 Testing
Built and tested against a live, authenticated tenant (dev region):
currentUser→GET /v1/users/me) returns200 OK.squaredup test:usersList,dataSourcesSearch,pagesSearch(global inventory) — one flat row per object, paging wired.dataSourceRows(database contents) — 81 rows with typed custom-field columns.pageProperties/pageContent/dataSourceSchema— scoped streams verified with the two-object rule where applicable.pageComments— structurally verified; returns a clear, actionable error until the integration's Read comments capability is granted (see limitations).squaredup validate --jsonpasses (9 data streams, 1 import definition, UI config, icon, config validation, custom types).last_edited_time).Notion Pageobjects.📚 Checklist
Summary by CodeRabbit