> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supabase OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Supabase in StackOne. One-time admin setup required before your users can link Supabase accounts via Hub.

<Warning>You need organization owner or member privileges to create OAuth applications.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;supabase_get_readonly_mode_status&#x22;,&#x22;label&#x22;:&#x22;Get Readonly Mode Status&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_disable_readonly_mode_temporarily&#x22;,&#x22;label&#x22;:&#x22;Disable Readonly Mode Temporarily&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_project_pgbouncer_config&#x22;,&#x22;label&#x22;:&#x22;Get Project PgBouncer Config&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_enable_database_webhook&#x22;,&#x22;label&#x22;:&#x22;Enable Database Webhook&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_snippets&#x22;,&#x22;label&#x22;:&#x22;List All Snippets&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_snippet&#x22;,&#x22;label&#x22;:&#x22;Get Snippet&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_function_combined_statistics&#x22;,&#x22;label&#x22;:&#x22;Get Function Combined Statistics&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_project_logs&#x22;,&#x22;label&#x22;:&#x22;Get Project Logs&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_usage_api_counts&#x22;,&#x22;label&#x22;:&#x22;Get Usage API Counts&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_usage_api_requests_count&#x22;,&#x22;label&#x22;:&#x22;Get Usage API Requests Count&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_sso_provider&#x22;,&#x22;label&#x22;:&#x22;Create SSO Provider&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_sso_provider&#x22;,&#x22;label&#x22;:&#x22;Get SSO Provider&#x22;,&#x22;scopes&#x22;:[&#x22;auth:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_sso_provider&#x22;,&#x22;label&#x22;:&#x22;Update SSO Provider&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_sso_provider&#x22;,&#x22;label&#x22;:&#x22;Delete SSO Provider&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_sso_providers&#x22;,&#x22;label&#x22;:&#x22;List All SSO Providers&#x22;,&#x22;scopes&#x22;:[&#x22;auth:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_legacy_signing_key&#x22;,&#x22;label&#x22;:&#x22;Create Legacy Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_legacy_signing_key&#x22;,&#x22;label&#x22;:&#x22;Get Legacy Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_project_signing_key&#x22;,&#x22;label&#x22;:&#x22;Create Project Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_project_signing_key&#x22;,&#x22;label&#x22;:&#x22;Get Project Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_project_signing_keys&#x22;,&#x22;label&#x22;:&#x22;Get Project Signing Keys&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_project_signing_key&#x22;,&#x22;label&#x22;:&#x22;Update Project Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_remove_project_signing_key&#x22;,&#x22;label&#x22;:&#x22;Remove Project Signing Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_tpa_integration&#x22;,&#x22;label&#x22;:&#x22;Create Project TPA Integration&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_tpa_integration&#x22;,&#x22;label&#x22;:&#x22;Get Project TPA Integration&#x22;,&#x22;scopes&#x22;:[&#x22;auth:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_tpa_integration&#x22;,&#x22;label&#x22;:&#x22;Delete Project TPA Integration&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_tpa_integrations&#x22;,&#x22;label&#x22;:&#x22;List Project TPA Integrations&#x22;,&#x22;scopes&#x22;:[&#x22;auth:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_auth_config&#x22;,&#x22;label&#x22;:&#x22;Get Auth Service Config&#x22;,&#x22;scopes&#x22;:[&#x22;auth:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_auth_config&#x22;,&#x22;label&#x22;:&#x22;Update Auth Service Config&#x22;,&#x22;scopes&#x22;:[&#x22;auth:write&#x22;,&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_backups&#x22;,&#x22;label&#x22;:&#x22;List All Backups&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_restore_pitr_backup&#x22;,&#x22;label&#x22;:&#x22;Restore PITR Backup&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_database_config&#x22;,&#x22;label&#x22;:&#x22;Get Database Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_database_config&#x22;,&#x22;label&#x22;:&#x22;Update Database Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_database_metadata&#x22;,&#x22;label&#x22;:&#x22;Get Database Metadata&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_database_password&#x22;,&#x22;label&#x22;:&#x22;Update Database Password&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_run_query&#x22;,&#x22;label&#x22;:&#x22;Run Query&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_read_only_query&#x22;,&#x22;label&#x22;:&#x22;Read-Only Query&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_generate_typescript_types&#x22;,&#x22;label&#x22;:&#x22;Generate TypeScript Types&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_pooler_config&#x22;,&#x22;label&#x22;:&#x22;Get Pooler Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_pooler_config&#x22;,&#x22;label&#x22;:&#x22;Update Pooler Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_ssl_enforcement_config&#x22;,&#x22;label&#x22;:&#x22;Get SSL Enforcement Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_ssl_enforcement_config&#x22;,&#x22;label&#x22;:&#x22;Update SSL Enforcement Config&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_check_vanity_subdomain_availability&#x22;,&#x22;label&#x22;:&#x22;Check Vanity Subdomain Availability&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_activate_vanity_subdomain&#x22;,&#x22;label&#x22;:&#x22;Activate Vanity Subdomain&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_vanity_subdomain_config&#x22;,&#x22;label&#x22;:&#x22;Get Vanity Subdomain Config&#x22;,&#x22;scopes&#x22;:[&#x22;domains:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_deactivate_vanity_subdomain&#x22;,&#x22;label&#x22;:&#x22;Deactivate Vanity Subdomain&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_initialize_custom_hostname&#x22;,&#x22;label&#x22;:&#x22;Initialize Custom Hostname&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_activate_custom_hostname&#x22;,&#x22;label&#x22;:&#x22;Activate Custom Hostname&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_hostname_config&#x22;,&#x22;label&#x22;:&#x22;Get Hostname Config&#x22;,&#x22;scopes&#x22;:[&#x22;domains:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_reverify_dns_config&#x22;,&#x22;label&#x22;:&#x22;Reverify DNS Config&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_custom_hostname&#x22;,&#x22;label&#x22;:&#x22;Update Custom Hostname&#x22;,&#x22;scopes&#x22;:[&#x22;domains:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_branches&#x22;,&#x22;label&#x22;:&#x22;List All Branches&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_a_branch&#x22;,&#x22;label&#x22;:&#x22;Get A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_a_branch&#x22;,&#x22;label&#x22;:&#x22;Create A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_a_branch&#x22;,&#x22;label&#x22;:&#x22;Delete A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_merge_a_branch&#x22;,&#x22;label&#x22;:&#x22;Merge A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_push_a_branch&#x22;,&#x22;label&#x22;:&#x22;Push A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_reset_a_branch&#x22;,&#x22;label&#x22;:&#x22;Reset A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_restore_a_branch&#x22;,&#x22;label&#x22;:&#x22;Restore A Scheduled Branch Deletion&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_diff_a_branch&#x22;,&#x22;label&#x22;:&#x22;Diff A Branch&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_disable_preview_branching&#x22;,&#x22;label&#x22;:&#x22;Disable Preview Branching&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_a_branch_config&#x22;,&#x22;label&#x22;:&#x22;Get Database Branch Config&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_a_branch_config&#x22;,&#x22;label&#x22;:&#x22;Update Database Branch Config&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_action_runs&#x22;,&#x22;label&#x22;:&#x22;List All Action Runs&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_count_action_runs&#x22;,&#x22;label&#x22;:&#x22;Count The Number Of Action Runs&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_action_run&#x22;,&#x22;label&#x22;:&#x22;Get The Status Of An Action Run&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_action_run_logs&#x22;,&#x22;label&#x22;:&#x22;Get The Logs Of An Action Run&#x22;,&#x22;scopes&#x22;:[&#x22;environment:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_action_run_status&#x22;,&#x22;label&#x22;:&#x22;Update The Status Of An Action Run&#x22;,&#x22;scopes&#x22;:[&#x22;environment:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_functions&#x22;,&#x22;label&#x22;:&#x22;List All Functions&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_function&#x22;,&#x22;label&#x22;:&#x22;Get A Function&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_function_body&#x22;,&#x22;label&#x22;:&#x22;Get A Function Body&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_function&#x22;,&#x22;label&#x22;:&#x22;Create A Function&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_function&#x22;,&#x22;label&#x22;:&#x22;Update A Function&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_bulk_update_functions&#x22;,&#x22;label&#x22;:&#x22;Bulk Update Functions&#x22;,&#x22;scopes&#x22;:[&#x22;edge-functions:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_deploy_function&#x22;,&#x22;label&#x22;:&#x22;Deploy A Function&#x22;,&#x22;scopes&#x22;:[&#x22;edge-functions:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_function&#x22;,&#x22;label&#x22;:&#x22;Delete A Function&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_jit_access&#x22;,&#x22;label&#x22;:&#x22;List JIT Access&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_authorize_jit_access&#x22;,&#x22;label&#x22;:&#x22;Authorize JIT Access&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_jit_access&#x22;,&#x22;label&#x22;:&#x22;Get JIT Access&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_jit_access&#x22;,&#x22;label&#x22;:&#x22;Update JIT Access&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_jit_access&#x22;,&#x22;label&#x22;:&#x22;Delete JIT Access&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_jit_access_config&#x22;,&#x22;label&#x22;:&#x22;Get JIT Access Config&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_jit_access_config&#x22;,&#x22;label&#x22;:&#x22;Update JIT Access Config&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_migration_history&#x22;,&#x22;label&#x22;:&#x22;List Migration History&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_apply_database_migration&#x22;,&#x22;label&#x22;:&#x22;Apply Database Migration&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_migration_entry&#x22;,&#x22;label&#x22;:&#x22;Get Migration Entry&#x22;,&#x22;scopes&#x22;:[&#x22;database:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_upsert_migration_without_applying&#x22;,&#x22;label&#x22;:&#x22;Upsert Migration Without Applying&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_patch_migration_entry&#x22;,&#x22;label&#x22;:&#x22;Patch Migration Entry&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_rollback_database_migrations&#x22;,&#x22;label&#x22;:&#x22;Rollback Database Migrations&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_organizations&#x22;,&#x22;label&#x22;:&#x22;List All Organizations&#x22;,&#x22;scopes&#x22;:[&#x22;organizations:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_organization&#x22;,&#x22;label&#x22;:&#x22;Get Organization&#x22;,&#x22;scopes&#x22;:[&#x22;organizations:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_organization&#x22;,&#x22;label&#x22;:&#x22;Create Organization&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_organization_members&#x22;,&#x22;label&#x22;:&#x22;List Organization Members&#x22;,&#x22;scopes&#x22;:[&#x22;organizations:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_postgrest_config&#x22;,&#x22;label&#x22;:&#x22;Get PostgREST Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;rest:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_postgrest_config&#x22;,&#x22;label&#x22;:&#x22;Update PostgREST Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;rest:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_projects&#x22;,&#x22;label&#x22;:&#x22;List All Projects&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_all_projects_for_organization&#x22;,&#x22;label&#x22;:&#x22;Get All Projects For Organization&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;,&#x22;organizations:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_project&#x22;,&#x22;label&#x22;:&#x22;Get Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_project&#x22;,&#x22;label&#x22;:&#x22;Create Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_project&#x22;,&#x22;label&#x22;:&#x22;Update Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_available_regions&#x22;,&#x22;label&#x22;:&#x22;Get Available Regions&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_project&#x22;,&#x22;label&#x22;:&#x22;Delete Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_pause_project&#x22;,&#x22;label&#x22;:&#x22;Pause Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_restore_project&#x22;,&#x22;label&#x22;:&#x22;Restore Project&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_cancel_project_restoration&#x22;,&#x22;label&#x22;:&#x22;Cancel Project Restoration&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_services_health&#x22;,&#x22;label&#x22;:&#x22;Get Services Health&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_network_restrictions&#x22;,&#x22;label&#x22;:&#x22;Get Network Restrictions&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_network_restrictions&#x22;,&#x22;label&#x22;:&#x22;Update Network Restrictions&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_postgres_upgrade_eligibility&#x22;,&#x22;label&#x22;:&#x22;Get Postgres Upgrade Eligibility&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_upgrade_postgres_version&#x22;,&#x22;label&#x22;:&#x22;Upgrade Postgres Version&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;,&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_postgres_upgrade_status&#x22;,&#x22;label&#x22;:&#x22;Get Postgres Upgrade Status&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_realtime_config&#x22;,&#x22;label&#x22;:&#x22;Get Realtime Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;projects:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_shutdown_realtime_connections&#x22;,&#x22;label&#x22;:&#x22;Shutdown Realtime Connections&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_realtime_config&#x22;,&#x22;label&#x22;:&#x22;Update Realtime Configuration&#x22;,&#x22;scopes&#x22;:[&#x22;projects:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_remove_read_replica&#x22;,&#x22;label&#x22;:&#x22;Remove Read Replica&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_login_role&#x22;,&#x22;label&#x22;:&#x22;Create CLI Login Role&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_login_roles&#x22;,&#x22;label&#x22;:&#x22;Delete CLI Login Roles&#x22;,&#x22;scopes&#x22;:[&#x22;database:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_secrets&#x22;,&#x22;label&#x22;:&#x22;List All Secrets&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_bulk_create_secrets&#x22;,&#x22;label&#x22;:&#x22;Bulk Create Secrets&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_bulk_delete_secrets&#x22;,&#x22;label&#x22;:&#x22;Bulk Delete Secrets&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_project_api_keys&#x22;,&#x22;label&#x22;:&#x22;Get Project API Keys&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_api_key&#x22;,&#x22;label&#x22;:&#x22;Get API Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_create_api_key&#x22;,&#x22;label&#x22;:&#x22;Create API Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_delete_api_key&#x22;,&#x22;label&#x22;:&#x22;Delete API Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_api_key&#x22;,&#x22;label&#x22;:&#x22;Update API Key&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_pgsodium_config&#x22;,&#x22;label&#x22;:&#x22;Get PgSodium Config&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_pgsodium_config&#x22;,&#x22;label&#x22;:&#x22;Update PgSodium Config&#x22;,&#x22;scopes&#x22;:[&#x22;secrets:write&#x22;]},{&#x22;id&#x22;:&#x22;supabase_get_storage_config&#x22;,&#x22;label&#x22;:&#x22;Get Storage Config&#x22;,&#x22;scopes&#x22;:[&#x22;storage:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_list_all_buckets&#x22;,&#x22;label&#x22;:&#x22;List All Buckets&#x22;,&#x22;scopes&#x22;:[&#x22;storage:read&#x22;]},{&#x22;id&#x22;:&#x22;supabase_update_storage_config&#x22;,&#x22;label&#x22;:&#x22;Update Storage Config&#x22;,&#x22;scopes&#x22;:[&#x22;storage:write&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Create an OAuth application</h2>

  <p>Register an application in the Supabase Dashboard.</p>

  <Steps>
    <Step title="Sign in to Supabase">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://supabase.com/dashboard" target="_blank" rel="noopener noreferrer">Supabase account</a>.</p>

        <ul>
          <li>From the left sidebar, navigate to <strong>Organization Settings</strong> > <strong>Connections</strong> > <strong>OAuth Apps</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Publish OAuth app</strong> and complete the form.</p>

        <ul>
          <li>Application Name: `StackOne Integration`</li>
          <li>Website URL: `https://stackone.com`</li>
          <li>Authorization callback URL: `https://api.stackone.com/connect/oauth2/supabase/callback`</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure application permissions">
      <div data-guide-step data-guide-scopes="auth:read,auth:write,database:read,database:write,domains:read,domains:write,edge-functions:read,edge-functions:write,environment:read,environment:write,organizations:read,projects:read,projects:write,rest:read,rest:write,secrets:read,secrets:write,storage:read,storage:write" data-guide-display-scopes-list="auth:read,auth:write,database:read,database:write,domains:read,domains:write,edge-functions:read,edge-functions:write,environment:read,environment:write,organizations:read,projects:read,projects:write,rest:read,rest:write,secrets:read,secrets:write,storage:read,storage:write">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="auth:read,auth:write,database:read,database:write,domains:read,domains:write,edge-functions:read,edge-functions:write,environment:read,environment:write,organizations:read,projects:read,projects:write,rest:read,rest:write,secrets:read,secrets:write,storage:read,storage:write" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Activate Custom Hostname, Activate Vanity Subdomain, Apply Database Migration, Authorize JIT Access, Bulk Create Secrets, Bulk Delete Secrets, Bulk Update Functions, Cancel Project Restoration, Check Vanity Subdomain Availability, Count The Number Of Action Runs, Create A Branch, Create A Function, Create API Key, Create CLI Login Role, Create Legacy Signing Key, Create Organization, Create Project, Create Project Signing Key, Create Project TPA Integration, Create SSO Provider, Deactivate Vanity Subdomain, Delete A Branch, Delete A Function, Delete API Key, Delete CLI Login Roles, Delete JIT Access, Delete Project, Delete Project TPA Integration, Delete SSO Provider, Deploy A Function, Diff A Branch, Disable Preview Branching, Disable Readonly Mode Temporarily, Enable Database Webhook, Generate TypeScript Types, Get A Branch, Get A Function, Get A Function Body, Get API Key, Get All Projects For Organization, Get Auth Service Config, Get Available Regions, Get Database Branch Config, Get Database Config, Get Database Metadata, Get Function Combined Statistics, Get Hostname Config, Get JIT Access, Get JIT Access Config, Get Legacy Signing Key, Get Migration Entry, Get Network Restrictions, Get Organization, Get PgSodium Config, Get Pooler Config, Get PostgREST Configuration, Get Postgres Upgrade Eligibility, Get Postgres Upgrade Status, Get Project, Get Project API Keys, Get Project Logs, Get Project PgBouncer Config, Get Project Signing Key, Get Project Signing Keys, Get Project TPA Integration, Get Readonly Mode Status, Get Realtime Configuration, Get SSL Enforcement Config, Get SSO Provider, Get Services Health, Get Snippet, Get Storage Config, Get The Logs Of An Action Run, Get The Status Of An Action Run, Get Usage API Counts, Get Usage API Requests Count, Get Vanity Subdomain Config, Initialize Custom Hostname, List All Action Runs, List All Backups, List All Branches, List All Buckets, List All Functions, List All Organizations, List All Projects, List All SSO Providers, List All Secrets, List All Snippets, List JIT Access, List Migration History, List Organization Members, List Project TPA Integrations, Merge A Branch, Patch Migration Entry, Pause Project, Push A Branch, Read-Only Query, Remove Project Signing Key, Remove Read Replica, Reset A Branch, Restore A Scheduled Branch Deletion, Restore PITR Backup, Restore Project, Reverify DNS Config, Rollback Database Migrations, Run Query, Shutdown Realtime Connections, Update A Function, Update API Key, Update Auth Service Config, Update Custom Hostname, Update Database Branch Config, Update Database Config, Update Database Password, Update JIT Access, Update JIT Access Config, Update Network Restrictions, Update PgSodium Config, Update Pooler Config, Update PostgREST Configuration, Update Project, Update Project Signing Key, Update Realtime Configuration, Update SSL Enforcement Config, Update SSO Provider, Update Storage Config, Update The Status Of An Action Run, Upgrade Postgres Version, Upsert Migration Without Applying</span>
        </div>

        <p>In the <strong>Application permissions</strong> section, set the access level for each resource.</p>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container connector-guide-scopes-container--scrollable">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="auth:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy auth:read" title="Copy scope" data-copy="auth:read">
                  <span className="connector-guide-scope-copy__label">auth:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="auth:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy auth:write" title="Copy scope" data-copy="auth:write">
                  <span className="connector-guide-scope-copy__label">auth:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="database:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy database:read" title="Copy scope" data-copy="database:read">
                  <span className="connector-guide-scope-copy__label">database:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="database:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy database:write" title="Copy scope" data-copy="database:write">
                  <span className="connector-guide-scope-copy__label">database:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="domains:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy domains:read" title="Copy scope" data-copy="domains:read">
                  <span className="connector-guide-scope-copy__label">domains:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="domains:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy domains:write" title="Copy scope" data-copy="domains:write">
                  <span className="connector-guide-scope-copy__label">domains:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="edge-functions:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy edge-functions:read" title="Copy scope" data-copy="edge-functions:read">
                  <span className="connector-guide-scope-copy__label">edge-functions:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="edge-functions:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy edge-functions:write" title="Copy scope" data-copy="edge-functions:write">
                  <span className="connector-guide-scope-copy__label">edge-functions:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="environment:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy environment:read" title="Copy scope" data-copy="environment:read">
                  <span className="connector-guide-scope-copy__label">environment:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="environment:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy environment:write" title="Copy scope" data-copy="environment:write">
                  <span className="connector-guide-scope-copy__label">environment:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="organizations:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy organizations:read" title="Copy scope" data-copy="organizations:read">
                  <span className="connector-guide-scope-copy__label">organizations:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="projects:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy projects:read" title="Copy scope" data-copy="projects:read">
                  <span className="connector-guide-scope-copy__label">projects:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="projects:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy projects:write" title="Copy scope" data-copy="projects:write">
                  <span className="connector-guide-scope-copy__label">projects:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="rest:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy rest:read" title="Copy scope" data-copy="rest:read">
                  <span className="connector-guide-scope-copy__label">rest:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="rest:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy rest:write" title="Copy scope" data-copy="rest:write">
                  <span className="connector-guide-scope-copy__label">rest:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="secrets:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy secrets:read" title="Copy scope" data-copy="secrets:read">
                  <span className="connector-guide-scope-copy__label">secrets:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="secrets:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy secrets:write" title="Copy scope" data-copy="secrets:write">
                  <span className="connector-guide-scope-copy__label">secrets:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="storage:read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy storage:read" title="Copy scope" data-copy="storage:read">
                  <span className="connector-guide-scope-copy__label">storage:read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="storage:write">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy storage:write" title="Copy scope" data-copy="storage:write">
                  <span className="connector-guide-scope-copy__label">storage:write</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Confirm and create">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Review the consent screen preview and click <strong>Confirm</strong> to create the application.</p>
      </div>
    </Step>

    <Step title="Copy credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Find your app in the <strong>Published apps</strong> list.</p>

        <ul>
          <li>Copy the <strong>Client ID</strong> (e.g., `f47442e1-a612-41cc-a548-01c2d5f97591`).</li>
          <li>Copy the <strong>Client Secret</strong> (starts with `sba_`).</li>
          <li>Store both securely for use later.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Supabase</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Supabase</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul style={{ marginLeft: '20px' }}>
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Supabase</strong>.
