# Update project settings

`PATCH /api/project/{projectId}`

URL: https://repsona.com/api/patch-project-projectid

Updates profile (name/fullName/purpose), visibility (isPublic) and holiday settings. Admin + project member only.

## Parameters

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `projectId` | path | integer | required | The project ID. |

## Request body

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `name` | body | string |  | Project key: 3 to 30 characters of letters, numbers, `_`, `-` and `.`. Must be unique in the space. |
| `fullName` | body | string |  | Display name of the project (up to 255 characters). |
| `purpose` | body | string |  | Purpose or description of the project (up to 10,000 characters). |
| `isPublic` | body | boolean |  | Whether anyone with the public URL can view the task list without signing in. Member names and icons become public too. |
| `holidays` | body | object[] |  | Project-specific holidays (up to 366). Replaces the existing list. |
| `regularHolidays` | body | integer[] |  | Weekdays that are non-working every week, where 0 is Sunday and 6 is Saturday. Replaces the existing list. New projects use `[0, 6]`. |
| `avatarUrl` | body | null |  | Pass `null` to remove the project icon. |
| `backgroundUrl` | body | null |  | Pass `null` to remove the project background image. |
| `productImageUrl` | body | null |  | Pass `null` to remove the project product image. |

## Request

```sh
curl -X PATCH "https://<space>.repsona.com/api/project/{projectId}" \
  -H "Authorization: Bearer $REPSONA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fullName": "Website renewal",
    "purpose": "Rebuild the marketing site with a new design and faster pages.",
    "isPublic": false,
    "holidays": [
      {
        "name": "Summer break",
        "start": "2026-08-10",
        "end": "2026-08-14"
      }
    ],
    "regularHolidays": [
      0,
      6
    ]
  }'
```

## Responses

- 200: Updated project detail
- 400: Validation error or project name already exists
- 401: Authentication is required
- 403: Admin only
- 404: Project not found

## Example response

```json
{
  "id": 253,
  "name": "WEB",
  "fullName": "Website renewal",
  "purpose": "Rebuild the marketing site with a new design and faster pages.",
  "avatarUrl": "",
  "backgroundUrl": "",
  "productImageUrl": "",
  "isClosed": false,
  "isPublic": false,
  "free": true,
  "holidays": [
    {
      "name": "Summer break",
      "start": "2026-08-10",
      "end": "2026-08-14"
    }
  ],
  "regularHolidays": [
    0,
    6
  ],
  "members": [
    {
      "id": 987,
      "name": "sam.carter",
      "fullName": "Sam Carter",
      "avatarUrl": null,
      "color": null,
      "state": "active"
    },
    {
      "id": 988,
      "name": "reon.walls",
      "fullName": "Reon Walls",
      "avatarUrl": null,
      "color": null,
      "state": "active"
    }
  ],
  "hasTask": false
}
```
