diff --git a/_partials/_devops-cli-get-started.md b/_partials/_devops-cli-get-started.md new file mode 100644 index 0000000000..7352ee7ed0 --- /dev/null +++ b/_partials/_devops-cli-get-started.md @@ -0,0 +1,80 @@ +import RESTPrereqs from "versionContent/_partials/_prereqs-cloud-account-only.mdx"; +import CLIINSTALL from "versionContent/_partials/_devops-cli-install.mdx"; +import CLIREF from "versionContent/_partials/_devops-cli-reference.mdx"; + +$CLI_LONG is a command-line interface that you use to manage $CLOUD_LONG resources +including VPCs, services, read replicas, and related infrastructure. $CLI_LONG calls $REST_LONG to communicate with +$CLOUD_LONG. + +This page shows you how to install and set up secure authentication for $CLI_LONG, then create your first +service. + +## Prerequisites + + + + +## Install and configure $CLI_LONG + + + + + + + + +## Create your first $SERVICE_LONG + +Create a new $SERVICE_LONG using $CLI_LONG: + + + +1. **Submit a service creation request** + ```shell + tiger service create + ``` + $CLOUD_LONG creates a Development environment for you. That is, no delete protection, high-availability, spooling or + read-replication. You see something like: + ```terminaloutput + 🚀 Creating service 'db-11111' (auto-generated name)... + ✅ Service creation request accepted! + 📋 Service ID: happyservice + 🔐 Password saved to system keyring for automatic authentication + 🎯 Set service 'happyservice' as default service. + ⏳ Waiting for service to be ready (wait timeout: 30m0s)... + ⏳ Service status: QUEUED... + 🎉 Service is ready and running! + ``` + This $SERVICE_SHORT is set as default by the $CLI_SHORT. + +1. **Check the $CLI_SHORT configuration** + ```shell + tiger config show + ``` + You see something like: + ```terminaloutput + api_url: https://console.cloud.timescale.com/public/api/v1 + console_url: https://console.cloud.timescale.com + gateway_url: https://console.cloud.timescale.com/api + docs_mcp: true + docs_mcp_url: https://mcp.tigerdata.com/docs + project_id: tgrproject + service_id: tgrservice + output: table + analytics: true + password_storage: keyring + debug: false + config_dir: /Users//.config/tiger + ``` + + + +And that is it, you are ready to use $CLI_LONG to manage your $SERVICE_SHORTs in $CLOUD_LONG. + + + +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[rest-api-credentials]: https://console.cloud.timescale.com/dashboard/settings +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials +[curl]: https://curl.se/ \ No newline at end of file diff --git a/_partials/_devops-cli-global-flags.md b/_partials/_devops-cli-global-flags.md new file mode 100644 index 0000000000..0c79467a80 --- /dev/null +++ b/_partials/_devops-cli-global-flags.md @@ -0,0 +1,10 @@ + +| Flag | Default | Description | +|---------------------------|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| --analytics | `true` | Set to `false` to disable usage analytics. | +| --config-dir string | `.config/tiger` | Set the directory that holds `config.yaml` | +| --debug | No debugging | Enable debug logging | +| -o, --output string | table | Set the output format. Options are `json`, `yaml`, or `table` | +| --password-storage string | keyring | Set the password storage method. Options are `keyring`, `pgpass`, or `none` | +| --project-id string | - | Set the $PROJECT_LONG to manage. | +| --service-id string | - | Set the $SERVICE_LONG to manage. | diff --git a/_partials/_devops-cli-install.md b/_partials/_devops-cli-install.md new file mode 100644 index 0000000000..1368ce1385 --- /dev/null +++ b/_partials/_devops-cli-install.md @@ -0,0 +1,114 @@ +1. ** Install $CLI_LONG** + + Use the Terminal to install the $CLI_SHORT: + + + + + ```shell + curl -s https://packagecloud.io/install/repositories/timescale/tiger-cli/script.deb.sh | sudo os=any dist=any bash + sudo apt-get install tiger-cli + ``` + + + + + + ```shell + curl -s https://packagecloud.io/install/repositories/timescale/tiger-cli/script.deb.sh | sudo os=any dist=any bash + sudo apt-get install tiger-cli + ``` + + + + + ```shell + curl -s https://packagecloud.io/install/repositories/timescale/tiger-cli/script.rpm.sh | sudo os=rpm_any dist=rpm_any bash + sudo yum install tiger-cli + ``` + + + + + + ```shell + curl -s https://packagecloud.io/install/repositories/timescale/tiger-cli/script.rpm.sh | sudo os=rpm_any dist=rpm_any bash + sudo yum install tiger-cli + ``` + + + + + + ```shell + brew install --cask timescale/tap/tiger-cli + ``` + + + + + + ```shell + curl -fsSL https://tiger-cli-releases.s3.amazonaws.com/install/install.sh | sh + ``` + + + + + +1. **Set up API credentials** + + 1. Log $CLI_LONG into your $ACCOUNT_LONG + + ```shell + tiger auth login + ``` + $CLI_LONG opens $CONSOLE_SHORT in your browser. Login, then click `Authorize`. + + 1. Select a $PROJECT_LONG. + + ```terminaloutput + Auth URL is: https://console.cloud.timescale.com/oauth/authorize?client_id=lotsOfURLstuff + Opening browser for authentication... + Select a project: + + > 1. Tiger Project (tgrproject) + 2. YourCompany (Company wide project) (cpnproject) + 3. YourCompany Department (dptproject) + + Use ↑/↓ arrows or number keys to navigate, enter to select, q to quit + ``` + If only one $PROJECT_SHORT is associated with your $ACCOUNT_SHORT, this step is not shown. + + Where possible, $CLI_LONG stores your authentication information in the system keychain/credential manager. + If that fails, the key is stored in `~/.config/tiger/api-key` with restricted file permissions (600). + $CLI_LONG stores your configuration in `~/.config/tiger/config.yaml`. + +1. **Test your authenticated connection to $CLOUD_LONG by listing services** + + ```bash + tiger service list + ``` + + This call returns something like: + - No services: + ```terminaloutput + 🏜️ No services found! Your project is looking a bit empty. + 🚀 Ready to get started? Create your first service with: tiger service create + ``` + - One or more services: + + ```terminaloutput + ┌────────────┬─────────────────────┬────────┬─────────────┬──────────────┬──────────────────┐ + │ SERVICE ID │ NAME │ STATUS │ TYPE │ REGION │ CREATED │ + ├────────────┼─────────────────────┼────────┼─────────────┼──────────────┼──────────────────┤ + │ tgrservice │ tiger-agent-service │ READY │ TIMESCALEDB │ eu-central-1 │ 2025-09-25 16:09 │ + └────────────┴─────────────────────┴────────┴─────────────┴──────────────┴──────────────────┘ + ``` + + +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[rest-api-credentials]: https://console.cloud.timescale.com/dashboard/settings +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials +[curl]: https://curl.se/ \ No newline at end of file diff --git a/_partials/_devops-cli-reference.md b/_partials/_devops-cli-reference.md new file mode 100644 index 0000000000..61704ea00c --- /dev/null +++ b/_partials/_devops-cli-reference.md @@ -0,0 +1,46 @@ +import GLOBALFLAGS from "versionContent/_partials/_devops-cli-global-flags.mdx"; + +## Commands + +You can use the following commands with $CLI_LONG. For more information on each command, use the `-h` flag. For example: +`tiger auth login -h` + +| Command | Subcommand | Description | +|---------|-----------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| auth | | Manage authentication and the credentials for your $ACCOUNT_LONG | +| | login | Create an authenticated connection to your $ACCOUNT_LONG | +| | logout | Remove the credentials used to create authenticated connections to $CLOUD_LONG | +| | whoami | Show information about the current user | +| version | | Show information about the currently installed version of $CLI_LONG | +| | set `` `` | Set a specific value in your configuration. For example, `tiger config set debug true` | +| config | | Manage your $CLI_LONG configuration | +| | show | Show the current configuration | +| | unset `` | Clear the value of a configuration parameter. For example, `tiger config unset debug` | +| | reset | Reset the configuration to the defaults. This also logs you out from the current $PROJECT_LONG | +| service | | Manage the $SERVICE_LONGs in this $PROJECT_SHORT | +| | create `--addons=` | Create a new $SERVICE_SHORT in this $PROJECT_SHORT. Possible addons are:
  • time-series: with the Timescaledb and Timescaledb Toolkit extensions
  • ai: with the Timescaledb, Timescaledb Toolkit, vector and vectorscale extensions
  • free: free services have fixed compute of 0.25 CPU, 1 GiB RAM, and up to 500mb storage.
  • none: vanilla Postgres
