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

# List articles for a framework

> Returns paginated articles for a framework. Supports optional filtering
by tag slug and full-text search within article titles and content.




## OpenAPI

````yaml /openapi.yaml get /frameworks/{slug}/articles
openapi: 3.0.3
info:
  title: Law4Devs API
  version: 1.0.0
  description: >
    Structured EU regulatory compliance data for developers.


    All 19 major EU digital regulations — CRA, NIS2, DORA, GDPR, AI Act, eIDAS,

    DSA, DMA, Data Act, DGA, eIDAS2, CER, PSD2, MiCA, Cybersecurity Act,

    ePrivacy, RED, CSRD, NIS1 — parsed into structured articles, recitals,

    requirements, compliance deadlines, and tags.


    ## Response Conventions


    - **List responses** (paginated): `{ data: [...], meta: { api_version,
    total, page, per_page, pages }, links: { next, prev } }`

    - **List responses** (non-paginated): `{ data: [...], meta: { api_version,
    total } }`

    - **Detail responses**: `{ data: { ... } }`

    - **Error responses**: `{ error: { code: "ERROR_CODE", message:
    "Human-readable message" } }`


    ## Pagination


    All list endpoints accept `page` (≥ 1, default 1) and `per_page` (1–100,
    default 20).

    Invalid values return `400 INVALID_PARAM`.
servers:
  - url: https://demo.law4devs.eu/api/v1
    description: Demo (CRA only, no key required)
security: []
tags:
  - name: Health
    description: API and database health check
  - name: Frameworks
    description: EU regulatory frameworks (CRA, NIS2, GDPR, etc.)
  - name: Articles
    description: Individual articles within a framework
  - name: Recitals
    description: Recitals (preamble paragraphs) within a framework
  - name: Requirements
    description: Extracted compliance requirements with stakeholder role mappings
  - name: Annexes
    description: Technical annexes attached to a framework
  - name: Compliance
    description: Compliance deadlines and key dates
  - name: Stats
    description: Coverage statistics per framework
  - name: Search
    description: Full-text search across articles, recitals, and requirements
  - name: Tags
    description: Semantic tags used to classify content
  - name: Changelog
    description: Content update history and data freshness
  - name: Compare
    description: Cross-framework article comparison
paths:
  /frameworks/{slug}/articles:
    get:
      tags:
        - Articles
      summary: List articles for a framework
      description: |
        Returns paginated articles for a framework. Supports optional filtering
        by tag slug and full-text search within article titles and content.
      operationId: list_articles
      parameters:
        - $ref: '#/components/parameters/SlugParam'
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
        - name: tag
          in: query
          description: Filter articles that have this tag slug
          schema:
            type: string
            example: vulnerability-reporting
        - name: search
          in: query
          description: Full-text search within article title and content
          schema:
            type: string
            example: cybersecurity
      responses:
        '200':
          description: Paginated articles
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ArticleSummary'
                  meta:
                    $ref: '#/components/schemas/PaginationMeta'
                  links:
                    $ref: '#/components/schemas/PaginationLinks'
        '400':
          description: Invalid pagination parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Framework not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    SlugParam:
      name: slug
      in: path
      required: true
      description: Framework slug (e.g. `cra`, `nis2`, `gdpr`)
      schema:
        type: string
        pattern: ^[a-z0-9_]+$
        example: cra
    PageParam:
      name: page
      in: query
      description: Page number (1-based)
      schema:
        type: integer
        minimum: 1
        default: 1
        example: 1
    PerPageParam:
      name: per_page
      in: query
      description: Results per page (max 100)
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
        example: 20
  schemas:
    ArticleSummary:
      type: object
      properties:
        id:
          type: integer
          example: 1
        article_number:
          type: integer
          example: 1
        title:
          type: string
          example: Subject matter
        framework_slug:
          type: string
          example: cra
        position:
          type: integer
          example: 1
        paragraph_count:
          type: integer
          example: 0
        processed_date:
          type: string
          format: date-time
          nullable: true
        tags:
          type: array
          description: Full tag objects (list view includes all tag fields)
          items:
            $ref: '#/components/schemas/Tag'
    PaginationMeta:
      type: object
      properties:
        api_version:
          type: string
          example: '1.0'
        total:
          type: integer
          description: Total number of matching records
          example: 71
        page:
          type: integer
          example: 1
        per_page:
          type: integer
          example: 20
        pages:
          type: integer
          description: Total number of pages
          example: 4
    PaginationLinks:
      type: object
      properties:
        next:
          type: string
          nullable: true
          description: Relative URL for the next page, or null if on last page
          example: '?page=2&per_page=20'
        prev:
          type: string
          nullable: true
          description: Relative URL for the previous page, or null if on first page
          example: null
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error code
              example: NOT_FOUND
            message:
              type: string
              description: Human-readable error description
              example: Framework 'xyz' not found.
    Tag:
      type: object
      properties:
        id:
          type: integer
          example: 1
        slug:
          type: string
          example: vulnerability-reporting
        name:
          type: string
          example: Vulnerability Reporting
        description:
          type: string
          example: >-
            Requirements related to disclosing and reporting software
            vulnerabilities.
        keywords:
          type: array
          items:
            type: string
          example:
            - vulnerability
            - CVE
            - disclose
            - disclosure
        color:
          type: string
          example: '#e74c3c'
        created_at:
          type: string
          format: date-time

````