# Project Overview

Source: https://opvs.ai/docs/api/project-overview

## `GET` /api/v1/projects/overview

**Get All Projects Overview**

**Parameters**

- `range` (query, any, optional)
- `from` (query, any, optional)
- `to` (query, any, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/overview' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/overview",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/overview", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/overview", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## `GET` /api/v1/projects/performance/by-who

**Get All Projects Performance By Who**

**Parameters**

- `range` (query, any, optional)
- `from` (query, any, optional)
- `to` (query, any, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/performance/by-who' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/performance/by-who",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/performance/by-who", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/performance/by-who", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## `GET` /api/v1/projects/{project_id}/performance/by-who

**Get Project Performance By Who**

**Parameters**

- `project_id` (path, string, required)
- `range` (query, any, optional)
- `from` (query, any, optional)
- `to` (query, any, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/{project_id}/performance/by-who' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/{project_id}/performance/by-who",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/{project_id}/performance/by-who", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/{project_id}/performance/by-who", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## `GET` /api/v1/projects/work

**Get All Projects Work**

**Parameters**

- `status` (query, any, optional)
- `limit` (query, integer, optional)
- `offset` (query, integer, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/work' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/work",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/work", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/work", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## `GET` /api/v1/projects/{project_id}/overview

**Get Project Overview**

**Parameters**

- `project_id` (path, string, required)
- `range` (query, any, optional)
- `from` (query, any, optional)
- `to` (query, any, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/{project_id}/overview' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/{project_id}/overview",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/{project_id}/overview", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/{project_id}/overview", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## `GET` /api/v1/projects/{project_id}/work

**Get Project Work**

**Parameters**

- `project_id` (path, string, required)
- `status` (query, any, optional)
- `limit` (query, integer, optional)
- `offset` (query, integer, optional)
- `format` (query, string, optional)

```bash
curl -X GET 'https://app.opvs.ai/api/v1/projects/{project_id}/work' \
  -H 'Authorization: Bearer <token>'
```

```python
import httpx

resp = httpx.get(
    "https://app.opvs.ai/api/v1/projects/{project_id}/work",
    headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())
```

```javascript
const resp = await fetch("https://app.opvs.ai/api/v1/projects/{project_id}/work", {
  method: "GET",
  headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);
```

```go
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.opvs.ai/api/v1/projects/{project_id}/work", nil)
	req.Header.Set("Authorization", "Bearer <token>")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
```

**Responses**

- `200` — Successful Response
- `422` — Validation Error

## Get All Projects Overview

`GET https://app.opvs.ai/api/v1/projects/overview`

Also as: MCP `tool_call software-factory.getAllProjectsOverview` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |

## Get All Projects Performance By Who

`GET https://app.opvs.ai/api/v1/projects/performance/by-who`

Also as: MCP `tool_call software-factory.getAllProjectsPerformanceByWho` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |

## Get Project Performance By Who

`GET https://app.opvs.ai/api/v1/projects/{project_id}/performance/by-who`

Also as: MCP `tool_call software-factory.getProjectPerformanceByWho` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |

## Get All Projects Work

`GET https://app.opvs.ai/api/v1/projects/work`

Also as: MCP `tool_call software-factory.getAllProjectsWork` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |

## Get Project Overview

`GET https://app.opvs.ai/api/v1/projects/{project_id}/overview`

Also as: MCP `tool_call software-factory.getProjectOverview` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |

## Get Project Work

`GET https://app.opvs.ai/api/v1/projects/{project_id}/work`

Also as: MCP `tool_call software-factory.getProjectWork` · skill `software-factory`

| Code | When | What to do |
| --- | --- | --- |
| 422 | Validation Error |  |
