Add PKCE, token-body extras, AuthURL templating to OAuth2 → Add settings structs for Pattern-2 connector providers

- Add PKCE, token-body extras, AuthURL templating to OAuth2
- Add 13 connector provider enum values
- Add scopes, display names, name resolvers for 13 providers
- Add settings structs for Pattern-2 connector providers

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
Aurélien Sibiril
2026-05-17 17:22:48 +02:00
parent 3ff66757ad
commit 0147acd9f0
10 changed files with 1334 additions and 5 deletions

View File

@@ -40,6 +40,19 @@ const (
ConnectorProviderIntercom ConnectorProvider = "INTERCOM"
ConnectorProviderResend ConnectorProvider = "RESEND"
ConnectorProviderMicrosoft365 ConnectorProvider = "MICROSOFT_365"
ConnectorProviderGitLab ConnectorProvider = "GITLAB"
ConnectorProviderBitbucket ConnectorProvider = "BITBUCKET"
ConnectorProviderHeroku ConnectorProvider = "HEROKU"
ConnectorProviderPagerDuty ConnectorProvider = "PAGERDUTY"
ConnectorProviderAsana ConnectorProvider = "ASANA"
ConnectorProviderSnyk ConnectorProvider = "SNYK"
ConnectorProviderNetlify ConnectorProvider = "NETLIFY"
ConnectorProviderRamp ConnectorProvider = "RAMP"
ConnectorProviderClickUp ConnectorProvider = "CLICKUP"
ConnectorProviderVercel ConnectorProvider = "VERCEL"
ConnectorProviderMonday ConnectorProvider = "MONDAY"
ConnectorProviderLever ConnectorProvider = "LEVER"
ConnectorProviderDeel ConnectorProvider = "DEEL"
)
func ConnectorProviders() []ConnectorProvider {
@@ -61,6 +74,19 @@ func ConnectorProviders() []ConnectorProvider {
ConnectorProviderIntercom,
ConnectorProviderResend,
ConnectorProviderMicrosoft365,
ConnectorProviderGitLab,
ConnectorProviderBitbucket,
ConnectorProviderHeroku,
ConnectorProviderPagerDuty,
ConnectorProviderAsana,
ConnectorProviderSnyk,
ConnectorProviderNetlify,
ConnectorProviderRamp,
ConnectorProviderClickUp,
ConnectorProviderVercel,
ConnectorProviderMonday,
ConnectorProviderLever,
ConnectorProviderDeel,
}
}
@@ -114,6 +140,32 @@ func (cp *ConnectorProvider) Scan(value any) error {
*cp = ConnectorProviderResend
case "MICROSOFT_365":
*cp = ConnectorProviderMicrosoft365
case "GITLAB":
*cp = ConnectorProviderGitLab
case "BITBUCKET":
*cp = ConnectorProviderBitbucket
case "HEROKU":
*cp = ConnectorProviderHeroku
case "PAGERDUTY":
*cp = ConnectorProviderPagerDuty
case "ASANA":
*cp = ConnectorProviderAsana
case "SNYK":
*cp = ConnectorProviderSnyk
case "NETLIFY":
*cp = ConnectorProviderNetlify
case "RAMP":
*cp = ConnectorProviderRamp
case "CLICKUP":
*cp = ConnectorProviderClickUp
case "VERCEL":
*cp = ConnectorProviderVercel
case "MONDAY":
*cp = ConnectorProviderMonday
case "LEVER":
*cp = ConnectorProviderLever
case "DEEL":
*cp = ConnectorProviderDeel
default:
return fmt.Errorf("invalid ConnectorProvider value: %q", s)
}

View File

@@ -49,6 +49,42 @@ type (
AccountID string `json:"account_id"`
Region string `json:"region"`
}
GitLabConnectorSettings struct {
GroupID string `json:"group_id"`
}
BitbucketConnectorSettings struct {
Workspace string `json:"workspace"`
}
HerokuConnectorSettings struct {
TeamID string `json:"team_id"`
}
PagerDutyConnectorSettings struct {
Subdomain string `json:"subdomain"`
}
AsanaConnectorSettings struct {
WorkspaceGID string `json:"workspace_gid"`
}
SnykConnectorSettings struct {
OrgID string `json:"org_id"`
}
NetlifyConnectorSettings struct {
AccountSlug string `json:"account_slug"`
}
ClickUpConnectorSettings struct {
TeamID string `json:"team_id"`
}
VercelConnectorSettings struct {
TeamID string `json:"team_id"`
}
)
// SetSettings marshals a typed settings struct into the connector's RawSettings.
@@ -124,6 +160,87 @@ func (c *Connector) OnePasswordUsersAPISettings() (OnePasswordUsersAPISettings,
return s, nil
}
// GitLabSettings unmarshals the connector's RawSettings into GitLabConnectorSettings.
func (c *Connector) GitLabSettings() (GitLabConnectorSettings, error) {
var s GitLabConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// BitbucketSettings unmarshals the connector's RawSettings into BitbucketConnectorSettings.
func (c *Connector) BitbucketSettings() (BitbucketConnectorSettings, error) {
var s BitbucketConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// HerokuSettings unmarshals the connector's RawSettings into HerokuConnectorSettings.
func (c *Connector) HerokuSettings() (HerokuConnectorSettings, error) {
var s HerokuConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// PagerDutySettings unmarshals the connector's RawSettings into PagerDutyConnectorSettings.
func (c *Connector) PagerDutySettings() (PagerDutyConnectorSettings, error) {
var s PagerDutyConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// AsanaSettings unmarshals the connector's RawSettings into AsanaConnectorSettings.
func (c *Connector) AsanaSettings() (AsanaConnectorSettings, error) {
var s AsanaConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// SnykSettings unmarshals the connector's RawSettings into SnykConnectorSettings.
func (c *Connector) SnykSettings() (SnykConnectorSettings, error) {
var s SnykConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// NetlifySettings unmarshals the connector's RawSettings into NetlifyConnectorSettings.
func (c *Connector) NetlifySettings() (NetlifyConnectorSettings, error) {
var s NetlifyConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// ClickUpSettings unmarshals the connector's RawSettings into ClickUpConnectorSettings.
func (c *Connector) ClickUpSettings() (ClickUpConnectorSettings, error) {
var s ClickUpConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
// VercelSettings unmarshals the connector's RawSettings into VercelConnectorSettings.
func (c *Connector) VercelSettings() (VercelConnectorSettings, error) {
var s VercelConnectorSettings
if err := c.unmarshalSettings(&s); err != nil {
return s, err
}
return s, nil
}
func (c *Connector) unmarshalSettings(v any) error {
if len(c.RawSettings) == 0 || string(c.RawSettings) == "null" {
return nil