# Comments service

Comments service manages conversations about resources.

OpenAPI file: [`nominal.comments.v1.json`](https://dev.nominal.io/api/_downloads/5b4a5510e2d165231c85a9ec3a275b1f/nominal.comments.v1.json)

## Endpoints

### Create comment

POST `/comments/v2/comments`

Create a comment on a resource

Body

`parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
:   ​

    Fields of `CommentParent`

    one of `resource`, `comment` required
    :   ​

        **resource**

        `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
        :   ​

            Fields of `CommentParentResource`

            `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
            :   The type of resource that the comment is associated with

                Values of `ResourceType`

                `RESOURCE_TYPE_UNSPECIFIED`
                :   ​

                `RUN`
                :   ​

                `EVENT`
                :   ​

            `resourceRid` string
            :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

        **comment**

        `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
        :   ​

            Fields of `CommentParentComment`

            `commentRid` string
            :   The resource identifier for the comment that the comment is replying to

`content` string
:   The content of the comment. Markdown supported.

`attachments` array of string
:   Attachments to the comment.

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/comments/v2/comments" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "parent": {
    "resource": {
      "resourceType": "RUN",
      "resourceRid": "<resource rid>"
    }
  },
  "content": "<content>",
  "attachments": [
    "<attachments>"
  ]
}'
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/comments/v2/comments",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "parent": {"resource": {"resourceType": "RUN", "resourceRid": "<resource rid>"}},
        "content": "<content>",
        "attachments": ["<attachments>"],
    },
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/comments/v2/comments",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "parent": {"resource": {"resourceType": "RUN", "resourceRid": "<resource rid>"}},
        "content": "<content>",
        "attachments": ["<attachments>"],
    },
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/comments/v2/comments",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "parent": {
                    "resource": {"resourceType": "RUN", "resourceRid": "<resource rid>"},
                },
                "content": "<content>",
                "attachments": ["<attachments>"],
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Get comment

GET `/comments/v2/comments/{commentRid}`

Get a comment identified by its RID

Path parameters

`commentRid` string required
:   The RID of comment to fetch

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Delete comment

DELETE `/comments/v2/comments/{commentRid}`

Delete an existing comment

Path parameters

`commentRid` string required
:   The RID of comment to delete

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X DELETE "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.delete(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.delete(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.delete(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Edit comment

PUT `/comments/v2/comments/{commentRid}`

Edit an existing comment

Path parameters

`commentRid` string required
:   The RID of comment to edit

Body

`content` string
:   The content of the comment. Markdown supported.

