{#if !hideTabs}
{/if}
{#if oauths} {#if tab === 'sso'} {#if !$enterpriseLicense || $enterpriseLicense.endsWith('_pro')} Without EE, the number of SSO users is limited to 10. SCIM/SAML is available on EE
{/if}
{#each Object.keys(oauths) as k} {#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'auth0', 'keycloak', 'slack', 'kanidm', 'zitadel', 'nextcloud', 'pocketid'].includes(k) && oauths[k] && 'login_config' in oauths[k]} {#if oauths[k]}
{#if !windmillBuiltins.includes(k) && k != 'slack'} {/if}
{/if} {/if} {/each}
{#snippet trigger()} {/snippet} {#snippet content()}
{/snippet}
{:else if tab === 'oauth'}
{#each Object.keys(oauths) as k} {#if oauths[k] && !(oauths[k] && 'login_config' in oauths[k])} {#if !['slack', 'teams'].includes(k) && oauths[k]} {@const IconComponent = getOAuthProviderIcon(k) as any} {@const headerLabel = k.endsWith('_sandbox') ? `${k.slice(0, -'_sandbox'.length)} (sandbox)` : k}
Redirect URL {#if !baseUrl} Set it in Core settings. The redirect url is built from it, and {k} needs the exact value. {:else} {/if} {#if baseUrlMismatch} This is built from the instance base url. Update it in Core settings if it is wrong, or {k} will reject the callback. {/if}
These credentials are for {#if !windmillBuiltins.includes(k) || (registryCcCapable(k) && registryAuthCodeCapable(k))} setGrantChoice(k, v)} > {#snippet children({ item })} {/snippet} {:else if registryCcCapable(k)} Client credentials (server-to-server) Fill Client ID and Secret to share one service account, or leave them empty so each user brings their own. {:else} Authorization code (browser sign-in) {/if}
{#if k === 'azure_oauth'} {:else if !windmillBuiltins.includes(k) && k != 'slack'} {/if} {#if connectConfigTemplates[k]} {@const tmpl = connectConfigTemplates[k]} {/if} {#if k === 'gworkspace'}
{ if (oauths && oauths[k]) { oauths[k] = { ...oauths[k], share_with_workspaces: e.detail } } }} /> {#if oauths[k]?.share_with_workspaces}

Workspace admins will be able to connect Google native triggers without configuring their own OAuth client. The credentials are not exposed to them.

Add the following redirect URI to Google Cloud Console:

{/if}
{/if}
{/if} {/if} {/each} {#if showCustomOAuthForm}
{:else}
{#snippet buttonReplacement()} {/snippet} {#snippet menu()}
{#each generateOAuthDropdownItems() as item} {@const IconComponent = item.icon} {/each}
{/snippet}
{/if} {:else if tab == 'scim'} {@render scim?.()} {/if} {/if}