Toutes les routes sont sous https://. Portées : org:read pour lire, org:write pour écrire, sauf pour l’annuaire (voir plus bas).
Vue d’ensembleLien vers la section Vue d’ensemble
GET / · org:read
{
"org": { "id": "8c1f2a4e-5b6d-4e7f-9a0b-1c2d3e4f5a6b", "name": "Lycée Victor-Hugo", "slug": "lycee-victor-hugo", "description": null, "logo_url": null, "org_kind": "education", "managed": true, "created_at": 1751328000 },
"members": { "active": 380, "suspended": 4 },
"invitations_pending": 25,
"groups": 42,
"usage_scope": "workspace",
"activity": {
"active_30d": 295, "requests_30d": 18422, "active_7d": 241, "requests_7d": 5100,
"month_pct_avg": 37.4,
"top": [{ "user_id": "41ab2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d", "name": "Léa Dupont", "month_pct": 98.2 }]
},
"alerts": []
}| Champ | Description |
|---|---|
members, invitations_pending, groups | Compteurs ; null quand la clé n’a pas la portée qui les lit (members:*, groups:*). |
usage_scope | workspace : l’utilisation des membres est comptée par l’organisation. personal : chaque membre utilise sa propre allocation, activity vaut null. |
activity | Membres actifs et nombre de demandes sur 30 et 7 jours, moyenne de la limite du mois utilisée (en pourcentage), et les 5 membres les plus proches de leur limite. Demande usage:read. |
alerts | La liste « À faire », comme GET /alerts. |
Liste « À faire »Lien vers la section Liste « À faire »
GET /alerts · org:read
Rend {"items": . Chaque élément : code, severity (danger, warning ou info), title, detail, href (page de l’administration), count, params. Une alerte n’est rendue que si la clé détient une des permissions qui la concernent.
code | Sens | params |
|---|---|---|
invitations_pending | Invitations en attente. | count |
domain_unverified | Domaines pas encore vérifiés. | count |
sso_not_configured | Organisation gérée sans connexion unique. | verified_domains |
contract_ending | Le contrat se termine dans 60 jours au plus, sans renouvellement. | date, days |
invoice_overdue | Factures en retard de paiement. | count |
license_pool_full | Un lot de licences est plein. | pool_id, plan_name, seats, used |
license_pool_nearly_full | Un lot est rempli à 95 % ou plus. | les mêmes et free |
license_members_unlicensed | Des membres actifs n’ont pas de licence. | count |
license_fallback_used | Des membres sont dans le lot de repli. | count |
members_without_group | Membres d’une organisation gérée qui ne sont dans aucun groupe. | count |
retention_will_delete | Conversations que la conservation va supprimer. | count, days |
org_models_base_unavailable | Modèles de l’organisation dont le modèle de base n’est plus proposé. | count |
org_models_not_shared | Modèles de l’organisation partagés avec personne. | count |
Pour un traitement automatique, appuyez-vous sur code et params : title et detail sont écrits pour la console.
Identité et réglagesLien vers la section Identité et réglages
LireLien vers la section Lire
GET /general · org:read
{
"id": "8c1f2a4e-5b6d-4e7f-9a0b-1c2d3e4f5a6b",
"name": "Lycée Victor-Hugo",
"slug": "lycee-victor-hugo",
"description": "Établissement public",
"logo_url": null,
"created_at": 1751328000,
"owner": { "id": "a11f3c5e-7b9d-4f1a-8c2e-4d6f8a0b2c4e", "name": "Claire Moreau", "email": "claire.moreau@ecole.fr" },
"is_personal": false,
"org_kind": "education",
"org_kinds": ["team", "education", "company", "public_sector", "other"],
"managed": true,
"outside_access": true,
"retention_days": 365,
"retention_applied": true,
"policy_version": 88,
"members_active": 380,
"retained_accounts": 0,
"has_active_contract": true,
"memory_policy": "allowed",
"can": { "memory": false, "edit": true, "policies": true, "transfer": false, "delete": false, "platform": false }
}| Champ | Description |
|---|---|
managed | Les fonctions d’organisation gérée sont actives : les règles s’appliquent. |
outside_access | true : les membres peuvent aussi utiliser Moon AI hors de l’organisation. |
retention_days | Durée de conservation des conversations, de 30 à 3 650 jours ; null : rien n’est supprimé. |
retained_accounts | Membres retenus dans l’organisation (organisation gérée avec l’accès extérieur fermé). |
has_active_contract | L’organisation a un contrat actif ; null s’il n’a pas pu être lu. |
can | Ce que la clé peut changer ici. transfer et delete sont toujours faux avec une clé. |
ModifierLien vers la section Modifier
PATCH / · org:write
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | chaîne | non | 1 à 128 caractères. |
slug | chaîne | non | 2 à 50 caractères : lettres minuscules, chiffres et tirets, sans tiret au début ni à la fin. |
description | chaîne | non | 2 048 caractères au plus ; vide ou null l’efface. |
logo_url | chaîne | non | Adresse http ou https ; vide ou null l’efface. |
org_kind | chaîne | non | team, education, company, public_sector ou other. Il change le nom des rôles fournis. |
managed | booléen | non | Activer les fonctions d’organisation gérée (contrat actif exigé). |
outside_access | booléen | non | false ferme l’accès hors de l’organisation (contrat actif exigé). |
retention_days | entier | non | 30 à 3 650 ; null retire la conservation. |
Seuls les champs envoyés sont traités. managed, outside_access et retention_days demandent en plus la portée rules:read ou rules:write. La réponse a la forme de la lecture.
curl -X PATCH https://chat.realmoon.ai/api/v1/orgs/$ORG_ID/general \
-H "Authorization: Bearer $MOONAI_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Lycée Victor-Hugo", "retention_days": 365}'import os
import requests
r = requests.patch(
f"https://chat.realmoon.ai/api/v1/orgs/{os.environ['ORG_ID']}/general",
headers={"Authorization": f"Bearer {os.environ['MOONAI_ADMIN_KEY']}"},
json={"name": "Lycée Victor-Hugo", "retention_days": 365},
timeout=30,
)
r.raise_for_status()
print(r.json()["retention_days"])const r = await fetch(`https://chat.realmoon.ai/api/v1/orgs/${process.env.ORG_ID}/general`, {
method: 'PATCH',
headers: { Authorization: `Bearer ${process.env.MOONAI_ADMIN_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Lycée Victor-Hugo', retention_days: 365 }),
});
if (!r.ok) throw new Error(await r.text());
console.log((await r.json()).retention_days);| Statut | code | Cause |
|---|---|---|
| 400 | invalid_request | Rien à modifier, champ invalide (fields), null pour org_kind, managed ou outside_access, règles invalides après le changement (errors). |
| 403 | managed_needs_contract | Activer managed ou fermer outside_access sans contrat actif. |
| 409 | slug_taken | L’identifiant est déjà pris par une autre organisation. |
Avec une organisation gérée et une durée de conservation, la suppression des conversations inactives depuis plus longtemps a lieu chaque nuit.
Aperçu de la conservationLien vers la section Aperçu de la conservation
GET / · org:read
Rend {"days": : le nombre de conversations du workspace qui n’ont pas été modifiées depuis days jours. days est obligatoire, de 30 à 3 650.
Réglages seulsLien vers la section Réglages seuls
GET / (org:read) et PATCH / (org:write) lisent et modifient org_kind, managed, outside_access et retention_days, avec les mêmes règles que /general, sans l’identité de l’organisation.
Annuaire des membresLien vers la section Annuaire des membres
L’annuaire règle ce qu’un membre voit des autres membres.
GET / · members:read
{ "value": null, "default": "groups", "effective": "groups", "options": ["all", "groups", "admins"] }| Valeur | Ce qu’un membre voit |
|---|---|
all | Tous les membres. |
groups | Les personnes de ses groupes et des groupes qu’il gère, et les administrateurs. |
admins | Les administrateurs seulement. |
value vaut null quand l’organisation suit le défaut : groups pour une organisation gérée ou d’enseignement, all sinon.
PUT / · org:write
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
value | chaîne | non | all, groups ou admins ; null ou absent revient au défaut. |