`attachments` array of string
:   Attachments to the comment.

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X PUT "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "content": "<content>",
  "attachments": [
    "<attachments>"
  ]
}'
```

**requests**

```python
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"content": "<content>", "attachments": ["<attachments>"]},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"content": "<content>", "attachments": ["<attachments>"]},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.put(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={"content": "<content>", "attachments": ["<attachments>"]},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Pin comment

POST `/comments/v2/comments/{commentRid}/pin`

Pin a comment to the top of the conversation

Path parameters

`commentRid` string required
:   The RID of comment to pin

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/pin" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/pin",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/pin",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/pin",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Remove reaction

DELETE `/comments/v2/comments/{commentRid}/reactions/{type}`

Create a reaction on a comment

Path parameters

`commentRid` string required
:   The RID of comment to delete

`type` string, one of `REACTION_TYPE_UNSPECIFIED`, `LIKE`, `DISLIKE`, `HEART`, `HOORAY`, `ROCKET`, `EYES` required
:   The type of reaction

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X DELETE "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.delete(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.delete(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.delete(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Add reaction

POST `/comments/v2/comments/{commentRid}/reactions/{type}`

Create a reaction on a comment

Path parameters

`commentRid` string required
:   The RID of comment to delete

`type` string, one of `REACTION_TYPE_UNSPECIFIED`, `LIKE`, `DISLIKE`, `HEART`, `HOORAY`, `ROCKET`, `EYES` required
:   The type of reaction

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/reactions/<type>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Unpin comment

POST `/comments/v2/comments/{commentRid}/unpin`

Unpin a comment from the top of the conversation

Path parameters

`commentRid` string required
:   The RID of comment to unpin

Response

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   ​

    Fields of `Comment`

    `rid` string
    :   Unique resource identifier for the comment

    `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
    :   The parent of the comment. It can be a resource or another comment.

        Fields of `CommentParent`

        one of `resource`, `comment`
        :   ​

            **resource**

            `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
            :   ​

                Fields of `CommentParentResource`

                `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                :   The type of resource that the comment is associated with

                    Values of `ResourceType`

                    `RESOURCE_TYPE_UNSPECIFIED`
                    :   ​

                    `RUN`
                    :   ​

                    `EVENT`
                    :   ​

                `resourceRid` string
                :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

            **comment**

            `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
            :   ​

                Fields of `CommentParentComment`

                `commentRid` string
                :   The resource identifier for the comment that the comment is replying to

    `authorRid` string
    :   The user who authored the comment

    `createdAt` string (date-time)
    :   The time the comment was created

    `editedAt` string (date-time)
    :   The time the comment was edited. Empty if the comment has not been edited.

    `deletedAt` string (date-time)
    :   The time the comment was deleted. Empty if the comment has not been deleted.

    `content` string
    :   The markdown content of the comment.

    `pinnedBy` string
    :   The user who pinned the comment. Empty if the comment is not pinned.

    `pinnedAt` string (date-time)
    :   The time the comment was pinned. Empty if the comment is not pinned.

    `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
    :   The reactions on the comment

        Fields of `Reaction`

        `rid` string
        :   Unique resource identifier for the reaction

        `userRid` string
        :   The user who authored the reaction

        `createdAt` string (date-time)
        :   The time the reaction was created

        `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
        :   The type of reaction

            Values of `ReactionType`

            `REACTION_TYPE_UNSPECIFIED`
            :   ​

            `LIKE`
            :   ​

            `DISLIKE`
            :   ​

            `HEART`
            :   ​

            `HOORAY`
            :   ​

            `ROCKET`
            :   ​

            `EYES`
            :   ​

    `attachments` array of string
    :   The comment’s attachments

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/unpin" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/unpin",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/unpin",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/comments/v2/comments/<comment rid>/unpin",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "comment": {
    "rid": "<rid>",
    "parent": {
      "resource": {
        "resourceType": "RUN",
        "resourceRid": "<resource rid>"
      }
    },
    "authorRid": "<author rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "deletedAt": "2026-01-01T00:00:00Z",
    "content": "<content>",
    "pinnedBy": "<pinned by>",
    "pinnedAt": "2026-01-01T00:00:00Z",
    "reactions": [
      {
        "rid": "<rid>",
        "userRid": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "type": "LIKE"
      }
    ],
    "attachments": [
      "<attachments>"
    ]
  }
}
```

### Get conversation

GET `/comments/v2/conversations/{resourceType}/{resourceRid}`

A conversation is a fully resolved comment tree. It includes all comments for the given resource and all the nested comments/replies to those comments.

Path parameters

`resourceType` string, one of `RESOURCE_TYPE_UNSPECIFIED`, `RUN`, `EVENT` required
:   The type of resource that the comments are associated with

`resourceRid` string required
:   The RID of resource that the comments are associated with

Response

`conversation` [`Conversation`](https://dev.nominal.io/api/rest/comments-service.md#conversation)
:   ​

    Fields of `Conversation`

    `resourceRid` string
    :   RID for the resource that the conversation is associated with.

    `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
    :   The type of the resource that the conversation is associated with.

        Values of `ResourceType`

        `RESOURCE_TYPE_UNSPECIFIED`
        :   ​

        `RUN`
        :   ​

        `EVENT`
        :   ​

    `comments` array of [`ConversationNode`](https://dev.nominal.io/api/rest/comments-service.md#conversationnode)
    :   The comments on the conversation ordered by creation time. Empty if the comment has no replies.

        Fields of `ConversationNode`

        `comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
        :   The comment

            Fields of `Comment`

            `rid` string
            :   Unique resource identifier for the comment

            `parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
            :   The parent of the comment. It can be a resource or another comment.

                Fields of `CommentParent`

                one of `resource`, `comment`
                :   ​

                    **resource**

                    `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
                    :   ​

                        Fields of `CommentParentResource`

                        `resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
                        :   The type of resource that the comment is associated with

                        `resourceRid` string
                        :   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

                    **comment**

                    `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
                    :   ​

                        Fields of `CommentParentComment`

                        `commentRid` string
                        :   The resource identifier for the comment that the comment is replying to

            `authorRid` string
            :   The user who authored the comment

            `createdAt` string (date-time)
            :   The time the comment was created

            `editedAt` string (date-time)
            :   The time the comment was edited. Empty if the comment has not been edited.

            `deletedAt` string (date-time)
            :   The time the comment was deleted. Empty if the comment has not been deleted.

            `content` string
            :   The markdown content of the comment.

            `pinnedBy` string
            :   The user who pinned the comment. Empty if the comment is not pinned.

            `pinnedAt` string (date-time)
            :   The time the comment was pinned. Empty if the comment is not pinned.

            `reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
            :   The reactions on the comment

                Fields of `Reaction`

                `rid` string
                :   Unique resource identifier for the reaction

                `userRid` string
                :   The user who authored the reaction

                `createdAt` string (date-time)
                :   The time the reaction was created

                `type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
                :   The type of reaction

                    Values of `ReactionType`

                    `REACTION_TYPE_UNSPECIFIED`
                    :   ​

                    `LIKE`
                    :   ​

                    `DISLIKE`
                    :   ​

                    `HEART`
                    :   ​

                    `HOORAY`
                    :   ​

                    `ROCKET`
                    :   ​

                    `EYES`
                    :   ​

            `attachments` array of string
            :   The comment’s attachments

        `replies` array of [`ConversationNode`](https://dev.nominal.io/api/rest/comments-service.md#conversationnode)
        :   The comments on (aka replies to) the comment ordered by creation time. Empty if the comment has no replies.

Request

**curl**

```shell
curl "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "conversation": {
    "resourceRid": "<resource rid>",
    "resourceType": "RUN",
    "comments": [
      {
        "comment": {
          "rid": "<rid>",
          "parent": {
            "resource": {
              "resourceType": "RUN",
              "resourceRid": "<resource rid>"
            }
          },
          "authorRid": "<author rid>",
          "createdAt": "2026-01-01T00:00:00Z",
          "editedAt": "2026-01-01T00:00:00Z",
          "deletedAt": "2026-01-01T00:00:00Z",
          "content": "<content>",
          "pinnedBy": "<pinned by>",
          "pinnedAt": "2026-01-01T00:00:00Z",
          "reactions": [
            {
              "rid": "<rid>",
              "userRid": "<user rid>",
              "createdAt": "2026-01-01T00:00:00Z",
              "type": "LIKE"
            }
          ],
          "attachments": [
            "<attachments>"
          ]
        },
        "replies": []
      }
    ]
  }
}
```

### Get conversation count

GET `/comments/v2/conversations/{resourceType}/{resourceRid}/count`

Returns the number of comments in a conversation.

Path parameters

`resourceType` string, one of `RESOURCE_TYPE_UNSPECIFIED`, `RUN`, `EVENT` required
:   The type of resource that the comments are associated with

`resourceRid` string required
:   The RID of resource that the comments are associated with

Query parameters

`includeDeleted` boolean
:   Whether to include deleted comments in the count

Response

`count` integer
:   ​

Request

**curl**

```shell
curl "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>/count" \
  -H "Authorization: Bearer <api key>"
