SDKs officiels (TS + Python)
SDKs TypeScript et Python pour intégrer l'API publique en quelques lignes.
Deux SDKs officiels sont publiés pour accélérer l'intégration avec Architecture Platform sans gérer toi-même les détails HTTP, l'auth, et le parsing JSON.
| Langage | Package | Min version |
|---|---|---|
| TypeScript | @arch-platform/sdk | Node ≥ 18 |
| Python | arch-platform-sdk | Python ≥ 3.9 |
Les deux SDKs exposent les mêmes ressources (functions, applications, invitations) avec la même sémantique. La différence est uniquement idiomatique (camelCase TS, snake_case Python).
Installation
npm install @arch-platform/sdkpip install arch-platform-sdkQuick start
import { ArchClient } from "@arch-platform/sdk";
const arch = new ArchClient({ token: process.env.ARCH_PAT! });
// Lister les applications du référentiel
const apps = await arch.applications.list({ status: "ACTIVE" });
// Inviter un nouveau membre
const invite = await arch.invitations.invite({
email: "jane.doe@acme.com",
arbRole: "architect",
});import os
from arch_platform import ArchClient
arch = ArchClient(token=os.environ["ARCH_PAT"])
# Lister les applications du référentiel
apps = arch.applications.list(status="ACTIVE")
# Inviter un nouveau membre
invite = arch.invitations.invite(
email="jane.doe@acme.com",
arb_role="architect",
)Ressources
functions — Référentiel des fonctions métier
| Méthode (TS) | Méthode (Python) | Endpoint |
|---|---|---|
functions.tree() | functions.tree() | GET /referentiel/functions |
functions.flat() | functions.flat() | GET /referentiel/functions/flat |
functions.posi() | functions.posi() | GET /referentiel/functions/posi |
functions.get(id) | functions.get(id) | GET /referentiel/functions/{id} |
functions.search(q) | functions.search(q) | GET /referentiel/functions/search |
functions.byApplication(code) | functions.by_application(code) | GET /referentiel/functions/by-application/{code} |
functions.stats() | functions.stats() | GET /referentiel/functions/stats |
applications — Référentiel SI applications
| Méthode (TS) | Méthode (Python) | Endpoint |
|---|---|---|
applications.list(params) | applications.list(...) | GET /referentiel/applications |
applications.get(code) | applications.get(code) | GET /referentiel/applications/{code} |
invitations — Provisioning utilisateurs
Scope PAT write requis pour invite/revoke*, scope read pour list/members.
Le porteur du PAT doit être tenant-admin.
| Méthode (TS) | Méthode (Python) | Endpoint |
|---|---|---|
invitations.invite(req) | invitations.invite(email, arb_role) | POST /tenant/invitations |
invitations.list() | invitations.list() | GET /tenant/invitations |
invitations.members() | invitations.members() | GET /tenant/invitations/members |
invitations.revoke(id) | invitations.revoke(id) | DELETE /tenant/invitations/{id} |
invitations.revokeMember(sub) | invitations.revoke_member(sub) | DELETE /tenant/invitations/members/{userSub} |
Gestion d'erreurs
Le backend renvoie en cas d'erreur un body RFC 9457 (Problem Details). Les SDKs wrappent ça dans une exception typée :
import { ArchApiError, ArchNetworkError } from "@arch-platform/sdk";
try {
await arch.invitations.invite({ email: "dup@acme.com", arbRole: "viewer" });
} catch (e) {
if (e instanceof ArchApiError && e.errorCode === "ALREADY_INVITED") {
console.log("Déjà invité");
} else if (e instanceof ArchNetworkError) {
console.log("Retry plus tard");
} else {
throw e;
}
}from arch_platform import ArchApiError, ArchNetworkError
try:
arch.invitations.invite(email="dup@acme.com", arb_role="viewer")
except ArchApiError as e:
if e.error_code == "ALREADY_INVITED":
print("Déjà invité")
else:
raise
except ArchNetworkError:
print("Retry plus tard")Configuration avancée
const arch = new ArchClient({
token: "arc_pat_…",
baseUrl: "https://api-staging.arch-platform.com/api/v1", // env override
timeoutMs: 60000,
defaultHeaders: { "X-Request-Id": crypto.randomUUID() },
});arch = ArchClient(
token="arc_pat_…",
base_url="https://api-staging.arch-platform.com/api/v1",
timeout=60.0,
default_headers={"X-Request-Id": str(uuid4())},
)Le client Python supporte aussi le context manager pour fermer proprement les connexions HTTP :
with ArchClient(token="...") as arch:
apps = arch.applications.list()
# connexion fermée automatiquement