SDKs

Archyl fournit des SDKs officiels pour Node.js et Python. Ce sont deux surcouches légères de l'API REST qui gèrent pour vous l'authentification, la sérialisation et la gestion des erreurs.

Installation

Node.js

npm install @archyl/sdk

Python

pip install archyl-sdk

Démarrage rapide

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.",
)

Référence de l'API

Projets

Méthode Description
projects.list() Liste tous les projets de l'organisation
projects.get(projectId) Récupère un projet par son ID
projects.create(data) Crée un nouveau projet
projects.getC4Model(projectId) Récupère le modèle C4 complet d'un projet
projects.getAgentContext(projectId) Récupère le contexte architectural (règles, radar technologique, décisions)

Modèle C4

Méthode Description
c4.createSystem(projectId, data) Crée un système
c4.updateSystem(projectId, systemId, data) Met à jour un système
c4.createContainer(projectId, systemId, data) Crée un conteneur
c4.updateContainer(projectId, containerId, data) Met à jour un conteneur
c4.createComponent(projectId, containerId, data) Crée un composant
c4.createRelationship(projectId, data) Crée une relation entre des éléments
c4.listRelationships(projectId) Liste toutes les relations

Gouvernance

Méthode Description
governance.runConformanceCheck(projectId, data) Exécute les règles de conformité sur des fichiers
governance.getReport(checkId) Récupère le rapport complet d'une vérification
governance.listRules() Liste toutes les règles de conformité
governance.createRule(data) Crée une règle de conformité
governance.getStats(projectId?) Récupère les statistiques de conformité
governance.computeDrift(projectId) Calcule le score de dérive d'un projet
governance.getDriftScore(projectId) Récupère le dernier score de dérive
governance.getDriftHistory(projectId) Récupère l'historique du score de dérive dans le temps

Métriques DORA

Méthode Description
dora.getMetrics(projectId) Récupère les métriques DORA actuelles
dora.getTrend(projectId) Récupère l'évolution des métriques DORA dans le temps

Documentation

Méthode Description
docs.listADRs(projectId) Liste les Architecture Decision Records
docs.createADR(projectId, data) Crée un ADR
docs.listReleases(projectId) Liste les releases
docs.createRelease(projectId, data) Crée une release
docs.listChangeRequests(projectId) Liste les demandes de changement
docs.createChangeRequest(projectId, data) Crée une demande de changement

Gestion des erreurs

Les deux SDKs lèvent des erreurs typées qui contiennent le code de statut HTTP et le détail de l'erreur renvoyé par l'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"

Codes de statut courants :

Code Signification
400 Requête invalide - Paramètres invalides
401 Non autorisé - Clé API invalide ou manquante
403 Interdit - Permissions insuffisantes
404 Non trouvé - La ressource n'existe pas
429 Trop de requêtes - Limite de débit dépassée
500 Erreur interne du serveur

Configuration

URL de base personnalisée

Pour les instances Archyl auto-hébergées, passez une baseUrl personnalisée :

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",
)

Code source

Les deux SDKs sont open source :

Étapes suivantes