> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Managed Postgres OpenAPI

> OpenAPI で Managed Postgres サービスを操作する

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Beta feature. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        Learn more.
                    </a>
                </u>
            </span>
        </div>;
};

[ClickHouse OpenAPI](/ja/products/cloud/features/admin-features/api) を使用すると、
ClickHouse サービスと同様に Managed Postgres サービスをプログラムから
操作できます。同じ API では、サービスのメトリクスをスクレイピングするための
\[Prometheus エンドポイント] も公開されています。
すでに [OpenAPI] に慣れている場合は、\[API キー] を取得して
[Managed Postgres API リファレンス][pg-openapi] に直接進んでください。
そうでない場合は、このまま簡単な概要をご確認ください。

<div id="api-keys">
  ## API キー
</div>

ClickHouse OpenAPI を使用するには認証が必要です。作成方法については
[API keys] を参照してください。次に、以下のように Basic 認証の認証情報として使用します。

```bash theme={null}
KEY_ID=mykeyid
KEY_SECRET=mykeysecret

curl -s --user "$KEY_ID:$KEY_SECRET" https://api.clickhouse.cloud/v1/organizations | jq
```

<div id="organization-id">
  ## Organization ID
</div>

次に、Organization ID が必要になります。

1. コンソールの左下で組織名を選択します。
2. **Organization details** を選択します。
3. **Organization ID** の右側にあるコピーアイコンをクリックして、
   直接クリップボードにコピーします。

<div id="crud">
  ## CRUD
</div>

Postgres サービス のライフサイクルを見ていきましょう。

<div id="create">
  ### 作成
</div>

まず、[create API] を使って新しく作成します。このリクエストでは、JSONボディに次のプロパティを含める必要があります。

* `name`: 新しいPostgres サービスの名前
* `provider`: クラウドプロバイダーの名前
* `region`: serviceをデプロイするproviderのネットワーク内のRegion
* `size`: VMのサイズ
* `storageSize`: VMのストレージサイズ

これらのプロパティの設定可能な値については、[create API] のドキュメントを参照してください。さらに、デフォルトの17ではなく、Postgres 18を指定します。

```bash theme={null}
create_data='{
  "name": "my postgres",
  "provider": "aws",
  "region": "us-west-2",
  "postgresVersion": "18",
  "size": "r8gd.large",
  "storageSize": 118
}'
```

次に、このデータを使用して新しいインスタンスを作成します。なお、そのためにはContent-Typeヘッダーの内容が必要です:

```bash theme={null}
curl -s --user "$KEY_ID:$KEY_SECRET" -H 'Content-Type: application/json' \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres" \
    -d "$create_data" | jq
```

成功すると、新しいインスタンスが作成され、その情報
(接続情報を含む) が返されます：

```json theme={null}
{
  "result": {
    "id": "pg7myrd1j06p3gx4zrm2ze8qz6",
    "name": "my postgres",
    "provider": "aws",
    "region": "us-west-2",
    "postgresVersion": "18",
    "size": "r8gd.large",
    "storageSize": 118,
    "haType": "none",
    "tags": [],
    "connectionString": "postgres://postgres:vV6cfEr2p_-TzkCDrZOx@my-postgres-6d8d2e3e.pg7myrd1j06p3gx4zrm2ze8qz6.c0.us-west-2.aws.pg.clickhouse-dev.com:5432/postgres?channel_binding=require",
    "username": "postgres",
    "password": "vV6cfEr2p_-TzkCDrZOx",
    "hostname": "my-postgres-6d8d2e3e.pg7myrd1j06p3gx4zrm2ze8qz6.c0.us-west-2.aws.pg.clickhouse-dev.com",
    "isPrimary": true,
    "state": "creating"
  },
  "requestId": "a5957990-dbe5-46fd-b5ce-a7f8f79e50fe",
  "status": 200
}
```

<div id="read">
  ### 取得
</div>

レスポンスの`id`を使って、サービスを再度取得します:

```bash theme={null}
PG_ID=pg7myrd1j06p3gx4zrm2ze8qz6
curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq
```

出力は作成時に返されるJSONと似ていますが、`state` を確認して
ください。これが `running` に変わったら、サーバーの準備完了です。

```bash theme={null}
curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq .result.state
```

```json theme={null}
"running"
```

これで、`connectionString` プロパティを使って、たとえば
[psql] 経由で接続できます：

```bash theme={null}
$ psql "$(
    curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq -r .result.connectionString
)"

psql (18.3)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql)
Type "help" for help.

postgres=# 
```

[psql] を終了するには、`\q` と入力します。

<div id="update">
  ### 更新
</div>

