Rolebase Développeurs

Organisations

Procédures tRPC du routeur org : créer une organisation, changer son slug et son mode de gouvernance, exporter, importer, partager et archiver.

Procédures du routeur org, qui couvrent les actions au niveau de l’organisation allant au-delà de l’édition de lignes : créer une organisation avec son cercle racine, faire entrer et sortir les données, et archiver. Lire et modifier l’organisation elle-même passe par GraphQL sur l’entité org.

Mutation org.createOrg

Crée une organisation pour l’utilisateur connecté, qui en devient le member Owner, avec un role racine et le circle qui le place au sommet de l’organigramme. Les rôles de base et les modèles de réunion sont créés ensuite, pendant l’onboarding dans l’application.

InputTypeDescription
nameStringNom de l’organisation. Requis.
slugStringSlug d’URL, unique parmi toutes les organisations. Requis.

La procédure renvoie l’identifiant de la nouvelle organisation. Un slug déjà pris ou réservé répond CONFLICT.

const orgId = await trpc.org.createOrg.mutate({ name: 'Acme', slug: 'acme' })

Mutation org.updateOrgSlug

Change le slug d’URL d’une organisation, pour un Admin ou un Owner.

InputTypeDescription
orgIduuidOrganisation visée. Requis.
slugStringNouveau slug. Requis.

Comme pour createOrg, un slug déjà pris ou réservé répond CONFLICT. La procédure ne renvoie rien.

Mutation org.setGovernanceMode

Définit qui peut modifier l’organigramme. Réservée à l’Owner, d’où une procédure plutôt qu’une mise à jour GraphQL : Hasura ne sait pas restreindre une seule colonne aux Owners tout en laissant les Admins modifier les autres réglages.

InputTypeDescription
orgIduuidOrganisation visée. Requis.
governanceModegovernance_modeFree, Agile ou Strict. Requis.

Voir Permissions pour ce que chaque mode autorise.

await trpc.org.setGovernanceMode.mutate({ orgId, governanceMode: 'Strict' })

Mutation org.exportOrg

Exporte les données de l’organisation dans un fichier JSON ou Excel, pour l’Owner.

InputTypeDescription
orgIduuidOrganisation visée. Requis.
formatStringjson ou xlsx. Requis.
entities[String]Entités optionnelles à inclure, parmi decisions, tasks, threads et meetings. Requis, et peut être vide.

Les rôles, cercles et membres sont toujours inclus ; la liste entities ajoute les entités optionnelles avec leurs lignes liées (activités des fils, étapes et participants de réunion, etc.). La procédure renvoie { filename, contentType, data }, où data contient le document JSON pour json et un classeur en base64 pour xlsx.

const { filename, data } = await trpc.org.exportOrg.mutate({
orgId,
format: 'xlsx',
entities: ['tasks', 'meetings'],
})

Mutation org.exportOrgChart

Génère l’organigramme sous forme d’image PNG, pour tout membre y compris Readonly.

InputTypeDescription
orgIduuidOrganisation visée. Requis.
circleIduuidNe générer que ce rôle et ses descendants. Optionnel, l’organigramme complet par défaut.
viewStringVue à générer : AllCircles, SimpleCircles, FlatCircle ou Members. Requis.
widthIntCôté de l’image en pixels, entre 100 et 3000. Requis.
colorModeStringlight ou dark. Optionnel, light par défaut.
showAllNodesBooleanDessiner les membres et les cercles profonds quel que soit le niveau de zoom. Optionnel.

La procédure renvoie { data, contentType, filename } avec l’image en base64.

Mutation org.importOrg

Crée une organisation à partir d’un fichier déposé.

InputTypeDescription
providerStringFormat source. Holaspirit est celui pris en charge aujourd’hui. Requis.
fileIduuidIdentifiant du fichier déposé au préalable dans le stockage. Requis.

La procédure renvoie l’identifiant de l’organisation créée. Un fichier inaccessible ou un provider inconnu répond BAD_REQUEST.

Requête org.getPublicData

Lit l’organigramme d’une organisation qui le partage publiquement. Cette procédure ne demande aucune authentification.

InputTypeDescription
orgIduuidOrganisation visée. Requis.

Elle renvoie { circles, roles, members }, avec members vide sauf si l’organisation partage aussi les informations des membres. Une organisation qui ne partage pas son organigramme répond FORBIDDEN.

Mutation org.archiveOrg

Archive une organisation, pour l’Owner. L’abonnement Stripe, s’il existe, est supprimé au préalable. La procédure prend { orgId } et renvoie ce même identifiant.