# List or search a page's records

The rows of one record page, each as cells keyed by column id plus its position and source. How to list leads, deals or contacts; read the page's definition first to know the columns. Answers the LIVE board; pass `?archived=true` for the archived records instead, most recently archived first. A row carries `archived_at` only while it is archived. The four MONEY boards — `payments`, `payment-schedules`, `cash-flows`, `obligations` — are read here too and are the ledger itself: their rows carry source `ledger`, the Deal column is a relation cell naming the deal record, and they take `?view=` (one of that board's own view keys) and `?dealRowId=` (one deal's rows, which is what the deal's Servicing tab shows). Both are refused on any other page: a tab or saved view on an ordinary page (the deals page's Funded tab, say) is not a `view` — send what it holds as `?filter[<columnId>]=`, `?sort=` and `?q=`, reading its columns and saved views from the page's definition. `?limit=` and `?offset=` page any board, and `page` in the answer says how many rows the narrowing holds. A paged read of an ordinary board also takes `?q=` (case-blind substring over every cell), `?filter[<columnId>]=<value>` repeated (exact match on the stored cell; an empty value matches a blank cell), `?sort=<columnId>&dir=asc|desc` (numbers as numbers, dates as ISO text, else as text; empties last) and `?group=<groupId>` (record-group membership); sorting or filtering by a formula or lookup column is refused, and any of the four without `limit` answers the first 50 rows (`page.total` says how many match).

Access class: `def:read`.

## Endpoint

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

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| key | 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": [
    {
      "assignees": {
        "owner": [
          "string"
        ]
      },
      "cells": {
        "<uuid-13>": "string",
        "<uuid-1>": "string",
        "<uuid-2>": "string",
        "<uuid-5>": "string",
        "<uuid-6>": "string",
        "<uuid-9>": "string"
      },
      "createdBy": "string",
      "display": {
        "<uuid-5>": "string",
        "<uuid-6>": "string"
      },
      "id": "",
      "position": 1.5,
      "source": "string"
    }
  ],
  "page": {
    "limit": 1.5,
    "offset": 1.5,
    "total": 1.5
  }
}
```

### 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"
}
```
