SDK

Archyl fornisce SDK ufficiali per Node.js e Python. Entrambi sono wrapper leggeri attorno all'API REST che gestiscono per te autenticazione, serializzazione e gestione degli errori.

Installazione

Node.js

npm install @archyl/sdk

Python

pip install archyl-sdk

Avvio rapido

Node.js

import { ArchylClient } from "@archyl/sdk";

const client = new ArchylClient({
  apiKey: process.env.ARCHYL_API_KEY,
  organizationId: "your-org-id",
});

// List projects
const projects = await client.projects.list();

// Get C4 model
const model = await client.projects.getC4Model("project-id");

// Compute drift score
const drift = await client.governance.computeDrift("project-id");

// Create an ADR
const adr = await client.docs.createADR("project-id", {
  title: "Use PostgreSQL for persistence",
  status: "accepted",
  context: "We need a relational database for transactional data.",
  decision: "Adopt PostgreSQL 16 as the primary datastore.",
  consequences: "Team must learn PostgreSQL-specific features.",
});

Python

from archyl import ArchylClient

client = ArchylClient(
    api_key=os.environ["ARCHYL_API_KEY"],
    organization_id="your-org-id",
)

# List projects
projects = client.projects.list()

# Get C4 model
model = client.projects.get_c4_model("project-id")

# Compute drift score
drift = client.governance.compute_drift("project-id")

# Create an ADR
adr = client.docs.create_adr("project-id",
    title="Use PostgreSQL for persistence",
    status="accepted",
    context="We need a relational database for transactional data.",
    decision="Adopt PostgreSQL 16 as the primary datastore.",
    consequences="Team must learn PostgreSQL-specific features.",
)

Riferimento API

Progetti

Metodo Descrizione
projects.list() Elenca tutti i progetti dell'organizzazione
projects.get(projectId) Recupera un progetto tramite ID
projects.create(data) Crea un nuovo progetto
projects.getC4Model(projectId) Recupera il modello C4 completo di un progetto
projects.getAgentContext(projectId) Recupera il contesto architetturale (regole, tech radar, decisioni)

Modello C4

Metodo Descrizione
c4.createSystem(projectId, data) Crea un sistema
c4.updateSystem(projectId, systemId, data) Aggiorna un sistema
c4.createContainer(projectId, systemId, data) Crea un container
c4.updateContainer(projectId, containerId, data) Aggiorna un container
c4.createComponent(projectId, containerId, data) Crea un componente
c4.createRelationship(projectId, data) Crea una relazione tra elementi
c4.listRelationships(projectId) Elenca tutte le relazioni

Governance

Metodo Descrizione
governance.runConformanceCheck(projectId, data) Esegue le regole di conformità sui file
governance.getReport(checkId) Recupera il report completo di un controllo
governance.listRules() Elenca tutte le regole di conformità
governance.createRule(data) Crea una regola di conformità
governance.getStats(projectId?) Recupera le statistiche di conformità
governance.computeDrift(projectId) Calcola il punteggio di drift di un progetto
governance.getDriftScore(projectId) Recupera l'ultimo punteggio di drift
governance.getDriftHistory(projectId) Recupera l'andamento del punteggio di drift nel tempo

Metriche DORA

Metodo Descrizione
dora.getMetrics(projectId) Recupera le metriche DORA attuali
dora.getTrend(projectId) Recupera l'andamento delle metriche DORA nel tempo

Documentazione

Metodo Descrizione
docs.listADRs(projectId) Elenca gli Architecture Decision Record
docs.createADR(projectId, data) Crea un ADR
docs.listReleases(projectId) Elenca le release
docs.createRelease(projectId, data) Crea una release
docs.listChangeRequests(projectId) Elenca le richieste di modifica
docs.createChangeRequest(projectId, data) Crea una richiesta di modifica

Gestione degli errori

Entrambi gli SDK sollevano errori tipizzati con il codice di stato HTTP e i dettagli dell'errore restituiti dall'API.

Node.js

import { ArchylError } from "@archyl/sdk";

try {
  await client.projects.get("nonexistent-id");
} catch (error) {
  if (error instanceof ArchylError) {
    console.error(error.status); // 404
    console.error(error.code); // "NOT_FOUND"
    console.error(error.message); // "Project not found"
  }
}

Python

from archyl import ArchylError

try:
    client.projects.get("nonexistent-id")
except ArchylError as e:
    print(e.status)   # 404
    print(e.code)     # "NOT_FOUND"
    print(e.message)  # "Project not found"

Codici di stato comuni:

Codice Significato
400 Bad Request - Parametri non validi
401 Unauthorized - Chiave API non valida o mancante
403 Forbidden - Permessi insufficienti
404 Not Found - La risorsa non esiste
429 Too Many Requests - Limite di richieste superato
500 Internal Server Error

Configurazione

URL di base personalizzato

Per le istanze self-hosted di Archyl, passa un baseUrl personalizzato:

const client = new ArchylClient({
  apiKey: "your-api-key",
  organizationId: "your-org-id",
  baseUrl: "https://archyl.your-company.com/api/v1",
});
client = ArchylClient(
    api_key="your-api-key",
    organization_id="your-org-id",
    base_url="https://archyl.your-company.com/api/v1",
)

Codice sorgente

Entrambi gli SDK sono open source:

Prossimi passi