# uip codedapp validate

> Syntax and options for `uip codedapp validate`, which checks whether a coded app path name is free and which app holds it.

`uip codedapp validate` checks whether a coded app path name (`https://<org>.uipath.host/<path-name>`) is free in the organization, and names the app that holds it when it is taken. Run it before [`uip codedapp deploy --path-name`](./uip-codedapp-deploy.md) to avoid a path-name conflict.

The path name is converted the same way `deploy` converts `--path-name` (refer to [Package ID](./uip-codedapp-pack.md#package-id)), so both commands act on the same name. A value that is empty after conversion, or longer than 64 characters, is rejected before any request is sent.

The check is organization-scoped, so the command takes no tenant or folder options.

## Synopsis

```
uip codedapp validate --path-name <name> [options]
```

## Options

| Flag | Description |
|---|---|
| `--path-name <name>` | Required. App path name to check. Must contain at least one letter or digit. |
| `--base-url <url>` | UiPath base URL (auth override). |
| `--org-id <id>` | Organization ID (auth override). |
| `--org-name <name>` | Organization name (auth override). |
| `--access-token <token>` | Access token (auth override). |

## Example

```bash
uip codedapp validate --path-name my-app
```

## Data shape (--output json)

A free path name:

```json
{
  "Code": "CodedAppPathNameChecked",
  "Data": {
    "PathName": "my-app",
    "Available": true,
    "OccupiedBy": null
  }
}
```

A taken path name also describes the app that holds it:

```json
{
  "Code": "CodedAppPathNameChecked",
  "Data": {
    "PathName": "my-app",
    "Available": false,
    "OccupiedBy": {
      "Id": "6f1c2b4a-0000-0000-0000-000000000001",
      "DeploymentTitle": "My App",
      "Title": "My App package title",
      "SystemName": "my-app_abc123",
      "SemVersion": "1.2.0",
      "DeployVersion": 3,
      "DeploymentDescription": "Expense approvals",
      "IsLatestVersion": true,
      "IsAppPublic": false,
      "DateDeployed": "2026-09-18T10:12:04.000Z",
      "DeploymentFolder": {
        "Key": "3f8b1d22-0000-0000-0000-000000000001",
        "DisplayName": "Shared"
      },
      "IsResourceActivated": true,
      "RoutingName": "my-app"
    }
  }
}
```

Both outcomes are a success and exit `0`, so scripts read `Data.Available` rather than the exit code. When a path name is taken but the holding app cannot be determined, `OccupiedBy` is `null` and the CLI prints a warning on stderr.

## Failure modes

| `ErrorCode` | Cause |
|---|---|
| `permission_denied` | The account lacks `Apps` or `Apps.Read` on the organization. For an external application token without an Apps scope, the message names the `Apps.Read` scope to grant and add to `uip login --scope`. |
| `authentication_required` | The session is invalid or expired. Run [`uip login`](./uip-login.md). |
| `server_error` | The service could not answer. The name is neither confirmed free nor confirmed taken; retry later. |

## Related

- [uip codedapp deploy](./uip-codedapp-deploy.md): deploy an app under the path name you checked.

## See also

- [Coded Apps tool overview](./uip-codedapp.md)
- [Global options](./global-options.md)
- [Exit codes](./exit-codes.md)
