axiom-create-org

Par axiomhq · skills

Provisionnez une organisation Axiom temporaire via un seul appel API non authentifié, stockez son token à usage unique en lieu sûr et transmettez l'URL de réclamation à l'utilisateur. À utiliser lorsqu'un agent a besoin d'une organisation Axiom et que l'utilisateur n'en a aucune configurée, ou qu'il en demande une nouvelle ou jetable.

npx skills add https://github.com/axiomhq/skills --skill axiom-create-org

axiom-create-org

POST https://api.axiom.co/v2/orgs/provision crée une véritable organisation Axiom et retourne un token API avec accès complet. L'organisation est supprimée après 24 heures sauf si un humain ouvre son URL de réclamation.

Avant de provisionner

  • Utilise un déploiement existant de ~/.axiom.toml s'il convient à la tâche.
  • Provisionne au maximum une organisation par tâche. Les agents peuvent créer au maximum 3 organisations par jour.
  • Indique à l'utilisateur que l'organisation est temporaire et doit être réclamée pour persister.

Provisionner et stocker le token

Le token et l'URL de réclamation sont retournés une seule fois et ne peuvent jamais être récupérés à nouveau. Sauvegarde-les avant de faire quoi que ce soit d'autre, et n'imprime jamais le token, n'affiche pas la réponse brute, ni ne commite l'une ou l'autre valeur.

Exécute ceci comme une seule commande pour que la réponse ne touche qu'un fichier temporaire privé :

umask 077
resp=$(mktemp)
code=$(curl -sS -o "$resp" -w '%{http_code}' -X POST https://api.axiom.co/v2/orgs/provision \
  -H 'Content-Type: application/json' -d '{"name": "<short-task-name>"}')
if [[ "$code" == 200 ]]; then
  jq -r '"\n[deployments.\(.id)]\nurl = \"https://api.axiom.co\"\ntoken = \"\(.token)\"\norg_id = \"\(.id)\"\nclaim_url = \"\(.claimUrl)\"\nexpires_at = \"\(.expiresAt)\""' \
    "$resp" >> ~/.axiom.toml && chmod 600 ~/.axiom.toml &&
    jq '{id, name, defaultEdgeDeployment, expiresAt}' "$resp" && rm -f "$resp"
else
  echo "provision failed: HTTP $code" >&2; cat "$resp" >&2; rm -f "$resp"
fi
  • Les champs du body sont optionnels ; {} est valide. name par défaut est Agent Org <hex>.
  • Omets edgeDeployment sauf si l'utilisateur en demande un ; la valeur par défaut est US East 1 (AWS).
  • 429 Too Many Requests signifie que la limite quotidienne est atteinte. Réessaye plus tard avec backoff ; ne boucle jamais.
  • Si l'ajout à ~/.axiom.toml échoue, la réponse reste dans $resp. Récupère le token avant de la supprimer.

Utiliser l'organisation

L'ID de l'organisation est le nom du déploiement, donc les autres skills Axiom fonctionnent comme d'habitude :

skills/axiom-alerting/scripts/axiom-api <org-id> GET /datasets

Pour les appels directs, envoie Authorization: Bearer <token> et X-Axiom-Org-Id: <org-id>. Lis le token de ~/.axiom.toml dans une variable ; ne le colle pas dans les commandes ou la sortie. L'organisation se comporte comme n'importe quelle organisation Axiom : créer des datasets, ingérer, requêter, et construire des dashboards et des monitors.

Transmettre l'URL de réclamation

La réclamation nécessite un humain connecté à Axiom ; il n'y a pas d'API pour cela. Essaye d'ouvrir l'URL de réclamation dans le navigateur de l'utilisateur, et affiche-la avec la date limite :

url=$(awk -F'"' -v d="[deployments.<org-id>]" '$0==d{f=1;next} /^\[/{f=0} f&&/^claim_url/{print $2}' ~/.axiom.toml)
{ open "$url" || { [[ -n "${DISPLAY:-}${WAYLAND_DISPLAY:-}" ]] && xdg-open "$url"; }; } >/dev/null 2>&1 && echo "opened claim URL in browser" || echo "no browser available"
awk -v d="[deployments.<org-id>]" '$0==d{f=1;next} /^\[/{f=0} f&&/^(claim_url|expires_at)/' ~/.axiom.toml

Affiche toujours l'URL de réclamation une fois dans ta réponse aussi : sur une machine distante, le navigateur peut s'ouvrir où l'utilisateur ne le voit pas. Indique à l'utilisateur :

  • N'importe qui qui ouvre le lien peut prendre possession. Ne le partage pas au-delà de l'utilisateur.
  • Non réclamée, l'organisation et toutes ses données, dashboards, monitors, et le token sont définitivement supprimés à expires_at (24 heures après le provisionnement).
  • La réclamation préserve tout ce que l'agent a construit, rend l'organisation permanente sur le plan Personnel, et garde le token fonctionnel. Le lien ne peut être utilisé qu'une fois.

Limites tant que non réclamée

  • 10 GB d'ingestion et 1 GB-heure de calcul de requête sur les 24 heures.
  • Peu de datasets : créer un 4ème dataset a échoué avec dataset license limit exceeded en test (non documenté). Mets les données connexes dans un seul dataset.
  • Les monitors et notifiants peuvent être créés, mais les notifications ne sont pas livrées.
  • La réclamation lève ces limites au niveau complet du plan Personnel et active les notifiants.

Si le token est perdu, l'organisation est inaccessible via l'API jusqu'à ce qu'un humain la réclame et crée un nouveau token.

Docs : https://axiom.co/docs/console/intelligence/agent-created-orgs

Skills similaires