# uip platform licenses

> Syntax and options for `uip platform licenses`, which reports organization-level consumable allocation and per-tenant consumption.

`uip platform licenses` is the organization-level consumables reporter. It answers three questions: how is each consumable allocated and consumed across tenants today, how much of a given consumable did a tenant burn each day in a window, and which folders within a tenant drove that consumption.

For per-tenant allocation changes, use [`uip platform tenants licenses`](./uip-platform-tenants.md). For per-user bundles, use [`uip platform users licenses`](./uip-platform-users.md).

## Synopsis

```
uip platform licenses consumables <verb> [options]
```

## Verbs

| Verb | Purpose |
|---|---|
| `get` | Get a consumables report. Default `--mode summary` returns per-consumable allocation plus per-tenant pool consumption. `--mode daily` returns the daily breakdown by service, and `--mode folders` returns the per-folder breakdown — both scoped to a single tenant × consumable unit. |

## uip platform licenses consumables get

Get a consumables report. The `--mode` flag selects one of three shapes:

- `summary` (default) — one row per consumable × tenant. Org-level totals (`totalUnitsInAccount`, `allocated`, `consumedFromOrgWithoutTenant`) and bundle dates repeat across rows. Per-tenant columns split consumption between the tenant's own pool (`consumedFromTenantPool`) and the shared org pool (`consumedFromOrgPool`). Consumables with no tenant activity get a single summary row with empty tenant columns.
- `daily` — one row per `(date, service)` for a single tenant × consumable unit over an ISO 8601 date range. Requires `--tenant`, `--unit`, `--start-date`, and `--end-date`.
- `folders` — one row per folder within a single tenant × consumable unit, with that folder's own (non-inherited) consumption and process count. Requires `--tenant`, `--unit`, `--start-date`, and `--end-date`.

Without `--start-date` and `--end-date`, the `summary` report uses each consumable's bundle validity window. Providing them overrides that window for the report only — the underlying allocations are unchanged.

### Options

| Long | Value | Default | Description |
|---|---|---|---|
| `--mode` | enum | `summary` | Report shape: `summary`, `daily`, or `folders`. |
| `--tenant` | tenant-name | — | Scope the report to a single tenant (matched by name from the current organization's tenant list). Required for `--mode daily` and `--mode folders`. |
| `--unit` | code | — | Filter to a single consumable unit by product code (for example, `AIU`, `AGU`, `RU`, `PLTU`). Case-insensitive. Required for `--mode daily` and `--mode folders`. |
| `--start-date` | ISO 8601 date | — | Start of the consumption window. Must be used together with `--end-date`. Required for `--mode daily` and `--mode folders`. |
| `--end-date` | ISO 8601 date | — | End of the consumption window. Must be used together with `--start-date`. Required for `--mode daily` and `--mode folders`. |

`--start-date` must be strictly before `--end-date`, and both flags must be provided together (passing only one is rejected).

### Examples

Default summary report:

```bash
uip platform licenses consumables get
```

Custom date range for the summary:

```bash
uip platform licenses consumables get \
    --start-date 2025-01-01 --end-date 2025-01-31
```

Scope the summary to a single tenant:

```bash
uip platform licenses consumables get --tenant default
```

Daily breakdown by service for one tenant × unit:

```bash
uip platform licenses consumables get \
    --mode daily --tenant default --unit AIU \
    --start-date 2025-01-01 --end-date 2025-01-31
```

Folder breakdown for one tenant × unit:

```bash
uip platform licenses consumables get \
    --mode folders --tenant default --unit AIU \
    --start-date 2025-01-01 --end-date 2025-01-31
```

### Data shape (--output json)

**Summary mode** — `Code: "LicensesConsumablesSummary"`:

```json
{
  "Code": "LicensesConsumablesSummary",
  "Data": [
    {
      "code": "AIU",
      "name": "AI Units",
      "totalUnitsInAccount": 5000,
      "allocated": 1200,
      "consumedFromOrgWithoutTenant": 30,
      "startDate": "2023-11-14T22:13:20.000Z",
      "endDate": "2027-09-15T18:40:00.000Z",
      "tenantId": "296b7134-6691-43db-b48a-2d95ed3ab031",
      "tenantName": "default",
      "consumedFromTenantPool": 800,
      "consumedFromOrgPool": 150
    }
  ]
}
```

**Daily mode** — `Code: "LicensesConsumablesDaily"`:

```json
{
  "Code": "LicensesConsumablesDaily",
  "Data": [
    {
      "code": "AIU",
      "name": "AI Units",
      "tenantId": "296b7134-6691-43db-b48a-2d95ed3ab031",
      "tenantName": "default",
      "date": "2025-01-15",
      "service": "orchestrator",
      "consumedAmount": 24
    }
  ]
}
```

**Folders mode** — `Code: "LicensesConsumablesFolders"`:

```json
{
  "Code": "LicensesConsumablesFolders",
  "Data": [
    {
      "code": "AIU",
      "name": "AI Units",
      "tenantId": "296b7134-6691-43db-b48a-2d95ed3ab031",
      "tenantName": "default",
      "folderKey": "11111111-1111-1111-1111-111111111111",
      "folderName": "Shared",
      "parentFolderKey": null,
      "consumedBySelf": 42,
      "processCountSelf": 3
    }
  ]
}
```

## Exit codes

See [Exit codes](./exit-codes.md). No verb-specific overrides.

## Related commands

- [`uip platform tenants`](./uip-platform-tenants.md) — change the per-tenant allocation that this report measures against.
- [`uip platform users`](./uip-platform-users.md) — per-user bundle allocation.

## See also

- [Global options](./global-options.md).
- [Output formats](./output-formats.md).
