Skip to content

docs(source-granola): align api_key setup text and surface start_date default - #84280

Draft
devin-ai-integration[bot] wants to merge 3 commits into
masterfrom
devin/1786498263-granola-x1-spec-docs
Draft

docs(source-granola): align api_key setup text and surface start_date default#84280
devin-ai-integration[bot] wants to merge 3 commits into
masterfrom
devin/1786498263-granola-x1-spec-docs

Conversation

@devin-ai-integration

Copy link
Copy Markdown
Contributor

What

Fixes the two X-1 certification defects on source-granola reported in airbytehq/airbyte-internal-issues#16933 (part of the certification epic airbytehq/airbyte-internal-issues#16923).

  1. The api_key tooltip and docs/integrations/sources/granola.md described different setup paths and admin-toggle labels (Settings > API + "Allow personal API keys" vs Settings > Connectors > API keys + Allow user-scoped API keys), and both were stale relative to Granola's current documentation. A user following the in-product tooltip landed somewhere different from a user following the docs.
  2. start_date gave no indication of its default. The two-year fallback lives only in a manifest interpolation (manifest.yaml:71), so the UI showed an empty optional field with no signal about what happens when it is left blank.

Description- and docs-only change. No property was added, removed, renamed, or made required, and no default that changes behaviour was introduced, so this is not a breaking change — patch bump 0.2.110.2.12.

Vendor documentation used

Both pages read on 2026-08-12:

What changed on Granola's side since the connector's text was written:

  • API keys are available to any workspace member on a Business or Enterprise plan — not Enterprise-only.
  • Personal keys: Settings → Connectors → API keys → Create new key → Generate API Key.
  • What we called the "Enterprise API key" is now a workspace API key, created on a separate page (Settings → Connectors → Workspace API keys, admins only). Workspace keys don't expire and aren't tied to a user.
  • The admin control is Settings → Workspace → General → API access for members; it governs which note access scopes members may use. Neither of the two toggle names previously in our text exists anymore.
  • Keys carry access scopes (Personal notes / Public notes) chosen at creation, which determine which notes the API returns.
  • Keys are prefixed grn_.

⚠️ Vendor docs can lag the shipped UI. A human with a Granola Business/Enterprise workspace should confirm the exact labels; this is tracked as part of the X-3 engineer walkthrough sub-issue in the same epic.

How

  • manifest.yaml: rewrote the api_key description to describe the current personal-key path, the separate workspace-key page, the plan requirement, the grn_ prefix, and the API access for members admin control. Kept it self-contained (the criterion requires following it without opening the docs) but short — the docs page carries the longer explanation of key types and scopes.
  • manifest.yaml: start_date description now states the two-year fallback explicitly.
  • docs/integrations/sources/granola.md: aligned Prerequisites, the two setup subsections, the note about the admin control, the data-access table (now scope-based), the rate-limit wording, and the api_key reference row with the same paths and labels. Replaced the two dead vendor links.
  • metadata.yaml: dockerImageTag 0.2.110.2.12 (progressive rollout is disabled for this connector, so no -rc suffix), plus the changelog row.

start_date: description, not a spec default

The fallback is relative (now_utc() - duration('P730D')), so a static JSON Schema default would be a fixed date that goes stale and would drift from the interpolation. The interpolation stays the single source of the actual value and the description states the behaviour.

Empirically checked what happens when start_date is submitted as an empty string rather than omitted, since the manifest uses config.get('start_date', <fallback>) (which returns "", not the fallback, when the key is present):

  • Against the connection specification with a draft-07 validator, "" is rejected by the existing pattern: '' does not match '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'. So in practice the platform surfaces a config validation error.
  • If validation is bypassed, it does not silently fall back — cursor construction fails with ValueError: time data '' does not match format '%Y-%m-%d'.
  • With start_date omitted, the cursor initialises as expected (cursor start: 2024-08-12T00:00:00+00:00, first slice {'start_time': '2024-08-12', 'end_time': '2024-09-10'}).

No change was made for the empty-string case: it is already a validation error rather than a silent misbehaviour.

Declarative-First Evaluation

No custom Python component was added or needed — the connector remains manifest-only with no components.py. This fix is entirely spec description text plus documentation; no declarative component behaviour changed.

Not done: grn_ pattern on api_key

The issue makes a non-blocking recommendation to add a pattern enforcing the grn_ prefix. Deliberately not added: a spec pattern hard-rejects any key that doesn't match, and there is no runtime evidence covering every key format Granola issues (legacy keys, workspace keys). The prefix is documented in the description instead, which catches a mis-pasted key without risking a config-validation regression.

Review guide

  1. airbyte-integrations/connectors/source-granola/manifest.yaml — the two description changes.
  2. docs/integrations/sources/granola.md — check the paths and labels match the tooltip and the vendor page.
  3. airbyte-integrations/connectors/source-granola/metadata.yaml — version bump.

Test Coverage

