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

# Articles

> List, retrieve, and iterate articles with the Rust SDK.

## Methods

```rust theme={null}
// List articles for a framework
client.articles.list(framework_slug: &str, page: Option<u32>, per_page: Option<u32>)
    -> Result<Page<ArticleSummary>, Law4DevsError>

// Get a specific article
client.articles.get(framework_slug: &str, article_number: &str)
    -> Result<Article, Law4DevsError>

// Get related articles
client.articles.related(framework_slug: &str, article_number: &str, page: Option<u32>, per_page: Option<u32>)
    -> Result<Page<ArticleSummary>, Law4DevsError>

// Auto-paginate all articles
client.articles.iter(framework_slug: &str, per_page: u32)
    -> impl Stream<Item = Result<ArticleSummary, Law4DevsError>>
```

***

## List Articles

```rust theme={null}
let page = client.articles.list("gdpr", None, None).await?;
for a in &page.data {
    println!("Art. {}: {}", a.article_number, a.title);
}
```

***

## Get an Article

```rust theme={null}
let article = client.articles.get("gdpr", "5").await?;
println!("{}", article.content);

for para in &article.paragraphs {
    println!("[{}] {}", para.paragraph_ref, para.content);
}
```

***

## Related Articles

```rust theme={null}
let related = client.articles.related("gdpr", "5", None, None).await?;
for a in &related.data {
    println!("{}: {}", a.article_number, a.title);
}
```

***

## Auto-Paginate

```rust theme={null}
use futures::StreamExt;

let mut stream = Box::pin(client.articles.iter("nis2", 20));
while let Some(result) = stream.next().await {
    let a = result?;
    println!("Art. {} — {}", a.article_number, a.title);
}
```

***

## `ArticleSummary` Fields

| Field             | Type       | Description                 |
| ----------------- | ---------- | --------------------------- |
| `id`              | `u32`      | Internal ID                 |
| `framework_slug`  | `String`   | Parent framework slug       |
| `article_number`  | `String`   | Article number (e.g. `"5"`) |
| `title`           | `String`   | Article title               |
| `position`        | `u32`      | Order within the framework  |
| `paragraph_count` | `u32`      | Number of paragraphs        |
| `tags`            | `Vec<Tag>` | Associated compliance tags  |

***

## `Article` Additional Fields

| Field        | Type                    | Description           |
| ------------ | ----------------------- | --------------------- |
| `content`    | `String`                | Full article text     |
| `paragraphs` | `Vec<ArticleParagraph>` | Individual paragraphs |
