{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://supabase.com/docs/cli/config.schema.json",
  "title": "Supabase CLI config (CliConfig)",
  "description": "The Supabase CLI's local project config document (supabase/config.toml or supabase/config.json).",
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`."
    },
    "analytics": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local Logflare service.",
          "default": true
        },
        "port": {
          "type": "number",
          "description": "Port to the local Logflare service.",
          "default": 54327
        },
        "backend": {
          "type": "string",
          "enum": ["postgres", "bigquery"],
          "description": "Configure one of the supported backends:\n\n- `postgres`\n- `bigquery`",
          "default": "postgres"
        },
        "vector_port": {
          "type": "number",
          "description": "Port to the local syslog ingest service."
        },
        "gcp_project_id": {
          "type": "string",
          "description": "GCP project ID."
        },
        "gcp_project_number": {
          "type": "string",
          "description": "GCP project number."
        },
        "gcp_jwt_path": {
          "type": "string",
          "description": "Path to the GCP JWT file."
        }
      },
      "additionalProperties": false
    },
    "api": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local PostgREST service.",
          "default": true
        },
        "port": {
          "type": "number",
          "description": "Port to use for the API URL.",
          "default": 54321
        },
        "schemas": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Schemas to expose in your API. Tables, views and stored procedures in this schema will get API endpoints."
          },
          "default": ["public", "graphql_public"]
        },
        "extra_search_path": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Extra schemas to add to the search_path of every request."
          },
          "default": ["public", "extensions"]
        },
        "max_rows": {
          "type": "number",
          "description": "The maximum number of rows returned from a view, table, or stored procedure. Limits payload size for accidental or malicious requests.",
          "default": 1000
        },
        "auto_expose_new_tables": {
          "type": "boolean",
          "description": "Controls whether newly-created tables, views, sequences and functions in the `public` schema by `postgres` are reachable through the Data API roles (`anon`, `authenticated`, `service_role`) without explicit GRANTs. When unset, new entities are auto-exposed, matching the cloud default. Set to `false` to revoke the default Data API privileges so new entities require explicit GRANTs, matching a cloud project with the \"Default privileges for new entities\" toggle turned off."
        },
        "tls": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable HTTPS endpoints locally using a self-signed certificate.",
              "default": false
            },
            "cert_path": {
              "type": "string",
              "description": "Path to the self-signed certificate."
            },
            "key_path": {
              "type": "string",
              "description": "Path to the self-signed certificate private key."
            }
          },
          "additionalProperties": false
        },
        "external_url": {
          "type": "string",
          "description": "External URL for accessing the API server."
        }
      },
      "additionalProperties": false
    },
    "auth": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local GoTrue service.",
          "default": true
        },
        "site_url": {
          "type": "string",
          "description": "The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.",
          "default": "http://127.0.0.1:3000"
        },
        "additional_redirect_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "A URL that auth providers are permitted to redirect to."
          },
          "description": "A list of exact URLs that auth providers are permitted to redirect to post authentication.",
          "default": ["https://127.0.0.1:3000"]
        },
        "jwt_expiry": {
          "type": "number",
          "description": "How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one week).",
          "default": 3600
        },
        "jwt_issuer": {
          "type": "string",
          "description": "JWT issuer URL."
        },
        "signing_keys_path": {
          "type": "string",
          "description": "Path to the JWT signing keys file."
        },
        "enable_refresh_token_rotation": {
          "type": "boolean",
          "description": "If disabled, the refresh token will never expire.",
          "default": true
        },
        "refresh_token_reuse_interval": {
          "type": "number",
          "description": "Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.",
          "default": 10
        },
        "enable_manual_linking": {
          "type": "boolean",
          "description": "Allow/disallow testing manual linking of accounts.",
          "default": false
        },
        "enable_signup": {
          "type": "boolean",
          "description": "Allow/disallow new user signups to your project.",
          "default": true
        },
        "enable_anonymous_sign_ins": {
          "type": "boolean",
          "description": "Allow/disallow anonymous sign-ins to your project.",
          "default": false
        },
        "minimum_password_length": {
          "type": "number",
          "description": "Passwords shorter than this value will be rejected as weak.",
          "default": 6
        },
        "password_requirements": {
          "type": "string",
          "enum": [
            "",
            "letters_digits",
            "lower_upper_letters_digits",
            "lower_upper_letters_digits_symbols"
          ],
          "description": "Password character requirements.",
          "default": ""
        },
        "publishable_key": {
          "type": "string",
          "description": "Publishable key override."
        },
        "secret_key": {
          "type": "string",
          "description": "Secret key override."
        },
        "jwt_secret": {
          "type": "string",
          "description": "JWT secret override."
        },
        "anon_key": {
          "type": "string",
          "description": "Anon key override."
        },
        "service_role_key": {
          "type": "string",
          "description": "Service role key override."
        },
        "rate_limit": {
          "type": "object",
          "properties": {
            "email_sent": {
              "type": "number",
              "description": "Number of emails that can be sent per hour.",
              "default": 2
            },
            "sms_sent": {
              "type": "number",
              "description": "Number of SMS messages that can be sent per hour.",
              "default": 30
            },
            "anonymous_users": {
              "type": "number",
              "description": "Number of anonymous sign-ins that can be made per hour per IP address.",
              "default": 30
            },
            "token_refresh": {
              "type": "number",
              "description": "Number of sessions that can be refreshed in a 5 minute interval per IP address.",
              "default": 150
            },
            "sign_in_sign_ups": {
              "type": "number",
              "description": "Number of sign up and sign-in requests that can be made in a 5 minute interval per IP address.",
              "default": 30
            },
            "token_verifications": {
              "type": "number",
              "description": "Number of OTP or magic link verifications that can be made in a 5 minute interval per IP address.",
              "default": 30
            },
            "web3": {
              "type": "number",
              "description": "Number of Web3 logins that can be made in a 5 minute interval per IP address.",
              "default": 30
            }
          },
          "additionalProperties": false
        },
        "captcha": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable CAPTCHA verification.",
              "default": false
            },
            "provider": {
              "type": "string",
              "enum": ["hcaptcha", "turnstile"],
              "description": "CAPTCHA provider to use."
            },
            "secret": {
              "type": "string",
              "description": "Secret key for the CAPTCHA provider."
            }
          },
          "additionalProperties": false
        },
        "hook": {
          "type": "object",
          "properties": {
            "mfa_verification_attempt": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the mfa verification hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            },
            "password_verification_attempt": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the password verification hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            },
            "custom_access_token": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the custom access token hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            },
            "send_sms": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the send sms hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            },
            "send_email": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the send email hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            },
            "before_user_created": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable or disable the before user created hook.",
                  "default": false
                },
                "uri": {
                  "type": "string",
                  "description": "The URI of the postgres function or HTTP endpoint to call."
                },
                "secrets": {
                  "type": "string",
                  "description": "Secret value to pass to the function or endpoint."
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "mfa": {
          "type": "object",
          "properties": {
            "totp": {
              "type": "object",
              "properties": {
                "enroll_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow TOTP enrollment for users.",
                  "default": false
                },
                "verify_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow TOTP verification for users.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "phone": {
              "type": "object",
              "properties": {
                "enroll_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow phone enrollment for users.",
                  "default": false
                },
                "verify_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow phone verification for users.",
                  "default": false
                },
                "otp_length": {
                  "type": "number",
                  "description": "The length of the OTP code.",
                  "default": 6
                },
                "template": {
                  "type": "string",
                  "description": "The template to use for the phone message.",
                  "default": "Your code is {{ .Code }}"
                },
                "max_frequency": {
                  "type": "string",
                  "description": "The maximum frequency of the phone messages.",
                  "default": "5s"
                }
              },
              "additionalProperties": false
            },
            "web_authn": {
              "type": "object",
              "properties": {
                "enroll_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow WebAuthn enrollment for users.",
                  "default": false
                },
                "verify_enabled": {
                  "type": "boolean",
                  "description": "Allow/disallow WebAuthn verification for users.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "max_enrolled_factors": {
              "type": "number",
              "description": "The maximum number of MFA factors a user can enroll in.",
              "default": 10
            }
          },
          "additionalProperties": false
        },
        "sessions": {
          "type": "object",
          "properties": {
            "timebox": {
              "type": "string",
              "description": "The timebox for the user session."
            },
            "inactivity_timeout": {
              "type": "string",
              "description": "The inactivity timeout for the user session."
            }
          },
          "additionalProperties": false,
          "default": {}
        },
        "email": {
          "type": "object",
          "properties": {
            "enable_signup": {
              "type": "boolean",
              "description": "Allow/disallow new user signups via email to your project.",
              "default": true
            },
            "double_confirm_changes": {
              "type": "boolean",
              "description": "If enabled, a user will be required to confirm any email change on both the old and new email addresses.",
              "default": true
            },
            "enable_confirmations": {
              "type": "boolean",
              "description": "If enabled, users need to confirm their email address before signing in.",
              "default": false
            },
            "secure_password_change": {
              "type": "boolean",
              "description": "If enabled, users will need to reauthenticate or have logged in recently to change their password.",
              "default": false
            },
            "max_frequency": {
              "type": "string",
              "description": "Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.",
              "default": "1s"
            },
            "otp_length": {
              "type": "number",
              "description": "Number of characters used in the email OTP.",
              "default": 6
            },
            "otp_expiry": {
              "type": "number",
              "description": "Number of seconds before the email OTP expires.",
              "default": 3600
            },
            "smtp": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable SMTP for email delivery.",
                  "default": false
                },
                "host": {
                  "type": "string",
                  "description": "Hostname or IP address of the SMTP server."
                },
                "port": {
                  "type": "number",
                  "description": "Port number of the SMTP server."
                },
                "user": {
                  "type": "string",
                  "description": "Username for authenticating with the SMTP server."
                },
                "pass": {
                  "type": "string",
                  "description": "Password for authenticating with the SMTP server."
                },
                "admin_email": {
                  "type": "string",
                  "description": "Email used as the sender for emails sent from the application."
                },
                "sender_name": {
                  "type": "string",
                  "description": "Display name used as the sender for emails sent from the application."
                }
              },
              "additionalProperties": false
            },
            "template": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "subject": {
                            "type": "string",
                            "description": "Subject line for the email template.",
                            "default": ""
                          },
                          "content_path": {
                            "type": "string",
                            "description": "Path to the HTML template.",
                            "default": ""
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "description": "Custom email template configuration.",
                  "default": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "notification": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable the notification email.",
                            "default": false
                          },
                          "subject": {
                            "type": "string",
                            "description": "Subject line for the notification email.",
                            "default": ""
                          },
                          "content_path": {
                            "type": "string",
                            "description": "Path to the HTML notification template.",
                            "default": ""
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "description": "Notification email configuration.",
                  "default": {}
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "sms": {
          "type": "object",
          "properties": {
            "enable_signup": {
              "type": "boolean",
              "description": "Allow/disallow new user signups via SMS to your project.",
              "default": false
            },
            "enable_confirmations": {
              "type": "boolean",
              "description": "If enabled, users need to confirm their phone number before signing in.",
              "default": false
            },
            "template": {
              "type": "string",
              "description": "The template to use for the SMS message.",
              "default": "Your code is {{ .Code }}"
            },
            "max_frequency": {
              "type": "string",
              "description": "Controls the minimum amount of time that must pass before sending another sms otp.",
              "default": "5s"
            },
            "otp_length": {
              "type": "number",
              "description": "Number of characters used in the SMS OTP.",
              "default": 6
            },
            "otp_expiry": {
              "type": "number",
              "description": "Number of seconds before the SMS OTP expires.",
              "default": 60
            },
            "twilio": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable/disable Twilio provider for phone login.",
                  "default": false
                },
                "account_sid": {
                  "type": "string",
                  "description": "The account SID for the Twilio API.",
                  "default": ""
                },
                "message_service_sid": {
                  "type": "string",
                  "description": "The message service SID for the Twilio API.",
                  "default": ""
                },
                "content_sid": {
                  "type": "string",
                  "description": "The content SID of a WhatsApp/Messaging Content Template for the Twilio API."
                },
                "auth_token": {
                  "type": "string",
                  "description": "The auth token for the Twilio API.",
                  "examples": ["env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"]
                }
              },
              "additionalProperties": false
            },
            "twilio_verify": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable/disable Twilio Verify provider for phone verification.",
                  "default": false
                },
                "account_sid": {
                  "type": "string",
                  "description": "The account SID for the Twilio API."
                },
                "message_service_sid": {
                  "type": "string",
                  "description": "The message service SID for the Twilio API."
                },
                "auth_token": {
                  "type": "string",
                  "description": "The auth token for the Twilio API."
                }
              },
              "additionalProperties": false
            },
            "messagebird": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable/disable MessageBird provider for phone login.",
                  "default": false
                },
                "originator": {
                  "type": "string",
                  "description": "The originator of the SMS message."
                },
                "access_key": {
                  "type": "string",
                  "description": "The access key for the MessageBird API."
                }
              },
              "additionalProperties": false
            },
            "textlocal": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable/disable Textlocal provider for phone login.",
                  "default": false
                },
                "sender": {
                  "type": "string",
                  "description": "The sender of the SMS message."
                },
                "api_key": {
                  "type": "string",
                  "description": "The API key for the Textlocal API."
                }
              },
              "additionalProperties": false
            },
            "vonage": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable/disable Vonage provider for phone login.",
                  "default": false
                },
                "from": {
                  "type": "string",
                  "description": "The sender of the SMS message."
                },
                "api_key": {
                  "type": "string",
                  "description": "The API key for the Vonage API."
                },
                "api_secret": {
                  "type": "string",
                  "description": "The API secret for the Vonage API."
                }
              },
              "additionalProperties": false
            },
            "test_otp": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              },
              "description": "Use pre-defined map of phone number to OTP for testing."
            }
          },
          "additionalProperties": false
        },
        "external": {
          "type": "object",
          "properties": {
            "apple": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Apple OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Apple OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Apple OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Apple OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "azure": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Azure OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Azure OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Azure OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_AZURE_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Azure OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "bitbucket": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Bitbucket OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Bitbucket OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Bitbucket OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_BITBUCKET_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Bitbucket OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "discord": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Discord OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Discord OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Discord OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_DISCORD_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Discord OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "facebook": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Facebook OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Facebook OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Facebook OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_FACEBOOK_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Facebook OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "figma": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Figma OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Figma OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Figma OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_FIGMA_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Figma OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "github": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the GitHub OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the GitHub OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the GitHub OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_GITHUB_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the GitHub OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "gitlab": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the GitLab OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the GitLab OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the GitLab OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_GITLAB_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": "https://gitlab.com"
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the GitLab OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "google": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Google OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Google OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Google OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Google OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "kakao": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Kakao OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Kakao OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Kakao OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_KAKAO_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Kakao OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "keycloak": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Keycloak OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Keycloak OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Keycloak OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_KEYCLOAK_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": "",
                  "examples": ["https://keycloak.example.com/realms/myrealm"]
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Keycloak OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "linkedin_oidc": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the LinkedIn OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the LinkedIn OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the LinkedIn OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_LINKEDIN_OIDC_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the LinkedIn OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "notion": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Notion OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Notion OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Notion OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_NOTION_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Notion OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "twitch": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Twitch OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Twitch OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Twitch OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_TWITCH_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Twitch OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "twitter": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Twitter OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Twitter OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Twitter OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_TWITTER_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Twitter OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "x": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the X OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the X OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the X OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_X_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the X OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "slack_oidc": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Slack OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Slack OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Slack OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_SLACK_OIDC_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Slack OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "spotify": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Spotify OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Spotify OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Spotify OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_SPOTIFY_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Spotify OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "workos": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the WorkOS OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the WorkOS OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the WorkOS OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_WORKOS_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the WorkOS OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "zoom": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Use the Zoom OAuth provider.",
                  "default": false
                },
                "client_id": {
                  "type": "string",
                  "description": "Client ID for the Zoom OAuth provider.",
                  "default": ""
                },
                "secret": {
                  "type": "string",
                  "description": "Client secret for the Zoom OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                  "examples": ["env(SUPABASE_AUTH_EXTERNAL_ZOOM_SECRET)"]
                },
                "url": {
                  "type": "string",
                  "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                  "default": ""
                },
                "redirect_uri": {
                  "type": "string",
                  "description": "The URI the Zoom OAuth2 provider will redirect to with the code and state values.",
                  "default": ""
                },
                "skip_nonce_check": {
                  "type": "boolean",
                  "description": "If true, the nonce check will be skipped.",
                  "default": false
                },
                "email_optional": {
                  "type": "boolean",
                  "description": "If true, authentication succeeds when the provider does not return an email address.",
                  "default": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "web3": {
          "type": "object",
          "properties": {
            "solana": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this Web3 provider.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "ethereum": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this Web3 provider.",
                  "default": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "oauth_server": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable OAuth server functionality.",
              "default": false
            },
            "authorization_url_path": {
              "type": "string",
              "description": "Path for OAuth consent flow UI.",
              "default": "/oauth/consent"
            },
            "allow_dynamic_registration": {
              "type": "boolean",
              "description": "Allow dynamic client registration.",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "third_party": {
          "type": "object",
          "properties": {
            "firebase": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this third-party auth provider.",
                  "default": false
                },
                "project_id": {
                  "type": "string",
                  "description": "Firebase project ID."
                }
              },
              "additionalProperties": false
            },
            "auth0": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this third-party auth provider.",
                  "default": false
                },
                "tenant": {
                  "type": "string",
                  "description": "Auth0 tenant."
                },
                "tenant_region": {
                  "type": "string",
                  "description": "Auth0 tenant region."
                }
              },
              "additionalProperties": false
            },
            "aws_cognito": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this third-party auth provider.",
                  "default": false
                },
                "user_pool_id": {
                  "type": "string",
                  "description": "AWS Cognito user pool ID."
                },
                "user_pool_region": {
                  "type": "string",
                  "description": "AWS Cognito user pool region."
                }
              },
              "additionalProperties": false
            },
            "clerk": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this third-party auth provider.",
                  "default": false
                },
                "domain": {
                  "type": "string",
                  "description": "Clerk domain."
                }
              },
              "additionalProperties": false
            },
            "workos": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable this third-party auth provider.",
                  "default": false
                },
                "issuer_url": {
                  "type": "string",
                  "description": "WorkOS issuer URL."
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "db": {
      "type": "object",
      "properties": {
        "port": {
          "type": "number",
          "description": "Port to use for the local database URL.",
          "default": 54322
        },
        "shadow_port": {
          "type": "number",
          "description": "Port used by db diff command to initialize the shadow database.",
          "default": 54320
        },
        "health_timeout": {
          "type": "string",
          "description": "Maximum amount of time to wait for health check when starting the local database.",
          "default": "2m"
        },
        "major_version": {
          "type": "number",
          "description": "The database major version to use. This has to be the same as your remote database's.",
          "default": 17
        },
        "orioledb_version": {
          "type": "string",
          "description": "OrioleDB version of the Postgres image to use for the local database. Requires `major_version` 15 or 17."
        },
        "pooler": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable the local PgBouncer service.",
              "default": false
            },
            "port": {
              "type": "number",
              "description": "Port to use for the local connection pooler.",
              "default": 54329
            },
            "pool_mode": {
              "type": "string",
              "enum": ["transaction", "session"],
              "description": "Specifies when a server connection can be reused by other clients.",
              "default": "transaction"
            },
            "default_pool_size": {
              "type": "number",
              "description": "How many server connections to allow per user/database pair.",
              "default": 20
            },
            "max_client_conn": {
              "type": "number",
              "description": "Maximum number of client connections allowed.",
              "default": 100
            }
          },
          "additionalProperties": false
        },
        "migrations": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "If disabled, migrations will be skipped during a db push or reset.",
              "default": true
            },
            "schema_paths": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Schema file path, directory, or glob relative to the supabase directory."
              },
              "description": "Ordered list of schema files, directories, or glob patterns that describe your database.",
              "default": []
            }
          },
          "additionalProperties": false
        },
        "seed": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable seeding the database with SQL files.",
              "default": true
            },
            "sql_paths": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Path to a SQL file used to seed the database."
              },
              "description": "Ordered list of seed files to load during db reset.",
              "default": ["./seed.sql"]
            }
          },
          "additionalProperties": false
        },
        "settings": {
          "type": "object",
          "properties": {
            "effective_cache_size": {
              "type": "string"
            },
            "logical_decoding_work_mem": {
              "type": "string"
            },
            "maintenance_work_mem": {
              "type": "string"
            },
            "max_connections": {
              "type": "number"
            },
            "max_locks_per_transaction": {
              "type": "number"
            },
            "max_parallel_maintenance_workers": {
              "type": "number"
            },
            "max_parallel_workers": {
              "type": "number"
            },
            "max_parallel_workers_per_gather": {
              "type": "number"
            },
            "max_replication_slots": {
              "type": "number"
            },
            "max_slot_wal_keep_size": {
              "type": "string"
            },
            "max_standby_archive_delay": {
              "type": "string"
            },
            "max_standby_streaming_delay": {
              "type": "string"
            },
            "max_wal_size": {
              "type": "string"
            },
            "max_wal_senders": {
              "type": "number"
            },
            "max_worker_processes": {
              "type": "number"
            },
            "session_replication_role": {
              "type": "string",
              "enum": ["origin", "replica", "local"],
              "description": "Session replication role."
            },
            "shared_buffers": {
              "type": "string"
            },
            "statement_timeout": {
              "type": "string"
            },
            "track_activity_query_size": {
              "type": "string"
            },
            "track_commit_timestamp": {
              "type": "boolean"
            },
            "wal_keep_size": {
              "type": "string"
            },
            "wal_sender_timeout": {
              "type": "string"
            },
            "work_mem": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "network_restrictions": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable management of network restrictions.",
              "default": false
            },
            "allowed_cidrs": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Allowed IPv4 CIDR blocks.",
              "default": ["0.0.0.0/0"]
            },
            "allowed_cidrs_v6": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Allowed IPv6 CIDR blocks.",
              "default": ["::/0"]
            }
          },
          "additionalProperties": false
        },
        "ssl_enforcement": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Reject non-secure connections to the database.",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "vault": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "description": "Vault secret value."
          },
          "description": "Vault secrets."
        }
      },
      "additionalProperties": false
    },
    "edge_runtime": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local Edge Runtime service.",
          "default": true
        },
        "policy": {
          "type": "string",
          "enum": ["oneshot", "per_worker"],
          "description": "Configure the supported request policy.",
          "default": "per_worker"
        },
        "inspector_port": {
          "type": "number",
          "description": "Port to run the Edge Functions inspector on.",
          "default": 8083
        },
        "deno_version": {
          "type": "number",
          "description": "The Deno major version to use.",
          "default": 2
        },
        "secrets": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "description": "Secret value exposed to the edge runtime."
          },
          "description": "Secrets exposed to the edge runtime."
        }
      },
      "additionalProperties": false
    },
    "functions": {
      "anyOf": [
        {
          "type": "object",
          "patternProperties": {
            "^[a-zA-Z0-9_-]+$": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean",
                      "description": "Controls whether a function is deployed or served.",
                      "default": true
                    },
                    "verify_jwt": {
                      "type": "boolean",
                      "description": "By default, deployed or locally served functions reject requests without a valid JWT.",
                      "default": true
                    },
                    "import_map": {
                      "type": "string",
                      "description": "Import map file to use for the Function.",
                      "default": ""
                    },
                    "entrypoint": {
                      "type": "string",
                      "description": "Entrypoint path to the Function. Defaults to \"functions/slug/index.ts\".",
                      "default": ""
                    },
                    "static_files": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "Static file glob for the function."
                      },
                      "description": "Static files to bundle with the function.",
                      "default": []
                    },
                    "env": {
                      "type": "object",
                      "patternProperties": {
                        "^[A-Z_][A-Z0-9_]*$": {
                          "type": "string",
                          "pattern": "^env\\((.*)\\)$",
                          "description": "Reference to a project environment variable available to the Function."
                        }
                      },
                      "description": "Environment variables from the project environment that this Function can access.",
                      "default": {}
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "description": "Function-specific configuration keyed by function slug.",
          "default": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "local_smtp": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local SMTP testing server.",
          "default": true
        },
        "port": {
          "type": "number",
          "description": "Port to use for the email testing server web interface.\n\nEmails sent with the local dev setup are monitored and available from the web interface.",
          "default": 54324
        },
        "smtp_port": {
          "type": "number",
          "description": "Optional SMTP port to expose for local testing."
        },
        "pop3_port": {
          "type": "number",
          "description": "Optional POP3 port to expose for local testing."
        },
        "admin_email": {
          "type": "string",
          "description": "Admin email address for test email sender metadata."
        },
        "sender_name": {
          "type": "string",
          "description": "Sender name for test email sender metadata."
        }
      },
      "additionalProperties": false
    },
    "realtime": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local Realtime service.",
          "default": true
        },
        "ip_version": {
          "type": "string",
          "enum": ["IPv4", "IPv6"],
          "description": "Bind realtime via either IPv4 or IPv6.",
          "default": "IPv4"
        },
        "max_header_length": {
          "type": "number",
          "description": "Maximum length of the HTTP header.",
          "default": 4096
        }
      },
      "additionalProperties": false
    },
    "storage": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local Storage service.",
          "default": true
        },
        "file_size_limit": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        },
        "image_transformation": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable image transformation.",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "buckets": {
          "type": "object",
          "additionalProperties": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "public": {
                    "type": "boolean",
                    "description": "Enable public access to the bucket.",
                    "default": false
                  },
                  "file_size_limit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "allowed_mime_types": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "A MIME type allowed for the bucket."
                    },
                    "description": "The list of allowed MIME types for the bucket.",
                    "default": []
                  },
                  "objects_path": {
                    "type": "string",
                    "description": "The path to the objects in the bucket.",
                    "default": ""
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "description": "Storage buckets configuration."
        },
        "s3_protocol": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Allow connections via S3 compatible clients.",
              "default": true
            }
          },
          "additionalProperties": false
        },
        "analytics": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable analytics buckets.",
              "default": false
            },
            "max_namespaces": {
              "type": "number",
              "description": "Maximum number of analytics namespaces.",
              "default": 5
            },
            "max_tables": {
              "type": "number",
              "description": "Maximum number of analytics tables.",
              "default": 10
            },
            "max_catalogs": {
              "type": "number",
              "description": "Maximum number of analytics catalogs.",
              "default": 2
            },
            "buckets": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "object"
                          },
                          {
                            "type": "array"
                          }
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "description": "Analytics bucket configuration.",
                  "default": {}
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "vector": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable vector buckets.",
              "default": true
            },
            "max_buckets": {
              "type": "number",
              "description": "Maximum number of vector buckets.",
              "default": 10
            },
            "max_indexes": {
              "type": "number",
              "description": "Maximum number of vector indexes.",
              "default": 5
            },
            "buckets": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "object"
                          },
                          {
                            "type": "array"
                          }
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "description": "Vector bucket configuration.",
                  "default": {}
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "studio": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the local Supabase Studio dashboard.",
          "default": true
        },
        "port": {
          "type": "number",
          "description": "Port to use for Supabase Studio.",
          "default": 54323
        },
        "api_url": {
          "type": "string",
          "description": "External URL of the API server that frontend connects to.",
          "default": "http://127.0.0.1"
        },
        "openai_api_key": {
          "type": "string",
          "description": "OpenAI API key to use for Supabase AI in the Supabase Studio.",
          "examples": ["env(OPENAI_API_KEY)"]
        }
      },
      "additionalProperties": false
    },
    "compute": {
      "anyOf": [
        {
          "type": "object",
          "patternProperties": {
            "^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$": {
              "type": "object",
              "properties": {
                "runtime": {
                  "type": "string",
                  "description": "Runtime the compute is built on: `dockerfile` to build the directory's own\nDockerfile, or one of the catalog runtimes (`node`, `deno`). Guessed from\nmarker files when unset.",
                  "examples": ["node"]
                },
                "size": {
                  "type": "string",
                  "description": "Instance size, denominated by memory. Each size implies its own vCPU count,\nso it is the one dial rather than two.",
                  "examples": ["2gb"]
                },
                "exposure": {
                  "type": "string",
                  "description": "How the compute is reached: `public` gives it an internet-facing URL,\n`private` keeps it reachable only from inside the project. Every deploy\nsends a complete spec, so the value recorded here is what keeps a private\ncompute private; `--exposure` overrides it for one deploy. Defaults to\n`public`.",
                  "examples": ["private"]
                },
                "instances": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of instances to run. Every deploy sends a complete spec, so a count\nrecorded here is what keeps a scaled compute scaled; `--instances` overrides\nit for one deploy. Defaults to 1.",
                  "examples": [3]
                },
                "source": {
                  "type": "string",
                  "description": "Directory holding the compute's code, relative to the project root, when it\ndoes not live at `supabase/compute/<name>/`.",
                  "examples": ["packages/api"]
                },
                "exclude": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Patterns for paths to leave out of the uploaded build context, read the way\n`.gitignore` reads them: a pattern without `/` matches that name at any depth,\none with `/` is anchored at the compute's source directory, a trailing `/`\nmatches directories only, and `**` spans directories. Excluding a directory\nexcludes everything under it; re-inclusion (`!`) is not supported. Only the\npatterns recorded here are excluded, so a compute with no list uploads its source\ndirectory whole.",
                  "examples": [["node_modules", ".env"]]
                }
              },
              "additionalProperties": false
            }
          },
          "description": "Compute-specific configuration keyed by compute name.",
          "default": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "experimental": {
      "type": "object",
      "properties": {
        "compute": {
          "type": "boolean",
          "description": "Enable the experimental compute command family."
        },
        "stack": {
          "type": "boolean",
          "description": "Use the new local stack backend for start, stop, and status, and for --local targets of the db, migration, test db, gen types, inspect, and pull command families."
        },
        "orioledb_version": {
          "type": "string",
          "description": "Deprecated: use `db.orioledb_version` instead. Postgres storage engine version for OrioleDB."
        },
        "s3_host": {
          "type": "string",
          "description": "S3 bucket URL.",
          "examples": ["<bucket_name>.s3-<region>.amazonaws.com", "env(S3_HOST)"]
        },
        "s3_region": {
          "type": "string",
          "description": "S3 bucket region.",
          "examples": ["us-east-1", "env(S3_REGION)"]
        },
        "s3_access_key": {
          "type": "string",
          "description": "S3 access key.",
          "examples": ["env(S3_ACCESS_KEY)"]
        },
        "s3_secret_key": {
          "type": "string",
          "description": "S3 secret key.",
          "examples": ["env(S3_SECRET_KEY)"]
        },
        "webhooks": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable experimental webhooks.",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "pgdelta": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Use pg-delta as the schema diff engine for db diff / db pull / db remote commit. Set false to fall back to the legacy migra engine.",
              "default": false
            },
            "declarative_schema_path": {
              "type": "string",
              "description": "Directory under supabase/ where declarative schema files are written.",
              "examples": ["./schemas"]
            },
            "format_options": {
              "type": "string",
              "description": "JSON string passed through to pg-delta SQL formatting. When omitted, SQL is formatted with uppercase keywords, indent 2, max width 180, trailing commas, and column/key alignment. Set to \"null\" to emit raw, unformatted SQL.",
              "examples": [
                "{\"keywordCase\":\"upper\",\"indent\":2,\"maxWidth\":180,\"commaStyle\":\"trailing\"}"
              ]
            }
          },
          "additionalProperties": false
        },
        "inspect": {
          "type": "object",
          "properties": {
            "rules": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Inspection query."
                  },
                  "name": {
                    "type": "string",
                    "description": "Inspection rule name."
                  },
                  "pass": {
                    "type": "string",
                    "description": "Success message."
                  },
                  "fail": {
                    "type": "string",
                    "description": "Failure message."
                  }
                },
                "additionalProperties": false
              },
              "description": "Inspection rules.",
              "default": []
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "remotes": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "project_id": {
                    "type": "string",
                    "description": "Remote project reference.",
                    "default": ""
                  },
                  "analytics": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local Logflare service.",
                        "default": true
                      },
                      "port": {
                        "type": "number",
                        "description": "Port to the local Logflare service.",
                        "default": 54327
                      },
                      "backend": {
                        "type": "string",
                        "enum": ["postgres", "bigquery"],
                        "description": "Configure one of the supported backends:\n\n- `postgres`\n- `bigquery`",
                        "default": "postgres"
                      },
                      "vector_port": {
                        "type": "number",
                        "description": "Port to the local syslog ingest service."
                      },
                      "gcp_project_id": {
                        "type": "string",
                        "description": "GCP project ID."
                      },
                      "gcp_project_number": {
                        "type": "string",
                        "description": "GCP project number."
                      },
                      "gcp_jwt_path": {
                        "type": "string",
                        "description": "Path to the GCP JWT file."
                      }
                    },
                    "additionalProperties": false
                  },
                  "api": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local PostgREST service.",
                        "default": true
                      },
                      "port": {
                        "type": "number",
                        "description": "Port to use for the API URL.",
                        "default": 54321
                      },
                      "schemas": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "Schemas to expose in your API. Tables, views and stored procedures in this schema will get API endpoints."
                        },
                        "default": ["public", "graphql_public"]
                      },
                      "extra_search_path": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "Extra schemas to add to the search_path of every request."
                        },
                        "default": ["public", "extensions"]
                      },
                      "max_rows": {
                        "type": "number",
                        "description": "The maximum number of rows returned from a view, table, or stored procedure. Limits payload size for accidental or malicious requests.",
                        "default": 1000
                      },
                      "auto_expose_new_tables": {
                        "type": "boolean",
                        "description": "Controls whether newly-created tables, views, sequences and functions in the `public` schema by `postgres` are reachable through the Data API roles (`anon`, `authenticated`, `service_role`) without explicit GRANTs. When unset, new entities are auto-exposed, matching the cloud default. Set to `false` to revoke the default Data API privileges so new entities require explicit GRANTs, matching a cloud project with the \"Default privileges for new entities\" toggle turned off."
                      },
                      "tls": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable HTTPS endpoints locally using a self-signed certificate.",
                            "default": false
                          },
                          "cert_path": {
                            "type": "string",
                            "description": "Path to the self-signed certificate."
                          },
                          "key_path": {
                            "type": "string",
                            "description": "Path to the self-signed certificate private key."
                          }
                        },
                        "additionalProperties": false
                      },
                      "external_url": {
                        "type": "string",
                        "description": "External URL for accessing the API server."
                      }
                    },
                    "additionalProperties": false
                  },
                  "auth": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local GoTrue service.",
                        "default": true
                      },
                      "site_url": {
                        "type": "string",
                        "description": "The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.",
                        "default": "http://127.0.0.1:3000"
                      },
                      "additional_redirect_urls": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "A URL that auth providers are permitted to redirect to."
                        },
                        "description": "A list of exact URLs that auth providers are permitted to redirect to post authentication.",
                        "default": ["https://127.0.0.1:3000"]
                      },
                      "jwt_expiry": {
                        "type": "number",
                        "description": "How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one week).",
                        "default": 3600
                      },
                      "jwt_issuer": {
                        "type": "string",
                        "description": "JWT issuer URL."
                      },
                      "signing_keys_path": {
                        "type": "string",
                        "description": "Path to the JWT signing keys file."
                      },
                      "enable_refresh_token_rotation": {
                        "type": "boolean",
                        "description": "If disabled, the refresh token will never expire.",
                        "default": true
                      },
                      "refresh_token_reuse_interval": {
                        "type": "number",
                        "description": "Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.",
                        "default": 10
                      },
                      "enable_manual_linking": {
                        "type": "boolean",
                        "description": "Allow/disallow testing manual linking of accounts.",
                        "default": false
                      },
                      "enable_signup": {
                        "type": "boolean",
                        "description": "Allow/disallow new user signups to your project.",
                        "default": true
                      },
                      "enable_anonymous_sign_ins": {
                        "type": "boolean",
                        "description": "Allow/disallow anonymous sign-ins to your project.",
                        "default": false
                      },
                      "minimum_password_length": {
                        "type": "number",
                        "description": "Passwords shorter than this value will be rejected as weak.",
                        "default": 6
                      },
                      "password_requirements": {
                        "type": "string",
                        "enum": [
                          "",
                          "letters_digits",
                          "lower_upper_letters_digits",
                          "lower_upper_letters_digits_symbols"
                        ],
                        "description": "Password character requirements.",
                        "default": ""
                      },
                      "publishable_key": {
                        "type": "string",
                        "description": "Publishable key override."
                      },
                      "secret_key": {
                        "type": "string",
                        "description": "Secret key override."
                      },
                      "jwt_secret": {
                        "type": "string",
                        "description": "JWT secret override."
                      },
                      "anon_key": {
                        "type": "string",
                        "description": "Anon key override."
                      },
                      "service_role_key": {
                        "type": "string",
                        "description": "Service role key override."
                      },
                      "rate_limit": {
                        "type": "object",
                        "properties": {
                          "email_sent": {
                            "type": "number",
                            "description": "Number of emails that can be sent per hour.",
                            "default": 2
                          },
                          "sms_sent": {
                            "type": "number",
                            "description": "Number of SMS messages that can be sent per hour.",
                            "default": 30
                          },
                          "anonymous_users": {
                            "type": "number",
                            "description": "Number of anonymous sign-ins that can be made per hour per IP address.",
                            "default": 30
                          },
                          "token_refresh": {
                            "type": "number",
                            "description": "Number of sessions that can be refreshed in a 5 minute interval per IP address.",
                            "default": 150
                          },
                          "sign_in_sign_ups": {
                            "type": "number",
                            "description": "Number of sign up and sign-in requests that can be made in a 5 minute interval per IP address.",
                            "default": 30
                          },
                          "token_verifications": {
                            "type": "number",
                            "description": "Number of OTP or magic link verifications that can be made in a 5 minute interval per IP address.",
                            "default": 30
                          },
                          "web3": {
                            "type": "number",
                            "description": "Number of Web3 logins that can be made in a 5 minute interval per IP address.",
                            "default": 30
                          }
                        },
                        "additionalProperties": false
                      },
                      "captcha": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CAPTCHA verification.",
                            "default": false
                          },
                          "provider": {
                            "type": "string",
                            "enum": ["hcaptcha", "turnstile"],
                            "description": "CAPTCHA provider to use."
                          },
                          "secret": {
                            "type": "string",
                            "description": "Secret key for the CAPTCHA provider."
                          }
                        },
                        "additionalProperties": false
                      },
                      "hook": {
                        "type": "object",
                        "properties": {
                          "mfa_verification_attempt": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the mfa verification hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          },
                          "password_verification_attempt": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the password verification hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          },
                          "custom_access_token": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the custom access token hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          },
                          "send_sms": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the send sms hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          },
                          "send_email": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the send email hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          },
                          "before_user_created": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable or disable the before user created hook.",
                                "default": false
                              },
                              "uri": {
                                "type": "string",
                                "description": "The URI of the postgres function or HTTP endpoint to call."
                              },
                              "secrets": {
                                "type": "string",
                                "description": "Secret value to pass to the function or endpoint."
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "mfa": {
                        "type": "object",
                        "properties": {
                          "totp": {
                            "type": "object",
                            "properties": {
                              "enroll_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow TOTP enrollment for users.",
                                "default": false
                              },
                              "verify_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow TOTP verification for users.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "phone": {
                            "type": "object",
                            "properties": {
                              "enroll_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow phone enrollment for users.",
                                "default": false
                              },
                              "verify_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow phone verification for users.",
                                "default": false
                              },
                              "otp_length": {
                                "type": "number",
                                "description": "The length of the OTP code.",
                                "default": 6
                              },
                              "template": {
                                "type": "string",
                                "description": "The template to use for the phone message.",
                                "default": "Your code is {{ .Code }}"
                              },
                              "max_frequency": {
                                "type": "string",
                                "description": "The maximum frequency of the phone messages.",
                                "default": "5s"
                              }
                            },
                            "additionalProperties": false
                          },
                          "web_authn": {
                            "type": "object",
                            "properties": {
                              "enroll_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow WebAuthn enrollment for users.",
                                "default": false
                              },
                              "verify_enabled": {
                                "type": "boolean",
                                "description": "Allow/disallow WebAuthn verification for users.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "max_enrolled_factors": {
                            "type": "number",
                            "description": "The maximum number of MFA factors a user can enroll in.",
                            "default": 10
                          }
                        },
                        "additionalProperties": false
                      },
                      "sessions": {
                        "type": "object",
                        "properties": {
                          "timebox": {
                            "type": "string",
                            "description": "The timebox for the user session."
                          },
                          "inactivity_timeout": {
                            "type": "string",
                            "description": "The inactivity timeout for the user session."
                          }
                        },
                        "additionalProperties": false,
                        "default": {}
                      },
                      "email": {
                        "type": "object",
                        "properties": {
                          "enable_signup": {
                            "type": "boolean",
                            "description": "Allow/disallow new user signups via email to your project.",
                            "default": true
                          },
                          "double_confirm_changes": {
                            "type": "boolean",
                            "description": "If enabled, a user will be required to confirm any email change on both the old and new email addresses.",
                            "default": true
                          },
                          "enable_confirmations": {
                            "type": "boolean",
                            "description": "If enabled, users need to confirm their email address before signing in.",
                            "default": false
                          },
                          "secure_password_change": {
                            "type": "boolean",
                            "description": "If enabled, users will need to reauthenticate or have logged in recently to change their password.",
                            "default": false
                          },
                          "max_frequency": {
                            "type": "string",
                            "description": "Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.",
                            "default": "1s"
                          },
                          "otp_length": {
                            "type": "number",
                            "description": "Number of characters used in the email OTP.",
                            "default": 6
                          },
                          "otp_expiry": {
                            "type": "number",
                            "description": "Number of seconds before the email OTP expires.",
                            "default": 3600
                          },
                          "smtp": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable SMTP for email delivery.",
                                "default": false
                              },
                              "host": {
                                "type": "string",
                                "description": "Hostname or IP address of the SMTP server."
                              },
                              "port": {
                                "type": "number",
                                "description": "Port number of the SMTP server."
                              },
                              "user": {
                                "type": "string",
                                "description": "Username for authenticating with the SMTP server."
                              },
                              "pass": {
                                "type": "string",
                                "description": "Password for authenticating with the SMTP server."
                              },
                              "admin_email": {
                                "type": "string",
                                "description": "Email used as the sender for emails sent from the application."
                              },
                              "sender_name": {
                                "type": "string",
                                "description": "Display name used as the sender for emails sent from the application."
                              }
                            },
                            "additionalProperties": false
                          },
                          "template": {
                            "anyOf": [
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "subject": {
                                          "type": "string",
                                          "description": "Subject line for the email template.",
                                          "default": ""
                                        },
                                        "content_path": {
                                          "type": "string",
                                          "description": "Path to the HTML template.",
                                          "default": ""
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "description": "Custom email template configuration.",
                                "default": {}
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "notification": {
                            "anyOf": [
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "enabled": {
                                          "type": "boolean",
                                          "description": "Enable the notification email.",
                                          "default": false
                                        },
                                        "subject": {
                                          "type": "string",
                                          "description": "Subject line for the notification email.",
                                          "default": ""
                                        },
                                        "content_path": {
                                          "type": "string",
                                          "description": "Path to the HTML notification template.",
                                          "default": ""
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "description": "Notification email configuration.",
                                "default": {}
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "sms": {
                        "type": "object",
                        "properties": {
                          "enable_signup": {
                            "type": "boolean",
                            "description": "Allow/disallow new user signups via SMS to your project.",
                            "default": false
                          },
                          "enable_confirmations": {
                            "type": "boolean",
                            "description": "If enabled, users need to confirm their phone number before signing in.",
                            "default": false
                          },
                          "template": {
                            "type": "string",
                            "description": "The template to use for the SMS message.",
                            "default": "Your code is {{ .Code }}"
                          },
                          "max_frequency": {
                            "type": "string",
                            "description": "Controls the minimum amount of time that must pass before sending another sms otp.",
                            "default": "5s"
                          },
                          "otp_length": {
                            "type": "number",
                            "description": "Number of characters used in the SMS OTP.",
                            "default": 6
                          },
                          "otp_expiry": {
                            "type": "number",
                            "description": "Number of seconds before the SMS OTP expires.",
                            "default": 60
                          },
                          "twilio": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable/disable Twilio provider for phone login.",
                                "default": false
                              },
                              "account_sid": {
                                "type": "string",
                                "description": "The account SID for the Twilio API.",
                                "default": ""
                              },
                              "message_service_sid": {
                                "type": "string",
                                "description": "The message service SID for the Twilio API.",
                                "default": ""
                              },
                              "content_sid": {
                                "type": "string",
                                "description": "The content SID of a WhatsApp/Messaging Content Template for the Twilio API."
                              },
                              "auth_token": {
                                "type": "string",
                                "description": "The auth token for the Twilio API.",
                                "examples": ["env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"]
                              }
                            },
                            "additionalProperties": false
                          },
                          "twilio_verify": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable/disable Twilio Verify provider for phone verification.",
                                "default": false
                              },
                              "account_sid": {
                                "type": "string",
                                "description": "The account SID for the Twilio API."
                              },
                              "message_service_sid": {
                                "type": "string",
                                "description": "The message service SID for the Twilio API."
                              },
                              "auth_token": {
                                "type": "string",
                                "description": "The auth token for the Twilio API."
                              }
                            },
                            "additionalProperties": false
                          },
                          "messagebird": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable/disable MessageBird provider for phone login.",
                                "default": false
                              },
                              "originator": {
                                "type": "string",
                                "description": "The originator of the SMS message."
                              },
                              "access_key": {
                                "type": "string",
                                "description": "The access key for the MessageBird API."
                              }
                            },
                            "additionalProperties": false
                          },
                          "textlocal": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable/disable Textlocal provider for phone login.",
                                "default": false
                              },
                              "sender": {
                                "type": "string",
                                "description": "The sender of the SMS message."
                              },
                              "api_key": {
                                "type": "string",
                                "description": "The API key for the Textlocal API."
                              }
                            },
                            "additionalProperties": false
                          },
                          "vonage": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable/disable Vonage provider for phone login.",
                                "default": false
                              },
                              "from": {
                                "type": "string",
                                "description": "The sender of the SMS message."
                              },
                              "api_key": {
                                "type": "string",
                                "description": "The API key for the Vonage API."
                              },
                              "api_secret": {
                                "type": "string",
                                "description": "The API secret for the Vonage API."
                              }
                            },
                            "additionalProperties": false
                          },
                          "test_otp": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Use pre-defined map of phone number to OTP for testing."
                          }
                        },
                        "additionalProperties": false
                      },
                      "external": {
                        "type": "object",
                        "properties": {
                          "apple": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Apple OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Apple OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Apple OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Apple OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "azure": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Azure OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Azure OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Azure OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_AZURE_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Azure OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "bitbucket": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Bitbucket OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Bitbucket OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Bitbucket OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_BITBUCKET_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Bitbucket OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "discord": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Discord OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Discord OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Discord OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_DISCORD_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Discord OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "facebook": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Facebook OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Facebook OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Facebook OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_FACEBOOK_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Facebook OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "figma": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Figma OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Figma OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Figma OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_FIGMA_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Figma OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "github": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the GitHub OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the GitHub OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the GitHub OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_GITHUB_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the GitHub OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "gitlab": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the GitLab OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the GitLab OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the GitLab OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_GITLAB_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": "https://gitlab.com"
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the GitLab OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "google": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Google OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Google OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Google OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Google OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "kakao": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Kakao OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Kakao OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Kakao OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_KAKAO_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Kakao OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "keycloak": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Keycloak OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Keycloak OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Keycloak OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_KEYCLOAK_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": "",
                                "examples": ["https://keycloak.example.com/realms/myrealm"]
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Keycloak OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "linkedin_oidc": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the LinkedIn OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the LinkedIn OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the LinkedIn OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_LINKEDIN_OIDC_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the LinkedIn OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "notion": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Notion OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Notion OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Notion OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_NOTION_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Notion OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "twitch": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Twitch OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Twitch OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Twitch OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_TWITCH_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Twitch OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "twitter": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Twitter OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Twitter OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Twitter OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_TWITTER_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Twitter OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "x": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the X OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the X OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the X OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_X_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the X OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "slack_oidc": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Slack OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Slack OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Slack OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_SLACK_OIDC_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Slack OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "spotify": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Spotify OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Spotify OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Spotify OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_SPOTIFY_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Spotify OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "workos": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the WorkOS OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the WorkOS OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the WorkOS OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_WORKOS_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the WorkOS OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "zoom": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Use the Zoom OAuth provider.",
                                "default": false
                              },
                              "client_id": {
                                "type": "string",
                                "description": "Client ID for the Zoom OAuth provider.",
                                "default": ""
                              },
                              "secret": {
                                "type": "string",
                                "description": "Client secret for the Zoom OAuth provider.\n\nDO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.",
                                "examples": ["env(SUPABASE_AUTH_EXTERNAL_ZOOM_SECRET)"]
                              },
                              "url": {
                                "type": "string",
                                "description": "The base URL used for constructing the URLs to request authorization and access tokens.",
                                "default": ""
                              },
                              "redirect_uri": {
                                "type": "string",
                                "description": "The URI the Zoom OAuth2 provider will redirect to with the code and state values.",
                                "default": ""
                              },
                              "skip_nonce_check": {
                                "type": "boolean",
                                "description": "If true, the nonce check will be skipped.",
                                "default": false
                              },
                              "email_optional": {
                                "type": "boolean",
                                "description": "If true, authentication succeeds when the provider does not return an email address.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "web3": {
                        "type": "object",
                        "properties": {
                          "solana": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this Web3 provider.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "ethereum": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this Web3 provider.",
                                "default": false
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "oauth_server": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable OAuth server functionality.",
                            "default": false
                          },
                          "authorization_url_path": {
                            "type": "string",
                            "description": "Path for OAuth consent flow UI.",
                            "default": "/oauth/consent"
                          },
                          "allow_dynamic_registration": {
                            "type": "boolean",
                            "description": "Allow dynamic client registration.",
                            "default": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "third_party": {
                        "type": "object",
                        "properties": {
                          "firebase": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this third-party auth provider.",
                                "default": false
                              },
                              "project_id": {
                                "type": "string",
                                "description": "Firebase project ID."
                              }
                            },
                            "additionalProperties": false
                          },
                          "auth0": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this third-party auth provider.",
                                "default": false
                              },
                              "tenant": {
                                "type": "string",
                                "description": "Auth0 tenant."
                              },
                              "tenant_region": {
                                "type": "string",
                                "description": "Auth0 tenant region."
                              }
                            },
                            "additionalProperties": false
                          },
                          "aws_cognito": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this third-party auth provider.",
                                "default": false
                              },
                              "user_pool_id": {
                                "type": "string",
                                "description": "AWS Cognito user pool ID."
                              },
                              "user_pool_region": {
                                "type": "string",
                                "description": "AWS Cognito user pool region."
                              }
                            },
                            "additionalProperties": false
                          },
                          "clerk": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this third-party auth provider.",
                                "default": false
                              },
                              "domain": {
                                "type": "string",
                                "description": "Clerk domain."
                              }
                            },
                            "additionalProperties": false
                          },
                          "workos": {
                            "type": "object",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable this third-party auth provider.",
                                "default": false
                              },
                              "issuer_url": {
                                "type": "string",
                                "description": "WorkOS issuer URL."
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  },
                  "db": {
                    "type": "object",
                    "properties": {
                      "port": {
                        "type": "number",
                        "description": "Port to use for the local database URL.",
                        "default": 54322
                      },
                      "shadow_port": {
                        "type": "number",
                        "description": "Port used by db diff command to initialize the shadow database.",
                        "default": 54320
                      },
                      "health_timeout": {
                        "type": "string",
                        "description": "Maximum amount of time to wait for health check when starting the local database.",
                        "default": "2m"
                      },
                      "major_version": {
                        "type": "number",
                        "description": "The database major version to use. This has to be the same as your remote database's.",
                        "default": 17
                      },
                      "orioledb_version": {
                        "type": "string",
                        "description": "OrioleDB version of the Postgres image to use for the local database. Requires `major_version` 15 or 17."
                      },
                      "pooler": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable the local PgBouncer service.",
                            "default": false
                          },
                          "port": {
                            "type": "number",
                            "description": "Port to use for the local connection pooler.",
                            "default": 54329
                          },
                          "pool_mode": {
                            "type": "string",
                            "enum": ["transaction", "session"],
                            "description": "Specifies when a server connection can be reused by other clients.",
                            "default": "transaction"
                          },
                          "default_pool_size": {
                            "type": "number",
                            "description": "How many server connections to allow per user/database pair.",
                            "default": 20
                          },
                          "max_client_conn": {
                            "type": "number",
                            "description": "Maximum number of client connections allowed.",
                            "default": 100
                          }
                        },
                        "additionalProperties": false
                      },
                      "migrations": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "If disabled, migrations will be skipped during a db push or reset.",
                            "default": true
                          },
                          "schema_paths": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "description": "Schema file path, directory, or glob relative to the supabase directory."
                            },
                            "description": "Ordered list of schema files, directories, or glob patterns that describe your database.",
                            "default": []
                          }
                        },
                        "additionalProperties": false
                      },
                      "seed": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable seeding the database with SQL files.",
                            "default": true
                          },
                          "sql_paths": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "description": "Path to a SQL file used to seed the database."
                            },
                            "description": "Ordered list of seed files to load during db reset.",
                            "default": ["./seed.sql"]
                          }
                        },
                        "additionalProperties": false
                      },
                      "settings": {
                        "type": "object",
                        "properties": {
                          "effective_cache_size": {
                            "type": "string"
                          },
                          "logical_decoding_work_mem": {
                            "type": "string"
                          },
                          "maintenance_work_mem": {
                            "type": "string"
                          },
                          "max_connections": {
                            "type": "number"
                          },
                          "max_locks_per_transaction": {
                            "type": "number"
                          },
                          "max_parallel_maintenance_workers": {
                            "type": "number"
                          },
                          "max_parallel_workers": {
                            "type": "number"
                          },
                          "max_parallel_workers_per_gather": {
                            "type": "number"
                          },
                          "max_replication_slots": {
                            "type": "number"
                          },
                          "max_slot_wal_keep_size": {
                            "type": "string"
                          },
                          "max_standby_archive_delay": {
                            "type": "string"
                          },
                          "max_standby_streaming_delay": {
                            "type": "string"
                          },
                          "max_wal_size": {
                            "type": "string"
                          },
                          "max_wal_senders": {
                            "type": "number"
                          },
                          "max_worker_processes": {
                            "type": "number"
                          },
                          "session_replication_role": {
                            "type": "string",
                            "enum": ["origin", "replica", "local"],
                            "description": "Session replication role."
                          },
                          "shared_buffers": {
                            "type": "string"
                          },
                          "statement_timeout": {
                            "type": "string"
                          },
                          "track_activity_query_size": {
                            "type": "string"
                          },
                          "track_commit_timestamp": {
                            "type": "boolean"
                          },
                          "wal_keep_size": {
                            "type": "string"
                          },
                          "wal_sender_timeout": {
                            "type": "string"
                          },
                          "work_mem": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      },
                      "network_restrictions": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable management of network restrictions.",
                            "default": false
                          },
                          "allowed_cidrs": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Allowed IPv4 CIDR blocks.",
                            "default": ["0.0.0.0/0"]
                          },
                          "allowed_cidrs_v6": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Allowed IPv6 CIDR blocks.",
                            "default": ["::/0"]
                          }
                        },
                        "additionalProperties": false
                      },
                      "ssl_enforcement": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Reject non-secure connections to the database.",
                            "default": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "vault": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "description": "Vault secret value."
                        },
                        "description": "Vault secrets."
                      }
                    },
                    "additionalProperties": false
                  },
                  "edge_runtime": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local Edge Runtime service.",
                        "default": true
                      },
                      "policy": {
                        "type": "string",
                        "enum": ["oneshot", "per_worker"],
                        "description": "Configure the supported request policy.",
                        "default": "per_worker"
                      },
                      "inspector_port": {
                        "type": "number",
                        "description": "Port to run the Edge Functions inspector on.",
                        "default": 8083
                      },
                      "deno_version": {
                        "type": "number",
                        "description": "The Deno major version to use.",
                        "default": 2
                      },
                      "secrets": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "description": "Secret value exposed to the edge runtime."
                        },
                        "description": "Secrets exposed to the edge runtime."
                      }
                    },
                    "additionalProperties": false
                  },
                  "functions": {
                    "anyOf": [
                      {
                        "type": "object",
                        "patternProperties": {
                          "^[a-zA-Z0-9_-]+$": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Controls whether a function is deployed or served.",
                                    "default": true
                                  },
                                  "verify_jwt": {
                                    "type": "boolean",
                                    "description": "By default, deployed or locally served functions reject requests without a valid JWT.",
                                    "default": true
                                  },
                                  "import_map": {
                                    "type": "string",
                                    "description": "Import map file to use for the Function.",
                                    "default": ""
                                  },
                                  "entrypoint": {
                                    "type": "string",
                                    "description": "Entrypoint path to the Function. Defaults to \"functions/slug/index.ts\".",
                                    "default": ""
                                  },
                                  "static_files": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "description": "Static file glob for the function."
                                    },
                                    "description": "Static files to bundle with the function.",
                                    "default": []
                                  },
                                  "env": {
                                    "type": "object",
                                    "patternProperties": {
                                      "^[A-Z_][A-Z0-9_]*$": {
                                        "type": "string",
                                        "pattern": "^env\\((.*)\\)$",
                                        "description": "Reference to a project environment variable available to the Function."
                                      }
                                    },
                                    "description": "Environment variables from the project environment that this Function can access.",
                                    "default": {}
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "description": "Function-specific configuration keyed by function slug.",
                        "default": {}
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "local_smtp": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local SMTP testing server.",
                        "default": true
                      },
                      "port": {
                        "type": "number",
                        "description": "Port to use for the email testing server web interface.\n\nEmails sent with the local dev setup are monitored and available from the web interface.",
                        "default": 54324
                      },
                      "smtp_port": {
                        "type": "number",
                        "description": "Optional SMTP port to expose for local testing."
                      },
                      "pop3_port": {
                        "type": "number",
                        "description": "Optional POP3 port to expose for local testing."
                      },
                      "admin_email": {
                        "type": "string",
                        "description": "Admin email address for test email sender metadata."
                      },
                      "sender_name": {
                        "type": "string",
                        "description": "Sender name for test email sender metadata."
                      }
                    },
                    "additionalProperties": false
                  },
                  "realtime": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local Realtime service.",
                        "default": true
                      },
                      "ip_version": {
                        "type": "string",
                        "enum": ["IPv4", "IPv6"],
                        "description": "Bind realtime via either IPv4 or IPv6.",
                        "default": "IPv4"
                      },
                      "max_header_length": {
                        "type": "number",
                        "description": "Maximum length of the HTTP header.",
                        "default": 4096
                      }
                    },
                    "additionalProperties": false
                  },
                  "storage": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local Storage service.",
                        "default": true
                      },
                      "file_size_limit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      },
                      "image_transformation": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable image transformation.",
                            "default": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "buckets": {
                        "type": "object",
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "public": {
                                  "type": "boolean",
                                  "description": "Enable public access to the bucket.",
                                  "default": false
                                },
                                "file_size_limit": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    }
                                  ]
                                },
                                "allowed_mime_types": {
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "description": "A MIME type allowed for the bucket."
                                  },
                                  "description": "The list of allowed MIME types for the bucket.",
                                  "default": []
                                },
                                "objects_path": {
                                  "type": "string",
                                  "description": "The path to the objects in the bucket.",
                                  "default": ""
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "description": "Storage buckets configuration."
                      },
                      "s3_protocol": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Allow connections via S3 compatible clients.",
                            "default": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "analytics": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable analytics buckets.",
                            "default": false
                          },
                          "max_namespaces": {
                            "type": "number",
                            "description": "Maximum number of analytics namespaces.",
                            "default": 5
                          },
                          "max_tables": {
                            "type": "number",
                            "description": "Maximum number of analytics tables.",
                            "default": 10
                          },
                          "max_catalogs": {
                            "type": "number",
                            "description": "Maximum number of analytics catalogs.",
                            "default": 2
                          },
                          "buckets": {
                            "anyOf": [
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "anyOf": [
                                        {
                                          "type": "object"
                                        },
                                        {
                                          "type": "array"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "description": "Analytics bucket configuration.",
                                "default": {}
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "vector": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable vector buckets.",
                            "default": true
                          },
                          "max_buckets": {
                            "type": "number",
                            "description": "Maximum number of vector buckets.",
                            "default": 10
                          },
                          "max_indexes": {
                            "type": "number",
                            "description": "Maximum number of vector indexes.",
                            "default": 5
                          },
                          "buckets": {
                            "anyOf": [
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "anyOf": [
                                        {
                                          "type": "object"
                                        },
                                        {
                                          "type": "array"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "description": "Vector bucket configuration.",
                                "default": {}
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  },
                  "studio": {
                    "type": "object",
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable the local Supabase Studio dashboard.",
                        "default": true
                      },
                      "port": {
                        "type": "number",
                        "description": "Port to use for Supabase Studio.",
                        "default": 54323
                      },
                      "api_url": {
                        "type": "string",
                        "description": "External URL of the API server that frontend connects to.",
                        "default": "http://127.0.0.1"
                      },
                      "openai_api_key": {
                        "type": "string",
                        "description": "OpenAI API key to use for Supabase AI in the Supabase Studio.",
                        "examples": ["env(OPENAI_API_KEY)"]
                      }
                    },
                    "additionalProperties": false
                  },
                  "compute": {
                    "anyOf": [
                      {
                        "type": "object",
                        "patternProperties": {
                          "^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$": {
                            "type": "object",
                            "properties": {
                              "runtime": {
                                "type": "string",
                                "description": "Runtime the compute is built on: `dockerfile` to build the directory's own\nDockerfile, or one of the catalog runtimes (`node`, `deno`). Guessed from\nmarker files when unset.",
                                "examples": ["node"]
                              },
                              "size": {
                                "type": "string",
                                "description": "Instance size, denominated by memory. Each size implies its own vCPU count,\nso it is the one dial rather than two.",
                                "examples": ["2gb"]
                              },
                              "exposure": {
                                "type": "string",
                                "description": "How the compute is reached: `public` gives it an internet-facing URL,\n`private` keeps it reachable only from inside the project. Every deploy\nsends a complete spec, so the value recorded here is what keeps a private\ncompute private; `--exposure` overrides it for one deploy. Defaults to\n`public`.",
                                "examples": ["private"]
                              },
                              "instances": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Number of instances to run. Every deploy sends a complete spec, so a count\nrecorded here is what keeps a scaled compute scaled; `--instances` overrides\nit for one deploy. Defaults to 1.",
                                "examples": [3]
                              },
                              "source": {
                                "type": "string",
                                "description": "Directory holding the compute's code, relative to the project root, when it\ndoes not live at `supabase/compute/<name>/`.",
                                "examples": ["packages/api"]
                              },
                              "exclude": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Patterns for paths to leave out of the uploaded build context, read the way\n`.gitignore` reads them: a pattern without `/` matches that name at any depth,\none with `/` is anchored at the compute's source directory, a trailing `/`\nmatches directories only, and `**` spans directories. Excluding a directory\nexcludes everything under it; re-inclusion (`!`) is not supported. Only the\npatterns recorded here are excluded, so a compute with no list uploads its source\ndirectory whole.",
                                "examples": [["node_modules", ".env"]]
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "description": "Compute-specific configuration keyed by compute name.",
                        "default": {}
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "experimental": {
                    "type": "object",
                    "properties": {
                      "compute": {
                        "type": "boolean",
                        "description": "Enable the experimental compute command family."
                      },
                      "stack": {
                        "type": "boolean",
                        "description": "Use the new local stack backend for start, stop, and status, and for --local targets of the db, migration, test db, gen types, inspect, and pull command families."
                      },
                      "orioledb_version": {
                        "type": "string",
                        "description": "Deprecated: use `db.orioledb_version` instead. Postgres storage engine version for OrioleDB."
                      },
                      "s3_host": {
                        "type": "string",
                        "description": "S3 bucket URL.",
                        "examples": ["<bucket_name>.s3-<region>.amazonaws.com", "env(S3_HOST)"]
                      },
                      "s3_region": {
                        "type": "string",
                        "description": "S3 bucket region.",
                        "examples": ["us-east-1", "env(S3_REGION)"]
                      },
                      "s3_access_key": {
                        "type": "string",
                        "description": "S3 access key.",
                        "examples": ["env(S3_ACCESS_KEY)"]
                      },
                      "s3_secret_key": {
                        "type": "string",
                        "description": "S3 secret key.",
                        "examples": ["env(S3_SECRET_KEY)"]
                      },
                      "webhooks": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable experimental webhooks.",
                            "default": false
                          }
                        },
                        "additionalProperties": false
                      },
                      "pgdelta": {
                        "type": "object",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Use pg-delta as the schema diff engine for db diff / db pull / db remote commit. Set false to fall back to the legacy migra engine.",
                            "default": false
                          },
                          "declarative_schema_path": {
                            "type": "string",
                            "description": "Directory under supabase/ where declarative schema files are written.",
                            "examples": ["./schemas"]
                          },
                          "format_options": {
                            "type": "string",
                            "description": "JSON string passed through to pg-delta SQL formatting. When omitted, SQL is formatted with uppercase keywords, indent 2, max width 180, trailing commas, and column/key alignment. Set to \"null\" to emit raw, unformatted SQL.",
                            "examples": [
                              "{\"keywordCase\":\"upper\",\"indent\":2,\"maxWidth\":180,\"commaStyle\":\"trailing\"}"
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "inspect": {
                        "type": "object",
                        "properties": {
                          "rules": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "query": {
                                  "type": "string",
                                  "description": "Inspection query."
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Inspection rule name."
                                },
                                "pass": {
                                  "type": "string",
                                  "description": "Success message."
                                },
                                "fail": {
                                  "type": "string",
                                  "description": "Failure message."
                                }
                              },
                              "additionalProperties": false
                            },
                            "description": "Inspection rules.",
                            "default": []
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "description": "Remote branch-specific project configuration.",
          "default": {}
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
