SDK

Le client TypeScript typé pour Node, le navigateur et les runtimes edge.

Le SDK TypeScript enveloppe l’API avec les types, les réessais et la pagination. Il est basé sur fetch et tourne sur Node 18+, le navigateur et les runtimes edge.

Shell
npm install @gheima/sdk
TypeScript
import { GheimaClient } from '@gheima/sdk';

const gheima = new GheimaClient({
  apiKey: process.env.GHEIMA_API_KEY!,
  // baseUrl, timeoutMs (30000), maxRetries (2) are all optional
});

// Paginated lists are async-iterable
for await (const service of gheima.services.list()) {
  console.log(service.name, service.url);
}

// Create and deploy
const svc = await gheima.services.create({
  projectId: 'prj_1',
  name: 'web',
  repoUrl: 'https://github.com/me/app',
});
const { deploymentId } = await gheima.services.deploy(svc.id);

// Stream logs
for await (const entry of gheima.services.streamLogs(svc.id)) {
  console.log(entry.line);
}

Ressources du SDK#

Le client expose un namespace par ressource. Méthodes principales :

account
get(), usage()
services
list(), get(id), create(), update(id), delete(id), deploy(id), deployments(id), rollback(id, deploymentId), restart/pause/resume(id), scale(id), metrics(id), logs(id), streamLogs(id)
services.env
list(id), set(id, key, value), remove(id, key)
databases
list(), get(id), create(), delete(id), reveal(id), resetPassword(id), query(id, statement)
databases.snapshots / .branches
list / create / restore|reset / delete (Postgres)
storage.buckets
list(), get(id), create(name), delete(id), setPublic(id, isPublic), reveal(id)
storage.objects
list(bucket, prefix?), presign(bucket, key, method?, expiresIn?), presignPut/presignGet, delete(bucket, key), rename(bucket, from, to)
projects
list(), get(id), create({ name }), delete(id)
cron
list(), get(id), create(), update(id), delete(id), runNow(id), toggle(id, enabled), runs(id)
domains
list(serviceId), add(serviceId, domain), verify(domainId), remove(domainId)
alerts
list(), create(), update(id), delete(id), events(id)
webhooks
list(), get(id), create(), update(id), delete(id), test(id)
apiKeys
list(), get(id), createKey(name, scopes?), revoke(id), delete(id)
activity / previews
activity.list(); previews.list(), delete(id), toggleAutoCreate(serviceId, enabled)

Pagination#

Les méthodes de liste renvoient un Paginator itérable de façon asynchrone — il parcourt chaque page pour vous. Ce n’est pas une promesse : ne l’attendez pas directement ; itérez-le, ou appelez .all() pour tout collecter, ou .page() pour une seule page.

TypeScript
// one item at a time, across all pages
for await (const db of gheima.databases.list()) console.log(db.name);

// or collect them
const all = await gheima.services.list().all();

// or a single page
const { data, pagination } = await gheima.activity.list().page();

Erreurs#

Les appels en échec lèvent une erreur typée qui étend GheimaError (avec status, code, message, details, requestId) :

GheimaAuthError
401 — clé manquante, malformée ou révoquée.
GheimaForbiddenError
403 — authentifié mais non autorisé (portée/rôle).
GheimaNotFoundError
404 — ressource introuvable.
GheimaConflictError
409 — conflit, par ex. un nom déjà utilisé.
GheimaValidationError
422 — entrée invalide ; details liste les champs.
GheimaRateLimitError
429 — limité ; retryAfter donne les secondes à attendre.
GheimaServerError
5xx — échec côté serveur.
TypeScript
import { GheimaRateLimitError, GheimaValidationError } from '@gheima/sdk';

try {
  await gheima.services.get('missing');
} catch (e) {
  if (e instanceof GheimaRateLimitError) console.log('retry after', e.retryAfter);
  else if (e instanceof GheimaValidationError) console.log(e.details);
  else throw e;
}

Vous pouvez scripter chaque déploiement, suivre les logs et gérer vos ressources depuis votre terminal, avec curl, ou en TypeScript typé — le tout avec une seule clé API.