From f4ef6dee6571bedb6bd8febc3e4b0899362ecfee Mon Sep 17 00:00:00 2001 From: Pratheep-Srikones Date: Mon, 11 May 2026 10:18:35 +0530 Subject: [PATCH 1/4] docs: add documentation for asgardeo CLI tool --- en/asgardeo/docs/asgardeo-cli.md | 173 ++++++++++++++++++ .../img/quick-starts/cli-tool/credentials.png | Bin 0 -> 89288 bytes en/asgardeo/mkdocs.yml | 2 + en/base.yml | 4 + 4 files changed, 179 insertions(+) create mode 100644 en/asgardeo/docs/asgardeo-cli.md create mode 100644 en/asgardeo/docs/assets/img/quick-starts/cli-tool/credentials.png diff --git a/en/asgardeo/docs/asgardeo-cli.md b/en/asgardeo/docs/asgardeo-cli.md new file mode 100644 index 0000000000..c8f493ce1c --- /dev/null +++ b/en/asgardeo/docs/asgardeo-cli.md @@ -0,0 +1,173 @@ +--- +template: templates/quick-start.html +--- + + +# Asgardeo CLI
Preview
+ +The **Asgardeo CLI** helps you manage identity and access management tasks using terminal commands. It connects your terminal or AI tool to Asgardeo's Management APIs, automating common identity management operations such as creating applications, updating API resources, and managing users, groups, and roles without using the Asgardeo Console UI or writing API calls. + +The Asgardeo CLI acts as a bridge between your terminal and Asgardeo, handling authentication and API requests. This guide explains how to set up the CLI, connect it to your Asgardeo organization, and verify your setup. + +!!! Note + + The Asgardeo CLI is currently in **Preview**. Some features may be subject to changes in future releases. + +## Configure Asgardeo + +The Asgardeo CLI communicates with the Asgardeo Management APIs to perform the actions required by each command. To make this work, it must first get an access token with the appropriate scopes. This requires configuring access to your Asgardeo organization by creating a Machine-to-Machine (M2M) application and authorizing API Resources and Scopes to access the necessary APIs. + +1. Sign into [Asgardeo console](https://console.asgardeo.io) and navigate to **Applications > New Application**. Then, select **M2M Application** and complete the wizard popup by providing a suitable name. + + !!! Example + **name:** asgardeo-cli + + Note down the following values from the **Protocol** tab of the registered application. You will need them to authenticate the CLI. + + - **`client-id`** from the **Protocol** tab. + - **`client-secret`** from the **Protocol** tab. + - **The name of your Asgardeo organization** + + ![Asgardeo M2M app]({{base_path}}/assets/img/quick-starts/cli-tool/credentials.png){: width="800" style="display: block; margin: 0;"} + + !!! Note + It is recommended to set the `Token type` of the Access Token of this application to `Opaque`, and `Application access token expiry time` of the application to a preferred value. These configurations can be done in the **Protocol** tab. + +2. Authorize the API resources and corresponding scopes required for the actions performed by the CLI. The following table includes the required API resources and scopes for the currently supported CLI commands. + +| **Asgardeo Management API** | **Required scopes** | +|--------|---------| +| **SCIM2 Agents API** (`/scim2/Agents`) | `internal_agent_mgt_list`, `internal_agent_mgt_create`, `internal_agent_mgt_view`, `internal_agent_mgt_update`, `internal_agent_mgt_delete`| +| **Application Management API** (`/api/server/v1/applications`) | `internal_application_mgt_view`, `internal_application_mgt_update`, `internal_application_mgt_create`, `internal_application_mgt_delete` | +| **API Resource Management API** (`/api/server/v1/api-resources`) | `internal_api_resource_create`, `internal_api_resource_view`, `internal_api_resource_delete`, `internal_api_resource_update` | +| **Branding Preference Management API** (`/api/server/v1/branding-preference`) |`internal_branding_preference_update`| +| **Identity Provider Management API** (`/api/server/v1/identity-providers`) | `internal_idp_view`, `internal_idp_create`, `internal_idp_update`, `internal_idp_delete` | +| **Organization Management API** (`/api/server/v1/organizations`) |`internal_organization_create`, `internal_organization_view`, `internal_organization_update`, `internal_organization_delete`| +| **SCIM2 Users API** (`/scim2/Users`) | `internal_user_mgt_create`, `internal_user_mgt_list`, `internal_user_mgt_view`, `internal_user_mgt_update`, `internal_user_mgt_delete` | +| **SCIM2 Groups API** (`/scim2/Groups`) | `internal_group_mgt_create`, `internal_group_mgt_view`, `internal_group_mgt_update`, `internal_group_mgt_delete` | +| **SCIM2 Roles V3 API** (`/scim2/v3/Roles`) | `internal_role_mgt_view`, `internal_role_mgt_meta_create`, `internal_role_mgt_meta_update`, `internal_role_mgt_delete`, `internal_role_mgt_users_update`, `internal_role_mgt_groups_update` | + +!!! Note + + You can selectively authorize API Resources and scopes based on the specific commands you plan to use. + If you plan to use the `asg api` command, ensure you have authorized the corresponding API resource and scopes. + +## Installation + +### Building the Asgardeo CLI locally + +1. Clone the repository + +```bash + git clone https://github.com/wso2-enterprise/asgardeo-cli.git +``` + +2. Build and install the CLI + +```bash + cd asgardeo-cli/cmd/asg + go install . +``` + +!!! Note + Ensure your Go binary directory is included in your `PATH`. + + Example: + ```bash + export PATH=$PATH:$(go env GOPATH)/bin + ``` + +3. Verify the installation + +```bash + asg --help +``` + +If the command displays the help message, the installation was successful. + +## Authenticating the CLI + +Before using the CLI, you must authenticate it. + +### Authenticating via an application +The credentials of the application created [earlier](#configure-asgardeo) will be used in this step. + +1. Run the login command + +```bash +asg login +``` + +2. Select `Login using an application` + +3. Provide the credentials (`client-id`, `client-secret`, `organization-name`) when prompted. + +!!! Note + Authentication can be done in one step by providing the credentials as flags. + ```bash + asg login --client-id --client-secret --org-name + ``` + +!!! Warning + Do not expose your `client-secret` in shared terminals, shell history, or source control repositories. + +4. Verify authentication status + +```bash + asg status +``` + +!!! Note + Use the `asg logout` commnd to clear the authentication data of the CLI. + +The current authentication status will be displayed in the terminal. + +## Command Line Interface + +Once the CLI is authenticated, commands can be executed. +Commands follow the ` --` pattern. + +For example: + ```bash + asg apps list + asg apis create + asg users delete --id + ``` + +!!! Note + Adding the `--help` flag displays the detailed help message for any command. + ```bash + asg apps delete --help + asg groups members add --help + ``` + +## Text User Interface + +The Asgardeo CLI provides a Text User Interface (TUI) for interactive navigation and command execution without manually typing commands. +```bash + asg tui +``` + +## Next steps + +After setting up the CLI, you can start managing: + +- Applications +- Users +- Groups +- Roles +- API resources + +Use the `--help` flag with any command to explore available operations. diff --git a/en/asgardeo/docs/assets/img/quick-starts/cli-tool/credentials.png b/en/asgardeo/docs/assets/img/quick-starts/cli-tool/credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..4a453a4fe215dab62f051169ea5c63e456edb61f GIT binary patch literal 89288 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

