# TapestryPanel

One panel of the tapestry: short prose, woven during night weaving, about one subject. It is what an agent knows about a person or thing, rather than a list of facts. It is rewoven whenever the threads about its subject change.

**Kind:** an object, used in responses.

## Fields

Every field is present in a response; empty ones are `null`.

| Field | Type | Description |
|---|---|---|
| `loomId` | `uuid` | The loom. |
| `subjectKey` | `string` | The subject, normalised (lowercase, single-spaced) for matching. |
| `subject` | `string` | The person or thing the panel is about, as named. |
| `text` | `string` | The panel's prose. |
| `threadIds` | `uuid[]` | The threads the panel was woven from. |
| `nightWeavingId` | `uuid \| null` | The night weaving that last wove the panel. |
| `tenantId` | `uuid` | The id of the tenant it belongs to. |
| `id` | `uuid` | The unique id. Use it in `by-id` routes and wherever another object refers to this one. |
| `dateCreated` | `datetime` | When it was created, in UTC. |
| `dateUpdated` | `datetime` | When it was last changed, in UTC. |

## Example

```json
{
  "loomId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "subjectKey": "...",
  "subject": "...",
  "text": "...",
  "threadIds": [
    "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f"
  ],
  "nightWeavingId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "tenantId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "dateCreated": "2026-10-26T12:00:00.0000000Z",
  "dateUpdated": "2026-10-26T12:00:00.0000000Z"
}
```

## Where it's used

- [`looms.panels`](https://docs.maitento.com/reference/api/looms.md) (`GET /looms/by-id/{id}/panels`)
