# List a record's discussion threads

The internal threads on one record — colleagues talking to each other about this deal or lead — most recently spoken in first, each with its roster, message count and the caller's unread count. RESOLVED threads are included: filtering them out is the caller's choice, so that 'what did we decide about this' stays answerable. Staff only; the merchant portal reaches the deal row and none of these.

Access class: `def:read`.

## Endpoint

`GET /v1/definitions/{key}/rows/{rowId}/threads`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| key | path | string | Yes |
| rowId | path | string | Yes |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": [
    {
      "createdAt": "string",
      "createdBy": 1.5,
      "definitionKey": "string",
      "id": "",
      "lastMessageAt": "string",
      "messageCount": 1.5,
      "participants": [
        {
          "addedAt": "string",
          "email": "string",
          "isMuted": true,
          "lastReadAt": "string",
          "name": "string",
          "role": "string",
          "userId": 1.5
        }
      ],
      "recordName": "string",
      "resolvedAt": "string",
      "resolvedBy": 1.5,
      "rowId": "",
      "status": "string",
      "subject": "string",
      "unread": 1.5,
      "updatedAt": "string"
    }
  ]
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
