DocumentationOuvrir Moon AI
Parcourir la documentation

Rôles

Créer des rôles avec leurs permissions et les attribuer à des membres, des groupes ou des étiquettes par l’API d’administration, avec le catalogue des droits.

Sur cette page

Un rôle est un ensemble de permissions. Cinq rôles sont fournis ; l’organisation peut en créer d’autres et les attribuer à un membre, à un groupe (tous ses membres) ou à une étiquette (tous ceux qui la portent). Un membre détient l’union de son rôle de base et des rôles reçus.

Toutes les routes sont sous https://chat.realmoon.ai/api/v1/orgs/{org_id}. Portées : roles:read pour lire, roles:write pour écrire. Une écriture ne donne jamais plus que les permissions de la clé (403 role_escalation, avec permission).

PermissionsLien vers la section Permissions

Une permission a une étendue : org (toute l’organisation), managed_groups (les groupes dont la personne est gestionnaire) ou self (ses propres données).

PermissionÉtenduesPermet
org.settingsorgModifier les réglages de l’organisation.
org.delete, org.transferorgSupprimer, transférer l’organisation. Réservées au propriétaire, jamais dans un rôle créé.
billing.read, billing.manageorgLire, gérer la facturation.
members.readorg, managed_groupsVoir les membres (les adresses e-mail seulement en org).
members.inviteorg, managed_groupsInviter.
members.importorgImporter un fichier CSV.
members.suspend, members.removeorg, managed_groupsSuspendre, retirer.
members.assign_rolesorgAttribuer des rôles.
roles.manageorgCréer et modifier les rôles.
groups.create, groups.deleteorgCréer, supprimer des groupes.
groups.membersorg, managed_groupsAjouter et retirer des membres d’un groupe.
groups.rulesorgChanger les règles d’un groupe et la règle d’un groupe dynamique.
groups.instructionsorg, managed_groupsÉcrire les instructions d’un groupe.
labels.manageorgCréer et modifier les étiquettes.
labels.assignorg, managed_groupsPoser des étiquettes sur des membres.
policies.orgorgChanger les règles de l’organisation.
models.manageorgGérer les modèles de l’organisation.
connectors.manageorgGérer les serveurs MCP.
storage.manageorgGérer le stockage.
library.manageorgPartager les bases de connaissances.
catalog.publishorgPartager les agents.
usage.readorg, managed_groups, selfLire l’utilisation.
usage.exportorg, managed_groupsExporter l’utilisation.
security.manageorgDomaines, connexion unique, SCIM, comptes.
audit.read, audit.exportorgLire, exporter le journal d’audit.
licenses.read, licenses.manageorgLire, attribuer les licences.
api.manageorgGérer les clés d’administration et les webhooks. Jamais par une clé.

Le dictionnaire permissions d’un rôle associe une permission à une étendue :

JSON
{ "members.read": "managed_groups", "groups.members": "managed_groups", "usage.read": "self" }

Rôles fournisLien vers la section Rôles fournis

role_keyNomPermissionsAttribuable
ownerPropriétaireToutesnon (rôle de base)
adminAdministrateurToutes sauf org.delete, org.transfer et billing.manageoui, par le propriétaire seulement
managerSelon le type d’organisation : « Gestionnaire », « Enseignant », « Manager », « Chef de service »members.read, groups.members, groups.instructions, labels.assign, usage.read, en managed_groupsoui
billingFacturationbilling.read, licenses.readoui
memberSelon le type : « Membre », « Élève », « Collaborateur », « Agent »usage.read en selfnon (tout membre)

Le rôle manager agit sur les groupes dont la personne est gestionnaire (voir Groupes). Un rôle créé a pour role_key custom:<id>.

L’objet rôleLien vers la section L’objet rôle

JSON
{
  "id": "5c1e2f8a-7d4b-4c9e-9a1f-2b3c4d5e6f70",
  "org_id": "8c1f2a4e-5b6d-4e7f-9a0b-1c2d3e4f5a6b",
  "key": "prof_principal",
  "name": "Professeur principal",
  "description": "Gère sa classe et ses étiquettes.",
  "permissions": { "members.read": "managed_groups", "groups.members": "managed_groups", "labels.assign": "managed_groups" },
  "created_by": "1f2e3d4c-5b6a-4987-8a6b-5c4d3e2f1a0b",
  "created_at": 1793836800,
  "updated_at": 1793836800,
  "role_key": "custom:5c1e2f8a-7d4b-4c9e-9a1f-2b3c4d5e6f70",
  "builtin": false,
  "assignable": true
}

key est un identifiant lisible, unique dans l’organisation ; les attributions utilisent role_key.

Lister les rôlesLien vers la section Lister les rôles

GET /roles · roles:read

Paramètres : page, limit (pagination des rôles créés, triés par nom). La réponse ajoute builtin (les cinq rôles fournis, avec leurs permissions) et permission_catalog (chaque permission : key, scopes permis, owner_only).

Créer un rôleLien vers la section Créer un rôle

POST /roles · roles:write

ChampTypeObligatoireDescription
keychaîneoui2 à 40 caractères : lettres minuscules sans accent, chiffres et _. Pas owner, admin, manager, billing ni member.
namechaîneoui1 à 128 caractères.
descriptionchaînenon500 caractères au plus.
permissionsobjetnonPermissions et leur étendue. {} par défaut.
cURL
curl https://chat.realmoon.ai/api/v1/orgs/$ORG_ID/roles \
  -H "Authorization: Bearer $MOONAI_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "lecture_utilisation",
    "name": "Lecture de l’utilisation",
    "permissions": {"members.read": "org", "usage.read": "org"}
  }'
