# uip aops projects

> Syntax and options for `uip aops project` and `uip aops solution`, which inspect automation projects and Studio solutions discovered through a SourceControl connection.

`uip aops project` inspects a single automation project's files, content, and commit history. `uip aops solution` does the same for a Studio solution. Both are read-only against the underlying Git repository — discover identifiers first with [`connection projects`/`connection solutions`](./uip-aops-connections.md). See the [`uip aops` overview](./uip-aops.md) for shared concepts.

## Synopsis

```text
uip aops project list [--connections <csv>] [--target-framework <name>] [--project-type <type>] [--offset <n>] [--limit <n>] [--search <term>]
uip aops project get --project-id <id> [--reference <ref>] [--with-branches]
uip aops project files --project-id <id> [--path <path>] [--reference <ref>]
uip aops project content --project-id <id> --path <path> [--reference <ref>]
uip aops project commits --project-id <id> [--path <path>] [--branch <name>] [--offset <n>] [--limit <n>] [--search <term>]
uip aops project commit --project-id <id> --reference <sha>

uip aops solution get <solution-id>
uip aops solution commits <solution-id> [--path <path>] [--branch <name>] [--offset <n>] [--limit <n>] [--search <term>]
```

## uip aops project list

List projects across **every** visible SourceControl connection (a cross-connection aggregator — most other `project` verbs target one project by `--project-id`).

### Options

| Long | Value | Description |
|---|---|---|
| `--connections <csv>` | comma-separated | Connection identifiers to fan out to. Defaults to every visible connection. |
| `--target-framework <name>` | string | Server-side filter on project target framework. |
| `--project-type <type>` | string | Server-side filter on project type, e.g. `Process`, `Library`, `Agent`. |
| `--offset <n>` | integer | Number to skip **per connection**. Must be a multiple of `--limit`. Default `0`. |
| `--limit <n>` | integer | Maximum to return **per connection**. Default `10`. |
| `--search <term>` | string | Server-side substring filter on project name. |

:::note
This fans out to every connection in parallel and **degrades rather than fails**: if some connections can't be read, the reachable projects are still returned and the envelope carries a `Warning` naming the connections that were skipped — a short list is never mistaken for a complete one. Only a total, all-connections failure is an error. Re-run with `--log-level warn` to see each connection's underlying error.
:::

### Examples

```bash
uip aops project list

uip aops project list --connections f1e2d3c4-0000-0000-0000-000000000001 --search invoice
```

### Data shape (--output json)

```json
{
  "Code": "ProjectList",
  "Data": [
    { "ProjectId": "9999dddd-0000-0000-0000-000000000001", "Name": "Invoice Processing", "Description": "Daily invoice ingest", "Type": "Process", "Repository": "automation-hub" }
  ]
}
```

## uip aops project get

Fetch a project's metadata at a given reference.

### Options

| Long | Value | Required | Description |
|---|---|---|---|
| `--project-id <id>` | string | **yes** | SC service UUID for the project, from `connection projects`. |
| `--reference <ref>` | branch/tag/SHA | no | Defaults to the default branch's HEAD. |
| `--with-branches` | flag | no | Also fetch the full branch list and include it as `availableBranches`. One extra round-trip. |

### Examples

```bash
uip aops project get --project-id 9999dddd-0000-0000-0000-000000000001

uip aops project get --project-id 9999dddd-0000-0000-0000-000000000001 --with-branches
```

### Data shape (--output json)

```json
{
  "Code": "ProjectGet",
  "Data": {
    "identifier": "9999dddd-0000-0000-0000-000000000001",
    "name": "Invoice Processing",
    "description": "Daily invoice ingest",
    "type": "Process",
    "projectVersion": "1.2.0",
    "repository": "automation-hub",
    "defaultBranch": "main"
  }
}
```

With `--with-branches`, `Data` adds `availableBranches: ["main", "release", "feature/x"]`. If the project's repository can't be resolved to enumerate branches, `availableBranches` is an empty array with a warning logged rather than a failure.

## uip aops project files

List the file tree of a project at a given reference.

### Options

