Skip to content

feat(apps): add YouTube connector#13

Merged
jezekra1 merged 1 commit intomainfrom
feat/youtube-connector
Apr 19, 2026
Merged

feat(apps): add YouTube connector#13
jezekra1 merged 1 commit intomainfrom
feat/youtube-connector

Conversation

@jezekra1
Copy link
Copy Markdown

Summary

Adds YouTube Data API v3 as a read-only OAuth connector — lets agents list channels, playlists, playlist items, and subscriptions.

Changes

  • Web (apps/web/src/lib/apps/youtube.ts): AppDefinition reusing buildGoogleAuthUrl / exchangeGoogleCode / googleConfigFields / googleEnvDefaults. Default scope is youtube.readonly (plus openid/email/profile for user metadata). Write scopes (youtube, youtube.upload, youtube.force-ssl, partner scopes) are intentionally omitted — they can be added later if needed.
  • Gateway (apps/gateway/src/apps.rs): two host rules — youtube.googleapis.com (catch-all) and the legacy www.googleapis.com/youtube/* path — both Bearer, sharing GOOGLE_REFRESH. Mirrors the Gmail pattern.
  • Tests: added YouTube to providers_for_google_workspace_hosts, google_workspace_apps_use_bearer, and a /youtube/v3/playlists disambiguation check on www.googleapis.com.
  • Icon: apps/web/public/icons/youtube.svg.

Note on watch history

Watch history is not available via any YouTube API — Google deprecated that access years ago. Playlists, subscriptions, and channel data are available.

Test plan

  • pnpm --filter @onecli/web lint — clean
  • pnpm --filter @onecli/web check-types — clean
  • cargo test apps:: — 30 tests pass
  • Manual: connect a test account, call https://youtube.googleapis.com/youtube/v3/playlists?part=snippet&mine=true via the gateway

- Web: OAuth AppDefinition using youtube.readonly as the default scope
  (channels, playlists, subscriptions, uploads)
- Gateway: route youtube.googleapis.com and the legacy
  www.googleapis.com/youtube/ path via Bearer auth with shared
  GOOGLE_REFRESH config

Signed-off-by: Radek Ježek <radek.jezek@ibm.com>
@jezekra1 jezekra1 merged commit cc2ea2c into main Apr 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants