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

# Get a single article

> Returns the full article including its content, ordered paragraphs,
and associated tags.




## OpenAPI

````yaml /openapi.yaml get /frameworks/{slug}/articles/{article_number}
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/{article_number}:
    get:
      tags:
        - Articles
      summary: Get a single article
      description: |
        Returns the full article including its content, ordered paragraphs,
        and associated tags.
      operationId: get_article
      parameters:
        - $ref: '#/components/parameters/SlugParam'
        - name: article_number
          in: path
          required: true
          description: Article number (e.g. 1, 2, 14)
          schema:
            type: integer
            example: 1
      responses:
        '200':
          description: Article with full content
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Article'
        '404':
          description: Framework or article 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
  schemas:
    Article:
      allOf:
        - $ref: '#/components/schemas/ArticleSummary'
        - type: object
          properties:
            content:
              type: string
              description: Full plain-text content of the article
            paragraphs:
              type: array
              items:
                type: object
                properties:
                  paragraph_ref:
                    type: string
                    example: '1'
                  content:
                    type: string
                  position:
                    type: integer
            tags:
              type: array
              items:
                $ref: '#/components/schemas/TagRef'
    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.
    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'
    TagRef:
      type: object
      description: Minimal tag reference embedded inside articles and requirements
      properties:
        slug:
          type: string
          example: vulnerability-reporting
        name:
          type: string
          example: Vulnerability Reporting
        color:
          type: string
          example: '#e74c3c'
    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

````