[patch API] は、[RFC 7396] の JSON Merge Patch を使用して、Managed
Postgresサービスのプロパティの一部を更新できます。複雑なデプロイメントでは、タグが特に重要になることがあります。その場合は、リクエストでタグだけを送信してください:

```bash theme={null}
curl -sX PATCH --user "$KEY_ID:$KEY_SECRET" -H 'Content-Type: application/json' \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    -d '{"tags": [{"key": "Environment", "value": "production"}]}' \
    | jq .result
```

返却されるデータには、新しいタグが含まれているはずです：

```json theme={null}
{
  "id": "$PG_ID",
  "name": "my postgres",
  "provider": "aws",
  "region": "us-west-2",
  "postgresVersion": "18",
  "size": "r8gd.large",
  "storageSize": 118,
  "haType": "none",
  "tags": [
    {
      "key": "Environment",
      "value": "production"
    }
  ],
  "connectionString": "postgres://postgres:vV6cfEr2p_-TzkCDrZOx@my-postgres-6d8d2e3e.$PG_ID.c0.us-west-2.aws.pg.clickhouse-dev.com:5432/postgres?channel_binding=require",
  "username": "postgres",
  "password": "vV6cfEr2p_-TzkCDrZOx",
  "hostname": "my-postgres-6d8d2e3e.$PG_ID.c0.us-west-2.aws.pg.clickhouse-dev.com",
  "isPrimary": true,
  "state": "running"
}
```

<div id="delete">
  ### 削除
</div>

Postgres サービスを削除するには、[delete API] を使用します。

<Warning>
  Postgres サービスを削除すると、サービス自体とその中のすべての
  データが完全に削除されます。サービスを削除する前に、必ずバックアップを
  取得するか、レプリカをプライマリに昇格させてください。
</Warning>

```bash theme={null}
curl -sX DELETE --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq
```

成功した場合、レスポンスではステータスコード 200 が返されます。例:

```json theme={null}
{
  "requestId": "ac9bbffa-e370-410c-8bdd-bd24bf3d7f82",
  "status": 200
}
```

<div id="monitoring">
  ## 監視
</div>

Prometheus 互換のエンドポイントが 2 つあり、Managed Postgres サービスの CPU、メモリ、I/O、接続、
およびトランザクションのメトリクスを公開しています。1 つは組織内のすべてのサービスの
メトリクスを返し、もう 1 つは単一のサービスのメトリクスを返します。設定については
\[Prometheus エンドポイント] ページを、メトリクスの一覧については
\[メトリクス リファレンス] を参照してください。

<div id="query-insights">
  ## クエリインサイト
</div>

Cloud
Console の \[クエリインサイト] タブの各ステートメントのテレメトリーは、プログラムからも利用できます。2 つのエンドポイントにより、サービス上の最も遅い
クエリパターンを取得できます。1 つは影響度順にすべてのパターンを一覧表示し、もう 1 つは単一のパターンとその最近の実行結果を返します。

<div id="list-slow-query-patterns">
  ### 低速クエリパターンの一覧
</div>

\[スローパターン API] は、一定の時間範囲内で観測された最も遅いクエリ
パターンの集約メトリクスを返します。時間範囲の指定は必須です。
RFC 3339 形式のタイムスタンプとして `from_date` と `to_date` を渡してください:

```bash theme={null}
FROM=2026-05-25T00:00:00Z
TO=2026-05-26T00:00:00Z

curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID/slowQueryPatterns?from_date=$FROM&to_date=$TO" \
    | jq
```

結果はデフォルトで、`total_duration` の
降順で、最もコストの高いパターンから返されます。`sort_by` を使うと別の指標 (たとえば
`p99_duration`、`call_count`、または `total_wal_bytes`) でソートでき、`sort_order`
で並び順を反転できます。`db_name`、`db_user`、
`db_operation`、および `app` フィルターで対象を絞り込み、`limit` と
`offset` でページ送りできます。

各結果は 1 つの正規化されたパターンで、リテラルは取り除かれ、
実行時間はマイクロ秒単位で示されます:

```json theme={null}
{
  "result": [
    {
      "queryId": "-4748036479882663975",
      "queryText": "SELECT * FROM orders WHERE customer_id = $1 ORDER BY created_at DESC LIMIT $2",
      "dbName": "sales",
      "dbUser": "orders_service",
      "dbOperation": "SELECT",
      "app": "orders-api",
      "callCount": 84213,
      "errorCount": 0,
      "totalDurationUs": 1012384556,
      "avgDurationUs": 12021,
      "maxDurationUs": 482915,
      "p50DurationUs": 9874,
      "p95DurationUs": 28431,
      "p99DurationUs": 41200,
      "totalRows": 842130,
      "totalSharedBlksRead": 19284,
      "totalSharedBlksHit": 48217734,
      "totalCpuTimeUs": 938472113,
      "totalWalBytes": 0
    }
  ],
  "requestId": "c128d830-5769-4c82-8235-f79aa69d1ebf",
  "status": 200
}
```

