UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip admin external-apps

Syntax and options for `uip admin external-apps`, which manages OAuth2 client registrations and their federated credentials for external application integrations.

uip admin external-apps manages OAuth2 client registrations — external applications and services that authenticate against UiPath using their own client ID/secret (or workload identity federation) rather than a user's own login. Each app is either confidential (server-side, has a secret) or non-confidential (public, e.g. a SPA or mobile app, no secret). A nested federated-credentials group manages workload-identity-federation bindings (e.g. GitHub Actions OIDC) that let an external app authenticate without a static secret at all.

Synopsis

uip admin external-apps list
uip admin external-apps get <client-id>
uip admin external-apps create <name> [--redirect-uri <uri>] [--user-scope <scopes>] [--app-scope <scopes>] [--non-confidential] [--no-secret]
uip admin external-apps update <client-id> [--name <name>] [--redirect-uri <uri>] [--user-scope <scopes>] [--app-scope <scopes>]
uip admin external-apps delete <client-id>
uip admin external-apps generate-secret <client-id> [--description <text>] [--expiration <date>]
uip admin external-apps delete-secret <secret-id>

uip admin external-apps federated-credentials list <client-id>
uip admin external-apps federated-credentials get <client-id> <credential-id>
uip admin external-apps federated-credentials create <client-id> --name <name> --issuer <url> --audience <audience> --subject <subject>
uip admin external-apps federated-credentials update <client-id> <credential-id> --name <name> --issuer <url> --audience <audience> --subject <subject>
uip admin external-apps federated-credentials delete <client-id> <credential-id>
uip admin external-apps list
uip admin external-apps get <client-id>
uip admin external-apps create <name> [--redirect-uri <uri>] [--user-scope <scopes>] [--app-scope <scopes>] [--non-confidential] [--no-secret]
uip admin external-apps update <client-id> [--name <name>] [--redirect-uri <uri>] [--user-scope <scopes>] [--app-scope <scopes>]
uip admin external-apps delete <client-id>
uip admin external-apps generate-secret <client-id> [--description <text>] [--expiration <date>]
uip admin external-apps delete-secret <secret-id>

uip admin external-apps federated-credentials list <client-id>
uip admin external-apps federated-credentials get <client-id> <credential-id>
uip admin external-apps federated-credentials create <client-id> --name <name> --issuer <url> --audience <audience> --subject <subject>
uip admin external-apps federated-credentials update <client-id> <credential-id> --name <name> --issuer <url> --audience <audience> --subject <subject>
uip admin external-apps federated-credentials delete <client-id> <credential-id>

Verbs

GroupVerbPurpose
external-appslistList external apps in the partition.
external-appsgetGet an app's details by client ID.
external-appscreateRegister a new OAuth2 client.
external-appsupdateUpdate an app's name, redirect URI, or scopes.
external-appsdeleteDelete an app by client ID.
external-appsgenerate-secretGenerate a new client secret.
external-appsdelete-secretDelete a specific client secret.
federated-credentialslistList an app's federated credentials.
federated-credentialsgetGet a federated credential by ID.
federated-credentialscreateBind an external identity provider (e.g. GitHub Actions OIDC) to the app.
federated-credentialsupdateUpdate a federated credential.
federated-credentialsdeleteRemove a federated credential.

Concepts

  • Confidential vs. non-confidential. Default is confidential (server-side, gets a client secret). --non-confidential creates a public client with no secret — it only supports --user-scope (delegated) scopes, never --app-scope; passing --app-scope on a non-confidential app fails client-side.
  • Scopes are split by grant type. --user-scope (delegated, requires a signed-in user) and --app-scope (app-only, client-credentials grant) are independent lists — pass either or both. At least one is required on create. See uip admin scopes list for the full catalog of available scope names.
  • --scope is a deprecated alias for --app-scope. If both are given, --app-scope wins; a blank value on either (an empty or whitespace-only string) is rejected rather than silently treated as "no scopes."
  • A redirect URI is required whenever user scopes are involved — either because the app is non-confidential, or because --user-scope was passed — since both need the OAuth2 authorization-code flow. An app that's confidential and app-scope-only doesn't need one.
  • update re-derives scopes from resources when you don't pass any — if you omit both --user-scope and --app-scope, the command re-sends the app's existing scopes unchanged rather than clearing them; the same non-confidential/redirect-URI validation as create still applies to whatever the final scope set and redirect URI end up being.
  • Secrets are shown once. generate-secret's returned value cannot be retrieved again — store it immediately.

uip admin external-apps list

List external apps in the partition. No filtering/pagination options.

Example

uip admin external-apps list
uip admin external-apps list

Data shape (--output json)

{ "Code": "ExternalClientList", "Data": [{ "id": "my-app", "name": "My Application", "isConfidential": true }] }
{ "Code": "ExternalClientList", "Data": [{ "id": "my-app", "name": "My Application", "isConfidential": true }] }

uip admin external-apps get