This connector has no unit_tests/ directory and no acceptance-test-config.yml, and this change alters no runtime behaviour (spec description strings and docs only), so there is no behaviour for a new test to pin. What was run instead:

  • poe test-integration-tests2 passed, 6 skipped. SECRET_SOURCE-GRANOLA__CREDS was present, but the acceptance-test scenarios skipped because the connector has no acceptance-test-config.yml, so no live sync against Granola was exercised — this PR does not claim live verification.
  • The start_date empty-string / omitted behaviour above was checked by loading the manifest with YamlDeclarativeSource and by validating the connection specification with a draft-07 validator.
  • pre-commit run --all-files → all hooks pass.

User Impact

Users setting up the connector see one consistent, current set of Granola UI paths in both the tooltip and the docs, and can tell from the start_date field itself that leaving it blank replicates the last two years. No configuration, schema, or sync behaviour changes; existing connections are unaffected.

Can this PR be safely reverted and rolled back?

  • YES 💚
  • NO ❌

Resolves https://github.com/airbytehq/airbyte-internal-issues/issues/16933:

Requested by Devin Bot via the /ai-fix workflow on airbytehq/airbyte-internal-issues#16933.

Link to Devin session: https://app.devin.ai/sessions/00f549eee05f40fb8909a4e9801934b3

devin-ai-integration Bot and others added 2 commits August 12, 2026 01:39
Co-Authored-By: bot_apk <apk@cognition.ai>
Co-Authored-By: bot_apk <apk@cognition.ai>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

Co-Authored-By: bot_apk <apk@cognition.ai>
@github-actions

Copy link
Copy Markdown
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

PR Slash Commands

Airbyte Maintainers (that's you!) can execute the following slash commands on your PR:

  • 🛠️ Quick Fixes
    • /format-fix - Fixes most formatting issues.
    • /bump-version - Bumps connector versions, scraping changelog description from the PR title.
      • Bump types: patch (default), minor, major, major_rc, rc, promote.
      • The rc type is a smart default: applies minor_rc if stable, or bumps the RC number if already RC.
      • The promote type strips the RC suffix to finalize a release.
      • Example: /bump-version type=rc or /bump-version type=minor
    • /bump-progressive-rollout-version - Alias for /bump-version type=rc. Bumps with an RC suffix and enables progressive rollout.
  • ❇️ AI Testing and Review (internal link: AI-SDLC Docs):
    • /ai-prove-fix - Runs prerelease readiness checks, including testing against customer connections.
    • /ai-canary-prerelease - Rolls out prerelease to 5-10 connections for canary testing.
    • /ai-review - AI-powered PR review for connector safety and quality gates.
  • 📝 AI Documentation:
    • /ai-docs-review - AI-powered documentation review for PRs with connector changes.
    • /ai-create-docs-pr - Creates a documentation PR for connector changes, stacked on the current PR.
  • 🚀 Connector Releases:
    • /publish-connectors-prerelease - Publishes pre-release connector builds (tagged as {version}-preview.{git-sha}) for all modified connectors in the PR.
    • /enable-autopilot-rollouts - Enables autopilot progressive rollouts for the modified connector(s) in the PR, remediating "autopilot rollouts not enabled for {connector-name}" auto-merge blockers. Sets defaultRolloutMode: autopilot and enableProgressiveRollout: true, preserving any existing autopilotConfig.
      • Optional args: connector=<CONNECTOR_NAME> (defaults to the modified connectors in the PR), strategy=fast|slow|default (defaults to fast).
      • Example: /enable-autopilot-rollouts or /enable-autopilot-rollouts connector=source-faker strategy=slow
  • ☕️ JVM connectors:
    • /update-connector-cdk-version connector=<CONNECTOR_NAME> - Updates the specified connector to the latest CDK version.
      Example: /update-connector-cdk-version connector=destination-bigquery
  • 🐍 Python connectors:
    • /poe connector source-example lock - Run the Poe lock task on the source-example connector, committing the results back to the branch.
    • /poe source example lock - Alias for /poe connector source-example lock.
    • /poe source example use-cdk-branch my/branch - Pin the source-example CDK reference to the branch name specified.
    • /poe source example use-cdk-latest - Update the source-example CDK dependency to the latest available version.
  • ⚙️ Admin commands:
    • /force-merge reason="<REASON>" - Force merges the PR using admin privileges, bypassing CI checks. Requires a reason.
      Example: /force-merge reason="CI is flaky, tests pass locally"
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

@github-actions

Copy link
Copy Markdown
Contributor

Note

Autopilot progressive rollouts are not enabled for the following modified connector(s):

  • source-granola

This is a courtesy heads-up only — it does not block merge or fail any check.
To enable automatic progressive rollouts for the connector(s) above, comment
/enable-autopilot-rollouts on this PR. This sets defaultRolloutMode: autopilot
and enableProgressiveRollout: true in each connector's metadata.yaml,
preserving any existing autopilotConfig.

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

source-granola Connector Test Results

3 tests   1 ✅  3s ⏱️
1 suites  2 💤
1 files    0 ❌

Results for commit a21d581.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Deploy preview for airbyte-docs ready!

Project:airbyte-docs
Status: ✅  Deploy successful!
Preview URL:https://airbyte-docs-nxrbbxzg7-airbyte-growth.vercel.app
Latest Commit:a21d581

Deployed with vercel-action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

connectors/source/granola hyd-fix Hydra: ai-fix stage has run

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants