Design Philosophy

Atomic Design

netapi follows Atomic Design principles, where complex systems are built from simple, composable parts:

Primitives

The smallest building blocks (auth, http, parsers)

Protocols

Transport-layer abstractions (RESTCONF, SSH)

Capabilities

Vendor-agnostic operations (backup, monitor)

Vendors

Platform-specific implementations (ISE, pfSense)

Workflows

Orchestrated multi-step operations

Zettelkasten Integration

Every component includes structured metadata linking to the Principia knowledge base:

"""
Cisco ISE ERS API Client.

---
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
created: 2026-01-10T17:00:00Z
stability: stable
type: vendor
category: cisco/ise
tags: [cisco-ise, ers-api, rest, authentication]

dependencies:
  primitives:
    - primitives/auth/basic.py
    - primitives/http/sync_client.py

principia:
  concepts:
    - principia:PRJ-ISE-HOME/ers-api.md
---
"""

Design Goals

  1. Atomic Composability - Build complex operations from simple, tested primitives

  2. Capability-First - Organize by what you DO (backup, monitor), not just who makes it

  3. Principia Integration - Bidirectional links between knowledge and executable code

  4. Secrets-Aware - Native dsec support across home/lab/staging/production

  5. Zero TUI Dependencies - Pure library — netapi-tui consumes this

Relationship to netapi-tui

# netapi-tui/pyproject.toml
[project]
dependencies = [
    "netapi>=0.1.0",    # This library
    "textual>=0.86",    # TUI framework
    "rich>=13.9",       # Terminal formatting
]

# Usage in netapi-tui
from netapi.vendors.cisco.ise import ERSClient

client = ERSClient.from_dsec('home.lab.ise.primary')
endpoints = client.endpoints.list()