Skip to main content

Catalog provider

connectors-catalog-provider loads a digest-verified bundle built from a pinned API document and exposes a reviewed selection of its operations through the local CLI, with no Rust per endpoint. Reads are one bound GET; writes are one bound POST, PUT, PATCH or DELETE under the host's approval, audit and attempt controls, with an optional guard declared as data. The catalog provider explains the model, and Build a catalog bundle builds one.

Providersโ€‹

ProviderOperationsAuthenticationVerified againstGuide
GitLab18 reads, 4 approved writes, the merge-request feedpersonal access token in a headera live GitLabGitLab
Jira Cloudissue search by JQL, one issue, comments, changelogs, transitions, creatable issue types, user search, attachment content; a guarded transition runHTTP basic, profile atlassian.basica live Jira through the API gateway (search); local fixtures (the rest)Jira guide
Confluence Cloudpages changed since a cutoff, a space's pages, one page with its body, a page's commentsHTTP basic, profile atlassian.basiclocal fixturesConfluence guide
HubSpot CRMone object type's records, paged, and one record by idprivate-app access tokenlocal fixturesHubSpot guide
Zendesk Supporttickets, users and organizations changed since a start time, one of each by id, a ticket's commentsOAuth client credentials (zendesk.oauth) or an API token (zendesk.basic)a live accountZendesk guide
Google Drivefiles, export and changes; guarded metadata writesOAuth refresh token from browser consentlocal fixturesDrive guide
Google Slidespresentations and pages; guarded batchUpdateOAuth refresh tokenlocal fixturesSlides guide
Google Calendarcalendar lists and events; guarded event writesOAuth refresh tokenlocal fixturesCalendar guide
Gmailmessages, threads, history and labels; guarded drafts, no direct messages.sendOAuth refresh tokenlocal fixturesGmail guide
Runpodpod.create, pods.list, pod.terminateAPI key as a bearer token; the identity is the configured connectiona local fixtureRunpod guide
Slackconversations, users, the workspace, custom emoji and the token's identity; files and their content; posting a message and opening a direct message under approval; on a second connection with a user token, the conversations, history and threads that user can read, the users and message searchbot token as a bearer token, identity from auth.test; a user token for the user-token reads and searcha local fixturedocs/catalog-slack.md in the repository

Google consent and the shared OAuth client setup are in the Google OAuth guide. Jira and Confluence share one Atlassian profile, so one account and API token serve both.

Provider notesโ€‹

  • Zendesk authenticates with an OAuth client's credentials, which needs no refresh; the API token as HTTP basic remains until Zendesk retires API tokens on 2027-04-30. Its pinned document is redacted of example credentials and contact data. Lists return one page per call.
  • HubSpot has no updated-since filter yet.
  • Runpod writes are unguarded required-approval mutations. A create without a definite answer is unknown and is never sent again. pod.create admits fifteen body keys, among them dockerStartCmd, dockerEntrypoint and networkVolumeId (since 0.37.0); any other key is refused as invalid_input before a request.
  • Slack answers most failures with HTTP 200 and "ok": false, which is returned as a successful invocation. Each list returns one page per call and ends on an empty response_metadata.next_cursor. Its pinned Swagger 2.0 document is projected to OpenAPI 3.1.0 by connectors-build swagger, and the document's token query parameter is withheld. file.download reads a file's url_private on https://files.slack.com, which the connection must admit with the credential in its hosts. chat.postMessage and conversations.open are writes under approval, sent as a JSON body after the token's auth.test read answers "ok": true; a write Slack answers with "ok": false is unknown, never applied, and is not sent again.
  • Binary reads. A selection can read an answer as bytes: the result carries the media type, length, SHA-256 and the bytes in base64, at most 2 MiB, refused as capacity above that and never truncated. A redirect is followed at most three times, only to an origin the selection names and the connection admits in hosts; anything else is refused as forbidden with nothing sent there. Slack's file download and Jira's attachment.content use it. Jira's redirect target, https://api.media.atlassian.com, is inferred and not verified against a live site; without that host admitted, send redirect as false. Uploads are not served.
  • A connection follows a rebuilt bundle or selection on its next connections revalidate without credential re-entry, when its provider authority, profile and identity are unchanged. A profile can declare an access read that validation makes, so a credential that identifies its holder but cannot read is refused as insufficient_scope; Confluence declares one.

Contractsโ€‹

The provider realizes the shared catalog contract's generic HTTP profile. Its native feed binding is the GitLab feed profile. The catalog index service, which would list and locate precompiled bundles, is specified and not implemented; directly configured providers need no index, and catalog information grants no installation or execution authority.