---
title: "String Comment Batch Operations"
method: PATCH
path: "/projects/{projectId}/comments"
tags: ["String Comments"]
---

# String Comment Batch Operations

`PATCH /projects/{projectId}/comments`

## Request

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

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

## Path parameters

- `projectId` integer, required

## Request body

- StringCommentMassOperation[]: A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>
  - `op` 'replace' | 'remove' | 'add', required: Patch operation to perform
  - `path` string, json-pointer, required: A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>

## Response `200`

String Comments were successfully updated

- StringCommentUpdatedCollectionResource: 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` union[], required
    - union
      - object: 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` StringComment, required: Base Comment Response Model
          - `id` integer: Comment ID
          - `text` string: Comment text
          - `userId` integer: User ID
          - `user` object: User object
            - `id` integer: User ID
            - `username` string: User username
            - `fullName` string: User full name
            - `avatarUrl` string: User avatar URL
          - `projectId` integer: Project ID
          - `languageId` string: Language ID
          - `type` string: Comment type
          - `issueType` string: Issue type
          - `issueStatus` string: Issue status
          - `resolverId` integer: Resolver ID
          - `resolver` object: Resolver object
          - `resolvedAt` string: Resolved at
          - `createdAt` string: Created at
          - `attachments` object[]: List of attachments added to the comment
            - `id` integer: Attachment ID
            - `name` string: Original file name
            - `mime` string: MIME type
            - `size` integer: File size in bytes
            - `category` string: Attachment category (image, video, audio, document, other)
            - `thumbnailUrl` string, nullable: Thumbnail URL
            - `url` string: Preview URL
            - `downloadUrl` string: Download URL
          - `stringId` integer: String ID
          - `string` object: String object
            - `id` integer: String ID
            - `text` string: String text
            - `type` string: String type
            - `hasPlurals` boolean: Use fields `type` and `text` instead
            - `isIcu` boolean: Use field `type` instead
            - `context` string: String context
            - `fileId` integer: File ID
      - object: 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` AssetComment, required: Base Comment Response Model
          - `id` integer: Comment ID
          - `text` string: Comment text
          - `userId` integer: User ID
          - `user` object: User object
            - `id` integer: User ID
            - `username` string: User username
            - `fullName` string: User full name
            - `avatarUrl` string: User avatar URL
          - `projectId` integer: Project ID
          - `languageId` string: Language ID
          - `type` string: Comment type
          - `issueType` string: Issue type
          - `issueStatus` string: Issue status
          - `resolverId` integer: Resolver ID
          - `resolver` object: Resolver object
          - `resolvedAt` string: Resolved at
          - `createdAt` string: Created at
          - `attachments` object[]: List of attachments added to the comment
            - `id` integer: Attachment ID
            - `name` string: Original file name
            - `mime` string: MIME type
            - `size` integer: File size in bytes
            - `category` string: Attachment category (image, video, audio, document, other)
            - `thumbnailUrl` string, nullable: Thumbnail URL
            - `url` string: Preview URL
            - `downloadUrl` string: Download URL
          - `fileId` integer: File ID
          - `file` object: File object
            - `id` integer: File ID
            - `name` string: Asset filename
            - `type` string: File type
            - `context` string: Asset context

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project or string comment with specified id was not found
- `405`: Method Not Allowed
- `503`: Service Unavailable

---

[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)
