# Project

> The Project object in the Guv API.

## Fields

| Field | Type | Description |
| --- | --- | --- |
| `id` * | string |  |
| `workspace_id` * | string |  |
| `slug` * | string |  |
| `name` * | string |  |
| `description` | string or null |  |
| `region` * | [Region](/docs/api/objects/region/) |  |
| `residency` * | [Residency](/docs/api/objects/residency/) |  |
| `classification` * | [Classification](/docs/api/objects/classification/) |  |
| `repo` | [RepoBinding](/docs/api/objects/repo-binding/) or any or null |  |
| `managed_by_manifest` | boolean | True when guv.yaml is the source of truth. The dashboard then proposes PRs instead of editing directly. |
| `safety` | object |  |
| `created_at` * | string (date-time) |  |
| `updated_at` | string (date-time) |  |

\* always present

## Example

```json
{
  "id": "prj_01jbx2m9k7q4r8t5v6w3y0z1pr",
  "workspace_id": "ws_01jbx2m9k7q4r8t5v6w3y0z1ws",
  "slug": "primecarers",
  "name": "Primecarers",
  "description": "Care management platform",
  "region": "lon1",
  "residency": "uk-only",
  "classification": "special-category",
  "repo": {
    "provider": "github",
    "full_name": "primecarers/platform",
    "installation_id": "ghi_01jbx2m9k7q4r8t5v6w3y0z1gh",
    "default_branch": "main",
    "manifest_path": "guv.yaml"
  },
  "managed_by_manifest": true,
  "safety": {
    "grade": "A",
    "evaluated_at": "2026-10-23T12:00:00Z",
    "badge_enabled": true,
    "badge_url": "https://guv.dev/safety/k7q4r8t5v6w3y0z1"
  },
  "created_at": "2026-10-22T09:30:00Z",
  "updated_at": "2026-10-23T12:00:00Z"
}
```

## Used by

- [Create a project](/docs/api/projects/#create-a-project)
- [Get a project](/docs/api/projects/#get-a-project)
- [Update a project](/docs/api/projects/#update-a-project)
