@uipath/skills 1.204.0-preview.1149 → 1.204.0-preview.1160
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/uipath-agents/references/authentication.md +5 -11
- package/skills/uipath-agents/references/coded/quickstart.md +3 -3
- package/skills/uipath-api-workflow/assets/templates/connector-call-example.json +1 -1
- package/skills/uipath-api-workflow/references/connector-activity-discovery.md +2 -2
- package/skills/uipath-coded-apps/SKILL.md +7 -7
- package/skills/uipath-coded-apps/references/create-action-app.md +3 -4
- package/skills/uipath-coded-apps/references/create-web-app.md +3 -4
- package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +1 -2
- package/skills/uipath-coded-apps/references/debug.md +1 -2
- package/skills/uipath-coded-apps/references/oauth-client-setup.md +1 -2
- package/skills/uipath-coded-apps/references/patterns.md +5 -6
- package/skills/uipath-governance/references/access-policy/access-policy-commands.md +1 -1
- package/skills/uipath-governance/references/aops-policy/aops-policy-commands.md +1 -1
- package/skills/uipath-governance/references/aops-policy/aops-policy-overview-guide.md +1 -1
- package/skills/uipath-governance/references/auth-context.md +4 -4
- package/skills/uipath-governance/references/cli-cheatsheet.md +1 -1
- package/skills/uipath-maestro-flow/examples/ObservatorySeeing.flow.ts +1 -1
- package/skills/uipath-planner/references/sdd-generation-guide.md +1 -1
- package/skills/uipath-platform/SKILL.md +2 -2
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md +2 -2
- package/skills/uipath-rpa/references/is-connector-xaml-guide.md +1 -2
- package/skills/uipath-tasks/SKILL.md +2 -3
- package/skills/uipath-tasks/references/action-center-urls.md +5 -6
- package/skills/uipath-troubleshoot/references/products/coded-apps/playbooks/cors-error-wrong-base-url.md +2 -3
- package/version-manifest.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/skills",
|
|
3
|
-
"version": "1.204.0-preview.
|
|
3
|
+
"version": "1.204.0-preview.1160",
|
|
4
4
|
"description": "UiPath agent skills for Claude Code, Codex, Cursor, Copilot, Gemini and OpenCode — RPA, UI automation, UI testing, coded agents/apps/workflows, and troubleshooting. Distributed as the UiPath Claude Code plugin.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "UiPath"
|
|
@@ -21,11 +21,8 @@ uip login status --output json
|
|
|
21
21
|
# Production cloud (one-shot browser sign-in, org/tenant pre-selected — see Critical Rules for who runs it)
|
|
22
22
|
uip login --organization "<ORG>" --tenant "<TENANT>" --output json
|
|
23
23
|
|
|
24
|
-
#
|
|
25
|
-
uip login --authority "
|
|
26
|
-
|
|
27
|
-
# Alpha
|
|
28
|
-
uip login --authority "https://alpha.uipath.com/identity_" --organization "<ORG>" --tenant "<TENANT>" --output json
|
|
24
|
+
# Non-default host (Automation Suite, dedicated, or other custom authority)
|
|
25
|
+
uip login --authority "<AUTHORITY_URL>" --organization "<ORG>" --tenant "<TENANT>" --output json
|
|
29
26
|
|
|
30
27
|
# Service principal (unattended)
|
|
31
28
|
uip login --client-id "<ID>" --client-secret "<SECRET>" --base-url "<URL>" --output json
|
|
@@ -34,12 +31,12 @@ uip login --client-id "<ID>" --client-secret "<SECRET>" --base-url "<URL>" --out
|
|
|
34
31
|
## Critical Rules
|
|
35
32
|
|
|
36
33
|
- **`uip login status --output json` once per invocation.** Reports `Status`, `Organization`, `Tenant`, `Expiration Date`. When the user has not asked to connect to a specific org/tenant, trust one `Logged in` result — the wrapper auto-refreshes tokens on forwarded cloud calls. No `uip login refresh` subcommand exists. Re-auth only on a real `401`.
|
|
37
|
-
- **If the user supplied environment + organization + tenant, connect with those exact values.** First run/capture `uip login status --output json` if requested or required, then use the matching one-shot command from the Quick Reference (`uip login --organization "<ORG>" --tenant "<TENANT>" --output json`, plus `--authority` for
|
|
34
|
+
- **If the user supplied environment + organization + tenant, connect with those exact values.** First run/capture `uip login status --output json` if requested or required, then use the matching one-shot command from the Quick Reference (`uip login --organization "<ORG>" --tenant "<TENANT>" --output json`, plus `--authority` for any non-default host) — see the next rule for who runs it. Do this even if the status check reports an existing `Logged in` session, because the active session may point at a different org/tenant. Do not ask another auth question when all three values are already present.
|
|
38
35
|
- **Interactive sign-ins belong in the user's own terminal.** Every `uip login` without `--client-secret` is a browser sign-in: it blocks until the person completes it, and run from your shell tool it shows them nothing while your tool's timeout can kill it mid-wait. Prefer asking the user to run the one-shot command themselves (in Claude Code, prefix it with `!` so it runs inside the session); if you do run it, first tell the user a browser window is about to open and the command will wait for them. **Never pass `--no-browser` for a human sign-in** — that flag is for automation that opens the printed URL programmatically; relaying the URL by copy/paste is fragile (a line-wrapped or truncated copy is rejected by the identity server with an opaque browser-side error).
|
|
39
36
|
- **NEVER run `uip login` without `--tenant`.** The interactive tenant picker cannot be driven from Claude's Bash tool.
|
|
40
37
|
- **When auth is needed and the user did not supply all values, ask one question, then stop.** If the status check shows the user is not logged in and any of environment / organization / tenant is missing, your entire response must be exactly this question — no headers, no bullets, no next-steps:
|
|
41
38
|
|
|
42
|
-
> What is your UiPath **environment** (cloud
|
|
39
|
+
> What is your UiPath **environment** (cloud, or your custom host URL), **organization name**, and **tenant name**?
|
|
43
40
|
|
|
44
41
|
Wait for the reply, then follow the interactive-sign-ins rule above: give the user the exact one-shot command from the Quick Reference to run in their own terminal (or, if you run it, first tell them a browser window is about to open), and confirm with `uip login status --output json`.
|
|
45
42
|
|
|
@@ -48,10 +45,7 @@ uip login --client-id "<ID>" --client-secret "<SECRET>" --base-url "<URL>" --out
|
|
|
48
45
|
| User says | Flag to use |
|
|
49
46
|
|-----------|-------------|
|
|
50
47
|
| cloud (default) | no `--authority` flag |
|
|
51
|
-
|
|
|
52
|
-
| alpha | `--authority "https://alpha.uipath.com/identity_"` |
|
|
53
|
-
|
|
54
|
-
For on-premise Automation Suite, use `--authority <identity-url>` pointing at your instance.
|
|
48
|
+
| A custom host URL (Automation Suite, dedicated, other) | `--authority "<AUTHORITY_URL>"` — the URL the user gave, pointing at their instance |
|
|
55
49
|
|
|
56
50
|
## Unattended (Service Principal)
|
|
57
51
|
|
|
@@ -45,10 +45,10 @@ Use `uip codedagent <cmd>`, not `uv run uipath <cmd>`. The wrapper injects sessi
|
|
|
45
45
|
- **Runtime captures only the last node's delta as output.** `Annotated[list, operator.add]` reducers accumulate inside the graph but vanish from `--output-file` JSON and eval trajectories. Carry aggregate fields forward in each node's return (`{"items": [*state.get("items", []), x]}`) — see [frameworks/langgraph-integration.md](frameworks/langgraph-integration.md) § Runtime Output Quirk.
|
|
46
46
|
- **Verify the JSON, not the streamed display.** After `uip codedagent run --output-file out.json`, inspect `out.json` — the streamed view shows per-node deltas; the JSON is the runtime's actual final result. Mismatches expose the runtime quirk above.
|
|
47
47
|
- **Use `uip codedagent deploy` for packaging/publishing.** `uip codedagent pack` and `uip codedagent publish` are filtered by the wrapper.
|
|
48
|
-
- **NEVER run `uip login` without `--tenant`.** The interactive tenant picker does not work from Claude's Bash tool. Use the one-shot form `uip login --organization "<ORG>" --tenant "<TENANT>"`,
|
|
48
|
+
- **NEVER run `uip login` without `--tenant`.** The interactive tenant picker does not work from Claude's Bash tool. Use the one-shot form `uip login --organization "<ORG>" --tenant "<TENANT>"`, adding `--authority` for a non-default host (see [../authentication.md](../authentication.md)).
|
|
49
49
|
- **Auth MUST be an interactive question only when needed and values are missing.** If the session check fails and the user did not provide all of environment / organization / tenant, your ENTIRE response must be a single direct question. Do NOT wrap it in bullet points, "Next Steps" headers, or status summaries. Just ask and stop:
|
|
50
50
|
|
|
51
|
-
> What is your UiPath **environment** (cloud
|
|
51
|
+
> What is your UiPath **environment** (cloud, or your custom host URL), **organization name**, and **tenant name**?
|
|
52
52
|
- **In a flow, coded agents are referenced via the `agent` plugin (uipath-maestro-flow skill)** — node type `uipath.core.agent.{key}`, `Orchestrator.StartAgentJob`. See [flow-integration.md](flow-integration.md) for the three patterns: in-solution sibling folder, Orchestrator-published, tool resource.
|
|
53
53
|
|
|
54
54
|
## Lifecycle Stages
|
|
@@ -110,7 +110,7 @@ Steps 8 and 9 are mandatory stops **for greenfield**: always ask the user, even
|
|
|
110
110
|
4. **Bindings** — Sync `bindings.json` with the code using [lifecycle/bindings-reference.md](lifecycle/bindings-reference.md).
|
|
111
111
|
5. **Auth (one-shot)** — Run `uip login status --output json` once. If the user supplied environment + organization + tenant, have them run the matching one-shot login command from [../authentication.md](../authentication.md) in their own terminal, using both `--organization` and `--tenant` in the same `uip login` command (a browser sign-in — if you run it yourself, first tell the user a browser window is about to open). Do this even when `Status: Logged in`, because the existing session may be for a different tenant. If no credentials were supplied and `Status: Logged in`, trust the wrapper for the rest of the run (it auto-refreshes tokens). Otherwise ask for credentials — output ONLY this question as your entire response:
|
|
112
112
|
|
|
113
|
-
> What is your UiPath **environment** (cloud
|
|
113
|
+
> What is your UiPath **environment** (cloud, or your custom host URL), **organization name**, and **tenant name**?
|
|
114
114
|
|
|
115
115
|
Then STOP and wait. On reply, hand the user the matching one-shot login from [../authentication.md](../authentication.md) to run in their own terminal (maps environment → `--authority`), then confirm with `uip login status --output json`. Never run `uip login` without `--tenant`.
|
|
116
116
|
6. **Run** — Re-run `uip codedagent init` first whenever any of these changed since the last init, **or** when `has_entry_points == false`:
|
|
@@ -139,9 +139,9 @@ Never use Http kind with a vendor UUID, the simple `call: "http"` form, or a ven
|
|
|
139
139
|
|
|
140
140
|
`with.method` is always `POST`; `with.endpoint` is always `/http-request`. Put the actual request in `bodyParameters`: `authentication` (`"manual"` or `"connector"`), actual `method`, `url`, `headers`, `body`, and other inputs. Output is an envelope; use `Data.ExportBucketKey`, then `.content`, `.statusCode`, `.headers`, etc.
|
|
141
141
|
|
|
142
|
-
Example: stub the HTTP Request activity with `--inputs '{"url":"https://
|
|
142
|
+
Example: stub the HTTP Request activity with `--inputs '{"url":"https://api.example.com/facts/random","method":"GET"}'`.
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
Against a live endpoint, `uip api-workflow run --no-auth` on the resulting workflow returns `statusCode: 200` with the parsed response body under `content`. StudioWeb's designer renders the activity as the unified HTTP Request card. See [../assets/templates/connector-call-example.json](../assets/templates/connector-call-example.json) for a complete stub-generated workflow.
|
|
145
145
|
|
|
146
146
|
### IntSvc kind
|
|
147
147
|
|
|
@@ -147,7 +147,7 @@ Authenticate before any cloud command:
|
|
|
147
147
|
```bash
|
|
148
148
|
uip login status --output json # check if logged in
|
|
149
149
|
uip login # interactive OAuth (opens browser)
|
|
150
|
-
uip login --authority
|
|
150
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
151
151
|
|
|
152
152
|
# Client-credentials (headless/CI) — scope MUST name one Orchestrator scope AND
|
|
153
153
|
# the two Apps-service scopes. Neither set covers the other:
|
|
@@ -162,7 +162,7 @@ uip login \
|
|
|
162
162
|
--organization <org> \
|
|
163
163
|
--tenant <tenant> \
|
|
164
164
|
--scope "OR.Default Apps.Read Apps.Write" \
|
|
165
|
-
--authority
|
|
165
|
+
--authority "<AUTHORITY_URL>" # omit --authority for cloud.uipath.com
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
> **Never handle the client secret in the conversation.** Do not ask the user to paste it into chat, do not write it into a command line or file, and do not echo it. If `UIPATH_CLIENT_ID` / `UIPATH_CLIENT_SECRET` are not set, ask the user to export them in their own shell, then run the command above.
|
|
@@ -181,13 +181,13 @@ To change any of these values, edit `uipath.json`.
|
|
|
181
181
|
|----------|---------|-------------|
|
|
182
182
|
| `UIPATH_PROJECT_ID` | `uip codedapp push` / `uip codedapp pull` | Studio Web project ID |
|
|
183
183
|
|
|
184
|
-
**Base URL by environment
|
|
184
|
+
**Base URL by environment** — derive from the portal host the user signed in to (`uip login status --output json` → `Data.BaseUrl`):
|
|
185
185
|
|
|
186
|
-
|
|
|
186
|
+
| Portal host | Correct Base URL |
|
|
187
187
|
|---|---|
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
|
|
|
188
|
+
| `https://cloud.uipath.com` (default) | `https://api.uipath.com` |
|
|
189
|
+
| `https://<PREFIX>.uipath.com` (any other UiPath-hosted portal) | `https://<PREFIX>.api.uipath.com` |
|
|
190
|
+
| Any other host (Automation Suite, custom) | The API URL the user supplies — use it verbatim |
|
|
191
191
|
|
|
192
192
|
## Quick Deploy (Full Pipeline)
|
|
193
193
|
|
|
@@ -157,17 +157,16 @@ If the deduction surfaces **Storage Buckets** and Q3-doc was not already asked f
|
|
|
157
157
|
#### Q4a — Environment (only if SDK needed)
|
|
158
158
|
|
|
159
159
|
Ask:
|
|
160
|
-
> "Which UiPath environment are you targeting? `cloud` (
|
|
160
|
+
> "Which UiPath environment are you targeting? `cloud` (`cloud.uipath.com`), or paste your portal URL if you use a different host."
|
|
161
161
|
|
|
162
162
|
Map the answer to the cloud host:
|
|
163
163
|
|
|
164
164
|
| Environment | Cloud Host |
|
|
165
165
|
|---|---|
|
|
166
166
|
| cloud | `https://cloud.uipath.com` |
|
|
167
|
-
|
|
|
168
|
-
| alpha | `https://alpha.uipath.com` |
|
|
167
|
+
| Custom | The portal URL the user gave, verbatim (origin only, no path) |
|
|
169
168
|
|
|
170
|
-
Store the cloud host as `<cloud-host>`. It tells the External-App creation step (Q4b) which org/environment portal to target — **do not** skip it and default to `https://cloud.uipath.com`, or
|
|
169
|
+
Store the cloud host as `<cloud-host>`. It tells the External-App creation step (Q4b) which org/environment portal to target — **do not** skip it and default to `https://cloud.uipath.com`, or users on a non-default host will create the External App in the wrong environment. It is also passed as the redirect URI in Q4b to satisfy the create form's mandatory field. Note that this is **not** the URI the deployed app authenticates with — see Q4b below for the `.../actions_` form that has to be registered separately.
|
|
171
170
|
|
|
172
171
|
#### Q4b — Client ID (only if SDK needed)
|
|
173
172
|
|
|
@@ -25,9 +25,8 @@ Please answer these questions to continue:
|
|
|
25
25
|
**1. App name** — lowercase kebab-case project folder name (e.g. `my-dashboard`)
|
|
26
26
|
|
|
27
27
|
**2. Environment** — which UiPath environment?
|
|
28
|
-
- `cloud` —
|
|
29
|
-
-
|
|
30
|
-
- `alpha` — Alpha
|
|
28
|
+
- `cloud` — `cloud.uipath.com` *(most common)*
|
|
29
|
+
- Custom — paste your portal or API URL (Automation Suite, dedicated, or other non-default host)
|
|
31
30
|
|
|
32
31
|
**3. Org name** — your UiPath organization slug (from `cloud.uipath.com/<orgName>`)
|
|
33
32
|
|
|
@@ -59,7 +58,7 @@ Once you have the answers (app name, environment, org, tenant, styling), execute
|
|
|
59
58
|
|
|
60
59
|
### 3.1 — Resolve the base URL
|
|
61
60
|
|
|
62
|
-
Map the `<environment>` answer from Step 1 to a base URL using the table in [SKILL.md](../SKILL.md) (
|
|
61
|
+
Map the `<environment>` answer from Step 1 to a base URL using the table in [SKILL.md](../SKILL.md) (`cloud` → `https://api.uipath.com`; a custom portal URL → its API host per that table). If the user gave a custom API URL, use that verbatim. Store as `<base-url>`.
|
|
63
62
|
|
|
64
63
|
### 3.2 — Create the Vite project
|
|
65
64
|
|
|
@@ -27,9 +27,8 @@ Verify `Data.Status === "Logged in"` — if not, stop and tell the user to run `
|
|
|
27
27
|
|
|
28
28
|
| cloudUrl | apiUrl |
|
|
29
29
|
|----------|--------|
|
|
30
|
-
| `https://alpha.uipath.com` | `https://alpha.api.uipath.com` |
|
|
31
|
-
| `https://staging.uipath.com` | `https://staging.api.uipath.com` |
|
|
32
30
|
| `https://cloud.uipath.com` | `https://api.uipath.com` |
|
|
31
|
+
| `https://<PREFIX>.uipath.com` | `https://<PREFIX>.api.uipath.com` |
|
|
33
32
|
|
|
34
33
|
Rule: insert `api.` before `uipath.com`. Exception: `cloud.uipath.com` → `api.uipath.com`.
|
|
35
34
|
|
|
@@ -288,8 +288,7 @@ The `baseUrl` in `uipath.json` **must** use the API subdomain — not the portal
|
|
|
288
288
|
| Environment | Correct | Wrong |
|
|
289
289
|
|---|---|---|
|
|
290
290
|
| cloud | `https://api.uipath.com` | `https://cloud.uipath.com` |
|
|
291
|
-
|
|
|
292
|
-
| alpha | `https://alpha.api.uipath.com` | `https://alpha.uipath.com` |
|
|
291
|
+
| Other UiPath-hosted portal | `https://<PREFIX>.api.uipath.com` | `https://<PREFIX>.uipath.com` |
|
|
293
292
|
|
|
294
293
|
Fix by setting `baseUrl` in `uipath.json` to the correct API-subdomain URL, then restart the dev server so the plugin re-injects the `<meta name="uipath:base-url">` tag.
|
|
295
294
|
|
|
@@ -17,8 +17,7 @@ Needed inputs: app name, redirect URI(s), required OAuth scopes (from [oauth-sco
|
|
|
17
17
|
| Environment | Cloud Host |
|
|
18
18
|
|---|---|
|
|
19
19
|
| cloud | `https://cloud.uipath.com` |
|
|
20
|
-
|
|
|
21
|
-
| alpha | `https://alpha.uipath.com` |
|
|
20
|
+
| Custom | The portal host from `uip login status --output json` → `Data.BaseUrl` |
|
|
22
21
|
|
|
23
22
|
## Scope model — CLI vs portal
|
|
24
23
|
|
|
@@ -885,10 +885,10 @@ https://cloud.uipath.com/embed_/{orgName}/{tenantName}/actions_/current-task/tas
|
|
|
885
885
|
| API URL | Cloud UI URL |
|
|
886
886
|
|---------|-------------|
|
|
887
887
|
| `https://api.uipath.com` | `https://cloud.uipath.com` |
|
|
888
|
-
| `https
|
|
889
|
-
|
|
|
888
|
+
| `https://<PREFIX>.api.uipath.com` | `https://<PREFIX>.uipath.com` |
|
|
889
|
+
| Any other host (Automation Suite, custom) | Same host, unchanged |
|
|
890
890
|
|
|
891
|
-
**NEVER use naive string replacement** like `baseUrl.replace('api.', 'cloud.')` — this breaks for
|
|
891
|
+
**NEVER use naive string replacement** like `baseUrl.replace('api.', 'cloud.')` — this breaks for prefixed hosts (produces `<PREFIX>.cloud.uipath.com`, which is wrong).
|
|
892
892
|
|
|
893
893
|
Add this helper to `src/utils/formatters.ts`:
|
|
894
894
|
|
|
@@ -898,8 +898,7 @@ export function apiToCloudUrl(apiBaseUrl: string): string {
|
|
|
898
898
|
try {
|
|
899
899
|
const url = new URL(apiBaseUrl);
|
|
900
900
|
// "api.uipath.com" → "cloud.uipath.com"
|
|
901
|
-
// "
|
|
902
|
-
// "alpha.api.uipath.com" → "alpha.uipath.com"
|
|
901
|
+
// "<prefix>.api.uipath.com" → "<prefix>.uipath.com"
|
|
903
902
|
let cloudHost = url.hostname.replace('api.uipath.com', 'uipath.com');
|
|
904
903
|
if (cloudHost === 'uipath.com') cloudHost = 'cloud.uipath.com';
|
|
905
904
|
return `${url.protocol}//${cloudHost}`;
|
|
@@ -967,7 +966,7 @@ if (pendingTask) {
|
|
|
967
966
|
}
|
|
968
967
|
```
|
|
969
968
|
|
|
970
|
-
**Do NOT construct the URL manually** — always use the `apiToCloudUrl` + `buildTaskUrl` helpers to ensure correct environment mapping across cloud
|
|
969
|
+
**Do NOT construct the URL manually** — always use the `apiToCloudUrl` + `buildTaskUrl` helpers to ensure correct environment mapping across cloud and other UiPath-hosted environments.
|
|
971
970
|
|
|
972
971
|
### iframe component
|
|
973
972
|
|
|
@@ -36,7 +36,7 @@ If not logged in:
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
uip login # interactive OAuth
|
|
39
|
-
uip login --authority
|
|
39
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
For `evaluate`, login must target a specific tenant (not just an organization).
|
|
@@ -407,7 +407,7 @@ Interactive OAuth — default for all commands.
|
|
|
407
407
|
|
|
408
408
|
```bash
|
|
409
409
|
uip login # production (opens browser)
|
|
410
|
-
uip login --authority
|
|
410
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
411
411
|
uip login status --output json # verify logged-in state
|
|
412
412
|
```
|
|
413
413
|
|
|
@@ -94,7 +94,7 @@ uip login status --output json
|
|
|
94
94
|
If not logged in:
|
|
95
95
|
```bash
|
|
96
96
|
uip login # interactive OAuth (opens browser)
|
|
97
|
-
uip login --authority
|
|
97
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
### Step 2 — Create a session directory and bootstrap every product's schema
|
|
@@ -42,7 +42,7 @@ Before any capability runs, verify:
|
|
|
42
42
|
1. `uip login status --output json` returns `Data.Status == "Logged in"`.
|
|
43
43
|
2. `~/.uipath/.auth` exists and `UIPATH_TENANT_ID` is non-empty.
|
|
44
44
|
|
|
45
|
-
If either fails, halt and ask the user to run `uip login` (or `uip login --authority
|
|
45
|
+
If either fails, halt and ask the user to run `uip login` (or `uip login --authority "<AUTHORITY_URL>"` for a non-default host).
|
|
46
46
|
|
|
47
47
|
## Tenant-intent validation (Apply / Advise / Diagnose)
|
|
48
48
|
|
|
@@ -64,7 +64,7 @@ On mismatch, halt with:
|
|
|
64
64
|
|
|
65
65
|
If you need a different org or authority:
|
|
66
66
|
uip login # interactive (cloud.uipath.com)
|
|
67
|
-
uip login --authority
|
|
67
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host
|
|
68
68
|
|
|
69
69
|
Or, if this IS the tenant you meant, reply 'yes, continue on <currentTenantName>'.
|
|
70
70
|
```
|
|
@@ -90,12 +90,12 @@ uip login status --output json
|
|
|
90
90
|
# → Data.Tenant should now show the new tenant
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
When the user needs a different **org** or **authority** (e.g.
|
|
93
|
+
When the user needs a different **org** or **authority** (e.g. an Automation Suite host vs cloud.uipath.com):
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
96
|
# Full re-login — browser OAuth flow
|
|
97
97
|
uip login # cloud.uipath.com (default)
|
|
98
|
-
uip login --authority
|
|
98
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
**Show this to the user** when the mismatch block fires — the tenant set path is much faster than a full re-login when they're already in the right org.
|
|
@@ -15,7 +15,7 @@ Every command accepts `--output json`. Parse the structured response:
|
|
|
15
15
|
```bash
|
|
16
16
|
uip login status --output json # Data.Status == "Logged in"
|
|
17
17
|
uip login # interactive OAuth
|
|
18
|
-
uip login --authority
|
|
18
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
See [auth-context.md](auth-context.md) for reading `~/.uipath/.auth` (the canonical source for `UIPATH_TENANT_ID`, `UIPATH_TENANT_NAME`, `UIPATH_ORGANIZATION_ID`, `UIPATH_ACCESS_TOKEN`).
|
|
@@ -27,7 +27,7 @@ export default flow('observatory-seeing')
|
|
|
27
27
|
|
|
28
28
|
// Somebody else's uptime, so the call has to ROUTE on failure.
|
|
29
29
|
.step('fetchSun', http({
|
|
30
|
-
url: tmpl`https://api.
|
|
30
|
+
url: tmpl`https://api.example.com/sun?lat=${input('lat')}&lng=${input('lng')}`,
|
|
31
31
|
managed: true,
|
|
32
32
|
// Declare what we read, or the read is refused.
|
|
33
33
|
returns: { results: 'object' },
|
|
@@ -18,7 +18,7 @@ uip login status --output json
|
|
|
18
18
|
|
|
19
19
|
| `Data.BaseUrl` host | Resolves to | Question 2 |
|
|
20
20
|
|---|---|---|
|
|
21
|
-
| `cloud.uipath.com`
|
|
21
|
+
| `cloud.uipath.com` | **Automation Cloud** — full catalog, entitlement-gated per tenant | skip (confidently resolved) |
|
|
22
22
|
| any other `*.uipath.com` host | **Automation Cloud variant** (Public Sector / Dedicated / Test Cloud / region-specific) — catalog is variant-, region-, and entitlement-gated | skip the platform question, but verify each gated product (Maestro, Agents, Coded Apps, API Workflows, Solutions) against the tenant's actual entitlements; unverifiable → `[SME REVIEW]` per product |
|
|
23
23
|
| any other (customer / on-prem) host | **self-hosted — Automation Suite OR standalone Orchestrator (ambiguous)** | **do not skip** — ask the custom-host follow-up below |
|
|
24
24
|
| `Status` ≠ `Logged in`, call errors, or no `BaseUrl` | unknown | ask Question 2 in full; tell the user that running `uip login` first lets the next run auto-detect |
|
|
@@ -162,9 +162,9 @@ For a named interactive login:
|
|
|
162
162
|
uip login --profile dev --output json
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
For a custom authority (
|
|
165
|
+
For a custom authority (Automation Suite, dedicated, or other non-default host):
|
|
166
166
|
```bash
|
|
167
|
-
uip login --authority "
|
|
167
|
+
uip login --authority "<AUTHORITY_URL>" --it --output json
|
|
168
168
|
```
|
|
169
169
|
|
|
170
170
|
For non-interactive (CI/CD) scenarios, use client credentials read from environment variables with the CLI's `env.<NAME>` syntax. Never ask the user to paste the secret into chat or put it on the command line:
|
package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md
CHANGED
|
@@ -506,7 +506,7 @@ Used by `ResponseOptions.FileOverwrite`.
|
|
|
506
506
|
[Workflow]
|
|
507
507
|
public void Execute()
|
|
508
508
|
{
|
|
509
|
-
var response = http.GetAsync("https://
|
|
509
|
+
var response = http.GetAsync("https://api.example.com/items").GetAwaiter().GetResult();
|
|
510
510
|
Log($"Status: {response.StatusCode}");
|
|
511
511
|
}
|
|
512
512
|
```
|
|
@@ -517,7 +517,7 @@ public void Execute()
|
|
|
517
517
|
[Workflow]
|
|
518
518
|
public void Execute()
|
|
519
519
|
{
|
|
520
|
-
var options = HttpRequestOptions.ForPost("https://
|
|
520
|
+
var options = HttpRequestOptions.ForPost("https://api.example.com/items")
|
|
521
521
|
.WithJsonBody("{\"name\":\"uipath\"}")
|
|
522
522
|
.WithHeader("X-Trace-Id", Guid.NewGuid().ToString())
|
|
523
523
|
.WithBearerToken("token-value")
|
|
@@ -70,8 +70,7 @@ Same principle throughout: **pass the selector the activity needs, get back its
|
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
uip login # production (cloud.uipath.com)
|
|
73
|
-
uip login --authority
|
|
74
|
-
uip login --authority https://staging.uipath.com/identity_ # staging
|
|
73
|
+
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
|
|
75
74
|
```
|
|
76
75
|
|
|
77
76
|
The command is **interactive** (opens a browser). If you need the user to run it themselves, ask them to type `! uip login` so the token lands in the current session.
|
|
@@ -24,9 +24,8 @@ All operations go through `uip tasks <verb> --output json`.
|
|
|
24
24
|
When switching is required:
|
|
25
25
|
1. Check current login: `uip login status --output json` — verify `UIPATH_URL`, `Organization`, and `Tenant`
|
|
26
26
|
2. Re-login with `--authority` only if environment differs:
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Production: `uip login --tenant <tenant>` (default, no `--authority` needed)
|
|
27
|
+
- Non-default host (Automation Suite, dedicated, other): `uip login --authority "<AUTHORITY_URL>" --tenant <tenant>`
|
|
28
|
+
- `cloud.uipath.com`: `uip login --tenant <tenant>` (default, no `--authority` needed)
|
|
30
29
|
3. If already on the right environment but wrong tenant: `uip login tenant set <tenant-name>`
|
|
31
30
|
|
|
32
31
|
```bash
|
|
@@ -43,7 +43,7 @@ Every URL above MUST include:
|
|
|
43
43
|
|
|
44
44
|
| Segment | Source | Notes |
|
|
45
45
|
|------------|-------------------------------------------------------|-------|
|
|
46
|
-
| `{host}` | UI host (NOT the API host — see "Environment mapping" below) | `cloud.uipath.com`,
|
|
46
|
+
| `{host}` | UI host (NOT the API host — see "Environment mapping" below) | `cloud.uipath.com`, or the session's UI host |
|
|
47
47
|
| `{org}` | Organization name or ID | URL-encode if it contains spaces/unicode. |
|
|
48
48
|
| `{tenant}` | Tenant **name** (e.g. `DefaultTenant`) | **Mandatory.** Never substitute a path keyword like `actions` here. |
|
|
49
49
|
| `{taskKey}` or `{taskId}` | From `uip tasks get` / `uip tasks list` JSON | Use `Key` (string GUID) for inbox; numeric `Id` for standalone. |
|
|
@@ -51,7 +51,7 @@ Every URL above MUST include:
|
|
|
51
51
|
## Anti-pattern: missing tenant slug
|
|
52
52
|
|
|
53
53
|
```text
|
|
54
|
-
❌ https://
|
|
54
|
+
❌ https://cloud.uipath.com/popoc/orchestrator_/actions/inbox/<taskKey>
|
|
55
55
|
^^^^^^^
|
|
56
56
|
tenant slug missing
|
|
57
57
|
```
|
|
@@ -77,14 +77,13 @@ these URLs.
|
|
|
77
77
|
| API host | UI host |
|
|
78
78
|
|----------------------------|----------------------------|
|
|
79
79
|
| `api.uipath.com` | `cloud.uipath.com` |
|
|
80
|
-
| `staging.api.uipath.com` | `staging.uipath.com` |
|
|
81
|
-
| `alpha.api.uipath.com` | `alpha.uipath.com` |
|
|
82
80
|
| `gov.api.uipath.com` | `gov.uipath.com` |
|
|
81
|
+
| `<PREFIX>.api.uipath.com` | `<PREFIX>.uipath.com` |
|
|
83
82
|
|
|
84
|
-
If `uip login status` reports a base URL of `https
|
|
83
|
+
If `uip login status` reports a base URL of `https://<PREFIX>.api.uipath.com`,
|
|
85
84
|
strip the `api.` prefix before building an Action Center URL.
|
|
86
85
|
|
|
87
|
-
> **Note:** the table covers the
|
|
86
|
+
> **Note:** the table covers the common public patterns. Regional
|
|
88
87
|
> (e.g. EU-specific) and private/dedicated cloud hosts may use different
|
|
89
88
|
> prefixes. When in doubt, take the host from `uip login status --output
|
|
90
89
|
> json` and apply the same `api.X → X` transformation; if the base URL
|
|
@@ -20,7 +20,7 @@ What can cause it:
|
|
|
20
20
|
- `baseUrl` in `uipath.json` (injected as the `uipath:base-url` meta tag) points at the **portal domain** (`cloud.uipath.com`) instead of the **API subdomain** (`api.uipath.com`). The portal domain does not return `Access-Control-Allow-Origin` for browser XHR/fetch, so every SDK call is blocked.
|
|
21
21
|
|
|
22
22
|
What to look for:
|
|
23
|
-
- The host in the blocked request URL — if it is `cloud.uipath.com` (
|
|
23
|
+
- The host in the blocked request URL — if it is a portal host such as `cloud.uipath.com` (no `api.` label), the base URL is wrong
|
|
24
24
|
- The `baseUrl` value in `uipath.json`
|
|
25
25
|
|
|
26
26
|
## Investigation
|
|
@@ -40,7 +40,6 @@ What to look for:
|
|
|
40
40
|
| Environment | Correct (`baseUrl`) | Wrong |
|
|
41
41
|
|-------------|---------------------|-------|
|
|
42
42
|
| cloud | `https://api.uipath.com` | `https://cloud.uipath.com` |
|
|
43
|
-
|
|
|
44
|
-
| alpha | `https://alpha.api.uipath.com` | `https://alpha.uipath.com` |
|
|
43
|
+
| Other UiPath-hosted portal | `https://<PREFIX>.api.uipath.com` | `https://<PREFIX>.uipath.com` |
|
|
45
44
|
|
|
46
45
|
After restarting, re-test. The API subdomain returns the CORS headers the browser requires.
|
package/version-manifest.json
CHANGED