Get external app details by client ID.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID. Find it with external-apps list.

Example

uip admin external-apps get my-app
uip admin external-apps get my-app

Data shape (--output json)

{ "Code": "ExternalClientDetails", "Data": { "id": "my-app", "name": "My Application", "isConfidential": true, "redirectUri": "https://example.com/callback" } }
{ "Code": "ExternalClientDetails", "Data": { "id": "my-app", "name": "My Application", "isConfidential": true, "redirectUri": "https://example.com/callback" } }

uip admin external-apps create

Create an external app (confidential by default).

Arguments

NameRequiredPurpose
<name>yesApp display name.

Options

LongValueDescription
--redirect-uri <uri>comma-separatedRedirect URI(s) for the OAuth2 flow. Required when non-confidential or when --user-scope is set.
--user-scope <scopes>comma- or space-separatedDelegated (user) scopes.
--app-scope <scopes>comma- or space-separatedApplication (app-only) scopes. Not allowed on a non-confidential app.
--scope <scopes>comma- or space-separatedDeprecated alias for --app-scope.
--non-confidentialflagCreate a public client (no secret).
--no-secretflagSkip generating a client secret on creation (confidential apps only).

At least one of --user-scope/--app-scope is required.

Examples

# Confidential app with application scopes only
uip admin external-apps create "My App" --app-scope "OR.Folders,OR.Assets"
# Confidential app with application scopes only
uip admin external-apps create "My App" --app-scope "OR.Folders,OR.Assets"
# Confidential app with both user and app scopes
uip admin external-apps create "My App" --user-scope "OR.Folders" --app-scope "OR.Jobs" --redirect-uri "https://example.com/callback"
# Confidential app with both user and app scopes
uip admin external-apps create "My App" --user-scope "OR.Folders" --app-scope "OR.Jobs" --redirect-uri "https://example.com/callback"
# Public client (SPA) with user scopes
uip admin external-apps create "My SPA" --non-confidential --user-scope "OR.Folders" --redirect-uri "http://localhost:3000/callback"
# Public client (SPA) with user scopes
uip admin external-apps create "My SPA" --non-confidential --user-scope "OR.Folders" --redirect-uri "http://localhost:3000/callback"

Data shape (--output json)

{ "Code": "ExternalClientCreated", "Data": { "id": "my-app", "name": "My App", "isConfidential": true, "secret": "generated-secret-value" } }
{ "Code": "ExternalClientCreated", "Data": { "id": "my-app", "name": "My App", "isConfidential": true, "secret": "generated-secret-value" } }

secret is present only for a confidential app created without --no-secret.

uip admin external-apps update

Update an app's name, redirect URI, or scopes. At least one of --name/--redirect-uri/--user-scope/--app-scope is required.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.

Options

LongShortValueDescription
--name <name>-nstringNew display name.
--redirect-uri <uri>comma-separatedNew redirect URI(s).
--user-scope <scopes>comma- or space-separatedNew delegated scopes.
--app-scope <scopes>comma- or space-separatedNew application scopes.
--scope <scopes>comma- or space-separatedDeprecated alias for --app-scope.

Example

uip admin external-apps update my-app-id --name "Updated App" --app-scope "OR.Folders"
uip admin external-apps update my-app-id --name "Updated App" --app-scope "OR.Folders"

Data shape (--output json)

{ "Code": "ExternalClientUpdated" }
{ "Code": "ExternalClientUpdated" }

uip admin external-apps delete

Delete an external app by client ID.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.

Example

uip admin external-apps delete my-app-id
uip admin external-apps delete my-app-id

Data shape (--output json)

{ "Code": "ExternalClientDeleted", "Data": { "Id": "my-app-id", "Status": "Deleted successfully" } }
{ "Code": "ExternalClientDeleted", "Data": { "Id": "my-app-id", "Status": "Deleted successfully" } }

uip admin external-apps generate-secret

Generate a new secret for an external app. The secret value is shown only once.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.

Options

LongValueDescription
--description <text>stringDescription for the secret.
--expiration <date>ISO 8601Expiration date.

Example

uip admin external-apps generate-secret my-app
uip admin external-apps generate-secret my-app

Data shape (--output json)

{ "Code": "ExternalClientSecretGenerated", "Data": { "id": 1, "secret": "generated-secret-value" } }
{ "Code": "ExternalClientSecretGenerated", "Data": { "id": 1, "secret": "generated-secret-value" } }

uip admin external-apps delete-secret

Delete a specific secret from an external app — an app can have multiple active secrets; this removes just one.

Arguments

NameRequiredPurpose
<secret-id>yesSecret ID (numeric). Find it via external-apps get.

Example

uip admin external-apps delete-secret 12345
uip admin external-apps delete-secret 12345

Data shape (--output json)

{ "Code": "ExternalClientSecretDeleted", "Data": { "Id": "12345", "Status": "Deleted successfully" } }
{ "Code": "ExternalClientSecretDeleted", "Data": { "Id": "12345", "Status": "Deleted successfully" } }