All services have Tiger features such as Tiger Storage, security, monitoring and compliance. If you do not use the `addons` flag, the default service is `time-series`. | +| | describe `` | Show detailed information about a specific $SERVICE_SHORT in this $PROJECT_SHORT | +| | delete `` | Delete a $SERVICE_SHORT from this $PROJECT_SHORT | +| | fork `` | Fork of an existing database service. Key features are:
  • Timing options: `--now`, `--last-snapshot`, `--to-timestamp`
  • Resource configuration: `--cpu`, `--memory`
  • Naming: `--name ` . Defaults to {source-service-name}-fork
  • Wait behavior: `--no-wait`, `--wait-timeout`
  • Default service: `--no-set-default`
| +| | list | List all the $SERVICE_SHORTs in this $PROJECT_SHORT | +| | update-password `` | Update the password for a $SERVICE_SHORT | +| db | | Database operations and management | +| | connect `` | Connect to a $SERVICE_SHORT | +| | connection-string `` | Retrieve the connection string for a $SERVICE_SHORT | +| | test-connection `` | Test the connectivity to a $SERVICE_SHORT | +| mcp | | Manage the $MCP_LONG | +| | start | Start the $MCP_LONG. This is the same as `tiger mcp start stdio` | +| | start `stdio` \| `http` | Start the $MCP_LONG with stdio or HTTP transport | + + +## Flags + +You can use the following global flags with $CLI_LONG: + + + +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[rest-api-credentials]: https://console.cloud.timescale.com/dashboard/settings +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials +[curl]: https://curl.se/ \ No newline at end of file diff --git a/_partials/_devops-mcp-get-started.md b/_partials/_devops-mcp-get-started.md new file mode 100644 index 0000000000..a41497d765 --- /dev/null +++ b/_partials/_devops-mcp-get-started.md @@ -0,0 +1,222 @@ + +import RESTPrereqs from "versionContent/_partials/_prereqs-cloud-account-only.mdx"; +import CLIINSTALL from "versionContent/_partials/_devops-cli-install.mdx"; +import GLOBALFLAGS from "versionContent/_partials/_devops-cli-global-flags.mdx"; + +The $MCP_LONG provides access to your $CLOUD_LONG resources through Claude and other +AI assistants. $MCP_SHORT mirrors the functionality of $CLI_LONG and is integrated directly into the $CLI_SHORT binary. + +You use $MCP_SHORT to manage $CLOUD_LONG resources including VPCs, services, read replicas, and related infrastructure. +$MCP_SHORT calls $REST_LONG to communicate with $CLOUD_LONG. + +This page shows you how to install $CLI_LONG and set up secure authentication for $MCP_SHORT, then manage the +resources in your $ACCOUNT_LONG through the $MCP_LONG using your AI Assistant. + +## Prerequisites + + + +* An AI assistant installed on your developer device with an active API key + + Supported AI assistants are: `claude-code`, `cursor`, `windsurf`, `codex`, `gemini/gemini-cli`, `vscode/code/vs-code` + +## Install and configure $MCP_SHORT + +The $MCP_SHORT is bundled with $CLI_LONG: + + + + + +1. **Configure your AI Assistant to interact with the $PROJECT_SHORTs and $SERVICE_SHORTs in your $ACCOUNT_LONG** + + For example: + ```shell + tiger mcp install claude-code + ``` + +1. **Configure your AI Assistant to interact with the $COMPANY docs** + + For example: + ```shell + claude mcp add --transport http tiger-docs https://mcp.tigerdata.com/docs + ``` + + + +And that is it, you are ready to use the $MCP_LONG to manage your $SERVICE_SHORTs in $CLOUD_LONG. + +## Manage the resources in your $ACCOUNT_LONG through your AI Assistant + +Your AI assistant is connected to your $ACCOUNT_LONG and the $COMPANY documentation, you can now use it to +manage your $SERVICE_SHORTs and learn more about how to implement $CLOUD_LONG features. For example: + + + +1. **Start your $MCP_SHORT** + ```shell + tiger mcp start + ``` + +1. **Run your AI assistant** + ```shell + claude + ``` + +1. **Check your $MCP_LONG configuration** + ```shell + > is the tigerdata mcp server active for you? + ``` + You see something like: + ```shell + MCP server is active. I can see the following TigerData-related tools available: + + - mcp__tiger__get_guide - Retrieve TimescaleDB guides and best practices + - mcp__tiger__semantic_search_postgres_docs - Search PostgreSQL documentation + - mcp__tiger__semantic_search_tiger_docs - Search Tiger Cloud and TimescaleDB documentation + - mcp__tiger__tiger_service_create - Create new database services + - mcp__tiger__tiger_service_list - List all database services + - mcp__tiger__tiger_service_show - Show detailed service information + - mcp__tiger__tiger_service_update_password - Update service passwords + + Is there something specific you'd like to do with the TigerData MCP server? + ``` + +1. **Ask a basic question about your $SERVICE_SHORTs** + ```shell + > can you list my active services please + ``` + You see something like: + ```shell + ⏺ You have 3 active services, all with the same name "my-first-service": + + 1. tgrservice1 - READY - TimescaleDB - us-east-1 - 1 CPU/4GB - Created: 2025-09-30 + 2. tgrservice1 - READY - TimescaleDB - us-east-1 - 1 CPU/4GB - Created: 2025-09-30 + 3. tgrservice1 - READY - TimescaleDB - us-east-1 - 1 CPU/4GB - Created: 2025-09-30 + ``` + +1. **Manage your $SERVICE_SHORTs without having to learn how to** + + For example: + ```shell + Can you create a new ai service called bob with a read replica for me please + ``` + You see something like: + ```shell + tiger - Create Database Service (MCP)(name: "bob", addons: ["ai"], replicas: 1, wait: false) + ... + Do you want to proceed? + ❯ 1. Yes + ``` + +1. **Find best practice for things you need to do** + + For example: + ```shell + > I need to migrate a database with 25 million rows of data to Tiger, + please tell me what service optimizations i should do before migration. + + ``` + You see something like: + ```shell + ⏺ For migrating a database with 25 million rows to Tiger, here are the key service optimizations to do before migration: + + Pre-Migration Service Optimizations + + 1. Right-size your compute resources: + - For 25M rows, start with at least 2 CPU/8GB or 4 CPU/16GB + - You can scale up during migration if needed, then scale down after + + 2. Enable the appropriate add-ons: + - Use time-series addon if you're working with time-series data + - Use ai addon if you need vector/AI capabilities + + 3. Choose optimal region: + - Select the region closest to your current database to minimize network transfer time + - This significantly reduces migration duration + + 4. Consider enhanced storage (Enterprise only): + - If you expect high write throughput during migration, enhanced storage provides better IOPS (up to 32,000) + + 5. Skip replicas initially: + - Start with 0 replicas during migration + - Add replicas after migration completes to avoid duplicate data copying + + 6. Plan for storage space: + - Estimate your uncompressed data size + - Allocate sufficient high-performance storage (scales automatically but good to plan) + - You can enable tiered storage later for older data + + During Migration Best Practices + + Migration method selection: + - 25M rows: Use schema-then-data migration (migrate schema first, then copy data in chunks) + - Allows restart if a copy operation fails + - Better for databases >10GB + + Database configuration to set AFTER migration: + - Set up compression policies (once data is loaded) + - Configure retention policies + - Create continuous aggregates + - Enable tiered storage for cost optimization + + Connection settings: + - Use the pooled connection endpoint for better performance during bulk inserts + - Disable unnecessary constraints/indexes during migration, re-enable after + + Would you like me to help you create an optimized service for this migration? + ``` + + + +That beats working. Let the $MCP_LONG do it all for you. + + +## $MCP_LONG commands + +You can use the following commands with $MCP_LONG. + +| Command | Parameters | Required parameter | Description | +|-------------------------------|------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tiger_service_list | None | - | List all $SERVICE_LONGs in your current $PROJECT_LONG | +| tiger_service_show | service_id | ✓ | Show detailed information about a specific $SERVICE_SHORT | +| tiger_service_create | | ✗ | Create a new $SERVICE_SHORT with a default name in your $PROJECT_LONG | +| | name | ✗ | Set the $SERVICE_SHORT name to `name` s | +| | addons | ✗ | Possible addons are:
  • time-series: with the Timescaledb and Timescaledb Toolkit extensions
  • ai: with the Timescaledb, Timescaledb Toolkit, vector and vectorscale extensions
  • free: free services have fixed compute of 0.25 CPU, 1 GiB RAM, and up to 500mb storage.
  • none: vanilla Postgres