6_MrgD 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 Mr>mdKI;Vst04fX)0{{R3 literal 0 HcmV?d00001 diff --git a/en/asgardeo/mkdocs.yml b/en/asgardeo/mkdocs.yml index f82c8677e2..1a0214db44 100644 --- a/en/asgardeo/mkdocs.yml +++ b/en/asgardeo/mkdocs.yml @@ -811,6 +811,8 @@ nav: - Accessing Protected APIs: sdks/nextjs/guides/accessing-protected-apis.md - Protecting Routes: sdks/nextjs/guides/protecting-routes.md - Asgardeo MCP Server: sdks/asgardeo-mcp-server.md + # uncomment after relasing the CLI. + # - Asgardeo CLI: asgardeo-cli.md - APIs: - APIs - Overview: apis/index.md - Management APIs: diff --git a/en/base.yml b/en/base.yml index db993801f4..4a80564966 100644 --- a/en/base.yml +++ b/en/base.yml @@ -198,6 +198,10 @@ extra: Asgardeo MCP Server: icon: assets/libs/custom-icons/mcp.svg level: 1 + # Uncomment after releasing the CLI. + # Asgardeo CLI: + # icon: octicons/terminal-16 + # level: 1 React SDK: icon: fontawesome/brands/react level: 2 From ac25488e325a8d9d9f1ad143b589be74cb5f3bd2 Mon Sep 17 00:00:00 2001 From: Pratheep-Srikones Date: Mon, 11 May 2026 11:12:25 +0530 Subject: [PATCH 2/4] chore: fix lint issues and improve documentation --- en/asgardeo/docs/references/asgardeo-cli.md | 18 ++++ en/asgardeo/mkdocs.yml | 4 +- .../references}/asgardeo-cli.md | 83 +++++++++---------- 3 files changed, 57 insertions(+), 48 deletions(-) create mode 100644 en/asgardeo/docs/references/asgardeo-cli.md rename en/{asgardeo/docs => includes/references}/asgardeo-cli.md (80%) diff --git a/en/asgardeo/docs/references/asgardeo-cli.md b/en/asgardeo/docs/references/asgardeo-cli.md new file mode 100644 index 0000000000..7a05b4c0ed --- /dev/null +++ b/en/asgardeo/docs/references/asgardeo-cli.md @@ -0,0 +1,18 @@ +--- +template: templates/quick-start.html +--- + + +{% include "../../../includes/references/asgardeo-cli.md" %} diff --git a/en/asgardeo/mkdocs.yml b/en/asgardeo/mkdocs.yml index 1a0214db44..fef669c8bd 100644 --- a/en/asgardeo/mkdocs.yml +++ b/en/asgardeo/mkdocs.yml @@ -811,8 +811,8 @@ nav: - Accessing Protected APIs: sdks/nextjs/guides/accessing-protected-apis.md - Protecting Routes: sdks/nextjs/guides/protecting-routes.md - Asgardeo MCP Server: sdks/asgardeo-mcp-server.md - # uncomment after relasing the CLI. - # - Asgardeo CLI: asgardeo-cli.md + # uncomment after releasing the CLI. + # - Asgardeo CLI: references/asgardeo-cli.md - APIs: - APIs - Overview: apis/index.md - Management APIs: diff --git a/en/asgardeo/docs/asgardeo-cli.md b/en/includes/references/asgardeo-cli.md similarity index 80% rename from en/asgardeo/docs/asgardeo-cli.md rename to en/includes/references/asgardeo-cli.md index c8f493ce1c..e2b197958a 100644 --- a/en/asgardeo/docs/asgardeo-cli.md +++ b/en/includes/references/asgardeo-cli.md @@ -1,20 +1,3 @@ ---- -template: templates/quick-start.html ---- - - # Asgardeo CLI

Preview
The **Asgardeo CLI** helps you manage identity and access management tasks using terminal commands. It connects your terminal or AI tool to Asgardeo's Management APIs, automating common identity management operations such as creating applications, updating API resources, and managing users, groups, and roles without using the Asgardeo Console UI or writing API calls. @@ -29,7 +12,7 @@ The Asgardeo CLI acts as a bridge between your terminal and Asgardeo, handling a The Asgardeo CLI communicates with the Asgardeo Management APIs to perform the actions required by each command. To make this work, it must first get an access token with the appropriate scopes. This requires configuring access to your Asgardeo organization by creating a Machine-to-Machine (M2M) application and authorizing API Resources and Scopes to access the necessary APIs. -1. Sign into [Asgardeo console](https://console.asgardeo.io) and navigate to **Applications > New Application**. Then, select **M2M Application** and complete the wizard popup by providing a suitable name. +1. Sign into the [Asgardeo console](https://console.asgardeo.io) and navigate to **Applications > New Application**. Then, select **M2M Application** and complete the wizard popup by providing a suitable name. !!! Example **name:** asgardeo-cli @@ -49,12 +32,12 @@ The Asgardeo CLI communicates with the Asgardeo Management APIs to perform the a | **Asgardeo Management API** | **Required scopes** | |--------|---------| -| **SCIM2 Agents API** (`/scim2/Agents`) | `internal_agent_mgt_list`, `internal_agent_mgt_create`, `internal_agent_mgt_view`, `internal_agent_mgt_update`, `internal_agent_mgt_delete`| +| **SCIM2 Agents API** (`/scim2/Agents`) | `internal_agent_mgt_list`, `internal_agent_mgt_create`, `internal_agent_mgt_view`, `internal_agent_mgt_update`, `internal_agent_mgt_delete` | | **Application Management API** (`/api/server/v1/applications`) | `internal_application_mgt_view`, `internal_application_mgt_update`, `internal_application_mgt_create`, `internal_application_mgt_delete` | | **API Resource Management API** (`/api/server/v1/api-resources`) | `internal_api_resource_create`, `internal_api_resource_view`, `internal_api_resource_delete`, `internal_api_resource_update` | -| **Branding Preference Management API** (`/api/server/v1/branding-preference`) |`internal_branding_preference_update`| +| **Branding Preference Management API** (`/api/server/v1/branding-preference`) |`internal_branding_preference_update` | | **Identity Provider Management API** (`/api/server/v1/identity-providers`) | `internal_idp_view`, `internal_idp_create`, `internal_idp_update`, `internal_idp_delete` | -| **Organization Management API** (`/api/server/v1/organizations`) |`internal_organization_create`, `internal_organization_view`, `internal_organization_update`, `internal_organization_delete`| +| **Organization Management API** (`/api/server/v1/organizations`) |`internal_organization_create`, `internal_organization_view`, `internal_organization_update`, `internal_organization_delete` | | **SCIM2 Users API** (`/scim2/Users`) | `internal_user_mgt_create`, `internal_user_mgt_list`, `internal_user_mgt_view`, `internal_user_mgt_update`, `internal_user_mgt_delete` | | **SCIM2 Groups API** (`/scim2/Groups`) | `internal_group_mgt_create`, `internal_group_mgt_view`, `internal_group_mgt_update`, `internal_group_mgt_delete` | | **SCIM2 Roles V3 API** (`/scim2/v3/Roles`) | `internal_role_mgt_view`, `internal_role_mgt_meta_create`, `internal_role_mgt_meta_update`, `internal_role_mgt_delete`, `internal_role_mgt_users_update`, `internal_role_mgt_groups_update` | @@ -66,34 +49,37 @@ The Asgardeo CLI communicates with the Asgardeo Management APIs to perform the a ## Installation +Currently, the CLI can be built from the source code. + ### Building the Asgardeo CLI locally 1. Clone the repository -```bash - git clone https://github.com/wso2-enterprise/asgardeo-cli.git -``` + ```bash + git clone https://github.com/wso2-enterprise/asgardeo-cli.git + ``` -2. Build and install the CLI +2. Build and install the CLI -```bash - cd asgardeo-cli/cmd/asg - go install . -``` + ```bash + cd asgardeo-cli/cmd/asg + go install . + ``` !!! Note Ensure your Go binary directory is included in your `PATH`. Example: + ```bash export PATH=$PATH:$(go env GOPATH)/bin ``` 3. Verify the installation -```bash - asg --help -``` + ```bash + asg --help + ``` If the command displays the help message, the installation was successful. @@ -102,37 +88,39 @@ If the command displays the help message, the installation was successful. Before using the CLI, you must authenticate it. ### Authenticating via an application + The credentials of the application created [earlier](#configure-asgardeo) will be used in this step. 1. Run the login command -```bash -asg login -``` + ```bash + asg login + ``` 2. Select `Login using an application` 3. Provide the credentials (`client-id`, `client-secret`, `organization-name`) when prompted. -!!! Note - Authentication can be done in one step by providing the credentials as flags. + !!! Note + Authentication can be done in one step by providing the credentials as flags. + ```bash asg login --client-id --client-secret --org-name ``` -!!! Warning - Do not expose your `client-secret` in shared terminals, shell history, or source control repositories. + !!! Warning + Do not expose your `client-secret` in shared terminals, shell history, or source control repositories. 4. Verify authentication status -```bash - asg status -``` + ```bash + asg status + ``` -!!! Note - Use the `asg logout` commnd to clear the authentication data of the CLI. + !!! Note + Use the `asg logout` command to clear the authentication data of the CLI. -The current authentication status will be displayed in the terminal. + The current authentication status will be displayed in the terminal. ## Command Line Interface @@ -140,6 +128,7 @@ Once the CLI is authenticated, commands can be executed. Commands follow the ` --` pattern. For example: + ```bash asg apps list asg apis create @@ -148,6 +137,7 @@ For example: !!! Note Adding the `--help` flag displays the detailed help message for any command. + ```bash asg apps delete --help asg groups members add --help @@ -156,9 +146,10 @@ For example: ## Text User Interface The Asgardeo CLI provides a Text User Interface (TUI) for interactive navigation and command execution without manually typing commands. + ```bash asg tui -``` +``` ## Next steps From 027168561feb96c24f91cd158a73c26c766b2800 Mon Sep 17 00:00:00 2001 From: Pratheep-Srikones Date: Mon, 11 May 2026 11:40:50 +0530 Subject: [PATCH 3/4] chore: fix lint issues and improve documentation --- en/includes/references/asgardeo-cli.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/en/includes/references/asgardeo-cli.md b/en/includes/references/asgardeo-cli.md index e2b197958a..62e53b7ad6 100644 --- a/en/includes/references/asgardeo-cli.md +++ b/en/includes/references/asgardeo-cli.md @@ -26,7 +26,7 @@ The Asgardeo CLI communicates with the Asgardeo Management APIs to perform the a ![Asgardeo M2M app]({{base_path}}/assets/img/quick-starts/cli-tool/credentials.png){: width="800" style="display: block; margin: 0;"} !!! Note - It is recommended to set the `Token type` of the Access Token of this application to `Opaque`, and `Application access token expiry time` of the application to a preferred value. These configurations can be done in the **Protocol** tab. + We recommend to set the `Token type` of the Access Token of this application to `Opaque`, and `Application access token expiry time` of the application to a preferred value. These configurations can be done in the **Protocol** tab. 2. Authorize the API resources and corresponding scopes required for the actions performed by the CLI. The following table includes the required API resources and scopes for the currently supported CLI commands. @@ -122,7 +122,7 @@ The credentials of the application created [earlier](#configure-asgardeo) will b The current authentication status will be displayed in the terminal. -## Command Line Interface +## Command line interface Once the CLI is authenticated, commands can be executed. Commands follow the ` --` pattern. @@ -143,7 +143,7 @@ For example: asg groups members add --help ``` -## Text User Interface +## Text user interface The Asgardeo CLI provides a Text User Interface (TUI) for interactive navigation and command execution without manually typing commands. From c53677633f2965f2843e77a229b3db9906c6fe60 Mon Sep 17 00:00:00 2001 From: Pratheep-Srikones Date: Mon, 11 May 2026 11:51:28 +0530 Subject: [PATCH 4/4] chore: fix sentence length limit --- en/includes/references/asgardeo-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/includes/references/asgardeo-cli.md b/en/includes/references/asgardeo-cli.md index 62e53b7ad6..845b4eb29f 100644 --- a/en/includes/references/asgardeo-cli.md +++ b/en/includes/references/asgardeo-cli.md @@ -1,6 +1,6 @@ # Asgardeo CLI
Preview
-The **Asgardeo CLI** helps you manage identity and access management tasks using terminal commands. It connects your terminal or AI tool to Asgardeo's Management APIs, automating common identity management operations such as creating applications, updating API resources, and managing users, groups, and roles without using the Asgardeo Console UI or writing API calls. +The **Asgardeo CLI** helps you manage identity and access management tasks using terminal commands. It connects your terminal to Asgardeo's Management APIs. This automates identity management operations such as creating applications, updating API resources, and managing users, groups, and roles. You can do this without using the Asgardeo Console UI or writing API calls. The Asgardeo CLI acts as a bridge between your terminal and Asgardeo, handling authentication and API requests. This guide explains how to set up the CLI, connect it to your Asgardeo organization, and verify your setup.