# uip maestro bpmn registry

> Browse the Maestro BPMN registry of extension types, Integration Service connectors, and Orchestrator processes using `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.

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,
    "ProcessCountsByType": {
      "Process": 3,
      "ProcessOrchestration": 1,
      "Agent": 1,
      "Flow": 0,
      "Api": 0,
      "Function": 0,
      "CaseManagement": 0,
      "BusinessRules": 0
    },
    "FromCache": false,
    "AgeMinutes": 0,
    "CacheWritten": true,
    "Message": "Synced fresh registry"
  }
}
```

`ProcessCountsByType` breaks `ProcessCount` down by discovered process type.

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"
      }
    ],
    "ProcessesByType": {
      "Process": 3,
      "ProcessOrchestration": 1,
      "Agent": 1,
      "Flow": 0,
      "Api": 0,
      "Function": 0,
      "CaseManagement": 0,
      "BusinessRules": 0
    }
  }
}
```

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" }
    ],
    "ProcessesByType": {
      "Process": 1,
      "ProcessOrchestration": 0,
      "Agent": 0,
      "Flow": 0,
      "Api": 0,
      "Function": 0,
      "CaseManagement": 0,
      "BusinessRules": 0
    }
  }
}
```

## uip maestro bpmn registry get

Get the full spec for a single extension type. For connector types (`Intsvc.ActivityExecution`, `Intsvc.WaitForEvent`, `Intsvc.EventTrigger`, …), pass both `--connection-id` and `--object-name` to enrich the response with live Integration Service field metadata; add `--operation` to select which operation's fields to return.

### 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`. |
| — | `--operation <name>` | name | — | Operation whose request/response fields to return (e.g. `Create`, `INCIDENT_CREATED`). For activity types it defaults to the object's sole operation (and the response lists the available operations when there's more than one). For **event types it's required** — one object can expose several event operations, so it's never inferred. |

### Validation

- `--connection-id` and `--object-name` must be supplied together — passing only one fails with `IS enrichment needs --connection-id and --object-name together (add --operation for event types). Missing: <the missing flag>.`
- `--connection-id`/`--object-name` only apply to `Intsvc.*` types — using them against a non-`Intsvc` extension type fails, naming `Intsvc.ActivityExecution`/`Intsvc.EventTrigger` as valid examples.
- For an event-tagged extension type (`extensionTag: "uipath:event"`), omitting `--operation` fails with `Event enrichment requires --operation`, pointing at `uip is activities list <connector> --triggers` to discover the valid operation names.

### Examples

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

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

# Connector activity type with a specific operation
uip maestro bpmn registry get Intsvc.ActivityExecution \
    --connection-id abc123 --object-name contacts --operation Create

# Event type — --operation is required
uip maestro bpmn registry get Intsvc.EventTrigger \
    --connection-id abc123 --object-name contacts --operation INCIDENT_CREATED

# 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 `--connection-id` and `--object-name` (and, for event types, `--operation`) 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 — including when Integration Service returns no field metadata for the given object/operation — a warning is logged and `ISEnrichment` is omitted; the base spec is still returned.

## Related commands

- [`uip maestro bpmn pack`](./uip-maestro-bpmn-pack.md) — pack a Maestro project; the registry informs what extension types you can use.
- [`uip maestro bpmn process`](./uip-maestro-bpmn-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.
