Aller au contenu

SDK et CLI

exoCortex distribue trois clients pour l’API REST v1. Vous les téléchargez directement depuis l’API et vous les ajoutez à votre projet :

Client Adresse Prérequis
JavaScript https://exocortex-api.ai-exo-cortex.com/sdk/exocortex.js Un environnement d’exécution avec fetch, par exemple Node.js 18 ou ultérieur
Python https://exocortex-api.ai-exo-cortex.com/sdk/exocortex.py Le paquet requests
CLI bash https://exocortex-api.ai-exo-cortex.com/sdk/exo-cli curl et jq

Tous lisent la clé API que vous leur transmettez ; aucun ne l’enregistre. Ils créent automatiquement une Idempotency-Key lorsque vous ouvrez un ticket.

import { ExoClient, ExoApiError } from './exocortex.js';
const exo = new ExoClient({ apiKey: process.env.EXO_API_KEY });
try {
const created = await exo.tickets.create({
subject: 'Printer offline',
description: 'Floor 2, room 204',
priority: 'Medium',
});
const { ticket } = await exo.tickets.get(created.ticket_key);
await exo.tickets.comment(ticket.key, 'Toner replaced.');
} catch (err) {
if (err instanceof ExoApiError && err.code === 'rate_limited') {
// réessayer après err.retryAfter secondes
} else throw err;
}

ExoApiError expose status, code, retryAfter et le corps de la réponse dans body.

import os
from exocortex import ExoClient, ExoApiError
exo = ExoClient(api_key=os.environ['EXO_API_KEY'])
try:
created = exo.tickets.create(subject='Printer offline', description='Floor 2, room 204')
ticket = exo.tickets.get(created['ticket_key'])['ticket']
exo.tickets.comment(ticket['key'], 'Toner replaced.')
except ExoApiError as err:
print(err.status, err.code, err.retry_after)
Fenêtre de terminal
curl -fsSL https://exocortex-api.ai-exo-cortex.com/sdk/exo-cli -o exo-cli && chmod +x exo-cli
export EXO_API_KEY='nhk.<keyid>.<secret>'
./exo-cli ticket-create "Printer offline" "Floor 2, room 204" Medium
./exo-cli ticket-get ACME-1042
./exo-cli ticket-comment ACME-1042 "Toner replaced."

Avec EXO_BASE_URL, vous pointez la CLI vers une autre adresse de l’API.

Les classes NHClient et NHError sont des alias dépréciés de ExoClient et ExoApiError. Le nouveau SDK envoie la clé dans Authorization: Bearer et n’envoie plus le tenant, que l’API déduit de la clé. Les helpers widgets et mapping ont été supprimés.