All services have Tiger features such as Tiger Storage, Security, Monitoring and compliance. If you do not use the `addons` flag, the default service is `time-series`. | +| | region | ✗ | The [Region][cloud-regions] this $SERVICE is hosted in. Default is `us-east-1` | +| | cpu_memory | ✗ | The CPU and memory allocation combination. Default is "0.5 CPU/2GB" | +| | replicas | ✗ | The number of [high-availability replicas][readreplica]. Default is 0 | +| | free | ✗ | Free services have fixed compute of 0.25 CPU, 1 GiB RAM, and up to 500mb storage. | +| | wait | ✗ | Wait for this $SERVICE_SHORT to be ready. Default is to not wait | +| | timeout | ✗ | Timeout for `wait` in minutes. The default is 30 | +| tiger_service_update_password | service_id | ✓ | Update the master password for the 'tsdbadmin' user of a database service | +| | password | ✓ | The new password | + +## $CLI_LONG commands for $MCP_SHORT + +Usage: `tiger mcp [subcommand] --` + +| Command | Subcommand | Description | +|---------|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| mcp | | Manage the $MCP_LONG | +| | install `[client]` | Install and configure $MCP_SHORT for a specific client installed on your developer device.

Supported `client`s: `claude-code`, `cursor`, `windsurf`, `codex`, `gemini/gemini-cli`, `vscode/code/vs-code`.
Flags:

  • `--no-backup`: do not back up the existing configuration
  • `--config-path`: open the configuration file at a specific location
