Skip to content

[v2] Google Drive catalogue import treats "curated" feed label as a definition URL #2095

Description

@rizvancodes

Problem

Adding Google Drive from the catalogue on self-hosted Executor v2 fails before reaching account connection or OAuth.

The UI shows:

The app could not be imported. Check its source or try a different catalog entry.

The install request returns HTTP 422:

{
  "_tag": "CatalogImportFailed",
  "reason": "The catalog must provide a public HTTPS definition URL."
}

Reproduction

  1. Open Apps → Add app on self-hosted v2.
  2. Select Google Drive (OpenAPI, drive.google.com).
  3. Click Add app.

Expected: import the API definition and proceed to account setup.
Actual: the import fails with the error above.

Cause

The live catalogue at https://integrations.sh/api.json contains this entry (relevant fields):

{
  "id": "curated/google-drive",
  "kind": "openapi",
  "feeds": ["curated"],
  "connectUrl": "https://integrations.sh/specs/google/google-drive.json"
}

In packages/catalog/src/implementation/source.ts, the importer selects:

const url = URL.parse(entry.feeds?.[0] ?? entry.connectUrl ?? "");

This selects "curated", which is not a URL, rather than the valid connectUrl. I fetched the connectUrl successfully: it contains a Google Drive OpenAPI 3.1.0 definition with 45 paths.

Version

Reproduced on the self-hosted beta image pinned to:

ghcr.io/usefulsoftwareco/executor-selfhost@sha256:467c48d075ce1bfb74f2e786d7cdf54a1414175da65d4ceb49bf16c1d8199f0b

The same URL-selection logic remains in public v2 commit dad925e:

// Registry entries are third-party input: they never reach a host-internal destination.

Suggested fix

Prefer a valid HTTPS connectUrl, falling back to a valid HTTPS definition URL in feeds for entries that use that format. Retain the existing outbound destination checks. Add a regression test for a catalogue entry whose feeds contains a label such as "curated".

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions