---
title: "Edit Project Discussion"
method: PATCH
path: "/projects/{projectId}/discussions/{discussionId}"
tags: ["Discussions"]
---

# Edit Project Discussion

`PATCH /projects/{projectId}/discussions/{discussionId}`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/projects/{projectId}/discussions/{discussionId}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-api-v2/docs/projects/:projectId/discussions/:discussionId/patch.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `project.discussion` (Read and Write).

Renames, closes, reopens, mutes or unmutes a project discussion. Closing or reopening posts a `system` reply and notifies the discussion participants. Muting applies only to the authenticated user.

__Note:__ Only the author of the discussion and project managers can rename, close or reopen it. Anyone who can reply to the discussion can mute it for themselves

## Path parameters

- `projectId` integer, required
- `discussionId` integer, required

## Request body

- DiscussionPatchOperation[]: A JSON Patch document as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-3)
  - `op` 'replace', required: Patch operation to perform
  - `path` '/title' | '/status' | '/isMuted', json-pointer, required: A JSON Pointer as defined by [RFC 6901](https://tools.ietf.org/html/rfc6901)

## Response `200`

Discussion data

- DiscussionResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` Discussion, required
    - `id` integer: ID of the discussion
    - `projectId` integer: ID of the project the discussion belongs to
    - `title` string: Discussion title
    - `status` 'open' | 'closed': Discussion status. One of: `open`, `closed`
    - `languageId` string, nullable: ID of the target language the discussion is about. `null` when the discussion is about all languages
    - `userId` integer: ID of the user who started the discussion
    - `user` DiscussionUser: Author of a discussion or reply
      - `id` integer, nullable: ID of the user
      - `username` string, nullable: Username of the user
      - `fullName` string, nullable: Full name of the user, or the username when the full name is not set
      - `avatarUrl` string, nullable: URL of the user avatar
    - `repliesCount` integer: Number of replies in the discussion, `system` replies included. The description is not counted
    - `isMuted` boolean: If `true`, the authenticated user muted the discussion and is not notified about new replies in it
    - `createdAt` string, date-time: Date the discussion was started, in ISO 8601 format
    - `updatedAt` string, date-time: Date of the latest reply, reply edit, title or status change, in ISO 8601 format

## Other responses

- `400`: Invalid Request Body
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project or discussion with specified id was not found
- `429`: Discussion is being updated by another request

---

[API](https://skmtc.dev/crowdin/apis/crowdin-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-api-v2/revisions/27aae7751699?raw)