```

**requests**

```python
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>/count",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>/count",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/comments/v2/conversations/<resource type>/<resource rid>/count",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "count": 1
}
```

## Errors

[Errors](https://dev.nominal.io/api.md#errors) shows how these errors are sent.

Each error’s `errorName` is `NominalCommentsV1:` followed by its name below.

| Status | Name | Notes |
| --- | --- | --- |
| 400 | `CommentsErrorContentTooLong` | ContentTooLong |
| 400 | `CommentsErrorEmptyCommentContent` | EmptyCommentContent |
| 400 | `CommentsErrorInvalidArgument` | InvalidArgument |
| 400 | `CommentsErrorInvalidAttachment` | InvalidAttachment |
| 400 | `CommentsErrorMaxNestingDepthExceeded` | MaxNestingDepthExceeded |
| 403 | `CommentsErrorUnauthorized` | Unauthorized |
| 404 | `CommentsErrorCommentNotFound` | CommentNotFound |

## Types

### Comment

`rid` string
:   Unique resource identifier for the comment

`parent` [`CommentParent`](https://dev.nominal.io/api/rest/comments-service.md#commentparent)
:   The parent of the comment. It can be a resource or another comment.

`authorRid` string
:   The user who authored the comment

`createdAt` string (date-time)
:   The time the comment was created

`editedAt` string (date-time)
:   The time the comment was edited. Empty if the comment has not been edited.

`deletedAt` string (date-time)
:   The time the comment was deleted. Empty if the comment has not been deleted.

`content` string
:   The markdown content of the comment.

`pinnedBy` string
:   The user who pinned the comment. Empty if the comment is not pinned.

`pinnedAt` string (date-time)
:   The time the comment was pinned. Empty if the comment is not pinned.

`reactions` array of [`Reaction`](https://dev.nominal.io/api/rest/comments-service.md#reaction)
:   The reactions on the comment

`attachments` array of string
:   The comment’s attachments

### CommentParent

The parent of a comment. It can be a resource or another comment in the case of a reply.

Set exactly one of the fields below.

one of `resource`, `comment` required
:   ​

    **resource**

    `resource` [`CommentParentResource`](https://dev.nominal.io/api/rest/comments-service.md#commentparentresource)
    :   ​

    **comment**

    `comment` [`CommentParentComment`](https://dev.nominal.io/api/rest/comments-service.md#commentparentcomment)
    :   ​

### CommentParentComment

`commentRid` string
:   The resource identifier for the comment that the comment is replying to

### CommentParentResource

`resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
:   The type of resource that the comment is associated with

