Skip to main content

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.

Methods

// 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

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

Get an Article

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

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

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

Auto-Paginate

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

FieldTypeDescription
idu32Internal ID
framework_slugStringParent framework slug
article_numberStringArticle number (e.g. "5")
titleStringArticle title
positionu32Order within the framework
paragraph_countu32Number of paragraphs
tagsVec<Tag>Associated compliance tags

Article Additional Fields

FieldTypeDescription
contentStringFull article text
paragraphsVec<ArticleParagraph>Individual paragraphs