Conversation
kong
Bot
force-pushed
the
chore/sync-openapi
branch
6 times, most recently
from
September 5, 2026 02:49
c6391e8 to
ea3d391
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
2 times, most recently
from
September 10, 2026 22:00
1af2768 to
09b12fe
Compare
|
|
kong
Bot
force-pushed
the
chore/sync-openapi
branch
13 times, most recently
from
September 17, 2026 18:05
574efbb to
3d26a9c
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
8 times, most recently
from
September 19, 2026 06:17
4f5a9fd to
3fada80
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
17 times, most recently
from
September 26, 2026 13:04
38cd363 to
18f1695
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
from
September 26, 2026 23:34
18f1695 to
cb3d502
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
API change report
Public API
New Endpoints: 36
POST /mcp
GET /openapi.json
HEAD /openapi.json
GET /openapi.yaml
HEAD /openapi.yaml
GET /projects/{id}/access-tokens
POST /projects/{id}/access-tokens
GET /projects/{id}/access-tokens/usage
DELETE /projects/{id}/access-tokens/{tokenId}
GET /projects/{id}/access-tokens/{tokenId}
GET /projects/{id}/access-tokens/{tokenId}/usage
PUT /projects/{id}/frontend-shared-variables
GET /projects/{id}/frontends/{frontendId}/function-routes
POST /projects/{id}/frontends/{frontendId}/function-routes
DELETE /projects/{id}/frontends/{frontendId}/function-routes/{routeId}
PUT /projects/{id}/frontends/{frontendId}/function-routes/{routeId}
POST /projects/{id}/sandbox-executions
GET /projects/{id}/sandbox-sessions
POST /projects/{id}/sandbox-sessions
GET /projects/{id}/sandboxes
POST /projects/{id}/sandboxes
DELETE /projects/{id}/sandboxes/{sandboxId}
GET /projects/{id}/sandboxes/{sandboxId}
PATCH /projects/{id}/sandboxes/{sandboxId}
GET /projects/{id}/sandboxes/{sandboxId}/deployments
DELETE /sandbox-sessions/{sessionId}
GET /sandbox-sessions/{sessionId}
POST /sandbox-sessions/{sessionId}/access
POST /sandbox-sessions/{sessionId}/exec
POST /sandbox-sessions/{sessionId}/files/read
POST /sandbox-sessions/{sessionId}/files/write
DELETE /sandbox-sessions/{sessionId}/grants/{subjectId}
PUT /sandbox-sessions/{sessionId}/grants/{subjectId}
POST /sandbox-sessions/{sessionId}/resume
POST /sandbox-sessions/{sessionId}/suspend
GET /sandboxes/presets
Deleted Endpoints: None
Modified Endpoints: 158
POST /auth/signin
Set
session_modetocookieto request HttpOnly refresh-tokenstorage. Cookie mode is honored only for an exact, credentialed CORS
origin on the same schemeful site as this API. Otherwise the response
retains the refresh token in its body.
' to 'Authenticate with email and password. Requires an anon key.
Set
session_modetocookieto request HttpOnly refresh-tokenstorage. Cookie mode is honored only for an exact, credentialed CORS
origin on the same schemeful site as this API. Otherwise the response
retains the refresh token in its body. A frontend on its default
Volcano URL is cross-site with this API and so always gets the body
token.
'
POST /databases/{databaseName}/branches/{branchName}/query/delete
POST /databases/{databaseName}/branches/{branchName}/query/insert
POST /databases/{databaseName}/branches/{branchName}/query/ping
POST /databases/{databaseName}/branches/{branchName}/query/select
POST /databases/{databaseName}/branches/{branchName}/query/update
POST /databases/{databaseName}/query/delete
POST /databases/{databaseName}/query/insert
POST /databases/{databaseName}/query/ping
POST /databases/{databaseName}/query/select
POST /databases/{databaseName}/query/update
POST /durable-functions/{functionId}/executions
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
usage limit service could not be reached to charge the start. The
first is returned by a deployment that has no durable execution
engine, such as a local one, and is not retryable there; the second
is transient.
' to 'Durable execution is not available in this environment, or the
plan terms for the start could not be read. The first means the
capability is paused or this deployment cannot serve it, so it is
not one to retry in a loop; the second is transient.
'
GET /functions/resolve
SDKs use this endpoint internally to invoke by function name while routing by function ID.
With Service Key:
With Auth User Token:
With Anon Key:
functions.invokeis_public: true' to 'Resolves a DNS-safe function name to its function ID and invocation URL within the caller's project.
SDKs use this endpoint internally to invoke by function name while routing by function ID.
Invoke the returned
invoke_urlas-is. It does not share a domain with the API, so a hostbuilt from the API URL will not reach the function. When the deployment serves no public
invocation domain, as in local development,
invoke_urlis omitted and callers invokethrough
POST /functions/{functionId}/invoke.With Service Key:
With Auth User Token:
With Anon Key:
functions.invokeis_public: true'
POST /functions/{functionId}/invoke
With Service Key (admin/background operations):
With Auth User Token (user-facing):
__volcano_authcontext:With Anon Key (public function only):
functions.invokeis_public: true__volcano_auth)Transport and CORS:
POST
{payload: ...}contract, including for functions whose DNS ingress isconfigured in HTTP mode.
https://{functionId}.functions.<domain>/./. HTTP-mode DNS ingress accepts GET,HEAD, POST, PUT, PATCH, and DELETE at
/and nested paths.POST, OPTIONS. HTTP-mode DNSpreflight advertises
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS.http_auth_mode: noneapplies only to public HTTP-mode DNS ingress; thisdirect operation always requires a Volcano credential.
Durable functions are not invocable here. A durable function's id
answers 404, whatever its visibility, because a synchronous call would
run it with no execution record, no idempotency and no concurrency
accounting. Start one with
POST /durable-functions/{functionId}/executions.' to 'Invoke a function.
With Service Key (admin/background operations):
With Auth User Token (user-facing):
__volcano_authcontext:With Anon Key (public function only):
functions.invokeis_public: true__volcano_auth)Transport and CORS:
POST
{payload: ...}contract, including for functions whose DNS ingress isconfigured in HTTP mode.
invoke_url. It is on adifferent domain from this API, so it cannot be derived from the API host.
/. HTTP-mode DNS ingress accepts GET,HEAD, POST, PUT, PATCH, and DELETE at
/and nested paths.POST, OPTIONS. HTTP-mode DNSpreflight advertises
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS.http_auth_mode: noneapplies only to public HTTP-mode DNS ingress; thisdirect operation always requires a Volcano credential.
Durable functions are not invocable here. A durable function's id
answers 404, whatever its visibility, because a synchronous call would
run it with no execution record, no idempotency and no concurrency
accounting. Start one with
POST /durable-functions/{functionId}/executions.'
DELETE /projects/{id}
GET /projects/{id}
PATCH /projects/{id}
GET /projects/{id}/anon-keys
POST /projects/{id}/anon-keys
DELETE /projects/{id}/anon-keys/{keyId}
GET /projects/{id}/anon-keys/{keyId}
POST /projects/{id}/anon-keys/{keyId}/regenerate
POST /projects/{id}/anon-keys/{keyId}/set-default
GET /projects/{id}/auth/config
PUT /projects/{id}/auth/config
POST /projects/{id}/auth/config/test-email
GET /projects/{id}/auth/hosted-pages/{pageType}
PUT /projects/{id}/auth/hosted-pages/{pageType}
GET /projects/{id}/auth/insights
GET /projects/{id}/auth/methods
PUT /projects/{id}/auth/methods
GET /projects/{id}/auth/pages/appearance
DELETE /projects/{id}/auth/pages/theme
PUT /projects/{id}/auth/pages/theme
DELETE /projects/{id}/auth/pages/{pageType}/layout
PUT /projects/{id}/auth/pages/{pageType}/layout
POST /projects/{id}/auth/pages/{pageType}/preview
GET /projects/{id}/auth/users
DELETE /projects/{id}/auth/users/{userId}
GET /projects/{id}/auth/users/{userId}
POST /projects/{id}/auth/users/{userId}/ban
DELETE /projects/{id}/auth/users/{userId}/sessions
GET /projects/{id}/auth/users/{userId}/sessions
DELETE /projects/{id}/auth/users/{userId}/sessions/{sessionId}
POST /projects/{id}/auth/users/{userId}/unban
GET /projects/{id}/config
declarative manifest. Returns JSON by default. Request the canonical
volcano-config.yaml rendering with
Accept: application/yamlor?format=yaml; the YAML is returned verbatim as the raw response body(
Content-Type: application/yaml) and is meant to be saved as-is.Variable values and write-only secrets (SMTP password, OAuth client secrets, TLS material)
are omitted from the export; shared_variables contains names only; the YAML rendering adds a header comment
describing how to set them via CLI environment interpolation.
' to 'Exports the project's current user-facing configuration as a
declarative manifest. Returns JSON by default. Request the canonical
volcano-config.yaml rendering with
Accept: application/yamlor?format=yaml; the YAML is returned verbatim as the raw response body(
Content-Type: application/yaml) and is meant to be saved as-is.Variable values and write-only secrets (SMTP password, OAuth client secrets, TLS material)
are omitted from the export; shared_variables and frontend_shared_variables contain names only; the YAML rendering adds a header comment
describing how to set them via CLI environment interpolation.
'
PUT /projects/{id}/config
GET /projects/{id}/databases
POST /projects/{id}/databases
Each project can hold 1 database on Free and up to 10,000 on Pro.
Requests over the plan's cap return 403.
' to 'Creates a PostgreSQL database in the project.
Each project can hold 1 database on Free and up to 10,000 on Pro.
Requests over the plan's cap return 403.
'
DELETE /projects/{id}/databases/{databaseName}
GET /projects/{id}/databases/{databaseName}
GET /projects/{id}/databases/{databaseName}/backup-schedule
PUT /projects/{id}/databases/{databaseName}/backup-schedule
GET /projects/{id}/databases/{databaseName}/backups
POST /projects/{id}/databases/{databaseName}/backups
DELETE /projects/{id}/databases/{databaseName}/backups/{backupName}
GET /projects/{id}/databases/{databaseName}/backups/{backupName}
GET /projects/{id}/databases/{databaseName}/branches
POST /projects/{id}/databases/{databaseName}/branches
DELETE /projects/{id}/databases/{databaseName}/branches/{branchName}
GET /projects/{id}/databases/{databaseName}/branches/{branchName}
PATCH /projects/{id}/databases/{databaseName}/branches/{branchName}
POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset
POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset-password
GET /projects/{id}/databases/{databaseName}/queries
ranked by total execution time.
PRO plan required. This endpoint is only available to projects owned
by users on the PRO billing plan.
' to 'Returns the database's current top queries from pg_stat_statements
ranked by total execution time. Only data statements (SELECT, INSERT,
UPDATE, DELETE, MERGE) are listed; statements Volcano runs to operate
the database are left out.
PRO plan required. This endpoint is only available to projects owned
by users on the PRO billing plan.
'
?.'anonorauthenticatedfor RLS-enforced connections,service_role, the database owner role for full-access connections, or a role you created.unknownwhen the role no longer exists.'POST /projects/{id}/databases/{databaseName}/reset-password
GET /projects/{id}/databases/{databaseName}/restores
POST /projects/{id}/databases/{databaseName}/restores
GET /projects/{id}/databases/{databaseName}/restores/{restoreId}
GET /projects/{id}/databases/{databaseName}/stats
PATCH /projects/{id}/databases/{databaseName}/type
GET /projects/{id}/deployments
GET /projects/{id}/deployments/summary
GET /projects/{id}/domains
POST /projects/{id}/durable-functions
DELETE /projects/{id}/durable-functions/{functionId}
response. The function's executions go with it: history stops being
readable whatever
retention_dayshad left, and the executions stillrunning stop counting against the project's concurrency cap. Stop an
execution first if you need it to end before the function does.
' to 'Accepted for asynchronous teardown; the work continues after the
response. The function's executions go with it: executions still in
flight are stopped, and history stops being readable whatever
retention_dayshad left.Stopping is asynchronous at the platform, and it does not interrupt a
step already running -- that step runs to its next checkpoint. So a
delete ends an execution rather than halting it mid-step; stop the
execution yourself first if you need to observe it ending.
'
GET /projects/{id}/durable-functions/{functionId}/executions
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
POST /projects/{id}/durable-functions/{functionId}/executions
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
usage limit service could not be reached to charge the start. The
first is returned by a deployment that has no durable execution
engine, such as a local one, and is not retryable there; the second
is transient.
' to 'Durable execution is not available in this environment, or the
plan terms for the start could not be read. The first means the
capability is paused or this deployment cannot serve it, so it is
not one to retry in a loop; the second is transient.
'
GET /projects/{id}/durable-functions/{functionId}/executions/{executionId}
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
a deployment that has no durable execution engine, such as a local
one; the request is not retryable there.
' to 'Durable execution is not available in this environment. Either the
capability is paused or this deployment cannot serve it, so the
request is not one to retry in a loop.
'
POST /projects/{id}/durable-functions/{functionId}/executions/{executionId}/stop
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the platform lost track of the execution's outcome: itwas never seen to finish and is no longer reported, so no result or
error can be given for it. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry under a new
name rather than a state to wait on.
completed_aton anunknownexecution is when the platform gave up, not when the work ended.
' to 'Lifecycle state of an execution.
pendingcovers the window between theplatform reserving the execution name and the function accepting the
start, and has no counterpart once the execution is under way.
succeeded,failed,timed_out,stoppedandunknownareterminal.
unknownmeans the execution's outcome cannot be established, so noresult or error can be given for it. Either it was under way and was
never seen to finish, or its start failed with a
500without theplatform establishing whether the execution began — which is why a
name whose start returned an error can later read as
unknownratherthan not being found. It is terminal because nothing can settle it
later, and it is rare — treat it as an outcome to retry rather than a
state to wait on. A retry under the same name picks this execution back
up instead of starting a second one, and needs a free concurrency slot
because an
unknownexecution has given its own up.completed_atonan
unknownexecution is when the platform gave up, not when the workended.
'
a deployment that has no durable execution engine, such as a local
one; the request is not retryable there.
' to 'Durable execution is not available in this environment. Either the
capability is paused or this deployment cannot serve it, so the
request is not one to retry in a loop.
'
GET /projects/{id}/email-templates
POST /projects/{id}/email-templates
DELETE /projects/{id}/email-templates/{type}
GET /projects/{id}/email-templates/{type}
PUT /projects/{id}/email-templates/{type}
GET /projects/{id}/frontends
POST /projects/{id}/frontends
If a frontend with the same name already exists in the project, this operation updates that
frontend using the uploaded archive and starts a new deployment. A deployment that starts
immediately returns
status: provisioning, then transitions toactive,degraded, orfailed. If another deployment is running, the response preserves the frontend's current statusand exposes the queued deployment through
pending_deployment_id.Existing frontend traffic continues to use an available runtime while the new deployment builds
and provisions. Each deployment publishes its own static assets before the runtimes switch to its
build, and the live build's assets keep serving until the new deployment is live, so a page loaded
mid-deployment resolves its assets whichever build served i
Report truncated; see the source commit for the complete contract diff.
Validation