# uip solution packages

> `uip solution packages` inspects the **published solution packages** in your tenant feed — the `.zip` artifacts produced by [`uip solution pack`](./uip-solution-pack.md) and uploaded by [`uip solution publish`](./uip-solution-publish.md). Two subcommands are available:

`uip solution packages` inspects the **published solution packages** in your tenant feed — the `.zip` artifacts produced by [`uip solution pack`](./uip-solution-pack.md) and uploaded by [`uip solution publish`](./uip-solution-publish.md). Two subcommands are available:

| Subcommand | Purpose |
|---|---|
| [`list`](#uip-solution-packages-list) | List published packages (name, version, publish date). |
| [`delete`](#uip-solution-packages-delete) | Delete a specific version of a published package. |

Both subcommands are authenticated. Run [`uip login`](./authentication.md) first, or pass `--tenant` to target a specific tenant.

## Synopsis

```
uip solution packages list [--tenant <tenant-name>] [--take <n>] [--order-by <column>] [--order-direction <Ascending|Descending>]
uip solution packages delete <packageName> <packageVersion> [--tenant <tenant-name>]
```

Each subcommand honours the [global options](./global-options.md) and returns the [standard exit codes](./exit-codes.md).

---

## uip solution packages list

List solution packages published to the tenant feed. Output contains the fields you need to pass to [`uip solution deploy run`](./uip-solution-deploy.md#uip-solution-deploy-run): `packageName` and `packageVersion`.

### Options

- `-t, --tenant <tenant-name>` — Tenant to query. Defaults to the tenant selected during authentication.
- `--take <count>` — Number of packages to return. Defaults to `10`.
- `--order-by <column>` — Column to sort by. Defaults to `publishDate`.
- `--order-direction <direction>` — `Ascending` or `Descending`. Defaults to `Descending`.
- `--login-validity <minutes>` — Minimum minutes before token expiration to trigger a refresh. Defaults to `10`.

### Examples

#### Minimal

```bash
uip solution packages list
```

#### Common — the 20 most-recent publishes

```bash
uip solution packages list --take 20
```

#### Scripting — pick the latest version of a known package

```bash
uip solution packages list --output-filter "Data[?packageName=='my-package'] | [0].packageVersion" --output plain
```

### Data shape (--output json)

```json
{
  "Code": "SolutionPackagesList",
  "Data": [
    {
      "packageName": "MyPackage",
      "packageVersion": "1.0.0",
      "publishDate": "2026-04-15T10:30:00Z"
    }
  ]
}
```

---

## uip solution packages delete

Delete a specific version of a published package from the tenant feed. This is a permanent operation — there is no soft-delete.

### Arguments

- `<packageName>` *(required)* — The package name, as returned by [`packages list`](#uip-solution-packages-list).
- `<packageVersion>` *(required)* — The exact version to delete (for example `1.0.0`).

### Options

- `-t, --tenant <tenant-name>` — Tenant to target. Defaults to the tenant selected during authentication.
- `--login-validity <minutes>` — Minimum minutes before token expiration to trigger a refresh. Defaults to `10`.

### Examples

#### Minimal

```bash
uip solution packages delete my-package 1.0.0
```

#### Scripting — delete all versions older than a given major

```bash
uip solution packages list --take 100 \
  --output-filter "Data[?packageName=='my-package' && starts_with(packageVersion, '0.')]" \
  --output json \
  | jq -r '.[] | .packageVersion' \
  | xargs -I{} uip solution packages delete my-package {}
```

### Data shape (--output json)

```json
{
  "Code": "SolutionPackagesDelete",
  "Data": {
    "PackageName": "my-package",
    "PackageVersion": "1.0.0"
  }
}
```

### Failure modes

- **Package or version not found.** Surfaces as a standard failure with instructions to verify the name and version against `packages list`.
- **Insufficient permissions.** The authenticated user must have permission to delete packages in the target tenant.

---

## Related commands

- [`uip solution pack`](./uip-solution-pack.md) — produces the `.zip` files that end up in the feed.
- [`uip solution publish`](./uip-solution-publish.md) — uploads a packed `.zip` to the feed (see for handling of version conflicts).
- [`uip solution deploy run`](./uip-solution-deploy.md#uip-solution-deploy-run) — deploy a published package to Orchestrator.

## See also

- [Authentication](./authentication.md).
- [`uip solution` overview](./uip-solution.md).