uip admin external-apps federated-credentials list

List federated credentials for an external app.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.

Example

uip admin external-apps federated-credentials list my-app-id
uip admin external-apps federated-credentials list my-app-id

Data shape (--output json)

{ "Code": "FederatedCredentialList", "Data": [{ "id": "fc000000-0000-0000-0000-000000000001", "name": "GitHub Actions", "issuer": "https://token.actions.githubusercontent.com" }] }
{ "Code": "FederatedCredentialList", "Data": [{ "id": "fc000000-0000-0000-0000-000000000001", "name": "GitHub Actions", "issuer": "https://token.actions.githubusercontent.com" }] }

uip admin external-apps federated-credentials get

Get a federated credential by ID.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.
<credential-id>yesFederated credential ID (UUID).

Example

uip admin external-apps federated-credentials get my-app-id fc000000-0000-0000-0000-000000000001
uip admin external-apps federated-credentials get my-app-id fc000000-0000-0000-0000-000000000001

Data shape (--output json)

{
  "Code": "FederatedCredentialDetails",
  "Data": {
    "id": "fc000000-0000-0000-0000-000000000001",
    "name": "GitHub Actions",
    "issuer": "https://token.actions.githubusercontent.com",
    "audience": "api://AzureADTokenExchange",
    "subject": "repo:org/repo:ref:refs/heads/main"
  }
}
{
  "Code": "FederatedCredentialDetails",
  "Data": {
    "id": "fc000000-0000-0000-0000-000000000001",
    "name": "GitHub Actions",
    "issuer": "https://token.actions.githubusercontent.com",
    "audience": "api://AzureADTokenExchange",
    "subject": "repo:org/repo:ref:refs/heads/main"
  }
}

uip admin external-apps federated-credentials create

Bind an external identity provider to the app — enables workload identity federation (e.g. a GitHub Actions workflow authenticating without a stored secret).

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.

Options

LongShortValueRequiredDescription
--name <name>-nstringyesCredential name.
--issuer <url>urlyesToken issuer URL, e.g. https://token.actions.githubusercontent.com.
--audience <audience>stringyesExpected audience claim, e.g. api://AzureADTokenExchange.
--subject <subject>stringyesExpected subject claim, e.g. repo:org/repo:ref:refs/heads/main.
--description <text>stringnoDescription.

Example

uip admin external-apps federated-credentials create my-app-id \
  --name "GitHub Actions" \
  --issuer "https://token.actions.githubusercontent.com" \
  --audience "api://AzureADTokenExchange" \
  --subject "repo:org/repo:ref:refs/heads/main"
uip admin external-apps federated-credentials create my-app-id \
  --name "GitHub Actions" \
  --issuer "https://token.actions.githubusercontent.com" \
  --audience "api://AzureADTokenExchange" \
  --subject "repo:org/repo:ref:refs/heads/main"

Data shape (--output json)

{ "Code": "FederatedCredentialCreated" }
{ "Code": "FederatedCredentialCreated" }

uip admin external-apps federated-credentials update

Update a federated credential — all four identity fields are required on every call (no partial update).

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.
<credential-id>yesFederated credential ID (UUID).

Options

LongShortValueRequiredDescription
--name <name>-nstringyesCredential name.
--issuer <url>urlyesToken issuer URL.
--audience <audience>stringyesExpected audience claim.
--subject <subject>stringyesExpected subject claim.
--description <text>stringnoDescription.

Example

uip admin external-apps federated-credentials update my-app-id fc000000-0000-0000-0000-000000000001 \
  --name "GitHub Actions (prod)" \
  --issuer "https://token.actions.githubusercontent.com" \
  --audience "api://AzureADTokenExchange" \
  --subject "repo:org/repo:environment:production"
uip admin external-apps federated-credentials update my-app-id fc000000-0000-0000-0000-000000000001 \
  --name "GitHub Actions (prod)" \
  --issuer "https://token.actions.githubusercontent.com" \
  --audience "api://AzureADTokenExchange" \
  --subject "repo:org/repo:environment:production"

Data shape (--output json)

{ "Code": "FederatedCredentialUpdated" }
{ "Code": "FederatedCredentialUpdated" }

uip admin external-apps federated-credentials delete

Delete a federated credential from an external app.

Arguments

NameRequiredPurpose
<client-id>yesExternal app ID.
<credential-id>yesFederated credential ID (UUID).

Example

uip admin external-apps federated-credentials delete my-app-id fc000000-0000-0000-0000-000000000001
uip admin external-apps federated-credentials delete my-app-id fc000000-0000-0000-0000-000000000001

Data shape (--output json)

{ "Code": "FederatedCredentialDeleted", "Data": { "Id": "fc000000-0000-0000-0000-000000000001", "Status": "Deleted successfully" } }
{ "Code": "FederatedCredentialDeleted", "Data": { "Id": "fc000000-0000-0000-0000-000000000001", "Status": "Deleted successfully" } }

See also

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated