chore(api): sync OpenAPI contract - #51
Draft
kong[bot] wants to merge 1 commit into
Draft
Conversation
kong
Bot
force-pushed
the
chore/sync-openapi
branch
10 times, most recently
from
July 20, 2026 13:54
04d66d1 to
b8d922a
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
10 times, most recently
from
July 27, 2026 22:41
ee0bdba to
eb217d3
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
9 times, most recently
from
July 31, 2026 00:52
bc4afe5 to
7b3fd89
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
6 times, most recently
from
August 7, 2026 10:32
ee8c547 to
90f7585
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
7 times, most recently
from
August 15, 2026 11:10
ce30e63 to
00a5297
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
11 times, most recently
from
August 24, 2026 23:52
bd1e685 to
96d81db
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
3 times, most recently
from
August 27, 2026 05:59
75791c1 to
1d0cd33
Compare
kong
Bot
force-pushed
the
chore/sync-openapi
branch
from
August 27, 2026 08:28
1d0cd33 to
7097219
Compare
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: 3
DELETE /projects/{id}/source-export
GET /projects/{id}/source-export
POST /projects/{id}/source-export
Deleted Endpoints: 1
POST /projects/{id}/git-connection/repository
Modified Endpoints: 37
POST /databases/{databaseName}/branches/{branchName}/query/delete
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/branches/{branchName}/query/insert
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/branches/{branchName}/query/ping
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/branches/{branchName}/query/select
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/branches/{branchName}/query/update
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/query/delete
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/query/insert
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/query/ping
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/query/select
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /databases/{databaseName}/query/update
bandwidth cap (aggregate ingress + egress across owned projects) or the
project's monthly database-request cap. Enforcement is eventual: queries
are rejected until the relevant cap increases (plan/override) or the
calendar-month meter resets. The error message identifies which cap.
' to 'The query was rejected by a billing-cycle allowance: either the owning
platform user's bandwidth allowance (aggregate ingress + egress across
owned projects) or their database-request allowance. Enforcement is
eventual: queries are rejected until the allowance increases or the
next anniversary cycle begins. The error message identifies the resource.
'
POST /functions/{functionId}/invoke
owning platform user's monthly bandwidth cap (aggregate ingress +
egress) was exceeded.
' to 'Rate limit exceeded (per-function or project-wide limit), or the
owning platform user's billing-cycle bandwidth allowance (aggregate ingress +
egress) was exceeded.
'
GET /projects/{id}/databases
POST /projects/{id}/databases
Each project can contain up to 100 databases. Requests over this cap return 403.
' to 'Creates a serverless 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}
PUT /projects/{id}/databases/{databaseName}/backup-schedule
monthly one with no
day, or adayoutside its frequency's range(1-7 for weekly, 1-28 for monthly). The response says which.
'
moves the data to a new branch, and the provider keeps the schedule
per branch.
'
GET /projects/{id}/databases/{databaseName}/backups
does not include point-in-time restore.
' to 'The span a point-in-time restore may target. Absent from the response
when the owner's plan does not include point-in-time restore, and while
the storage provider has no history window in place yet — briefly the
case after an upgrade, since the window is applied asynchronously. The
window is read from the provider rather than from the plan, so it never
advertises a point a restore could not actually reach.
'
POST /projects/{id}/databases/{databaseName}/backups
a backup was taken too recently.
' to 'A backup of that name already exists, the database is not active, a
restore is running on it, or a backup was taken too recently.
'
DELETE /projects/{id}/databases/{databaseName}/backups/{backupName}
deleted too. A backup that is already gone reports
404, so a namethat never existed and a name that no longer does read the same.
Refused with
409while the database is being restored.' to 'Deletes the backup and frees its storage. Scheduled backups can be
deleted too. A backup that is already gone reports
404, so a namethat never existed and a name that no longer does read the same.
Refused with
409while the database is being restored.'
POST /projects/{id}/databases/{databaseName}/branches
database cannot be branched right now because it is still
provisioning, failed, or being deleted.
' to 'A branch of that name already exists on this database, or the
database cannot be branched right now because it is still
provisioning, being restored, failed, or being deleted.
'
DELETE /projects/{id}/databases/{databaseName}/branches/{branchName}
accepting connections at once; its fork and its row are removed by a
background job, so a provider outage cannot leave the call hanging or the
branch half-deleted.
Deleting a branch that is still provisioning is allowed and stops the
build. Deleting a branch that is already gone succeeds.
' to 'Marks the branch for teardown and returns immediately. The branch stops
accepting connections at once; its fork and its row are removed by a
background job, so a provider outage cannot leave the call hanging or the
branch half-deleted.
Deleting a branch that is still provisioning is allowed and stops the
build, and repeating the call while teardown is in progress is accepted
again. Once the branch is gone the call returns
404.'
POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset
' to 'The branch is not active, a reset is already in progress, the parent
database is being restored, or the parent was restored within the
last 24 hours — a reset re-forks from the parent, and the provider
holds a child's reset shut for that long afterwards.
'
POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset-password
connection string. Existing connections are not interrupted; new ones
must use the returned string.
The parent database's credentials are untouched.
' to 'Issues a new password for the branch and invalidates the previous
connection string. Existing connections are not interrupted; new ones
must use the returned string. Proxies pick the rotation up within a few
seconds, so the previous password can still open new connections until
then.
The parent database's credentials are untouched.
'
POST /projects/{id}/databases/{databaseName}/reset-password
through pgproxy. This does not rotate or expose the internal owner password.
The returned password and connection string are the only client credentials that
will authenticate through pgproxy after reset.
' to 'Rotates the Volcano-managed PostgreSQL password used by clients when connecting
through pgproxy. This does not rotate or expose the internal owner password.
The returned password and connection string are the only client credentials that
will authenticate through pgproxy after reset.
Existing connections are not interrupted; new ones must use the returned
string. Proxies pick the rotation up within a few seconds, so the previous
password can still open new connections until then.
'
POST /projects/{id}/databases/{databaseName}/restores
endpoint.
Deliberately looser than the names you can create, like the backup
path parameter: a backup made by a schedule is named for you, so
restoring one accepts any name a backup can have.
'
- MinLength changed from 0 to 1
- MaxLength changed from 63 to 128
- Pattern changed from '^[a-z0-9][a-z0-9_-]{0,62}$' to ''
PATCH /projects/{id}/databases/{databaseName}/type
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 it. A failed redeploy puts the runtimes
back on the build they were running, leaves the frontend
activeon the previous deployment, andrecords the attempted deployment as failed.
degradedmeans the runtime remains available butedge synchronization requires recovery; Volcano retries the edge step without rebuilding. Only one deployment may run for a
given frontend, while independent frontends and projects can deploy concurrently.
For monorepos, provide
app_rootas a relative path from the uploaded archive rootto the Next.js app that should be built. Omit it for single-app archives.
Supported frontend environments are Next.js 15.x and 16.x with Node.js
22.x or 24.x. The Node.js runtime is inferred from
package.jsonengines.node; if omitted, Volcano uses Node.js 22.x.The selected Node.js family must also satisfy the installed Next.js package's
engines.nodeconstraint. Volcano tests Next 15.5.23 (^18.18.0 || ^19.8.0 || >=20.0.0) and Next 16.3.2 (>=20.9.0).Source archive size is enforced by the API with
SOURCE_ARCHIVE_SIZE_LIMIT_MB; the CLIdoes not apply its own source archive size limit. After the final container images are
built, the publish build enforces
LAMBDA_TARGET_CONTAINER_SIZE_LIMIT_MBbefore pushing.This operation is limited by plan-based frontend deployment quotas (
FREE_FRONTEND_DEPLOYMENTS,PRO_FRONTEND_DEPLOYMENTS).Each project can contain up to 10,000 frontends regardless of plan.
' to 'Creates and deploys a frontend for the project.
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 it. A failed redeploy puts the runtimes
back on the build they were running, leaves the frontend
activeon the previous deployment, andrecords the attempted deployment as failed.
degradedmeans the runtime remains available butedge synchronization requires recovery; Volcano retries the edge step without rebuilding. Only one deployment may run for a
given frontend, while independent frontends and projects can deploy concurrently.
For monorepos, provide
app_rootas a relative path from the uploaded archive rootto the Next.js app that should be built. Omit it for single-app archives.
Supported frontend environments are Next.js 15.x and 16.x with Node.js
22.x or 24.x. The Node.js runtime is inferred from
package.jsonengines.node; if omitted, Volcano uses Node.js 22.x.The selected Node.js family must also satisfy the installed Next.js package's
engines.nodeconstraint. Volcano tests Next 15.5.24 (^18.18.0 || ^19.8.0 || >=20.0.0) and Next 16.3.3 (>=20.9.0).Source archive size is enforced by the API with
SOURCE_ARCHIVE_SIZE_LIMIT_MB; the CLIdoes not apply its own source archive size limit. After the final container images are
built, the publish build enforces
LAMBDA_TARGET_CONTAINER_SIZE_LIMIT_MBbefore pushing.This operation is limited by plan-based frontend deployment quotas (
FREE_FRONTEND_DEPLOYMENTS,PRO_FRONTEND_DEPLOYMENTS).Each project can contain up to 10,000 frontends regardless of plan.
'
DELETE /projects/{id}/git-connection
PUT /projects/{id}/git-connection
PUT /projects/{id}/git-connection/production-branch
PUT /projects/{id}/git-deploy-settings
GET /public/{projectId}/{bucketName}/{path}
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
GET /storage/{bucketName}
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
POST /storage/{bucketName}/copy
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
POST /storage/{bucketName}/move
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
DELETE /storage/{bucketName}/{path}
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
GET /storage/{bucketName}/{path}
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
POST /storage/{bucketName}/{path}
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the cap increases (plan/override) or the
calendar-month meter resets.
' to 'The platform user exceeded their billing-cycle bandwidth allowance (aggregate
ingress + egress across owned projects). Enforcement is eventual:
requests are rejected until the allowance increases or the next
anniversary cycle begins.
'
Validation