| Long | Value | Required | Description |
|---|---|---|---|
| `--project-id <id>` | string | **yes** | SC service UUID for the project. |
| `--path <path>` | string | no | Subdirectory to list. Defaults to the project root. |
| `--reference <ref>` | branch/tag/SHA | no | Defaults to the default branch's HEAD. |

### Data shape (--output json)

```json
{ "Code": "ProjectFiles", "Data": [] }
```

One row per entry with its name, path, type, and buildable-unit type.

## uip aops project content

Fetch the raw content of one file inside a project.

### Options

| Long | Value | Required | Description |
|---|---|---|---|
| `--project-id <id>` | string | **yes** | SC service UUID for the project. |
| `--path <path>` | string | **yes** | File path relative to the project root. |
| `--reference <ref>` | branch/tag/SHA | no | Defaults to the default branch's HEAD. |

### Data shape (--output json)

```json
{ "Code": "ProjectFileContent", "Data": { "fileContent": "<xaml…>" } }
```

An unresolvable `--path`/`--reference` combination fails with `Project file '<path>' not found.` rather than an empty success.

## uip aops project commits

List the commit history for a project. Targeted by `--project-id` only — there is no location-based (repo/reference) variant of this endpoint.

### Options

| Long | Value | Required | Description |
|---|---|---|---|
| `--project-id <id>` | string | **yes** | SC service UUID for the project. |
| `--path <path>` | string | no | Filter to commits touching this path. |
| `--branch <name>` | string | no | Filter to one branch. Defaults to the default branch. |
| `--offset <n>` | integer | no | Number to skip. Must be a multiple of `--limit`. Default `0`. |
| `--limit <n>` | integer | no | Maximum to return. Default `20`. |
| `--search <term>` | string | no | Server-side substring filter on commit message. |

### Data shape (--output json)

```json
{ "Code": "ProjectCommits", "Data": { "result": [] } }
```

## uip aops project commit

Fetch a single commit by SHA.

### Options

| Long | Value | Required | Description |
|---|---|---|---|
| `--project-id <id>` | string | **yes** | SC service UUID for the project. |
| `--reference <sha>` | commit SHA | **yes** | Also accepts a branch/tag that resolves to a commit. |

### Data shape (--output json)

```json
{ "Code": "ProjectCommit", "Data": { "Reference": "0123456789abcdef0123456789abcdef01234567", "Message": "Initial commit" } }
```

Fails with `Commit <reference> not found.` if it doesn't resolve.

## uip aops solution get

Fetch a Studio solution's metadata by identifier — the persisted solution DTO (name, identifier, source repository, default branch, last-modified info).

### Arguments

| Name | Required | Purpose |
|---|---|---|
| `<solution-id>` | yes | Solution identifier from `connection solutions <connection-id>`. |

### Data shape (--output json)

```json
{ "Code": "SolutionGet", "Data": { "identifier": "abcd5678-0000-0000-0000-000000000001", "name": "Finance Suite" } }
```

## uip aops solution commits

List the commit history for a solution.

### Arguments

| Name | Required | Purpose |
|---|---|---|
| `<solution-id>` | yes | Solution identifier from `connection solutions <connection-id>`. |

### Options

| Long | Value | Description |
|---|---|---|
| `--path <path>` | string | Filter to commits touching this path. |
| `--branch <name>` | string | Filter to one branch. Defaults to the default branch. |
| `--offset <n>` | integer | Number to skip. Must be a multiple of `--limit`. Default `0`. |
| `--limit <n>` | integer | Maximum to return. Default `20`. |
| `--search <term>` | string | Server-side substring filter on commit message. |

### Data shape (--output json)

```json
{ "Code": "SolutionCommits", "Data": { "result": [] } }
```

## Related

- [`uip aops`](./uip-aops.md) — overview and concepts.
- [`connections`](./uip-aops-connections.md) — discover project/solution identifiers.
- [`pipelines`](./uip-aops-pipelines.md) — define and run a CI/CD pipeline against a project.

## See also

- [Global options](./global-options.md)
- [Exit codes](./exit-codes.md)