`resourceRid` string
:   The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.

### Conversation

`resourceRid` string
:   RID for the resource that the conversation is associated with.

`resourceType` [`ResourceType`](https://dev.nominal.io/api/rest/comments-service.md#resourcetype)
:   The type of the resource that the conversation is associated with.

`comments` array of [`ConversationNode`](https://dev.nominal.io/api/rest/comments-service.md#conversationnode)
:   The comments on the conversation ordered by creation time. Empty if the comment has no replies.

### ConversationNode

`comment` [`Comment`](https://dev.nominal.io/api/rest/comments-service.md#comment)
:   The comment

`replies` array of [`ConversationNode`](https://dev.nominal.io/api/rest/comments-service.md#conversationnode)
:   The comments on (aka replies to) the comment ordered by creation time. Empty if the comment has no replies.

### Reaction

`rid` string
:   Unique resource identifier for the reaction

`userRid` string
:   The user who authored the reaction

`createdAt` string (date-time)
:   The time the reaction was created

`type` [`ReactionType`](https://dev.nominal.io/api/rest/comments-service.md#reactiontype)
:   The type of reaction

### ReactionType

`REACTION_TYPE_UNSPECIFIED`
:   ​

`LIKE`
:   ​

`DISLIKE`
:   ​

`HEART`
:   ​

`HOORAY`
:   ​

`ROCKET`
:   ​

`EYES`
:   ​

### ResourceType

`RESOURCE_TYPE_UNSPECIFIED`
:   ​

`RUN`
:   ​

`EVENT`
:   ​

Page design based on [Scalar](https://scalar.com), MIT License.