Python
import os
import requests

BASE = f"https://chat.realmoon.ai/api/v1/orgs/{os.environ['ORG_ID']}"
HEADERS = {"Authorization": f"Bearer {os.environ['MOONAI_ADMIN_KEY']}"}

role = requests.post(
    f"{BASE}/roles",
    headers=HEADERS,
    json={
        "key": "lecture_utilisation",
        "name": "Lecture de l’utilisation",
        "permissions": {"members.read": "org", "usage.read": "org"},
    },
    timeout=30,
)
role.raise_for_status()
print(role.json()["role_key"])
JavaScript
const BASE = `https://chat.realmoon.ai/api/v1/orgs/${process.env.ORG_ID}`;
const r = await fetch(`${BASE}/roles`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.MOONAI_ADMIN_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    key: 'lecture_utilisation',
    name: 'Lecture de l’utilisation',
    permissions: { 'members.read': 'org', 'usage.read': 'org' },
  }),
});
if (!r.ok) throw new Error(await r.text());
console.log((await r.json()).role_key);

Une organisation a 100 rôles créés au plus.

StatutcodeCause
400invalid_requestkey invalide ou réservée, nom vide, permission inconnue ou réservée au propriétaire, étendue non permise, plus de 100 rôles.
403role_escalationLe rôle donnerait une permission que la clé n’a pas.
409invalid_request« Un rôle avec cet identifiant existe déjà. »

Lire un rôleLien vers la section Lire un rôle

GET /roles/{role_id} · roles:read

role_id est l’identifiant d’un rôle créé (id, pas custom:<id>) ou la clé d’un rôle fourni (owner, admin…). Un rôle créé porte en plus assignment_count, son nombre d’attributions.

Modifier un rôleLien vers la section Modifier un rôle

PATCH /roles/{role_id} · roles:write

Champs facultatifs name, description (null l’efface) et permissions (remplace tout ; null retire toutes les permissions). key ne change pas. Il faut détenir les permissions actuelles du rôle et les nouvelles. Les membres qui ont le rôle reçoivent ses nouvelles permissions tout de suite. Un rôle fourni répond 404.

Supprimer un rôleLien vers la section Supprimer un rôle

DELETE /roles/{role_id} · roles:write

Supprime le rôle, ses attributions et ses règles. Réponse : {"success": true, "assignments_removed": 3}.

AttributionsLien vers la section Attributions

L’objet attributionLien vers la section L’objet attribution

JSON
{
  "id": "0d9c8b7a-6f5e-4d3c-8b2a-190817263544",
  "org_id": "8c1f2a4e-5b6d-4e7f-9a0b-1c2d3e4f5a6b",
  "role_key": "custom:5c1e2f8a-7d4b-4c9e-9a1f-2b3c4d5e6f70",
  "subject_type": "group",
  "subject_id": "3e4f5a6b-7c8d-4e9f-8a0b-1c2d3e4f5a6b",
  "created_by": "1f2e3d4c-5b6a-4987-8a6b-5c4d3e2f1a0b",
  "created_at": 1793836800,
  "subject_name": "Classe de 3A",
  "role_name": "Professeur principal"
}

subject_type vaut user, group ou label ; subject_name donne le nom du membre, du groupe ou clé = valeur de l’étiquette.

Lister les attributionsLien vers la section Lister les attributions

GET /role-assignments · roles:read

ParamètreTypeDescription
role_keychaîneUn rôle (manager, custom:<id>…).
subject_typechaîneuser, group ou label.
subject_idchaîneUn membre, un groupe ou une étiquette.
page, limitentierPagination.

Seules les attributions explicites sont listées, pas le rôle de base des membres.

Attribuer un rôleLien vers la section Attribuer un rôle

POST /role-assignments · roles:write

ChampTypeObligatoireDescription
role_keychaîneouiadmin, manager, billing ou custom:<id>.
subject_typechaîneouiuser, group ou label.
subject_idchaîneouiL’identifiant du membre (actif ou suspendu), du groupe ou de l’étiquette.

La réponse est l’attribution avec created : false si elle existait déjà (la requête est sans effet et répond aussi 200).

StatutcodeCause
400invalid_requestowner ou member (ils viennent du rôle de base) ; rôle inconnu.
400scim_group_roleUn groupe venu de l’annuaire SCIM ne donne pas de rôle.
403forbiddenNommer un administrateur (propriétaire seulement, donc jamais par une clé) ; s’attribuer un rôle ; viser le propriétaire.
403license_change_forbiddenLe changement ferait changer de lot de licences des membres ; il faut la permission de gérer les licences (portée licenses:write). Porte user_ids et count.
404not_foundMembre, groupe ou étiquette introuvable.
409directory_group_adminLe rôle admin sur un groupe rempli par l’annuaire ou la connexion unique.

Retirer une attributionLien vers la section Retirer une attribution

DELETE /role-assignments · roles:write

Désignez l’attribution par ?id=<id>, ou par un corps {role_key, subject_type, subject_id}. Réponse : {"success": true}. Retirer admin est réservé au propriétaire, et refusé s’il ne resterait aucun administrateur actif (409).

Voir aussiLien vers la section Voir aussi

Moon AI

Moon AI en action

0:00

À découvrir

Captures de chat.realmoon.ai du 29 octobre 2026, avec des données fictives.

Moon AI

Vos préférences

Aucun suivi publicitaire.

Ce site ne dépose aucun cookie publicitaire ni cookie de mesure d’audience : notre serveur compte les visites sans cookie. Votre thème et la fermeture de l’information sur les cookies sont mémorisés sur cet appareil.

L’application Moon AI possède ses propres réglages de confidentialité.