{"id":15221805,"url":"https://github.com/googlecloudplatform/application-integration-management-toolkit","last_synced_at":"2026-03-03T03:16:25.407Z","repository":{"id":132658436,"uuid":"608435334","full_name":"GoogleCloudPlatform/application-integration-management-toolkit","owner":"GoogleCloudPlatform","description":"This tool lets  you interact with Application Integration, Integration Connectors or Apigee Integration/Connector APIs. The tool lets you manage (create, del, get, list) integrations, connections etc.","archived":false,"fork":false,"pushed_at":"2024-12-15T04:32:12.000Z","size":1330,"stargazers_count":23,"open_issues_count":5,"forks_count":16,"subscribers_count":18,"default_branch":"main","last_synced_at":"2024-12-18T08:39:33.455Z","etag":null,"topics":["application-integration","gcp","google-cloud-platform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GoogleCloudPlatform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-02T02:17:51.000Z","updated_at":"2024-12-12T16:49:52.000Z","dependencies_parsed_at":"2023-05-14T10:00:15.186Z","dependency_job_id":"eb75f9e0-4fc1-4c67-9599-560477d23ba1","html_url":"https://github.com/GoogleCloudPlatform/application-integration-management-toolkit","commit_stats":null,"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fapplication-integration-management-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fapplication-integration-management-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fapplication-integration-management-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fapplication-integration-management-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoogleCloudPlatform","download_url":"https://codeload.github.com/GoogleCloudPlatform/application-integration-management-toolkit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237243005,"owners_count":19278060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-integration","gcp","google-cloud-platform"],"created_at":"2024-09-28T15:07:43.979Z","updated_at":"2025-10-20T00:33:01.682Z","avatar_url":"https://github.com/GoogleCloudPlatform.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# integrationcli\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/GoogleCloudPlatform/application-integration-management-toolkit)](https://goreportcard.com/report/github.com/GoogleCloudPlatform/application-integration-management-toolkit)\n[![GitHub release](https://img.shields.io/github/v/release/GoogleCloudPlatform/application-integration-management-toolkit)](https://github.com/GoogleCloudPlatform/application-integration-management-toolkit/releases)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nThis is a tool to interact with [Application Integration APIs](https://cloud.google.com/application-integration/docs/reference/rest) and [Connector APIs](https://cloud.google.com/integration-connectors/docs/reference/rest). The tool lets you manage (Create,Get, List, Update, Delete, Export and Import) Integration entities like integrations, authConfigs etc.\n\n## Installation\n\n`integrationcli` is a binary and you can download the appropriate one for your platform from [here](https://github.com/GoogleCloudPlatform/application-integration-management-toolkit/releases)\n\nNOTE: Supported platforms are:\n\n* Darwin\n* Windows\n* Linux\n\nRun this script to download \u0026 install the latest version (on Linux or Darwin)\n\n```sh\ncurl -L https://raw.githubusercontent.com/GoogleCloudPlatform/application-integration-management-toolkit/main/downloadLatest.sh | sh -\n```\n\n## YouTube Overview\n\n[![YouTube Video](https://img.youtube.com/vi/4gcj-iOvLvI/0.jpg)](https://www.youtube.com/watch?v=4gcj-iOvLvI)\n\n## Getting Started\n\n### User Tokens\n\nThe simplest way to get started with integrationcli is\n\n```sh\ntoken=$(gcloud auth print-access-token)\nproject=$(gcloud config get-value project | head -n 1)\nregion=\u003cset region here\u003e\n\nintegrationcli integrations list -p $project -r $region -t $token\n```\n\n### Metadata Tokens\n\nIf you are using `integrationcli` on Cloud Shell, GCE instances, Cloud Build, then you can use the metadata to get the access token\n\n```sh\nintegrationcli integrations list -p $project -r $region --metadata-token\n```\n\n### Google Default Application Credentials\n\nYou can configure gcloud to setup/create default application credentials. These credentials can be used by `integrationcli`.\n\n```sh\ngcloud auth application-default login\nintegrationcli integrations list -p $project -r $region --default-token\n```\n\nor through impersonation\n\n```sh\ngcloud auth application-default login --impersonate-service-account \u003cSA\u003e\nintegrationcli integrations list -p $project -r $region --default-token\n```\n\n### Set Preferences\n\nIf you are using the same GCP project for Integration, then consider setting up preferences so they don't have to be included in every command\n\n```sh\nproject=$(gcloud config get-value project | head -n 1)\nregion=\u003cset region here\u003e\n\nintegrationcli prefs set --reg=$region --proj=$project\n```\n\nSubsequent commands can be like this:\n\n```sh\ntoken=$(gcloud auth print-access-token)\nintegrationcli integrations list -t $token\n```\n\n### Access Token Generation\n\n`integrationcli` can use the service account directly and obtain an access token.\n\n```bash\nintegrationcli token gen -a serviceaccount.json\n```\n\nParameters\nThe following parameters are supported. See Common Reference for a list of additional parameters.\n\n* `--account -a` (required) Service Account in json format\n\nUse this access token for all subsequent calls (token expires in 1 hour)\n\n### Access Token Caching\n\n`integrationcli` caches the OAuth Access token for subsequent calls (until the token expires). The access token is stored in `$HOME/.integrationcli`. This path must be readable/writeable by the `integrationcli` process.\n\n```bash\nintegrationcli token cache -a serviceaccount.json\n```\n\nor\n\n```bash\ntoken=$(gcloud auth print-access-token)\nintegrationcli token cache -t $token\n```\n\nor\n\n```bash\nintegrationcli token cache --metadata-token\n```\n\n## Available Commands\n\nHere is a [list](./docs/integrationcli.md) of available commands\n\n## Enviroment Variables\n\nThe following environment variables may be set to control the behavior of `integrationcli`. The default values are all `false`\n\n* `INTEGRATIONCLI_DEBUG=true` enables debug log\n* `INTEGRATIONCLI_SKIPCACHE=true` will not cache the access token on the disk\n* `INTEGRATIONCLI_DISABLE_RATELIMIT=true` disables rate limiting when making calls to Integration or Connectors APIs\n* `INTEGRATIONCLI_NO_USAGE=true` does not print usage when the command fails\n* `INTEGRATIONCLI_NO_ERRORS=true` does not print error messages from the CLI (control plane error messages are displayed)\n* `INTEGRATIONCLI_DRYRUN=true` does not execute control plane APIs\n\n\n## CI/CD\n\nPlease see the following community post to learn more about the best practice around CI/CD. These posts covers developing, testing and promoting integrations across different environments:\n- [Part 1](https://www.googlecloudcommunity.com/gc/Integration-Services/Part-1-CI-CD-for-Application-Integration/m-p/871711#M1975)\n- [Part 2](https://www.googlecloudcommunity.com/gc/Integration-Services/Part-2-CI-CD-for-Application-Integration/m-p/871713#M1976)\n\n## Creating Integration Connectors\n\n`integrationcli` can be used to create [Integration Connectors](https://cloud.google.com/integration-connectors/docs). There are two types of Integration Connectors:\n\n### Connectors for Google Managed Applications\n\nGoogle managed applications include systems like BigQuery, PubSub, Cloud SQL etc. It is best to generate configuration like below by running the command:\n\n```sh\n\nintegrationcli connectors get -n name -p project -r region --minimal=true --overrides=true -t $token\n```\n\nThe file produced will be like this:\n\n```json\n{\n    \"description\": \"This is a sample\",\n    \"connectorDetails\": {\n        \"provider\": \"gcp\", ## the name of the provider\n        \"name\": \"pubsub\", ## type of the connector\n        \"version\": 1 ## version is always 1\n    },\n    \"configVariables\": [ ## these values are specific to each connector type. this example is for pubsub\n        {\n            \"key\": \"project_id\",\n            \"stringValue\": \"$PROJECT_ID$\" ## if the project id is the same as the connection, use the variable. Otherwise set the project id explicitly\n        },\n        {\n            \"key\": \"topic_id\",\n            \"stringValue\": \"mytopic\"\n        }\n    ]\n}\n```\n\nNOTE: For `ConfigVariables` that take a `region` as a parameter (ex: CloudSQL), you can also use `$REGION$`\n\nThen execute via `integrationcli` like this:\n\n```sh\nintegrationcli connectors create -n name-of-the-connector -f ./test/pub_sub_connection.json\n```\n\nYou can optionally pass the service account to be used from the command line:\n\n```sh\nintegrationcli connectors create -n name-of-the-connector -f ./test/pub_sub_connection.json -sa \u003csa-name\u003e -sp \u003csa-project-id\u003e\n```\n\n**NOTES:**\n\n* This command assumes the token is cached, otherwise pass the token via `-t`\n* If the service account project is not passed and the service account name is passed, then the connection's project id is used\n* If the service account doesn't exist, it will be created\n* For Google connectors `integrationcli` adds the IAM permissions for the service account to the resource (if the -g flag is passed)\n\n### Connectors for Third Party Applications\n\nThird party application include connectors like Salesforce, Service Now, etc. It is best to generate configuration like below by running the command:\n\n```sh\n\nintegrationcli connectors get -n name -p project -r region --minimal=true --overrides=true -t $token\n```\n\nThe file produced will be like this:\n\n```json\n{\n    \"description\": \"SFTP Test for demo\",\n    \"connectorDetails\": {\n        \"provider\": \"...\", ## provider name\n        \"name\": \"...\", ## type of the connector\n        \"version\": 1 ## version is always 1\n    },\n    \"configVariables\": [ ## these values are specific to each connector type. this example is for sftp\n        {\n            \"key\": \"remote_host\",\n            \"stringValue\": \"example.net\"\n        },\n        {\n            \"key\": \"remote_port\",\n            \"stringValue\": \"22\"\n        }\n    ],\n    \"authConfig\": {\n        \"authType\": \"USER_PASSWORD\",\n        \"userPassword\": {\n            \"username\": \"demo\",\n            \"passwordDetails\": {\n                \"secretName\": \"sftp-demo\", ## this secret is provisioned if it doesn't already exist\n                \"reference\": \"./test/password.txt\" ## this file contains the data/contents (encrypted or clear) to put in secret manager\n            }\n        }\n    }\n}\n```\n\nIf the connector depends on secret manager, `integrationcli` can create the Secret Manager secret if it is not already provisioned.\n\nThen execute via `integrationcli` like this:\n\n```sh\nintegrationcli connectors create -n name-of-the-connector -f ./test/sftp_connection.json\n```\n\nNOTE: This command assumes the token is cached, otherwise pass the token via `-t`\n\n### Encrypting the Password\n\nWhen setting the `passwordDetails`, the contents of the password can be encrypted using Cloud KMS\n\n```json\n\"passwordDetails\": {\n    \"secretName\": \"sftp-demo\",\n    \"reference\": \"./test/password.txt\" ## the file containing the password - clear text or encrypted\n}\n```\n\nThe file for the password can be in clear text or encrypted text. If encrypted, then a cloud kms key can be passed for decryption. Before storing the file, the file can be encrypted like this:\n\n```sh\ngcloud kms encrypt --plaintext-file=./test/password.txt --keyring $key-ring --project $project --location us-west1 --ciphertext-file=enc_passsword.txt --key=$key\nbase64 ./test/enc_password.txt \u003e ./test/b64_enc_password.txt # on MacOS, use base64 -i ./test/enc_password.txt \u003e ./test/b64_enc_password.txt\n```\n\n### Examples of Creating Connectors\n\n* [Big Query](./test/bq_connection.json)\n* [Service Now](./test/servicenow_connection.json)\n* [Salesforce](./test/salesforce_connections.json)\n* [Salesfoce with JWT](./test/salesforce_jwt_connection.json)\n* [Oracle](./test/oracle_connection.json)\n* [GCS](./test/gcs_connection.json)\n* [CloudSQL - MySQL](./test/cloudsql_mysql_connection.json)\n\n## Samples\n\nPlease see [here](./samples/README.md)\n\n## How do I verify the binary?\n\nAll artifacts are signed by [cosign](https://github.com/sigstore/cosign). We recommend verifying any artifact before using them.\n\nYou can use the following public key to verify any `integrationcli` binary with:\n\n```sh\ncat cosign.pub\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQBXcARDlva9s89a5299yn/VboBdd\n9bDj+j7FVYyzKAufqC9kaCR3naZ3JIAFYjxrXF0GlRjKzJU4ubriT4P6zQ==\n-----END PUBLIC KEY-----\n\ncosign verify-blob --key=cosign.pub --signature integrationcli_\u003cplatform\u003e_\u003carch\u003e.zip.sig integrationcli_\u003cplatform\u003e_\u003carch\u003e.zip\n```\n\nWhere `platform` can be one of `Darwin`, `Linux` or `Windows` and arch (architecture) can be one of `arm64` or `x86_64`\n\n## How do I verify the integrationcli containers?\n\nAll images are signed by [cosign](https://github.com/sigstore/cosign). We recommend verifying any container before using them.\n\n```sh\ncat cosign.pub\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQBXcARDlva9s89a5299yn/VboBdd\n9bDj+j7FVYyzKAufqC9kaCR3naZ3JIAFYjxrXF0GlRjKzJU4ubriT4P6zQ==\n-----END PUBLIC KEY-----\n\ncosign verify --key=cosign.pub us-docker.pkg.dev/appintegration-toolkit/images/integrationcli:latest\n```\n\n___\n\n## Support\n\nThis is not an officially supported Google product\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fapplication-integration-management-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglecloudplatform%2Fapplication-integration-management-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fapplication-integration-management-toolkit/lists"}