> ## Documentation Index
> Fetch the complete documentation index at: https://docs.law4devs.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Recitals

> List and retrieve recitals from EU regulatory frameworks with the Law4Devs Java SDK.

## Overview

Recitals are the numbered preamble paragraphs that provide context and legislative intent for each regulation. Use `client.recitals()` to access them.

***

## Methods

### `list(String frameworkSlug)`

Returns the first page of recitals for a framework.

```java theme={null}
Page<Recital> page = client.recitals().list("gdpr");

for (Recital r : page.data()) {
    System.out.println("Recital " + r.number() + ": " + r.title());
}
```

**Returns** `Page<Recital>`

***

### `list(String frameworkSlug, int page, int perPage)`

Fetch a specific page with custom page size.

```java theme={null}
Page<Recital> page = client.recitals().list("cra", 1, 50);
```

**Parameters**

| Parameter       | Type     | Default  | Description                   |
| --------------- | -------- | -------- | ----------------------------- |
| `frameworkSlug` | `String` | required | Framework slug, e.g. `"gdpr"` |
| `page`          | `int`    | `1`      | Page number (1-indexed)       |
| `perPage`       | `int`    | `20`     | Items per page (max 100)      |

**Returns** `Page<Recital>`

***

### `get()`

Fetch a single recital by number.

```java theme={null}
Recital r = client.recitals().get("gdpr", "4");

System.out.println(r.title());  // Right to the protection of personal data
System.out.println(r.text());   // Full recital text
```

**Parameters**

| Parameter       | Type     | Description                |
| --------------- | -------- | -------------------------- |
| `frameworkSlug` | `String` | Framework slug             |
| `recitalNumber` | `String` | Recital number, e.g. `"4"` |

**Returns** `Recital`

***

### `iter()`

Lazily iterate all recitals for a framework.

```java theme={null}
for (Recital r : client.recitals().iter("nis2")) {
    System.out.println("Recital " + r.number() + ": " + r.title());
}
```

**Returns** `Iterable<Recital>`

***

## Model

### `Recital`

| Field             | Type     | Description                |
| ----------------- | -------- | -------------------------- |
| `id()`            | `int`    | Internal numeric ID        |
| `number()`        | `String` | Recital number, e.g. `"4"` |
| `title()`         | `String` | Short title or topic       |
| `text()`          | `String` | Full recital text          |
| `frameworkSlug()` | `String` | Parent framework slug      |

***

## Examples

### Search recitals for a keyword

```java theme={null}
for (Recital r : client.recitals().iter("gdpr")) {
    if (r.text().contains("consent")) {
        System.out.println("Recital " + r.number() + ": " + r.title());
    }
}
```

### Build a context document for legal review

```java theme={null}
var sb = new StringBuilder();
sb.append("# CRA Recitals\n\n");
for (Recital r : client.recitals().iter("cra")) {
    sb.append("## Recital ").append(r.number()).append("\n");
    sb.append(r.text()).append("\n\n");
}
System.out.println(sb);
```