| +| | start | Start the $MCP_SHORT. This is the same as `tiger mcp start stdio` | +| | start stdio | Start the $MCP_SHORT with stdio transport | +| | start http | Start the $MCP_SHORT with HTTP transport. This option is for users who wish to access $MCP_LONG without using stdio. For example, your AI assistant does not support stdio, or you do not want to run $CLI_SHORT on your device.

Flags are:

  • `--port ` The default is 8000.
  • `--host ` The default is localhost.
| + + +## Global flags + +You can use the following $CLI_LONG global flags when you run the $MCP_SHORT: + + + + + +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[rest-api-credentials]: https://console.cloud.timescale.com/dashboard/settings +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials +[curl]: https://curl.se/ +[cloud-regions]: /use-timescale/:currentVersion:/regions/ +[readreplica]: /use-timescale/:currentVersion:/ha-replicas/read-scaling/ \ No newline at end of file diff --git a/_partials/_devops-rest-api-get-started.md b/_partials/_devops-rest-api-get-started.md new file mode 100644 index 0000000000..ce78504753 --- /dev/null +++ b/_partials/_devops-rest-api-get-started.md @@ -0,0 +1,159 @@ +import RESTPrereqs from "versionContent/_partials/_prereqs-cloud-account-only.mdx"; + +[$REST_LONG][rest-api-reference] is a comprehensive RESTful API you use to manage $CLOUD_LONG resources +including VPCs, $SERVICE_SHORTs, and read replicas. + +This page shows you how to set up secure authentication for the $REST_LONG and create your first $SERVICE_SHORT. + +## Prerequisites + + + +* Install [curl][curl]. + + +## Configure secure authentication + +$REST_LONG uses HTTP Basic Authentication with access keys and secret keys. All API requests must include +proper authentication headers. + + + +1. **Set up API credentials** + + 1. In $CONSOLE [copy your project ID][get-project-id] and store it securely using an environment variable: + + ```bash + export TIGERDATA_PROJECT_ID="your-project-id" + ``` + + 1. In $CONSOLE [create your client credentials][create-client-credentials] and store them securely using environment variables: + + ```bash + export TIGERDATA_ACCESS_KEY="Public key" + export TIGERDATA_SECRET_KEY="Secret key" + ``` + +1. **Configure the API endpoint** + + Set the base URL in your environment: + + ```bash + export API_BASE_URL="https://console.cloud.timescale.com/public/api/v1" + ``` + +1. **Test your authenticated connection to $REST_LONG by listing the $SERVICE_SHORTs in the current $PROJECT_LONG** + + ```bash + curl -X GET "${API_BASE_URL}/projects/${TIGERDATA_PROJECT_ID}/services" \ + -u "${TIGERDATA_ACCESS_KEY}:${TIGERDATA_SECRET_KEY}" \ + -H "Content-Type: application/json" + ``` + + This call returns something like: + - No $SERVICE_SHORTs: + ```terminaloutput + []% + ``` + - One or more $SERVICE_SHORTs: + + ```terminaloutput + [{"service_id":"a59clooxoe","project_id":"c8nmagk8zh","name":"events", + "region_code":"eu-central-1","addons":"time-series", + "created":"2025-09-09T08:37:15.816443Z","paused":false,"status":"READY", + "resources":[{"id":"101228","spec":{"cpu_millis":500,"memory_gbs":2,"volume_type":""}}], + "metadata":{"environment":"DEV"},"endpoint":{"host":"oh.yeah.tsdb.cloud.timescale.com", + "port":12345}}] + ``` + + + + +## Create your first $SERVICE_LONG + +Create a new $SERVICE_SHORT using the $REST_LONG: + + + +1. **Create a $SERVICE_SHORT using the POST endpoint** + ```bash + curl -X POST "${API_BASE_URL}/projects/${TIGERDATA_PROJECT_ID}/services" \ + -u "${TIGERDATA_ACCESS_KEY}:${TIGERDATA_SECRET_KEY}" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "my-first-service", + "addons": "time-series", + "region_code": "us-east-1", + "replica_count": 1, + "cpu_millis": 1000, + "memory_gbs": 4 + }' + ``` + $CLOUD_LONG creates a Development environment for you. That is, no delete protection, high-availability, spooling or + read-replication. You see something like: + ```terminaloutput + { + "service_id":"asdfasdfasdf","project_id":"asdasdfasf","name":"my-first-service", + "region_code":"us-east-1", "addons":"time-series", + "created":"2025-09-09T09:24:31.997767396Z", "paused":false,"status":"READY", + "resources":[{"id":"101240", + "spec":{"cpu_millis":1000,"memory_gbs":4,"volume_type":""}}], + "metadata":{"environment":"PROD"}, + "endpoint":{"host":"oh.yeah.tsdb.cloud.timescale.com","port":123435}, + "initial_password":"very-secret", + "ha_replicas":{"sync_replica_count":0,"replica_count":1} + } + ``` + +1. Save `service_id` from the response to a variable: + + ```bash + # Extract service_id from the JSON response + export SERVICE_ID="service_id-from-response" + ``` + +1. **Check the configuration for the $SERVICE_SHORT** + + ```bash + curl -X GET "${API_BASE_URL}/projects/${TIGERDATA_PROJECT_ID}/services/${SERVICE_ID}" \ + -u "${TIGERDATA_ACCESS_KEY}:${TIGERDATA_SECRET_KEY}" \ + -H "Content-Type: application/json" + ``` +You see something like: + ```terminaloutput + {"service_id":"tgrservice","project_id":"tgrproject","name":"my-first-service","region_code":"us-east-1", + "addons":"time-series","created":"2025-09-30T12:08:54.438785Z","paused":false,"status":"READY", + "resources":[{"id":"102879","spec":{"cpu_millis":1000,"memory_gbs":4,"volume_type":""}}], + "metadata":{"environment":"DEV"},"endpoint":{"host":"ohhhh.yeahhhhh.tsdb.cloud.timescale.com","port":33867}, + "ha_replicas":{"sync_replica_count":0,"replica_count":1}} + ``` + + + +And that is it, you are ready to use the [$REST_LONG][rest-api-reference] to manage your +$SERVICE_SHORTs in $CLOUD_LONG. + +## Security best practices + +Follow these security guidelines when working with the $REST_LONG: + +- **Credential management** + - Store API credentials as environment variables, not in code + - Use credential rotation policies for production environments + - Never commit credentials to version control systems + +- **Network security** + - Use HTTPS endpoints exclusively for API communication + - Implement proper certificate validation in your HTTP clients + +- **Data protection** + - Use secure storage for service connection strings and passwords + - Implement proper backup and recovery procedures for created services + - Follow data residency requirements for your region + + +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[rest-api-credentials]: https://console.cloud.timescale.com/dashboard/settings +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials +[curl]: https://curl.se/ \ No newline at end of file diff --git a/_partials/_prereqs-cloud-account-only.md b/_partials/_prereqs-cloud-account-only.md new file mode 100644 index 0000000000..bebd9d9f60 --- /dev/null +++ b/_partials/_prereqs-cloud-account-only.md @@ -0,0 +1,5 @@ +To follow the steps on this page: + +* Create a target [$ACCOUNT_LONG][create-account]. + +[create-account]: /getting-started/:currentVersion:/services/#create-a-tiger-cloud-account \ No newline at end of file diff --git a/ai/page-index/page-index.js b/ai/page-index/page-index.js index 4b3d2bc0f1..760aa5fa7d 100644 --- a/ai/page-index/page-index.js +++ b/ai/page-index/page-index.js @@ -1,6 +1,6 @@ module.exports = [ { - title: "AI and Vector: pgai on Tiger Cloud", + title: "AI and Vector", href: "ai", filePath: "index.md", pageComponents: ["featured-cards"], diff --git a/api/api-reference.md b/api/api-reference.md new file mode 100644 index 0000000000..4d04776ad1 --- /dev/null +++ b/api/api-reference.md @@ -0,0 +1,849 @@ +--- +title: Tiger Cloud REST API reference +excerpt: A comprehensive RESTful API for managing Tiger Cloud resources including VPCs, services, and read replicas. +tags: [REST] +products: [cloud] +--- + +# $REST_LONG reference + +A comprehensive RESTful API for managing $CLOUD_LONG resources including VPCs, services, and read replicas. + +## Overview + +**API Version:** 1.0.0 +**Base URL:** `https://console.cloud.timescale.com/public/api/v1` + +## Authentication + +The $REST_LONG uses HTTP Basic Authentication. Include your access key and secret key in the Authorization header. + +### Basic Authentication +```http +Authorization: Basic +``` + +### Example +```bash +# Using cURL +curl -X GET "https://console.cloud.timescale.com/public/api/v1/projects/{project_id}/services" \ + -H "Authorization: Basic $(echo -n 'your_access_key:your_secret_key' | base64)" +``` + +## Service Management + +You use this endpoint to create and manage the following Tiger Postgres services: + +- `time-series`: a Tiger Postgres instance optimized for real-time analytics service For time-stamped data like events, + prices, metrics, sensor readings, or any information that changes over time +- `none`: a vanilla Postgres instance +- `ai`: a Tiger Postgres instance with vector extensions + +### List All Services + +```http +GET /projects/{project_id}/services +``` + +Retrieve all services within a project. + +**Response:** `200 OK` +```json +[ + { + "service_id": "p7zm9wqqii", + "project_id": "jz22xtzemv", + "name": "my-production-db", + "region_code": "eu-central-1", + "addons": "time-series", + "status": "READY", + "created": "2024-01-15T10:30:00Z", + "paused": false, + "resources": [ + { + "id": "resource-1", + "spec": { + "cpu_millis": 1000, + "memory_gbs": 4, + "volume_type": "gp2" + } + } + ], + "endpoint": { + "host": "my-service.com", + "port": 5432 + } + } +] +``` + +### Create a Service + +```http +POST /projects/{project_id}/services +``` + +Create a new Tiger Postgres service. This is an asynchronous operation. + +**Request Body:** +```json +{ + "name": "test-2", + "addons": "time-series", + "region_code": "eu-central-1", + "cpu_millis": 1000, + "memory_gbs": 4 +} +``` + +**Response:** `202 Accepted` +```json +{ + "service_id": "p7zm9wqqii", + "project_id": "jz22xtzemv", + "name": "test-2", + "region_code": "eu-central-1", + "addons": "time-series", + "created": "2025-09-04T20:46:46.265680278Z", + "paused": false, + "status": "READY", + "resources": [ + { + "id": "100927", + "spec": { + "cpu_millis": 1000, + "memory_gbs": 4, + "volume_type": "" + } + } + ], + "metadata": { + "environment": "PROD" + }, + "endpoint": { + "host": "p7zm8wqqii.jz4qxtzemv.tsdb.cloud.timescale.com", + "port": 35482 + }, + "initial_password": "oamv8ch9t4ar2j8g" +} +``` + +**Service Types:** +- `TIMESCALEDB`: a Tiger Postgres instance optimized for real-time analytics service For time-stamped data like events, + prices, metrics, sensor readings, or any information that changes over time +- `POSTGRES`: a vanilla Postgres instance +- `VECTOR`: a Tiger Postgres instance with vector extensions + +### Get a Service + +```http +GET /projects/{project_id}/services/{service_id} +``` + +Retrieve details of a specific service. + +**Response:** `200 OK` +```json +{ + "service_id": "p7zm9wqqii", + "project_id": "jz22xtzemv", + "name": "test-2", + "region_code": "eu-central-1", + "addons": "time-series", + "created": "2025-09-04T20:46:46.26568Z", + "paused": false, + "status": "READY", + "resources": [ + { + "id": "100927", + "spec": { + "cpu_millis": 1000, + "memory_gbs": 4, + "volume_type": "" + } + } + ], + "metadata": { + "environment": "DEV" + }, + "endpoint": { + "host": "p7zm8wqqii.jz4qxtzemv.tsdb.cloud.timescale.com", + "port": 35482 + } +} +``` + +**Service Status:** +- `QUEUED`: Service creation is queued +- `DELETING`: Service is being deleted +- `CONFIGURING`: Service is being configured +- `READY`: Service is ready for use +- `DELETED`: Service has been deleted +- `UNSTABLE`: Service is in an unstable state +- `PAUSING`: Service is being paused +- `PAUSED`: Service is paused +- `RESUMING`: Service is being resumed +- `UPGRADING`: Service is being upgraded +- `OPTIMIZING`: Service is being optimized + +### Delete a Service + +```http +DELETE /projects/{project_id}/services/{service_id} +``` + +Delete a specific service. This is an asynchronous operation. + +**Response:** `202 Accepted` + +### Resize a Service + +```http +POST /projects/{project_id}/services/{service_id}/resize +``` + +Change CPU and memory allocation for a service. + +**Request Body:** +```json +{ + "cpu_millis": 2000, + "memory_gbs": 8 +} +``` + +**Response:** `202 Accepted` + +### Update Service Password + +```http +POST /projects/{project_id}/services/{service_id}/updatePassword +``` + +Set a new master password for the service. + +**Request Body:** +```json +{ + "password": "a-very-secure-new-password" +} +``` + +**Response:** `204 No Content` + +### Set Service Environment + +```http +POST /projects/{project_id}/services/{service_id}/setEnvironment +``` + +Set the environment type for the service. + +**Request Body:** +```json +{ + "environment": "PROD" +} +``` + +**Environment Values:** +- `PROD`: Production environment +- `DEV`: Development environment + +**Response:** `200 OK` +```json +{ + "message": "Environment set successfully" +} +``` + +### Configure High Availability + +```http +POST /projects/{project_id}/services/{service_id}/setHA +``` + +Change the HA configuration for a service. This is an asynchronous operation. + +**Request Body:** +```json +{ + "replica_count": 1 +} +``` + +**Response:** `202 Accepted` + +### Connection Pooler Management + +#### Enable Connection Pooler + +```http +POST /projects/{project_id}/services/{service_id}/enablePooler +``` + +Activate the connection pooler for a service. + +**Response:** `200 OK` +```json +{ + "message": "Connection pooler enabled successfully" +} +``` + +#### Disable Connection Pooler + +```http +POST /projects/{project_id}/services/{service_id}/disablePooler +``` + +Deactivate the connection pooler for a service. + +**Response:** `200 OK` +```json +{ + "message": "Connection pooler disabled successfully" +} + +### Fork a Service + +```http +POST /projects/{project_id}/services/{service_id}/forkService +``` + +Create a new, independent service by taking a snapshot of an existing one. + +**Request Body:** +```json +{ + "name": "fork-test2", + "region_code": "eu-central-1", + "cpu_millis": 1000, + "memory_gbs": 4 +} +``` + +**Response:** `202 Accepted` +```json +{ + "service_id": "otewd3pem2", + "project_id": "jz22xtzemv", + "name": "fork-test2", + "region_code": "eu-central-1", + "addons": "time-series", + "created": "2025-09-04T20:54:09.53380732Z", + "paused": false, + "status": "READY", + "resources": [ + { + "id": "100929", + "spec": { + "cpu_millis": 1000, + "memory_gbs": 4, + "volume_type": "" + } + } + ], + "forked_from": { + "project_id": "jz22xtzemv", + "service_id": "p7zm9wqqii", + "is_standby": false + }, + "initial_password": "ph33bl5juuri5gem" +} +``` + +## Read Replica Sets + +Manage read replicas for improved read performance. + +### List Read Replica Sets + +```http +GET /projects/{project_id}/services/{service_id}/replicaSets +``` + +Retrieve all read replica sets associated with a primary service. + +**Response:** `200 OK` +```json +[ + { + "id": "l5alxb3s2g", + "name": "replica-set-test2", + "status": "active", + "nodes": 1, + "cpu_millis": 1000, + "memory_gbs": 4, + "endpoint": { + "host": "l5alxb3s2g.jz4qxtzemv.tsdb.cloud.timescale.com", + "port": 38448 + }, + "connection_pooler": { + "endpoint": { + "host": "l5alxb3s2g.jz4qxtzemv.tsdb.cloud.timescale.com", + "port": 38543 + } + }, + "metadata": { + "environment": "DEV" + } + } +] +``` + +**Replica Set Status:** +- `creating`: Replica set is being created +- `active`: Replica set is active and ready +- `resizing`: Replica set is being resized +- `deleting`: Replica set is being deleted +- `error`: Replica set encountered an error + +### Create a Read Replica Set + +```http +POST /projects/{project_id}/services/{service_id}/replicaSets +``` + +Create a new read replica set. This is an asynchronous operation. + +**Request Body:** +```json +{ + "name": "replica-set-test2", + "cpu_millis": 1000, + "memory_gbs": 4, + "nodes": 1 +} +``` + +**Response:** `202 Accepted` +```json +{ + "id": "dsldm715t2", + "name": "replica-set-test2", + "status": "active", + "nodes": 1, + "cpu_millis": 1000, + "memory_gbs": 4 +} +``` + +### Delete a Read Replica Set + +```http +DELETE /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id} +``` + +Delete a specific read replica set. This is an asynchronous operation. + +**Response:** `202 Accepted` + +### Resize a Read Replica Set + +```http +POST /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/resize +``` + +Change resource allocation for a read replica set. This operation is async. + +**Request Body:** +```json +{ + "cpu_millis": 500, + "memory_gbs": 2, + "nodes": 2 +} +``` + +**Response:** `202 Accepted` +```json +{ + "message": "Replica set resize request accepted" +} +``` + +### Read Replica Set Connection Pooler + +#### Enable Replica Set Pooler + +```http +POST /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/enablePooler +``` + +Activate the connection pooler for a read replica set. + +**Response:** `200 OK` +```json +{ + "message": "Connection pooler enabled successfully" +} +``` + +#### Disable Replica Set Pooler + +```http +POST /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/disablePooler +``` + +Deactivate the connection pooler for a read replica set. + +**Response:** `200 OK` +```json +{ + "message": "Connection pooler disabled successfully" +} +``` + +### Set Replica Set Environment + +```http +POST /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/setEnvironment +``` + +Set the environment type for a read replica set. + +**Request Body:** +```json +{ + "environment": "PROD" +} +``` + +**Response:** `200 OK` +```json +{ + "message": "Environment set successfully" +} +``` + +## VPC Management + +Virtual Private Clouds (VPCs) provide network isolation for your TigerData services. + +### List All VPCs + +```http +GET /projects/{project_id}/vpcs +``` + +List all Virtual Private Clouds in a project. + +**Response:** `200 OK` +```json +[ + { + "id": "1234567890", + "name": "my-production-vpc", + "cidr": "10.0.0.0/16", + "region_code": "eu-central-1" + } +] +``` + +### Create a VPC + +```http +POST /projects/{project_id}/vpcs +``` + +Create a new VPC. + +**Request Body:** +```json +{ + "name": "my-production-vpc", + "cidr": "10.0.0.0/16", + "region_code": "eu-central-1" +} +``` + +**Response:** `201 Created` +```json +{ + "id": "1234567890", + "name": "my-production-vpc", + "cidr": "10.0.0.0/16", + "region_code": "eu-central-1" +} +``` + +### Get a VPC + +```http +GET /projects/{project_id}/vpcs/{vpc_id} +``` + +Retrieve details of a specific VPC. + +**Response:** `200 OK` +```json +{ + "id": "1234567890", + "name": "my-production-vpc", + "cidr": "10.0.0.0/16", + "region_code": "eu-central-1" +} +``` + +### Rename a VPC + +```http +POST /projects/{project_id}/vpcs/{vpc_id}/rename +``` + +Update the name of a specific VPC. + +**Request Body:** +```json +{ + "name": "my-renamed-vpc" +} +``` + +**Response:** `200 OK` +```json +{ + "id": "1234567890", + "name": "my-renamed-vpc", + "cidr": "10.0.0.0/16", + "region_code": "eu-central-1" +} +``` + +### Delete a VPC + +```http +DELETE /projects/{project_id}/vpcs/{vpc_id} +``` + +Delete a specific VPC. + +**Response:** `204 No Content` + +## VPC Peering + +Manage peering connections between VPCs across different accounts and regions. + +### List VPC Peerings + +```http +GET /projects/{project_id}/vpcs/{vpc_id}/peerings +``` + +Retrieve all VPC peering connections for a given VPC. + +**Response:** `200 OK` +```json +[ + { + "id": "1234567890", + "peer_account_id": "acc-12345", + "peer_region_code": "eu-central-1", + "peer_vpc_id": "1234567890", + "provisioned_id": "1234567890", + "status": "active", + "error_message": null + } +] +``` + +### Create VPC Peering + +```http +POST /projects/{project_id}/vpcs/{vpc_id}/peerings +``` + +Create a new VPC peering connection. + +**Request Body:** +```json +{ + "peer_account_id": "acc-12345", + "peer_region_code": "eu-central-1", + "peer_vpc_id": "1234567890" +} +``` + +**Response:** `201 Created` +```json +{ + "id": "1234567890", + "peer_account_id": "acc-12345", + "peer_region_code": "eu-central-1", + "peer_vpc_id": "1234567890", + "provisioned_id": "1234567890", + "status": "pending" +} +``` + +### Get VPC Peering + +```http +GET /projects/{project_id}/vpcs/{vpc_id}/peerings/{peering_id} +``` + +Retrieve details of a specific VPC peering connection. + +### Delete VPC Peering + +```http +DELETE /projects/{project_id}/vpcs/{vpc_id}/peerings/{peering_id} +``` + +Delete a specific VPC peering connection. + +**Response:** `204 No Content` + +## Service VPC Operations + +### Attach Service to VPC + +```http +POST /projects/{project_id}/services/{service_id}/attachToVPC +``` + +Associate a service with a VPC. + +**Request Body:** +```json +{ + "vpc_id": "1234567890" +} +``` + +**Response:** `202 Accepted` + +### Detach Service from VPC + +```http +POST /projects/{project_id}/services/{service_id}/detachFromVPC +``` + +Disassociate a service from its VPC. + +**Request Body:** +```json +{ + "vpc_id": "1234567890" +} +``` + +**Response:** `202 Accepted` + +## Data Models + +### VPC Object +```json +{ + "id": "string", + "name": "string", + "cidr": "string", + "region_code": "string" +} +``` + +### Service Object +```json +{ + "service_id": "string", + "project_id": "string", + "name": "string", + "region_code": "string", + "addons": "time-series|ai|none", + "created": "2024-01-15T10:30:00Z", + "initial_password": "string", + "paused": false, + "status": "READY|CONFIGURING|QUEUED|...", + "resources": [ + { + "id": "string", + "spec": { + "cpu_millis": 1000, + "memory_gbs": 4, + "volume_type": "string" + } + } + ], + "metadata": { + "environment": "PROD|DEV" + }, + "endpoint": { + "host": "string", + "port": 5432 + }, + "connection_pooler": { + "endpoint": { + "host": "string", + "port": 5432 + } + } +} +``` + +### Peering Object +```json +{ + "id": "string", + "peer_account_id": "string", + "peer_region_code": "string", + "peer_vpc_id": "string", + "provisioned_id": "string", + "status": "string", + "error_message": "string" +} +``` + +### Read Replica Set Object + +```json +{ + "id": "string", + "name": "string", + "status": "creating|active|resizing|deleting|error", + "nodes": 2, + "cpu_millis": 1000, + "memory_gbs": 4, + "metadata": { + "environment": "PROD|DEV" + }, + "endpoint": { + "host": "string", + "port": 5432 + }, + "connection_pooler": { + "endpoint": { + "host": "string", + "port": 5432 + } + } +} +``` + +## Error Handling + +Tiger Cloud REST API uses standard HTTP status codes and returns error details in JSON format. + +### Error Response Format +```json +{ + "code": "ERROR_CODE", + "message": "Human-readable error description" +} +``` + +### Common Error Codes +- `400 Bad Request`: Invalid request parameters or malformed JSON +- `401 Unauthorized`: Missing or invalid authentication credentials +- `403 Forbidden`: Insufficient permissions for the requested operation +- `404 Not Found`: Requested resource does not exist +- `409 Conflict`: Request conflicts with current resource state +- `500 Internal Server Error`: Unexpected server error + +### Example Error Response +```json +{ + "code": "INVALID_REQUEST", + "message": "The service_type field is required" +} +``` diff --git a/api/glossary.md b/api/glossary.md index 9c9d2e4052..bba6c0d9b1 100644 --- a/api/glossary.md +++ b/api/glossary.md @@ -163,6 +163,8 @@ This glossary defines technical terms, concepts, and terminology used in $COMPAN **Euclidean distance**: a measure of the straight-line distance between two points in multidimensional space. +**Exactly-once**: a message is delivered and processed precisely once. There is no loss and no duplicates. + **Explain**: a $PG command that shows the execution plan for a query, useful for performance analysis. **Event sourcing**: an architectural pattern storing all changes as a sequence of events, naturally fitting time-series database capabilities. diff --git a/api/page-index/page-index.js b/api/page-index/page-index.js index 5a9152cc77..5b1bb90c25 100644 --- a/api/page-index/page-index.js +++ b/api/page-index/page-index.js @@ -617,6 +617,12 @@ module.exports = [ description: "An overview of what different tags represent in the API section of TigerData Documentation.", }, + { + title: "Tiger Cloud REST API", + href: "api-reference", + description: + "A comprehensive RESTful API for managing Tiger Cloud resources including VPCs, services, and read replicas.", + }, { title: "Glossary", href: "glossary", diff --git a/getting-started/get-started-devops-as-code.md b/getting-started/get-started-devops-as-code.md new file mode 100644 index 0000000000..5e355a7f3a --- /dev/null +++ b/getting-started/get-started-devops-as-code.md @@ -0,0 +1,47 @@ +--- +title: "DevOps as code with Tiger Cloud" +excerpt: "Configure secure authentication and create a new database service using the Tiger Cloud REST API" +keywords: + - authentication + - service creation + - API setup + - security +tags: + - setup + - security + - services + - authentication +--- + + +import RESTGS from "versionContent/_partials/_devops-rest-api-get-started.mdx"; +import CLIGS from "versionContent/_partials/_devops-cli-get-started.mdx"; +import MCPGS from "versionContent/_partials/_devops-mcp-get-started.mdx"; + +# DevOps as code with $CLOUD_LONG + +$COMPANY supplies a clean, programmatic control layer for $CLOUD_LONG. This includes RESTful APIs, CLI commands, and +MCP endpoints that let humans, machines, and AI agents easily provision, configure, and manage $SERVICE_LONG +programmatically. + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/page-index/page-index.js b/getting-started/page-index/page-index.js index 08356efc97..501845fbd7 100644 --- a/getting-started/page-index/page-index.js +++ b/getting-started/page-index/page-index.js @@ -22,6 +22,11 @@ module.exports = [ href: "services", excerpt: "Create a Tiger Cloud service and connect to it", }, + { + title: "DevOps as code with Tiger Cloud", + href: "get-started-devops-as-code", + excerpt: "Set up secure authentication for the TigerData Cloud REST API and create your first service", + }, { title: "Run your queries from Tiger Cloud Console", href: "run-queries-from-console", diff --git a/integrations/find-connection-details.md b/integrations/find-connection-details.md index 7df2ce0722..2f46815a00 100644 --- a/integrations/find-connection-details.md +++ b/integrations/find-connection-details.md @@ -41,7 +41,7 @@ To retrieve the connection details for your $CLOUD_LONG project and $SERVICE_LON -1. **Retreive your project ID**: +1. **Retrieve your project ID**: In [$CONSOLE][console-services], click your project name in the upper left corner, then click `Copy` next to the project ID. ![Retrive the project id in $CONSOLE](https://assets.timescale.com/docs/images/tiger-cloud-console/tiger-cloud-console-project-id.png) @@ -53,6 +53,31 @@ To retrieve the connection details for your $CLOUD_LONG project and $SERVICE_LON +## Create client credentials + +You use client credentials to obtain access tokens outside of the user context. + +To retrieve the connection details for your $CLOUD_LONG project for programmatic usage +such as Terraform or the [$CLOUD_LONG REST API][rest-api-reference]: + + + +1. **Open the settings for your project**: + + In [$CONSOLE][console-services], click your project name in the upper left corner, then click `Project settings`. + +1. **Create client credentials**: + + 1. Click `Create credentials`, then copy `Public key` and `Secret key` locally. + + ![Retrive the service id in $CONSOLE](https://assets.timescale.com/docs/images/tiger-cloud-console/tiger-cloud-console-client-credentials.png) + + This is the only time you see the `Secret key`. After this, only the `Public key` is visible in this page. + + 1. Click `Done`. + + + @@ -73,3 +98,6 @@ In the `Services` page of the $MST_CONSOLE_LONG, click the service you want to c [console-services]: https://console.cloud.timescale.com/dashboard/services [postgres-config]: https://www.postgresql.org/docs/current/runtime-config-file-locations.html +[rest-api-reference]: /api/:currentVersion:/api-reference/ +[get-project-id]: /integrations/:currentVersion:/find-connection-details/#find-your-project-and-service-id +[create-client-credentials]: /integrations/:currentVersion:/find-connection-details/#create-client-credentials \ No newline at end of file