w3-io/W3 Supabase Action

Supabase integration for W3 workflows: Postgres queries, Auth, Storage, Edge Functions

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
commandOperation to perform. Database: query, insert, upsert, update, delete, count, rpc. Auth: auth-sign-up, auth-sign-in-password, auth-sign-in-otp, auth-sign-out, auth-get-user, auth-update-user, auth-verify-jwt, auth-reset-password. Storage: storage-upload, storage-download, storage-list, storage-delete, storage-get-signed-url, storage-get-public-url, storage-move, storage-copy. Functions: invoke-function. yes
urlSupabase project URL (e.g. https://abcdefghij.supabase.co)yes
keySupabase API key. Use the service-role key for server-side workflows (bypasses Row Level Security; recommended default). Use the anon key for client-style auth flows (sign-up, sign-in, etc.). yes
key-typeType of key being used: service-role (default) or anon.noservice-role
tableTable name (for query, insert, upsert, update, delete, count)no""
schemaPostgres schema (default: public)nopublic
filterPostgREST filter as JSON. Example: {"id":{"eq":5}} or {"status":{"in":["pending","active"]},"created_at":{"gte":"2026-01-01"}}. Supported operators: eq, neq, gt, gte, lt, lte, like, ilike, is, in, contains, containedBy, rangeGt, rangeGte, rangeLt, rangeLte, rangeAdjacent, overlaps, textSearch. Shorthand: {"col": null} matches rows where col IS NULL. no{}
selectColumns to return (PostgREST select, default "*"). Example: "id,name,profile(name)"no*
orderOrder spec as JSON. Example: [{"column":"created_at","ascending":false}]no""
limitMaximum rows to returnno""
offsetRows to skipno""
single-rowFor query: return at most one row as { row, count }. Uses .maybeSingle() — zero matches return row=null (no error). Use when you expect 0 or 1 rows (e.g. lookup by primary key). nofalse
dataRow(s) to insert/upsert/update as JSON (single object or array of objects)no""
on-conflictColumn(s) for upsert conflict resolution. Example: id or emailno""
return-rowsReturn the affected rows after insert/upsert/update/delete (default: true)notrue
rpc-nameStored procedure / function name (for rpc command)no""
rpc-paramsStored procedure parameters as JSON objectno{}
emailUser email (for auth-sign-up, auth-sign-in-password, auth-sign-in-otp, auth-reset-password)no""
passwordUser password (for auth-sign-up, auth-sign-in-password)no""
user-metadataUser metadata as JSON object. For auth-sign-up, sets the initial metadata. For auth-update-user, replaces the top-level keys provided (shallow merge: omitted keys are preserved, present keys overwrite). To delete a key, omit it from updates — there is no way to clear a key via the admin API. no{}
jwtJWT token (for auth-verify-jwt, auth-get-user, auth-sign-out, auth-update-user)no""
redirect-toRedirect URL for OTP / password reset emailsno""
bucketStorage bucket nameno""
pathFile path within bucket (e.g. user-123/avatar.png)no""
pathsFor storage-delete: JSON array of file paths to remove in one call. Example: ["a/x.png","b/y.png"]. If both path and paths are set, paths wins. Use this when removing many objects at once. no""
file-contentFile content as base64-encoded string (for storage-upload)no""
content-typeMIME type of uploaded file (default: "application/octet-stream")noapplication/octet-stream
storage-upsertFor storage-upload: overwrite an existing file at the same path. Default false — uploading to an existing path returns STORAGE_UPLOAD_FAILED (RESOURCE_ALREADY_EXISTS). Set to true to treat upload as upsert. nofalse
destination-pathDestination path (for storage-move, storage-copy)no""
expires-inSigned URL TTL in seconds (default: 3600)no3600
function-nameEdge Function name (for invoke-function)no""
function-bodyJSON body to POST to the Edge Functionno""
function-headersCustom headers as JSON object (for invoke-function)no{}
namedescription
resultJSON result of the operation. Shape depends on command: database commands return rows or counts; auth commands return user and session objects; storage upload/download returns path metadata or base64 content; invoke-function returns the function's response body.