Fix connection pooling feature flag (#33914)

* Fix connection pooling feature flag

* Fix type issues with lint-query after updating API typs

* Apply same fix for connection_string to ConnectTabContent

* Update useMemo dependency arrays in ConnectionPooling

* Remove allowPgBouncerSelection enabled check on react queries - feels unnecessary and adds some complexity to the loading state of the forms

* Remove conosle log
This commit is contained in:
Joshen Lim committed 2025-03-05 15:39:02 +01:00
1 parent 1418711dee
commit d50fbd9012
7 files changed
+714 -78

No files matched your search

@@ -28,10 +28,7 @@ const ConnectTabContent = forwardRef<HTMLDivElement, ConnectContentTabProps>(
const allowPgBouncerSelection = useFlag('dualPoolerSupport')
const { data: settings } = useProjectSettingsV2Query({ projectRef })
const { data: pgbouncerConfig } = usePgbouncerConfigQuery(
{ projectRef },
{ enabled: allowPgBouncerSelection }
)
const { data: pgbouncerConfig } = usePgbouncerConfigQuery({ projectRef })
const { data: supavisorConfig } = useSupavisorConfigurationQuery({ projectRef })
const isPgBouncerEnabled = allowPgBouncerSelection && !!pgbouncerConfig?.pgbouncer_enabled
@@ -47,7 +44,10 @@ const ConnectTabContent = forwardRef<HTMLDivElement, ConnectContentTabProps>(
? getConnectionStringsV2({
connectionInfo,
poolingInfo: {
connectionString: poolingConfiguration.connectionString,
connectionString:
'connection_string' in poolingConfiguration
? poolingConfiguration.connection_string
: poolingConfiguration.connectionString,
db_host: poolingConfiguration.db_host,
db_name: poolingConfiguration.db_name,
db_port: poolingConfiguration.db_port,
@@ -68,7 +68,7 @@ export const DatabaseConnectionString = () => {
isLoading: isLoadingPgbouncerConfig,
isError: isErrorPgbouncerConfig,
isSuccess: isSuccessPgBouncerConfig,
} = usePgbouncerConfigQuery({ projectRef }, { enabled: allowPgBouncerSelection })
} = usePgbouncerConfigQuery({ projectRef })
const {
data: supavisorConfig,
error: supavisorConfigError,
@@ -135,7 +135,10 @@ export const DatabaseConnectionString = () => {
? getConnectionStrings({
connectionInfo,
poolingInfo: {
connectionString: poolingConfiguration.connectionString,
connectionString:
'connection_string' in poolingConfiguration
? poolingConfiguration.connection_string
: poolingConfiguration.connectionString,
db_host: poolingConfiguration.db_host,
db_name: poolingConfiguration.db_name,
db_port: poolingConfiguration.db_port,
@@ -33,10 +33,7 @@ const IPv4SidePanel = () => {
const visible = panel === 'ipv4'
const { data: addons, isLoading } = useProjectAddonsQuery({ projectRef })
const { data: pgbouncerConfig } = usePgbouncerConfigQuery(
{ projectRef },
{ enabled: allowPgBouncerSelection }
)
const { data: pgbouncerConfig } = usePgbouncerConfigQuery({ projectRef })
const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: organization?.slug })
const { mutate: updateAddon, isLoading: isUpdating } = useProjectAddonUpdateMutation({
onSuccess: () => {
@@ -113,7 +113,7 @@ export const ConnectionPooling = () => {
isLoading: isLoadingPgbouncerConfig,
isError: isErrorPgbouncerConfig,
isSuccess: isSuccessPgbouncerConfig,
} = usePgbouncerConfigQuery({ projectRef }, { enabled: allowPgBouncerSelection })
} = usePgbouncerConfigQuery({ projectRef })
const { data: maxConnData } = useMaxConnectionsQuery({
projectRef: project?.ref,
@@ -169,22 +169,32 @@ export const ConnectionPooling = () => {
max_client_conn: null,
},
})
const { type, default_pool_size, max_client_conn } = form.watch()
const { type, default_pool_size } = form.watch()
const error = useMemo(
() => (type === 'PgBouncer' ? pgbouncerConfigError : supavisorConfigError),
[type]
() =>
allowPgBouncerSelection && type === 'PgBouncer' ? pgbouncerConfigError : supavisorConfigError,
[allowPgBouncerSelection, type, pgbouncerConfigError, supavisorConfigError]
)
const isLoading = useMemo(
() => (type === 'PgBouncer' ? isLoadingPgbouncerConfig : isLoadingSupavisorConfig),
[type]
() =>
allowPgBouncerSelection && type === 'PgBouncer'
? isLoadingPgbouncerConfig
: isLoadingSupavisorConfig,
[allowPgBouncerSelection, type, isLoadingPgbouncerConfig, isLoadingSupavisorConfig]
)
const isError = useMemo(
() => (type === 'PgBouncer' ? isErrorPgbouncerConfig : isErrorSupavisorConfig),
[type]
() =>
allowPgBouncerSelection && type === 'PgBouncer'
? isErrorPgbouncerConfig
: isErrorSupavisorConfig,
[allowPgBouncerSelection, type, isErrorPgbouncerConfig, isErrorSupavisorConfig]
)
const isSuccess = useMemo(
() => (type === 'PgBouncer' ? isSuccessPgbouncerConfig : isSuccessSupavisorConfig),
[type]
() =>
allowPgBouncerSelection && type === 'PgBouncer'
? isSuccessPgbouncerConfig
: isSuccessSupavisorConfig,
[allowPgBouncerSelection, type, isSuccessPgbouncerConfig, isSuccessSupavisorConfig]
)
const isSaving = isUpdatingSupavisor || isUpdatingPgBouncer
+3 -3
View File
@@ -10,9 +10,9 @@ import { lintKeys } from './keys'
export type ProjectLintsVariables = {
projectRef?: string
}
export type ProjectLintResponse = components['schemas']['ProjectLintResponse']
export type Lint = ProjectLintResponse
export type LINT_TYPES = ProjectLintResponse['name']
type ProjectLintResponse = components['schemas']['GetProjectLintsResponseDto']
export type Lint = ProjectLintResponse[0]
export type LINT_TYPES = ProjectLintResponse[0]['name']
export async function getProjectLints({ projectRef }: ProjectLintsVariables, signal?: AbortSignal) {
if (!projectRef) throw new Error('Project ref is required')
+216
View File
@@ -317,6 +317,43 @@ export interface paths {
patch: operations['v1-update-auth-service-config']
trace?: never
}
'/v1/projects/{ref}/config/auth/signing-keys': {
parameters: {
query?: never
header?: never
path?: never
cookie?: never
}
/** [Alpha] List all signing keys for the project */
get: operations['listSigningKeysForProject']
put?: never
/** [Alpha] Create a new signing key for the project in standby status */
post: operations['createSigningKeyForProject']
delete?: never
options?: never
head?: never
patch?: never
trace?: never
}
'/v1/projects/{ref}/config/auth/signing-keys/{id}': {
parameters: {
query?: never
header?: never
path?: never
cookie?: never
}
/** [Alpha] Get information about a signing key */
get: operations['getSigningKeyForProject']
put?: never
post?: never
/** [Alpha] Remove a signing key from a project, where the status is previously_used */
delete: operations['deleteSigningKey']
options?: never
head?: never
/** [Alpha] Update a signing key, mainly its status */
patch: operations['patchSigningKey']
trace?: never
}
'/v1/projects/{ref}/config/auth/sso/providers': {
parameters: {
query?: never
@@ -1517,6 +1554,12 @@ export interface components {
name: string
value: string
}
CreateSigningKeyBody: {
/** @enum {string} */
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
/** @enum {string} */
status?: 'in_use' | 'standby'
}
CreateThirdPartyAuthBody: {
custom_jwks?: Record<string, never>
jwks_url?: string
@@ -1852,6 +1895,34 @@ export interface components {
| 'ap-south-1'
| 'sa-east-1'
}
SigningKeyResponse: {
/** @enum {string} */
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
/** Format: date-time */
created_at: string
/** Format: uuid */
id: string
public_jwk?: unknown
/** @enum {string} */
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
/** Format: date-time */
updated_at: string
}
SigningKeysResponse: {
keys: {
/** @enum {string} */
algorithm: 'EdDSA' | 'ES256' | 'RS256' | 'HS256'
/** Format: date-time */
created_at: string
/** Format: uuid */
id: string
public_jwk?: unknown
/** @enum {string} */
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
/** Format: date-time */
updated_at: string
}[]
}
SnippetContent: {
favorite: boolean
schema_version: string
@@ -2223,6 +2294,10 @@ export interface components {
saml?: components['schemas']['SamlDescriptor']
updated_at?: string
}
UpdateSigningKeyBody: {
/** @enum {string} */
status: 'in_use' | 'previously_used' | 'revoked' | 'standby'
}
UpdateStorageConfigBody: {
features?: components['schemas']['StorageFeatures']
/** Format: int64 */
@@ -3266,6 +3341,147 @@ export interface operations {
}
}
}
listSigningKeysForProject: {
parameters: {
query?: never
header?: never
path: {
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['SigningKeysResponse']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
createSigningKeyForProject: {
parameters: {
query?: never
header?: never
path: {
ref: string
}
cookie?: never
}
requestBody: {
content: {
'application/json': components['schemas']['CreateSigningKeyBody']
}
}
responses: {
/** @description [Alpha] Create a new signing key for the project in standby status */
201: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['CreateSigningKeyBody']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
getSigningKeyForProject: {
parameters: {
query?: never
header?: never
path: {
id: string
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['SigningKeyResponse']
}
}
}
}
deleteSigningKey: {
parameters: {
query?: never
header?: never
path: {
id: string
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['SigningKeyResponse']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
patchSigningKey: {
parameters: {
query?: never
header?: never
path: {
id: string
ref: string
}
cookie?: never
}
requestBody: {
content: {
'application/json': components['schemas']['UpdateSigningKeyBody']
}
}
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['SigningKeyResponse']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
'v1-list-all-sso-provider': {
parameters: {
query?: never
+464 -54
View File
@@ -2899,6 +2899,40 @@ export interface paths {
patch?: never
trace?: never
}
'/platform/projects/{ref}/run-lints/leaked-service-key': {
parameters: {
query?: never
header?: never
path?: never
cookie?: never
}
/** Run project leaked service key lint */
get: operations['ProjectRunLintsController_runLeakedServiceKeyLint']
put?: never
post?: never
delete?: never
options?: never
head?: never
patch?: never
trace?: never
}
'/platform/projects/{ref}/run-lints/no-backup-admin': {
parameters: {
query?: never
header?: never
path?: never
cookie?: never
}
/** Run project backup admin lint */
get: operations['ProjectRunLintsController_runAuthBackupAdminLint']
put?: never
post?: never
delete?: never
options?: never
head?: never
patch?: never
trace?: never
}
'/platform/projects/{ref}/service-versions': {
parameters: {
query?: never
@@ -3100,9 +3134,11 @@ export interface paths {
path?: never
cookie?: never
}
get?: never
/** Gets a pipeline by id */
get: operations['ReplicationPipelinesController_getPipeline']
put?: never
post?: never
/** Updates a pipeline */
post: operations['ReplicationPipelinesController_updatePipeline']
/** Deletes a pipeline */
delete: operations['ReplicationPipelinesController_deletePipeline']
options?: never
@@ -3186,9 +3222,11 @@ export interface paths {
path?: never
cookie?: never
}
get?: never
/** Gets a sink by id */
get: operations['ReplicationSinksController_getSink']
put?: never
post?: never
/** Updates a sink */
post: operations['ReplicationSinksController_updateSink']
/** Deletes a sink */
delete: operations['ReplicationSinksController_deleteSink']
options?: never
@@ -3961,6 +3999,59 @@ export interface components {
result: Record<string, never>[]
retention_period: number
}
AuthBackupAdminLintResponseDto: {
lints: {
cache_key: string
categories: ('PERFORMANCE' | 'SECURITY')[]
description: string
detail: string
/** @enum {string} */
facing: 'EXTERNAL'
/** @enum {string} */
level: 'ERROR' | 'WARN' | 'INFO'
metadata?: {
entity?: string
fkey_columns?: number[]
fkey_name?: string
name?: string
schema?: string
/** @enum {string} */
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
}
/** @enum {string} */
name:
| 'unindexed_foreign_keys'
| 'auth_users_exposed'
| 'auth_rls_initplan'
| 'no_primary_key'
| 'unused_index'
| 'multiple_permissive_policies'
| 'policy_exists_rls_disabled'
| 'rls_enabled_no_policy'
| 'duplicate_index'
| 'security_definer_view'
| 'function_search_path_mutable'
| 'rls_disabled_in_public'
| 'extension_in_public'
| 'rls_references_user_metadata'
| 'materialized_view_in_api'
| 'foreign_table_in_api'
| 'unsupported_reg_types'
| 'auth_otp_long_expiry'
| 'auth_otp_short_length'
| 'ssl_not_enforced'
| 'network_restrictions_not_set'
| 'password_requirements_min_length'
| 'pitr_not_enabled'
| 'auth_leaked_password_protection'
| 'auth_insufficient_mfa_options'
| 'auth_password_policy_missing'
| 'leaked_service_key'
| 'no_backup_admin'
remediation: string
title: string
}[]
}
AutoApiService: {
app: {
id?: number
@@ -4479,7 +4570,7 @@ export interface components {
database_type: 'PRIMARY' | 'READ_REPLICA'
DatabaseDetailResponse: {
/** @enum {string} */
cloud_provider: 'AWS' | 'FLY'
cloud_provider: 'AWS' | 'AWS_K8S' | 'FLY'
connectionString: string
db_host: string
db_name: string
@@ -4668,6 +4759,59 @@ export interface components {
private: number
shared: number
}
GetLeakedServiceKeyLintResponseDto: {
lints: {
cache_key: string
categories: ('PERFORMANCE' | 'SECURITY')[]
description: string
detail: string
/** @enum {string} */
facing: 'EXTERNAL'
/** @enum {string} */
level: 'ERROR' | 'WARN' | 'INFO'
metadata?: {
entity?: string
fkey_columns?: number[]
fkey_name?: string
name?: string
schema?: string
/** @enum {string} */
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
}
/** @enum {string} */
name:
| 'unindexed_foreign_keys'
| 'auth_users_exposed'
| 'auth_rls_initplan'
| 'no_primary_key'
| 'unused_index'
| 'multiple_permissive_policies'
| 'policy_exists_rls_disabled'
| 'rls_enabled_no_policy'
| 'duplicate_index'
| 'security_definer_view'
| 'function_search_path_mutable'
| 'rls_disabled_in_public'
| 'extension_in_public'
| 'rls_references_user_metadata'
| 'materialized_view_in_api'
| 'foreign_table_in_api'
| 'unsupported_reg_types'
| 'auth_otp_long_expiry'
| 'auth_otp_short_length'
| 'ssl_not_enforced'
| 'network_restrictions_not_set'
| 'password_requirements_min_length'
| 'pitr_not_enabled'
| 'auth_leaked_password_protection'
| 'auth_insufficient_mfa_options'
| 'auth_password_policy_missing'
| 'leaked_service_key'
| 'no_backup_admin'
remediation: string
title: string
}[]
}
GetOAuthAuthorizationResponse: {
approved_at?: string
approved_organization_slug?: string
@@ -4728,6 +4872,57 @@ export interface components {
GetProjectByFlyExtensionIdResponse: {
ref: string
}
GetProjectLintsResponseDto: {
cache_key: string
categories: ('PERFORMANCE' | 'SECURITY')[]
description: string
detail: string
/** @enum {string} */
facing: 'EXTERNAL'
/** @enum {string} */
level: 'ERROR' | 'WARN' | 'INFO'
metadata?: {
entity?: string
fkey_columns?: number[]
fkey_name?: string
name?: string
schema?: string
/** @enum {string} */
type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance'
}
/** @enum {string} */
name:
| 'unindexed_foreign_keys'
| 'auth_users_exposed'
| 'auth_rls_initplan'
| 'no_primary_key'
| 'unused_index'
| 'multiple_permissive_policies'
| 'policy_exists_rls_disabled'
| 'rls_enabled_no_policy'
| 'duplicate_index'
| 'security_definer_view'
| 'function_search_path_mutable'
| 'rls_disabled_in_public'
| 'extension_in_public'
| 'rls_references_user_metadata'
| 'materialized_view_in_api'
| 'foreign_table_in_api'
| 'unsupported_reg_types'
| 'auth_otp_long_expiry'
| 'auth_otp_short_length'
| 'ssl_not_enforced'
| 'network_restrictions_not_set'
| 'password_requirements_min_length'
| 'pitr_not_enabled'
| 'auth_leaked_password_protection'
| 'auth_insufficient_mfa_options'
| 'auth_password_policy_missing'
| 'leaked_service_key'
| 'no_backup_admin'
remediation: string
title: string
}[]
GetPublicUrlBody: {
options?: components['schemas']['PublicUrlOptions']
path: string
@@ -5470,6 +5665,7 @@ export interface components {
defaultPaymentMethodId: string | null
}
PgbouncerConfigResponse: {
connection_string: string
connectionString: string
db_dns_name: string
db_host: string
@@ -5897,52 +6093,6 @@ export interface components {
supabase_project_ref: string
updated_at: string
}
ProjectLintMetadata: {
entity?: string
fkey_columns?: number[]
fkey_name?: string
name?: string
schema?: string
/** @enum {string} */
type?: 'table' | 'view' | 'auth' | 'function' | 'extension'
}
ProjectLintResponse: {
cache_key: string
categories: ('PERFORMANCE' | 'SECURITY')[]
description: string
detail: string
facing: string
/** @enum {string} */
level: 'ERROR' | 'WARN' | 'INFO'
metadata: components['schemas']['ProjectLintMetadata'] | null
/** @enum {string} */
name:
| 'unindexed_foreign_keys'
| 'auth_users_exposed'
| 'auth_rls_initplan'
| 'no_primary_key'
| 'unused_index'
| 'multiple_permissive_policies'
| 'policy_exists_rls_disabled'
| 'rls_enabled_no_policy'
| 'duplicate_index'
| 'security_definer_view'
| 'function_search_path_mutable'
| 'rls_disabled_in_public'
| 'extension_in_public'
| 'rls_references_user_metadata'
| 'materialized_view_in_api'
| 'foreign_table_in_api'
| 'unsupported_reg_types'
| 'auth_otp_long_expiry'
| 'auth_otp_short_length'
| 'ssl_not_enforced'
| 'network_restrictions_not_set'
| 'password_requirements_min_length'
| 'pitr_not_enabled'
remediation: Record<string, never>
title: string
}
ProjectRefResponse: {
id: number
name: string
@@ -6076,6 +6226,22 @@ export interface components {
* @enum {string}
*/
ReleaseChannel: 'internal' | 'alpha' | 'beta' | 'ga' | 'withdrawn' | 'preview'
ReplicationPipelineResponse: {
config: {
config: {
max_fill_secs: number
max_size: number
}
}
id: number
publication_name: string
replicator_id: number
sink_id: number
sink_name: string
source_id: number
source_name: string
tenant_id: string
}
ReplicationPipelinesResponse: {
pipelines: {
config: {
@@ -6107,6 +6273,18 @@ export interface components {
}[]
}[]
}
ReplicationSinkResponse: {
config: {
big_query: {
dataset_id: string
project_id: string
service_account_key: string
}
}
id: number
name: string
tenant_id: string
}
ReplicationSinksResponse: {
sinks: {
config: {
@@ -6889,6 +7067,31 @@ export interface components {
/** @description Whether to only allow private channels */
private_only?: boolean
}
UpdateReplicationPipelineBody: {
/** @description Pipeline config */
config?: {
config: {
max_fill_secs: number
max_size: number
}
}
/** @description Publication name */
publication_name?: string
/** @description Sink id */
sink_id?: number
/** @description Source id */
source_id?: number
}
UpdateReplicationSinkBody: {
/** @description BigQuery dataset id */
dataset_id: string
/** @description BigQuery project id */
project_id: string
/** @description BigQuery service account key */
service_account_key: string
/** @description Sink name */
sink_name: string
}
UpdateSchemaBody: {
name?: string
owner?: string
@@ -14111,7 +14314,9 @@ export interface operations {
parameters: {
query?: never
header?: never
path?: never
path: {
ref: string
}
cookie?: never
}
requestBody?: never
@@ -14137,7 +14342,9 @@ export interface operations {
parameters: {
query?: never
header?: never
path?: never
path: {
ref: string
}
cookie?: never
}
requestBody: {
@@ -15050,6 +15257,7 @@ export interface operations {
| 'physical_replication_lag_physical_replica_lag_seconds'
| 'pg_stat_database_num_backends'
| 'supavisor_connections_active'
| 'pgbouncer_pools_client_active_connections'
databaseIdentifier?: string
endDate: string
interval?: '1m' | '5m' | '10m' | '30m' | '1h' | '1d'
@@ -15412,7 +15620,63 @@ export interface operations {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['ProjectLintResponse'][]
'application/json': components['schemas']['GetProjectLintsResponseDto']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ProjectRunLintsController_runLeakedServiceKeyLint: {
parameters: {
query?: never
header?: never
path: {
/** @description Project ref */
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['GetLeakedServiceKeyLintResponseDto']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ProjectRunLintsController_runAuthBackupAdminLint: {
parameters: {
query?: never
header?: never
path: {
/** @description Project ref */
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['AuthBackupAdminLintResponseDto']
}
}
403: {
@@ -15783,6 +16047,79 @@ export interface operations {
}
}
}
ReplicationPipelinesController_getPipeline: {
parameters: {
query?: never
header?: never
path: {
pipeline_id: number
ref: string
}
cookie?: never
}
requestBody?: never
responses: {
/** @description Returns the pipeline. */
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['ReplicationPipelineResponse']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
/** @description Failed to get pipeline */
500: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ReplicationPipelinesController_updatePipeline: {
parameters: {
query?: never
header?: never
path: {
pipeline_id: number
ref: string
}
cookie?: never
}
requestBody: {
content: {
'application/json': components['schemas']['UpdateReplicationPipelineBody']
}
}
responses: {
201: {
headers: {
[name: string]: unknown
}
content?: never
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
/** @description Failed to update pipeline */
500: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ReplicationPipelinesController_deletePipeline: {
parameters: {
query?: never
@@ -15990,6 +16327,79 @@ export interface operations {
}
}
}
ReplicationSinksController_getSink: {
parameters: {
query?: never
header?: never
path: {
ref: string
sink_id: number
}
cookie?: never
}
requestBody?: never
responses: {
/** @description Returns the sink. */
200: {
headers: {
[name: string]: unknown
}
content: {
'application/json': components['schemas']['ReplicationSinkResponse']
}
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
/** @description Failed to get sink */
500: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ReplicationSinksController_updateSink: {
parameters: {
query?: never
header?: never
path: {
ref: string
sink_id: number
}
cookie?: never
}
requestBody: {
content: {
'application/json': components['schemas']['UpdateReplicationSinkBody']
}
}
responses: {
201: {
headers: {
[name: string]: unknown
}
content?: never
}
403: {
headers: {
[name: string]: unknown
}
content?: never
}
/** @description Failed to update sink */
500: {
headers: {
[name: string]: unknown
}
content?: never
}
}
}
ReplicationSinksController_deleteSink: {
parameters: {
query?: never