---
title: "For a firm: A page of matters, whole or changed since a position (any role)"
method: GET
path: "/v1/admin/tenants/{tenant}/matters"
tags: ["admin"]
---

# For a firm: A page of matters, whole or changed since a position (any role)

`GET /v1/admin/tenants/{tenant}/matters`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/admin/tenants/{tenant}/matters`
- Auth: HTTP bearer

With no `since` the pages are the whole list. The last page carries an `ETag`, the position the read ended at: send it as `since` to read only what changed since then, and also as `If-None-Match`, so that a read finding nothing changed is a 304 with no body. Send each `next_cursor` as `since` to continue; a null `next_cursor` means the last page. A `since` the API cannot continue (from another sign-in) is a 400: read from the start. Where the firm's practice system shows each person their own matters (`capabilities.matter_visibility` is `member`), the page holds the matters THE CALLER is shown there and no others, besides the matters the firm made itself, and only while the caller's own sign-in there is live (`member.system_link.status` is `connected` on `GET /v1/me`): a caller who has not signed in, or whose sign-in is no longer accepted, is served none of that system's matters until they sign in again, and so is everybody at a firm that disconnected it. Each such row's `updated_at` is the later of the matter's own and the instant the caller's access to it last changed, so a matter that became visible arrives on an incremental pull. One the system withdrew from the caller arrives once, with `active` false, on a pull whose `since` is from before the withdrawal, and never again whatever changes on it; a pull with no `since` holds none. Every other firm's answer is unchanged.

Operator mount: an operator acting for the firm named in the path, as its oldest active admin, else its oldest active billing member; `X-Six-Minute-Acting-As` names them. 404 for no such firm, 409 `urn:six-minute:problem:no-acting-member` for one with neither.

## Path parameters

- `tenant` string, required

## Query parameters

- `since` string
- `limit` integer

## Headers

- `if-none-match` string

## Response `200`

The page.

- object
  - `rows` object[], required
    - `id` string, required
    - `client_id` string, required
    - `name` string, required
    - `code` string, nullable
    - `description` string, nullable
    - `billable` boolean
    - `external_ref` string, nullable
    - `active` boolean
    - `temporary` boolean
    - `parties` object[]
      - `name` string, required
      - `kind` 'counterparty' | 'counterparty_counsel' | 'co_party' | 'court' | 'other'
      - `email` string, nullable
      - `organisation` string, nullable
      - `role` string, nullable
      - `emails` string[]
      - `contacts` object[]
        - `name` string, required
        - `email` string, nullable
      - `reference` string, nullable
      - `external_refs` string[]
    - `domains` string[]
    - `folders` string[]
    - `keywords` string[]
    - `matter_type` string, nullable
    - `references` object[]
      - `kind` string
      - `value` string, required
    - `category` object, nullable
      - `code` string, nullable
      - `name` string, required
    - `main_category` string, nullable
    - `phase` string, nullable
    - `opened_at` string, date-time, required
    - `closed_at` string, date-time, nullable
    - `last_activity_at` string, date-time, nullable
    - `firm_internal` boolean
    - `billing` object
      - `narrative_profile` string
    - `attribute_sets` object
    - `attribute_required` object
    - `narrative_language` 'nl' | 'en' | 'de' | 'fr' | 'es' | 'it' | 'pt' | 'pl' | 'sv' | 'da' | 'en-GB' | 'pt-PT', nullable
    - `sync_source` 'manual' | 'legalsense' | 'urios' | 'import'
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `next_cursor` string, nullable, required

## Other responses

- `304`: Nothing changed since `since`.
- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.
- `404`: No such row for this tenant.
- `409`: The id or the email already belongs to something else.
- `503`: A capability this service was not configured with, or a practice system that could not be reached; the `type` says which.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
