Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
494 changes: 234 additions & 260 deletions capabilities/auth.yaml

Large diffs are not rendered by default.

50 changes: 50 additions & 0 deletions capabilities/client.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# yaml-language-server: $schema=../schema/capability-matrix.schema.json
area: client
title: Client Initialization
description: Cross-cutting SupabaseClient configuration — third-party auth integration, custom HTTP client, pluggable session storage, schema selection, and observability.
groups:
- id: authentication_integration
title: Authentication Integration
- id: session_management
title: Session Management
- id: request_configuration
title: Request Configuration
- id: observability
title: Observability
features:
- id: client.authentication_integration.third_party_auth
name: Third-Party Auth
description: Provide an async token callback at construction time to use an external auth provider; the SDK disables its own auth client and injects the returned JWT into all downstream requests.
group: authentication_integration
- id: client.authentication_integration.cross_client_token_sync
name: Cross-Client Token Synchronization
description: The client listens for auth state change events and automatically propagates the current JWT to all sub-clients (database, realtime, storage, functions) so requests stay authenticated without manual intervention.
group: authentication_integration
- id: client.authentication_integration.oauth_flow_type
name: OAuth Flow Type Selection
description: Choose between implicit and PKCE OAuth flows at construction time; PKCE is recommended for scenarios where the implicit flow is less secure.
group: authentication_integration
- id: client.authentication_integration.session_url_detection
name: OAuth Redirect Detection Customization
description: Configure whether and how the client detects an incoming OAuth redirect; accepts a boolean or a custom predicate so apps using multiple OAuth providers can disambiguate callbacks.
group: authentication_integration
- id: client.session_management.custom_storage
name: Pluggable Session Storage
description: Supply a custom storage backend at construction time to control where the user session is persisted; enables use of platform-native secure storage instead of the default.
group: session_management
- id: client.session_management.persist_session
name: Session Persistence Toggle
description: Disable automatic session persistence so the session exists only in memory for the lifetime of the client instance.
group: session_management
- id: client.request_configuration.custom_http_client
name: Custom HTTP Client
description: Supply a custom HTTP client implementation at construction time; the SDK wraps it with automatic API key and authorization header injection and propagates it to all sub-clients.
group: request_configuration
- id: client.request_configuration.global_headers
name: Global Request Headers
description: Attach extra HTTP headers to every request made by all sub-clients at construction time.
group: request_configuration
- id: client.observability.trace_propagation
name: Distributed Trace Context Propagation
description: Inject standard trace context headers into outgoing requests so server-side spans can be correlated with client-side traces in a distributed tracing system.
group: observability
230 changes: 227 additions & 3 deletions capabilities/database.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,236 @@
# yaml-language-server: $schema=../schema/capability-matrix.schema.json
area: database
title: Database (PostgREST)
description: Query builder over PostgREST — select, insert, update, delete, RPC.
description: Query builder over PostgREST — select, insert, update, delete, RPC, filters, and modifiers.
groups:
- id: query
title: Query
- id: mutate
title: Mutate
- id: using_filters
title: Filters
- id: using_modifiers
title: Modifiers
- id: configuration
title: Client Configuration
features:
- id: database.select
name: Select rows
- id: database.mutate.delete
name: Delete Rows
description: Delete rows from a table or view that match a filter.
group: mutate
- id: database.mutate.insert
name: Insert Rows
description: Insert one or more rows into a table or view.
group: mutate
- id: database.mutate.select_after_mutation
name: Select After Mutation
description: Chain a column selection onto an insert, update, upsert, or delete to return the affected rows in the response.
group: mutate
- id: database.mutate.update
name: Update Rows
description: Update rows in a table or view that match a filter.
group: mutate
- id: database.mutate.upsert
name: Upsert Rows
description: Insert rows, or update them on conflict based on specified conflict columns.
group: mutate
- id: database.query.from_table
name: Query Table or View
description: Scope a query to a specific table or view. The entry point for all table-level operations.
group: query
- id: database.query.rpc
name: Call Function (RPC)
description: Invoke a database function via the PostgREST RPC interface.
group: query
- id: database.query.schema_selection
name: Schema Selection
description: Target a non-default database schema for the query or function call.
group: query
- id: database.query.select
name: Select Rows
description: Read rows from a table or view with column selection.
group: query
- id: database.using_filters.contained_by
name: Filter Contained By
description: For jsonb, array, and range columns — match only rows where every element in the column is contained by the given value.
group: using_filters
- id: database.using_filters.contains
name: Filter Contains
description: For jsonb, array, and range columns — match only rows where the column contains every element in the given value.
group: using_filters
- id: database.using_filters.eq
name: Filter Equal
description: Match only rows where a column equals a value.
group: using_filters
- id: database.using_filters.gt
name: Filter Greater Than
description: Match only rows where a column is greater than a value.
group: using_filters
- id: database.using_filters.gte
name: Filter Greater Than or Equal
description: Match only rows where a column is greater than or equal to a value.
group: using_filters
- id: database.using_filters.ilike
name: Filter Like (case-insensitive)
description: Match only rows where a column matches a pattern case-insensitively (SQL ILIKE).
group: using_filters
- id: database.using_filters.ilike_all
name: Filter ILike All Patterns
description: Match only rows where a column matches all of the given patterns case-insensitively.
group: using_filters
- id: database.using_filters.ilike_any
name: Filter ILike Any Pattern
description: Match only rows where a column matches any of the given patterns case-insensitively.
group: using_filters
- id: database.using_filters.in
name: Filter In
description: Match only rows where a column's value is in a given set.
group: using_filters
- id: database.using_filters.is
name: Filter Is
description: Match only rows where a column IS a value (null, true, or false).
group: using_filters
- id: database.using_filters.is_distinct
name: Filter Is Distinct From
description: Match only rows where a column IS DISTINCT FROM a value (null-safe inequality).
group: using_filters
- id: database.using_filters.like
name: Filter Like (case-sensitive)
description: Match only rows where a column matches a pattern case-sensitively (SQL LIKE).
group: using_filters
- id: database.using_filters.like_all
name: Filter Like All Patterns
description: Match only rows where a column matches all of the given patterns case-sensitively.
group: using_filters
- id: database.using_filters.like_any
name: Filter Like Any Pattern
description: Match only rows where a column matches any of the given patterns case-sensitively.
group: using_filters
- id: database.using_filters.lt
name: Filter Less Than
description: Match only rows where a column is less than a value.
group: using_filters
- id: database.using_filters.lte
name: Filter Less Than or Equal
description: Match only rows where a column is less than or equal to a value.
group: using_filters
- id: database.using_filters.match
name: Filter Match Object
description: Match rows where each key/value pair in an object equals the corresponding column value. Shorthand for multiple equality filters.
group: using_filters
- id: database.using_filters.neq
name: Filter Not Equal
description: Match only rows where a column does not equal a value.
group: using_filters
- id: database.using_filters.not
name: Filter Not
description: Negate a filter so only rows that do not satisfy it are returned.
group: using_filters
- id: database.using_filters.not_in
name: Filter Not In
description: Match only rows where a column's value is not in a given set.
group: using_filters
- id: database.using_filters.or
name: Filter Or
description: Match rows that satisfy at least one of multiple filters.
group: using_filters
- id: database.using_filters.overlaps
name: Filter Overlaps
description: For array and range columns — match only rows where the column and value share at least one element.
group: using_filters
- id: database.using_filters.range_adjacent
name: Filter Range Adjacent
description: For range columns — match only rows where the column is mutually exclusive to the given range with no gap between them.
group: using_filters
- id: database.using_filters.range_gt
name: Filter Range Greater Than
description: For range columns — match only rows where every element in the column is greater than any element in the given range.
group: using_filters
- id: database.using_filters.range_gte
name: Filter Range Greater Than or Equal
description: For range columns — match only rows where every element in the column is contained in or greater than any element in the given range.
group: using_filters
- id: database.using_filters.range_lt
name: Filter Range Less Than
description: For range columns — match only rows where every element in the column is less than any element in the given range.
group: using_filters
- id: database.using_filters.range_lte
name: Filter Range Less Than or Equal
description: For range columns — match only rows where every element in the column is contained in or less than any element in the given range.
group: using_filters
- id: database.using_filters.raw
name: Filter Raw
description: Apply a raw filter expression. Escape hatch for filter combinations not covered by the specific filter operations.
group: using_filters
- id: database.using_filters.regex
name: Filter Regex Match
description: Match only rows where a column matches a regex pattern case-sensitively.
group: using_filters
- id: database.using_filters.regex_icase
name: Filter Regex Match (case-insensitive)
description: Match only rows where a column matches a regex pattern case-insensitively.
group: using_filters
- id: database.using_filters.text_search
name: Filter Full-Text Search
description: For text and tsvector columns — match only rows where a column matches a full-text search query.
group: using_filters
- id: database.using_modifiers.dry_run
name: Dry Run
description: Execute the query against the database but discard any changes, returning what would have been affected.
group: using_modifiers
- id: database.using_modifiers.explain
name: Explain Query Plan
description: Return the database query execution plan instead of the result data.
group: using_modifiers
- id: database.using_modifiers.format_csv
name: Return as CSV
description: Return the query result as a CSV string instead of a structured object.
group: using_modifiers
- id: database.using_modifiers.format_geojson
name: Return as GeoJSON
description: Return the query result as a GeoJSON object.
group: using_modifiers
- id: database.using_modifiers.limit
name: Limit Results
description: Limit the number of rows returned by the query.
group: using_modifiers
- id: database.using_modifiers.max_affected_rows
name: Limit Affected Rows
description: Set the maximum number of rows that a mutation (update or delete) is allowed to affect.
group: using_modifiers
- id: database.using_modifiers.maybe_single_row
name: Expect At Most One Row
description: Return a single row if one exists, or null if no rows match. Errors if multiple rows are returned.
group: using_modifiers
- id: database.using_modifiers.order
name: Order Results
description: Sort the query result by one or more columns.
group: using_modifiers
- id: database.using_modifiers.range
name: Range
description: Return a slice of results by specifying a zero-based start and end offset.
group: using_modifiers
- id: database.using_modifiers.single_row
name: Expect Single Row
description: Assert that the query returns exactly one row and unwrap it from the array. Errors if zero or multiple rows are returned.
group: using_modifiers
- id: database.using_modifiers.strip_nulls
name: Strip Null Fields
description: Omit null-valued properties from response objects using the nulls=stripped Accept header variant; requires PostgREST 11.2+.
group: using_modifiers
- id: database.using_modifiers.request_cancellation
name: Request Cancellation
description: Cancel an in-flight request at any point; merges cleanly with any client-level timeout.
group: using_modifiers
- id: database.using_modifiers.relationship_embed
name: Embed Related Rows
description: Select columns from related tables within a single query using PostgREST's spread notation; supports inner joins, left joins, aliasing, and nested relationships.
group: using_modifiers
- id: database.configuration.auto_retry
name: Automatic Retry with Backoff
description: Automatically retry idempotent requests on transient failures using exponential backoff; configurable per-client and overridable per-request.
group: configuration
- id: database.configuration.request_timeout
name: Request Timeout
description: Set a global request timeout in milliseconds at construction time; in-flight requests are cancelled once the deadline is reached.
group: configuration
32 changes: 28 additions & 4 deletions capabilities/functions.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,36 @@
# yaml-language-server: $schema=../schema/capability-matrix.schema.json
area: functions
title: Edge Functions
description: Invoke Supabase Edge Functions from the client.
description: Invoke Supabase Edge Functions from the client with support for streaming, region routing, and flexible request configuration.
groups:
- id: invocation
title: Invocation
features:
- id: functions.invoke
name: Invoke function
description: Call a deployed Edge Function by name with a request body.
- id: functions.invocation.invoke
name: Invoke Function
description: Call a deployed Edge Function by name with an optional request body.
group: invocation
- id: functions.invocation.set_auth_token
name: Set Auth Token
description: Update the authorization token sent with all subsequent function invocations.
group: invocation
- id: functions.invocation.method_override
name: HTTP Method Override
description: Invoke a function using a non-default HTTP method (GET, PUT, PATCH, DELETE) for RESTful Edge Function designs.
group: invocation
- id: functions.invocation.streaming_response
name: Streaming Response (SSE)
description: Receive a streaming response from a function; when the function returns text/event-stream the raw Response object is passed through for caller-controlled reading.
group: invocation
- id: functions.invocation.region_selection
name: Region Selection
description: Route an invocation to a specific geographic deployment region set at client construction time or overridden per individual call.
group: invocation
- id: functions.invocation.timeout
name: Invocation Timeout
description: Cancel a function invocation after a specified timeout; composable with a caller-supplied cancellation signal.
group: invocation
- id: functions.invocation.request_cancellation
name: Request Cancellation
description: Cancel an in-flight function invocation at any point before a response is received.
group: invocation
Loading
Loading