> ## 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.

# Annexes

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

## Overview

Annexes contain supplementary material referenced by articles — including technical specifications, classification tables, and approved lists. Use `client.annexes()` to access them.

***

## Methods

### `list(String frameworkSlug)`

Returns the first page of annexes for a framework.

```java theme={null}
Page<AnnexSummary> page = client.annexes().list("cra");

for (AnnexSummary a : page.data()) {
    System.out.println("Annex " + a.number() + ": " + a.title());
}
```

**Returns** `Page<AnnexSummary>`

***

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

Fetch a specific page with custom page size.

```java theme={null}
Page<AnnexSummary> page = client.annexes().list("cra", 1, 10);
```

**Parameters**

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

**Returns** `Page<AnnexSummary>`

***

### `get()`

Fetch full detail for a single annex including all sections.

```java theme={null}
Annex annex = client.annexes().get("cra", "I");

System.out.println(annex.title()); // Essential cybersecurity requirements
for (var section : annex.sections()) {
    System.out.println(section.reference() + ": " + section.text());
}
```

**Parameters**

| Parameter       | Type     | Description                          |
| --------------- | -------- | ------------------------------------ |
| `frameworkSlug` | `String` | Framework slug                       |
| `annexNumber`   | `String` | Annex identifier, e.g. `"I"`, `"II"` |

**Returns** `Annex`

***

### `iter()`

Lazily iterate all annexes for a framework.

```java theme={null}
for (AnnexSummary a : client.annexes().iter("cra")) {
    System.out.println("Annex " + a.number() + ": " + a.title());
}
```

**Returns** `Iterable<AnnexSummary>`

***

## Models

### `AnnexSummary`

Returned by `list()` and `iter()`.

| Field             | Type     | Description                  |
| ----------------- | -------- | ---------------------------- |
| `id()`            | `int`    | Internal numeric ID          |
| `number()`        | `String` | Annex identifier, e.g. `"I"` |
| `title()`         | `String` | Annex title                  |
| `frameworkSlug()` | `String` | Parent framework slug        |
| `sectionCount()`  | `int`    | Number of sections           |

### `Annex`

Returned by `get()`. Includes all `AnnexSummary` fields plus:

| Field        | Type                 | Description                |
| ------------ | -------------------- | -------------------------- |
| `sections()` | `List<AnnexSection>` | All sections of this annex |

### `AnnexSection`

| Field         | Type     | Description                             |
| ------------- | -------- | --------------------------------------- |
| `reference()` | `String` | Section reference, e.g. `"1"`, `"1(a)"` |
| `text()`      | `String` | Full section text                       |

***

## Examples

### List all CRA annexes

```java theme={null}
for (AnnexSummary a : client.annexes().iter("cra")) {
    System.out.printf("Annex %-4s %s (%d sections)%n",
        a.number(), a.title(), a.sectionCount());
}
```

### Extract all security requirements from CRA Annex I

```java theme={null}
Annex annexI = client.annexes().get("cra", "I");
System.out.println("# " + annexI.title() + "\n");
for (var section : annexI.sections()) {
    System.out.println(section.reference() + ". " + section.text());
}
```
