> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Clickhouse Postgres Instance Config Patch: Inputs, Cost &

> Update Postgres service configuration. Includes inputs, outputs, pricing notes, Deepline CLI examples, and GTM automation guidance.

## Run in Enrichment Spreadsheet

<Info>
  Use this function as a column step in `deepline enrich`.
</Info>

```bash theme={null}
deepline enrich --input leads.csv --output leads.enriched.csv --with 'result=clickhouse_postgres_instance_config_patch:{"organizationId":"{{organizationId}}","postgresId":"{{postgresId}}","pgConfig":{},"pgBouncerConfig":{}}' --json
```

<Tip>
  Map payload values to spreadsheet columns with `{{column_name}}` placeholders.
</Tip>

## Input Schema

| Name                      | Type     | Required | Default | Description                                                                                                  |
| ------------------------- | -------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `payload.organizationId`  | `string` | Yes      |         | ID of the organization that owns the Postgres service.                                                       |
| `payload.postgresId`      | `string` | Yes      |         | ID of the requested Postgres service.                                                                        |
| `payload.pgConfig`        | `object` | Yes      |         | Postgres [runtime configuration](https://www.postgresql.org/docs/current/runtime-config.html) configuration. |
| `payload.pgBouncerConfig` | `record` | Yes      |         | PgBouncer [runtime configuration](https://www.pgbouncer.org/config.html) configuration.                      |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. Update the existing Postgres service and pgBouncer configuration.",
    "properties": {
      "organizationId": {
        "type": "string",
        "description": "ID of the organization that owns the Postgres service.",
        "format": "uuid"
      },
      "postgresId": {
        "type": "string",
        "description": "ID of the requested Postgres service.",
        "format": "uuid"
      },
      "pgConfig": {
        "type": "object",
        "description": "Postgres [runtime configuration](https://www.postgresql.org/docs/current/runtime-config.html) configuration.",
        "minProperties": 1,
        "properties": {
          "max_connections": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Sets the maximum number of concurrent connections to the database server.",
            "minimum": 1
          },
          "default_transaction_isolation": {
            "type": "string",
            "description": "Sets the default transaction isolation level for new transactions.",
            "enum": [
              "read committed",
              "repeatable read",
              "serializable"
            ]
          },
          "ssl_min_protocol_version": {
            "type": "string",
            "description": "Sets the minimum SSL/TLS protocol version allowed for client connections.",
            "enum": [
              "TLSv1",
              "TLSv1.1",
              "TLSv1.2",
              "TLSv1.3"
            ]
          },
          "maintenance_work_mem": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Sets the maximum memory to be used for maintenance operations.",
            "minimum": 64
          },
          "work_mem": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Sets the amount of memory Postgres will use for internal operations like sorting and hashing as part of executing a query.",
            "minimum": 64
          },
          "effective_cache_size": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Sets the planner's assumption about the total size of data caches.",
            "minimum": 8
          },
          "random_page_cost": {
            "type": [
              "string",
              "number"
            ],
            "description": "Sets the planner's estimate of the cost of a non-sequentially-fetched disk page. Lower values (1.1-1.5) are better for SSDs.",
            "minimum": 0
          },
          "effective_io_concurrency": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Number of concurrent disk I/O operations the planner expects. Higher values (100-200) benefit SSDs.",
            "minimum": 0
          },
          "max_worker_processes": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum number of background processes the system can support. Includes parallel query workers, logical replication, and more.",
            "minimum": 0
          },
          "max_parallel_workers": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum number of workers that can be used for parallel operations. Cannot exceed max_worker_processes.",
            "minimum": 0
          },
          "max_parallel_workers_per_gather": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum number of parallel workers per executor node for parallel queries. Use 0 to disable parallel queries.",
            "minimum": 0
          },
          "max_parallel_maintenance_workers": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum number of parallel workers for maintenance operations like CREATE INDEX and VACUUM.",
            "minimum": 0
          },
          "statement_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Abort any statement that runs longer than the specified time. Use 0 to disable.",
            "minimum": 0
          },
          "lock_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Abort any statement that waits longer than the specified time while attempting to acquire a lock. Use 0 to disable.",
            "minimum": 0
          },
          "idle_session_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Terminate any session that has been idle for longer than the specified time. Use 0 to disable.",
            "minimum": 0
          },
          "idle_in_transaction_session_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Terminate any session that has been idle within an open transaction for longer than the specified time. Use 0 to disable.",
            "minimum": 0
          },
          "transaction_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Terminate any statement that takes more than the specified time, even while active. Use 0 to disable.",
            "minimum": 0
          },
          "wal_sender_timeout": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Terminate replication connections that are inactive for longer than this time. Use 0 to disable.",
            "minimum": 0
          },
          "wal_keep_size": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Minimum size of past WAL files kept in pg_wal for standby servers. Use 0 to disable.",
            "minimum": 0
          },
          "min_wal_size": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Minimum size to shrink the WAL to. WAL files are recycled rather than removed when below this size.",
            "minimum": 32768
          },
          "max_wal_size": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum size WAL can grow between checkpoints. Larger values improve write performance but increase crash recovery time.",
            "minimum": 32768
          },
          "max_slot_wal_keep_size": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Specifies the maximum size of WAL files that replication slots are allowed to retain. Use -1 for unlimited.",
            "minimum": 0
          },
          "wal_compression": {
            "type": "string",
            "description": "Compress full-page writes in WAL. Reduces I/O at the cost of CPU. Options vary by PostgreSQL version.",
            "enum": [
              "off",
              "on",
              "lz4",
              "zstd"
            ]
          },
          "autovacuum_max_workers": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum number of autovacuum worker processes that can run at the same time. Workers share a single cost-limit budget, so raising this alone may not speed up vacuuming.",
            "minimum": 1
          },
          "autovacuum_naptime": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Minimum delay between autovacuum runs. Lower values make autovacuum check for work more frequently.",
            "minimum": 1
          },
          "autovacuum_work_mem": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Maximum memory each autovacuum worker uses to track dead tuples. Higher values reduce repeated index-vacuum passes on large tables. Use -1 to fall back to maintenance_work_mem.",
            "minimum": 1024
          },
          "autovacuum_vacuum_scale_factor": {
            "type": [
              "string",
              "number"
            ],
            "description": "Fraction of a table's rows that must change before autovacuum runs. Lower values vacuum large tables more frequently.",
            "minimum": 0
          },
          "autovacuum_analyze_scale_factor": {
            "type": [
              "string",
              "number"
            ],
            "description": "Fraction of a table's rows that must change before autovacuum runs ANALYZE to refresh planner statistics.",
            "minimum": 0
          },
          "autovacuum_vacuum_insert_scale_factor": {
            "type": [
              "string",
              "number"
            ],
            "description": "Fraction of a table's rows that must be inserted before autovacuum runs. Helps vacuum insert-heavy, rarely-updated tables.",
            "minimum": 0
          },
          "autovacuum_vacuum_cost_limit": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Cost-accounting limit shared across all autovacuum workers before they pause. Use -1 to inherit vacuum_cost_limit.",
            "minimum": 1
          },
          "autovacuum_vacuum_cost_delay": {
            "type": [
              "string",
              "integer"
            ],
            "description": "Time autovacuum sleeps when the cost limit is reached. Lower values speed up vacuuming at the cost of more I/O.",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "pgBouncerConfig": {
        "type": "object",
        "description": "PgBouncer [runtime configuration](https://www.pgbouncer.org/config.html) configuration.",
        "minProperties": 1,
        "maxProperties": 64,
        "additionalProperties": {
          "type": "string",
          "description": "Any PgBouncer configuration parameter."
        }
      }
    },
    "required": [
      "organizationId",
      "postgresId",
      "pgConfig",
      "pgBouncerConfig"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output Schema

| Name          | Type     | Required | Default | Description                                    |
| ------------- | -------- | -------- | ------- | ---------------------------------------------- |
| `result.data` | `object` | Yes      |         | Provider response payload.                     |
| `result.meta` | `object` | No       |         | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "status": {
            "type": "number",
            "description": "HTTP status code."
          },
          "requestId": {
            "type": "string",
            "description": "Unique id assigned to every request. UUIDv4",
            "format": "uuid"
          },
          "result": {
            "properties": {
              "pgConfig": {
                "type": "object",
                "description": "Postgres [runtime configuration](https://www.postgresql.org/docs/current/runtime-config.html) configuration.",
                "minProperties": 1,
                "properties": {
                  "max_connections": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Sets the maximum number of concurrent connections to the database server.",
                    "minimum": 1
                  },
                  "default_transaction_isolation": {
                    "type": "string",
                    "description": "Sets the default transaction isolation level for new transactions.",
                    "enum": [
                      "read committed",
                      "repeatable read",
                      "serializable"
                    ]
                  },
                  "ssl_min_protocol_version": {
                    "type": "string",
                    "description": "Sets the minimum SSL/TLS protocol version allowed for client connections.",
                    "enum": [
                      "TLSv1",
                      "TLSv1.1",
                      "TLSv1.2",
                      "TLSv1.3"
                    ]
                  },
                  "maintenance_work_mem": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Sets the maximum memory to be used for maintenance operations.",
                    "minimum": 64
                  },
                  "work_mem": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Sets the amount of memory Postgres will use for internal operations like sorting and hashing as part of executing a query.",
                    "minimum": 64
                  },
                  "effective_cache_size": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Sets the planner's assumption about the total size of data caches.",
                    "minimum": 8
                  },
                  "random_page_cost": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Sets the planner's estimate of the cost of a non-sequentially-fetched disk page. Lower values (1.1-1.5) are better for SSDs.",
                    "minimum": 0
                  },
                  "effective_io_concurrency": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Number of concurrent disk I/O operations the planner expects. Higher values (100-200) benefit SSDs.",
                    "minimum": 0
                  },
                  "max_worker_processes": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum number of background processes the system can support. Includes parallel query workers, logical replication, and more.",
                    "minimum": 0
                  },
                  "max_parallel_workers": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum number of workers that can be used for parallel operations. Cannot exceed max_worker_processes.",
                    "minimum": 0
                  },
                  "max_parallel_workers_per_gather": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum number of parallel workers per executor node for parallel queries. Use 0 to disable parallel queries.",
                    "minimum": 0
                  },
                  "max_parallel_maintenance_workers": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum number of parallel workers for maintenance operations like CREATE INDEX and VACUUM.",
                    "minimum": 0
                  },
                  "statement_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Abort any statement that runs longer than the specified time. Use 0 to disable.",
                    "minimum": 0
                  },
                  "lock_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Abort any statement that waits longer than the specified time while attempting to acquire a lock. Use 0 to disable.",
                    "minimum": 0
                  },
                  "idle_session_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Terminate any session that has been idle for longer than the specified time. Use 0 to disable.",
                    "minimum": 0
                  },
                  "idle_in_transaction_session_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Terminate any session that has been idle within an open transaction for longer than the specified time. Use 0 to disable.",
                    "minimum": 0
                  },
                  "transaction_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Terminate any statement that takes more than the specified time, even while active. Use 0 to disable.",
                    "minimum": 0
                  },
                  "wal_sender_timeout": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Terminate replication connections that are inactive for longer than this time. Use 0 to disable.",
                    "minimum": 0
                  },
                  "wal_keep_size": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Minimum size of past WAL files kept in pg_wal for standby servers. Use 0 to disable.",
                    "minimum": 0
                  },
                  "min_wal_size": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Minimum size to shrink the WAL to. WAL files are recycled rather than removed when below this size.",
                    "minimum": 32768
                  },
                  "max_wal_size": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum size WAL can grow between checkpoints. Larger values improve write performance but increase crash recovery time.",
                    "minimum": 32768
                  },
                  "max_slot_wal_keep_size": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Specifies the maximum size of WAL files that replication slots are allowed to retain. Use -1 for unlimited.",
                    "minimum": 0
                  },
                  "wal_compression": {
                    "type": "string",
                    "description": "Compress full-page writes in WAL. Reduces I/O at the cost of CPU. Options vary by PostgreSQL version.",
                    "enum": [
                      "off",
                      "on",
                      "lz4",
                      "zstd"
                    ]
                  },
                  "autovacuum_max_workers": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum number of autovacuum worker processes that can run at the same time. Workers share a single cost-limit budget, so raising this alone may not speed up vacuuming.",
                    "minimum": 1
                  },
                  "autovacuum_naptime": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Minimum delay between autovacuum runs. Lower values make autovacuum check for work more frequently.",
                    "minimum": 1
                  },
                  "autovacuum_work_mem": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Maximum memory each autovacuum worker uses to track dead tuples. Higher values reduce repeated index-vacuum passes on large tables. Use -1 to fall back to maintenance_work_mem.",
                    "minimum": 1024
                  },
                  "autovacuum_vacuum_scale_factor": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Fraction of a table's rows that must change before autovacuum runs. Lower values vacuum large tables more frequently.",
                    "minimum": 0
                  },
                  "autovacuum_analyze_scale_factor": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Fraction of a table's rows that must change before autovacuum runs ANALYZE to refresh planner statistics.",
                    "minimum": 0
                  },
                  "autovacuum_vacuum_insert_scale_factor": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Fraction of a table's rows that must be inserted before autovacuum runs. Helps vacuum insert-heavy, rarely-updated tables.",
                    "minimum": 0
                  },
                  "autovacuum_vacuum_cost_limit": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Cost-accounting limit shared across all autovacuum workers before they pause. Use -1 to inherit vacuum_cost_limit.",
                    "minimum": 1
                  },
                  "autovacuum_vacuum_cost_delay": {
                    "type": [
                      "string",
                      "integer"
                    ],
                    "description": "Time autovacuum sleeps when the cost limit is reached. Lower values speed up vacuuming at the cost of more I/O.",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "pgBouncerConfig": {
                "type": "object",
                "description": "PgBouncer [runtime configuration](https://www.pgbouncer.org/config.html) configuration.",
                "minProperties": 1,
                "maxProperties": 64,
                "additionalProperties": {
                  "type": "string",
                  "description": "Any PgBouncer configuration parameter."
                }
              },
              "message": {
                "type": "string",
                "description": "Informational message about the configuration update, such as restart requirements."
              }
            },
            "required": [
              "pgConfig",
              "pgBouncerConfig"
            ],
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Advanced: Direct CLI

<Info>
  Use direct execution for single payload debugging.
</Info>

```bash theme={null}
deepline tools execute clickhouse_postgres_instance_config_patch --payload '{
  "organizationId": "string",
  "postgresId": "string",
  "pgConfig": {},
  "pgBouncerConfig": {}
}' --json
```

### CLI flags

| Flag                        | Description                                         |
| --------------------------- | --------------------------------------------------- |
| `--json`                    | Print machine-readable output.                      |
| `--wait`                    | Wait for terminal provider status when supported.   |
| `--debug`                   | Enable wait mode with additional status/log output. |
| `--wait-timeout SECONDS`    | Max seconds to wait in wait mode.                   |
| `--poll-interval SECONDS`   | Polling interval in seconds during wait mode.       |
| `--timeout SECONDS`         | Request timeout in seconds.                         |
| `--connect-timeout SECONDS` | Connection timeout in seconds.                      |

## Cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.
* Billing mode: `no_bill`.