`queryId` は正規化されたステートメントの符号付き 64 ビットハッシュなので、しばしば
負の値になります。単一のパターンを取得するには、先頭の `-` も含めて
その値をそのまま渡してください。

<div id="get-slow-query-pattern">
  ### 低速クエリパターンを取得する
</div>

リストレスポンスの `queryId` を \[低速クエリパターン API] に渡すと、その
パターンの集計メトリクスと、直近の個別実行結果を取得できます。
パターンの識別に必要な `db_name`、`db_user`、`db_operation` は
必須です。

```bash theme={null}
QUERY_ID=-4748036479882663975

curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID/slowQueryPatterns/$QUERY_ID?db_name=sales&db_user=orders_service&db_operation=SELECT" \
    | jq
```

レスポンスには、`aggregate` の下にあるリストエンドポイントと同じ集計に加えて、
`recentExecutions` 配列が含まれます。各実行には、実行ごとの
完全なカウンター — shared および temp block の I/O、CPU の user および system
time、並列 worker 数、JIT、WAL — が含まれます。これらは、
コンソールの
[detail flyout] で内訳が表示されるものと同じカウンターです。

```json theme={null}
{
  "result": {
    "aggregate": {
      "queryId": "-4748036479882663975",
      "queryText": "SELECT * FROM orders WHERE customer_id = $1 ORDER BY created_at DESC LIMIT $2",
      "dbName": "sales",
      "dbUser": "orders_service",
      "dbOperation": "SELECT",
      "callCount": 84213,
      "avgDurationUs": 12021,
      "p99DurationUs": 41200
    },
    "recentExecutions": [
      {
        "timestamp": "2026-05-25T16:42:09Z",
        "durationUs": 41200,
        "rows": 10,
        "sharedBlksHit": 412,
        "sharedBlksRead": 3,
        "tempBlksWritten": 0,
        "cpuUserTimeUs": 38211,
        "cpuSysTimeUs": 1044,
        "parallelWorkersPlanned": 0,
        "parallelWorkersLaunched": 0,
        "walBytes": 0,
        "serverRole": "primary"
      }
    ]
  },
  "requestId": "a5957990-dbe5-46fd-b5ce-a7f8f79e50fe",
  "status": 200
}
```

この例では簡潔にするため、両方のオブジェクトを一部省略しています。API は
[per-execution counters] で説明している完全なカウンター セットを返します。

[ClickHouse OpenAPI]: /products/cloud/features/admin-features/api "Cloud API"

[OpenAPI]: https://www.openapis.org "OpenAPI Initiative"

[API keys]: /products/cloud/features/admin-features/api/openapi "API キーの管理"

[Prometheus endpoint]: /products/managed-postgres/monitoring/prometheus "Managed Postgres Prometheus エンドポイント"

[metrics reference]: /products/managed-postgres/monitoring/metrics "Managed Postgres メトリクス リファレンス"

[pg-openapi]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres "ClickHouse Cloud 向け OpenAPI 仕様: Postgres"

[list API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/postgresServiceGetList "組織の Postgres service の一覧を取得"

[create API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/postgresServiceCreate "新しい Postgres service を作成"

[psql]: https://www.postgresql.org/docs/current/app-psql.html "PostgreSQL Docs: psql — PostgreSQL 対話型ターミナル"

[patch API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/postgresServicePatch "PostgreSQL service を更新"

[RFC 7396]: https://www.rfc-editor.org/rfc/rfc7396 "RFC 7396: JSON Merge Patch"

[Postgres configuration]: https://www.postgresql.org/docs/18/runtime-config.html "PostgreSQL Docs: サーバー設定"

[config API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/postgresServiceSetConfig "Postgres Service の設定を更新"

[delete API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/postgresServiceDelete "PostgreSQL service を削除"

[Query Insights]: /products/managed-postgres/monitoring/query-insights "Postgres クエリインサイト"

[detail flyout]: /products/managed-postgres/monitoring/query-insights#detail "クエリインサイトの詳細フライアウト"

[per-execution counters]: /products/managed-postgres/monitoring/query-insights#counters "クエリインサイトの実行ごとのカウンター"

[slow patterns API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/slowQueryPatternsGetList "Postgres の低速クエリパターン一覧を取得"

[slow pattern API]: /api-reference/organization/get-list-of-available-organizations#tag/Postgres/operation/slowQueryPatternGet "最近の実行履歴を含む Postgres の低速クエリパターンを取得"
