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.

LangagePackageMin version
TypeScript@arch-platform/sdkNode ≥ 18
Pythonarch-platform-sdkPython ≥ 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/sdk
pip install arch-platform-sdk

Quick 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

Voir aussi

On this page