# uip maestro bpmn registry

> `uip maestro bpmn registry` browses and searches the **Maestro BPMN registry** — a catalog of the BPMN extension types, Integration Service connectors, and Orchestrator-discovered processes that Maestro can author against. Agents (human or otherwise) use it to discover what extension types exist, look up their shapes, and enrich connector types with live Integration Service metadata before generating BPMN.

`uip maestro bpmn registry` browses and searches the **Maestro BPMN registry** — a catalog of the BPMN extension types, Integration Service connectors, and Orchestrator-discovered processes that Maestro can author against. Agents (human or otherwise) use it to discover what extension types exist, look up their shapes, and enrich connector types with live Integration Service metadata before generating BPMN.

Without login, only built-in (OOTB) extension types are available. Log in to see connectors and processes discovered from Integration Service and Orchestrator.

## Synopsis

```
uip maestro bpmn registry <verb> [options]
```

Typical workflow:

1. `uip login` (optional — OOTB types work offline).
2. `uip maestro bpmn registry pull` — sync the registry into the local cache.
3. `uip maestro bpmn registry search <keyword>` — find an entry.
4. `uip maestro bpmn registry get <extensionType>` — inspect the full spec.

## Verbs

| Verb | Purpose |
|---|---|
| `pull` | Fetch and cache the registry (static BPMN + discovered resources). |
| `list` | List cached extension types and discovered resources. |
| `search` | Find entries by keyword across extension types, connectors, and processes. |
| `get` | Get the full spec for a single extension type; optionally enrich with IS metadata. |

All verbs honor the [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`). Exit codes follow the [standard contract](./exit-codes.md).

## uip maestro bpmn registry pull

Fetch and cache the registry. By default, returns cached results when fresh; pass `--force` to re-sync.

### Options

| Short | Long | Value | Default | Description |
|---|---|---|---|---|
| `-f` | `--force` | flag | off | Ignore the cache and re-fetch. |

### Examples

```bash
uip maestro bpmn registry pull
uip maestro bpmn registry pull --force
```

### Data shape (--output json)

```json
{
  "Code": "RegistryPullSuccess",
  "Data": {
    "ExtensionTypeCount": 48,
    "ConnectorCount": 12,
    "ProcessCount": 5,
    "FromCache": false,
    "AgeMinutes": 0,
    "CacheWritten": true,
    "Message": "Synced fresh registry"
  }
}
```

When the cache is used, `FromCache` is `true`, `AgeMinutes` reports cache age, and `Message` is `Using cached registry (age: <n>m)`.

## uip maestro bpmn registry list

List cached extension types and discovered resources. Default limit is `30`; pass `--limit -1` for all.

### Options

| Short | Long | Value | Default | Description |
|---|---|---|---|---|
| `-l` | `--limit` | number | `30` | Number of extension types to return; `-1` for all. |

### Examples

```bash
uip maestro bpmn registry list
uip maestro bpmn registry list --limit 100
uip maestro bpmn registry list --limit -1
```

### Data shape (--output json)

```json
{
  "Code": "RegistryListSuccess",
  "Data": {
    "ExtensionTypes": [
      {
        "ExtensionType": "Orchestrator.StartJob",
        "Label": "Start Job",
        "BpmnElement": "bpmn:ServiceTask",
        "ExtensionTag": "uipath:startJob",
        "InputPattern": "...",
        "BindingPattern": "...",
        "RequiresDiscovery": "No"
      }
    ],
    "Connectors": [
      {
        "Key": "slack",
        "Name": "Slack",
        "Connections": 2,
        "Activities": 14,
        "Triggers": 3
      }
    ],
    "Processes": [
      {
        "Name": "InvoiceProcessing",
        "ProcessKey": "c3d4e5f6-0000-0000-0000-000000000001",
        "Type": "Maestro",
        "Folder": "Shared"
      }
    ]
  }
}
```

If the result is truncated, a `Showing first <n> of <total> extension types` note is written to the logs.

## uip maestro bpmn registry search

Search the registry by keyword across extension type IDs, labels, connector names, and process names. The keyword is matched case-insensitively.

### Arguments

| Name | Required | Purpose |
|---|---|---|
| `<keyword>` | yes | Search term. |

### Examples

```bash
uip maestro bpmn registry search connector
uip maestro bpmn registry search queue
uip maestro bpmn registry search slack
uip maestro bpmn registry search agent
```

### Data shape (--output json)

```json
{
  "Code": "RegistrySearchSuccess",
  "Data": {
    "ExtensionTypes": [
      {
        "ExtensionType": "Intsvc.ActivityExecution",
        "Label": "Execute Activity",
        "BpmnElement": "bpmn:ServiceTask",
        "ExtensionTag": "uipath:activityExecution",
        "InputPattern": "...",
        "BindingPattern": "...",
        "RequiresDiscovery": "Yes"
      }
    ],
    "Connectors": [
      { "Key": "slack", "Name": "Slack", "Connections": 2, "Activities": 14, "Triggers": 3 }
    ],
    "Processes": [
      { "Name": "SlackNotifier", "ProcessKey": "c3d4e5f6-0000-0000-0000-000000000002", "Type": "Maestro" }
    ]
  }
}
```

## uip maestro bpmn registry get

Get the full spec for a single extension type. For connector types (`Intsvc.ActivityExecution`, `Intsvc.WaitForEvent`, …), pass both `--connection-id` and `--object-name` to enrich the response with live Integration Service field metadata.

### Arguments

| Name | Required | Purpose |
|---|---|---|
| `<extensionType>` | yes | Extension type identifier (for example, `Orchestrator.StartJob`). |

### Options

| Short | Long | Value | Default | Description |
|---|---|---|---|---|
| — | `--connection-id` | ID | — | Connection ID for Integration Service enrichment. Requires `--object-name`. |
| — | `--object-name` | name | — | Object name for Integration Service enrichment. Requires `--connection-id`. |

### Examples

```bash
uip maestro bpmn registry get Orchestrator.StartJob

# Connector extension type enriched with live IS metadata
uip maestro bpmn registry get Intsvc.ActivityExecution \
    --connection-id abc123 --object-name contacts

# Just the field names
uip maestro bpmn registry get Orchestrator.StartJob \
    --output-filter 'Data.ExtensionType'
```

### Data shape (--output json)

Base response:

```json
{
  "Code": "RegistryGetSuccess",
  "Data": {
    "ExtensionType": {
      "extensionType": "Orchestrator.StartJob",
      "label": "Start Job",
      "bpmnElement": "bpmn:ServiceTask",
      "extensionTag": "uipath:startJob"
    }
  }
}
```

When both `--connection-id` and `--object-name` are supplied and the Integration Service call succeeds, the response also includes an `ISEnrichment` field containing the live metadata payload. If the enrichment call fails, a warning is logged and `ISEnrichment` is omitted — the base spec is still returned.

## Related commands

- [`uip maestro pack`](./uip-maestro-pack.md) — pack a Maestro project; the registry informs what extension types you can use.
- [`uip maestro process`](./uip-maestro-process.md) — discover Orchestrator-facing processes that the registry catalogs.
- [`uip login`](./uip-login.md) — log in before `pull` to see connectors and processes.

## See also

- [Global options](./global-options.md) — `--output`, `--output-filter`, `--log-level`, `--log-file`.
- [Exit codes](./exit-codes.md) — standard exit-code contract.
