> For the complete documentation index, see [llms.txt](https://www.center.daxium-air.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.center.daxium-air.com/api-reference/doc-api/utilisateurs.md).

# Utilisateurs

Gérer les utilisateurs, les licences et les accès

## GET /users

> Lister tous les utilisateurs de la société

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"Pagination":{"description":"Enveloppe commune à toutes les collections paginées, envoyée à côté de la collection elle-même.","properties":{"server_time":{"description":"Horodatage du serveur au moment de la construction de la réponse.","type":"integer"},"total_count":{"description":"Nombre total d'éléments correspondant à la requête, toutes pages confondues.","type":"integer"},"total_pages":{"type":"integer"},"next_page":{"description":"Index de la page suivante. Absent sur la dernière.","type":"integer"}},"type":"object"},"User":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"email_canonical":{"description":"Forme normalisée de l'email, utilisée pour les recherches.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"last_login_at":{"type":"string","format":"date-time"},"last_login_mobile_at":{"description":"Dernière connexion depuis une application mobile.","type":"string","format":"date-time"},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"},"created_at":{"type":"integer"},"updated_at":{"type":"integer"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/users":{"get":{"tags":["users"],"summary":"Lister tous les utilisateurs de la société","operationId":"listAllUsers","parameters":[{"name":"page","in":"query","description":"Page de la vue d'ensemble.","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":"0","pattern":"\\d+"}},{"name":"per_page","in":"query","description":"Nombre de résultats par page (max. 100)","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":"10","pattern":"-?\\d+"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"responses":{"200":{"description":"Liste paginée des utilisateurs","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/User"}}},"type":"object"}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## GET /users/me

> Récupérer l'utilisateur authentifié

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"CurrentUserResponse":{"properties":{"company":{"$ref":"#/components/schemas/Company"},"user":{"$ref":"#/components/schemas/User"}},"type":"object"},"Company":{"properties":{"id":{"type":"integer"},"title":{"type":"string"},"sync_settings":{"type":"object"},"created_at":{"type":"integer"},"updated_at":{"type":"integer"}},"type":"object"},"User":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"email_canonical":{"description":"Forme normalisée de l'email, utilisée pour les recherches.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"last_login_at":{"type":"string","format":"date-time"},"last_login_mobile_at":{"description":"Dernière connexion depuis une application mobile.","type":"string","format":"date-time"},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"},"created_at":{"type":"integer"},"updated_at":{"type":"integer"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/users/me":{"get":{"tags":["users"],"summary":"Récupérer l'utilisateur authentifié","operationId":"getCurrentUser","parameters":[{"$ref":"#/components/parameters/XAcceptVersion"}],"responses":{"200":{"description":"L'utilisateur authentifié, accompagné de la société à laquelle il appartient","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentUserResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## POST /users/pushkey

> Enregistrer une clé de notification push d'un appareil

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"PushKeyInput":{"description":"Clé de notification push d'un appareil","properties":{"app_version":{"description":"Version de Daxium-Air","type":"string"},"id":{"description":"Identifiant unique de l'appareil","type":"string"},"key":{"description":"Clé push","type":"string"},"name":{"description":"Nom de l'appareil","type":"string"},"os":{"description":"Système d'exploitation de l'appareil (android ou iOS)","type":"string"},"os_version":{"description":"Version de l'OS","type":"string"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/users/pushkey":{"post":{"tags":["users"],"summary":"Enregistrer une clé de notification push d'un appareil","operationId":"sendPushKey","parameters":[{"$ref":"#/components/parameters/XAcceptVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushKeyInput"}}}},"responses":{"200":{"description":"La clé push a été enregistrée."},"400":{"description":"Corps JSON mal formé, ou propriété obligatoire manquante.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## Lister les utilisateurs d'un vertical métier

> Renseignez \`username\` pour restreindre la liste au(x) utilisateur(s) correspondant à cet email. La réponse conserve la même forme paginée dans tous les cas — ce n'est jamais un objet utilisateur seul.

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UserListResponse":{"properties":{"server_time":{"type":"integer","format":"int64"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"},"users":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceUser"}}},"type":"object"},"WorkspaceUser":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"subscription_id":{"description":"Identifiant de la souscription rattachée à l'utilisateur. Chaîne vide lorsqu'aucune n'est rattachée.","type":"string"},"system_groups":{"description":"Identifiants des groupes système auxquels appartient l'utilisateur (1 = admin, 2 = mobile, 3 = web).","type":"array","items":{"type":"integer"}},"groups":{"description":"Identifiants des groupes auxquels appartient l'utilisateur.","type":"array","items":{"type":"integer"}},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users":{"get":{"tags":["users"],"summary":"Lister les utilisateurs d'un vertical métier","description":"Renseignez `username` pour restreindre la liste au(x) utilisateur(s) correspondant à cet email. La réponse conserve la même forme paginée dans tous les cas — ce n'est jamais un objet utilisateur seul.","operationId":"listWorkspaceUsers","parameters":[{"name":"page","in":"query","description":"Page de la vue d'ensemble.","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":"0","pattern":"\\d+"}},{"name":"per_page","in":"query","description":"Nombre de résultats par page (max. 100)","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":"10","pattern":"-?\\d+"}},{"name":"username","in":"query","description":"Identifiant de connexion recherché","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":""}},{"name":"only_active","in":"query","description":"Retourner uniquement les utilisateurs actifs disposant d'une licence valide","required":false,"allowEmptyValue":false,"schema":{"type":"string","default":"false","pattern":"(true|false|1|0)"}},{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"responses":{"200":{"description":"Liste paginée des utilisateurs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## POST /{app\_short}/users

> Créer un utilisateur dans le vertical métier

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UserInput":{"description":"Corps de création ou de mise à jour d'un utilisateur. Fournissez `plainPassword`\npour une authentification Daxium, ou `ssoProvider` pour une authentification SSO.\n","required":["username","system_groups"],"properties":{"active":{"description":"Statut (actif / inactif)","type":"boolean"},"firstName":{"description":"Prénom","type":"string"},"force_login_password":{"description":"[Sociétés SSO uniquement] 0 pour désactiver, 1 pour forcer l'authentification login/mot de passe Daxium","type":"integer","enum":[0,1]},"groups":{"description":"Identifiants des groupes (voir l'API `/{app_short}/groups`)","type":"array","items":{"type":"integer"}},"lastName":{"description":"Nom","type":"string"},"locale":{"description":"Langue de l'utilisateur","type":"string","enum":["en","fr"]},"plainPassword":{"description":"Mot de passe. Les clés `first` et `second` sont obligatoires et doivent être identiques.\nRègles : au moins 1 majuscule, 1 minuscule, 1 chiffre, 8 caractères au total.\n","properties":{"first":{"type":"string","format":"password"},"second":{"type":"string","format":"password"}},"type":"object"},"ssoProvider":{"description":"[Sociétés SSO uniquement] Identifiant du fournisseur SSO à utiliser (fourni par Daxium)","type":"integer","nullable":true},"subscription_id":{"description":"UUID de l'abonnement (voir l'API `/subscriptions`)","type":"string"},"system_groups":{"description":"Groupes système : 1 = administrateur, 2 = accès mobile, 3 = accès web","type":"array","items":{"type":"integer"}},"username":{"description":"Adresse e-mail (identifiant de connexion), unique","type":"string","format":"email"}},"type":"object"},"WorkspaceUser":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"subscription_id":{"description":"Identifiant de la souscription rattachée à l'utilisateur. Chaîne vide lorsqu'aucune n'est rattachée.","type":"string"},"system_groups":{"description":"Identifiants des groupes système auxquels appartient l'utilisateur (1 = admin, 2 = mobile, 3 = web).","type":"array","items":{"type":"integer"}},"groups":{"description":"Identifiants des groupes auxquels appartient l'utilisateur.","type":"array","items":{"type":"integer"}},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users":{"post":{"tags":["users"],"summary":"Créer un utilisateur dans le vertical métier","operationId":"createWorkspaceUser","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInput"}}}},"responses":{"200":{"description":"Utilisateur créé","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUser"}}}},"400":{"description":"Le corps de la requête est invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## Créer plusieurs utilisateurs (asynchrone)

> Interrogez \`callbackUrl\` pour connaître l'état d'avancement du traitement.

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UserInput":{"description":"Corps de création ou de mise à jour d'un utilisateur. Fournissez `plainPassword`\npour une authentification Daxium, ou `ssoProvider` pour une authentification SSO.\n","required":["username","system_groups"],"properties":{"active":{"description":"Statut (actif / inactif)","type":"boolean"},"firstName":{"description":"Prénom","type":"string"},"force_login_password":{"description":"[Sociétés SSO uniquement] 0 pour désactiver, 1 pour forcer l'authentification login/mot de passe Daxium","type":"integer","enum":[0,1]},"groups":{"description":"Identifiants des groupes (voir l'API `/{app_short}/groups`)","type":"array","items":{"type":"integer"}},"lastName":{"description":"Nom","type":"string"},"locale":{"description":"Langue de l'utilisateur","type":"string","enum":["en","fr"]},"plainPassword":{"description":"Mot de passe. Les clés `first` et `second` sont obligatoires et doivent être identiques.\nRègles : au moins 1 majuscule, 1 minuscule, 1 chiffre, 8 caractères au total.\n","properties":{"first":{"type":"string","format":"password"},"second":{"type":"string","format":"password"}},"type":"object"},"ssoProvider":{"description":"[Sociétés SSO uniquement] Identifiant du fournisseur SSO à utiliser (fourni par Daxium)","type":"integer","nullable":true},"subscription_id":{"description":"UUID de l'abonnement (voir l'API `/subscriptions`)","type":"string"},"system_groups":{"description":"Groupes système : 1 = administrateur, 2 = accès mobile, 3 = accès web","type":"array","items":{"type":"integer"}},"username":{"description":"Adresse e-mail (identifiant de connexion), unique","type":"string","format":"email"}},"type":"object"},"CallbackUrlResponse":{"properties":{"callbackUrl":{"description":"URL à interroger pour suivre l'avancement du job asynchrone","type":"string"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users/multiple":{"post":{"tags":["users"],"summary":"Créer plusieurs utilisateurs (asynchrone)","description":"Interrogez `callbackUrl` pour connaître l'état d'avancement du traitement.","operationId":"createMultipleWorkspaceUsers","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserInput"}}}}},"responses":{"200":{"description":"Job asynchrone accepté","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackUrlResponse"}}}},"400":{"description":"Corps de requête vide, ou plus d'utilisateurs que le maximum configuré.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## Mettre à jour plusieurs utilisateurs (asynchrone)

> Interrogez \`callbackUrl\` pour connaître l'état d'avancement du traitement.

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UserInput":{"description":"Corps de création ou de mise à jour d'un utilisateur. Fournissez `plainPassword`\npour une authentification Daxium, ou `ssoProvider` pour une authentification SSO.\n","required":["username","system_groups"],"properties":{"active":{"description":"Statut (actif / inactif)","type":"boolean"},"firstName":{"description":"Prénom","type":"string"},"force_login_password":{"description":"[Sociétés SSO uniquement] 0 pour désactiver, 1 pour forcer l'authentification login/mot de passe Daxium","type":"integer","enum":[0,1]},"groups":{"description":"Identifiants des groupes (voir l'API `/{app_short}/groups`)","type":"array","items":{"type":"integer"}},"lastName":{"description":"Nom","type":"string"},"locale":{"description":"Langue de l'utilisateur","type":"string","enum":["en","fr"]},"plainPassword":{"description":"Mot de passe. Les clés `first` et `second` sont obligatoires et doivent être identiques.\nRègles : au moins 1 majuscule, 1 minuscule, 1 chiffre, 8 caractères au total.\n","properties":{"first":{"type":"string","format":"password"},"second":{"type":"string","format":"password"}},"type":"object"},"ssoProvider":{"description":"[Sociétés SSO uniquement] Identifiant du fournisseur SSO à utiliser (fourni par Daxium)","type":"integer","nullable":true},"subscription_id":{"description":"UUID de l'abonnement (voir l'API `/subscriptions`)","type":"string"},"system_groups":{"description":"Groupes système : 1 = administrateur, 2 = accès mobile, 3 = accès web","type":"array","items":{"type":"integer"}},"username":{"description":"Adresse e-mail (identifiant de connexion), unique","type":"string","format":"email"}},"type":"object"},"CallbackUrlResponse":{"properties":{"callbackUrl":{"description":"URL à interroger pour suivre l'avancement du job asynchrone","type":"string"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users/multiple":{"put":{"tags":["users"],"summary":"Mettre à jour plusieurs utilisateurs (asynchrone)","description":"Interrogez `callbackUrl` pour connaître l'état d'avancement du traitement.","operationId":"updateMultipleWorkspaceUsers","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserInput"}}}}},"responses":{"200":{"description":"Job asynchrone accepté","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackUrlResponse"}}}},"400":{"description":"Corps de requête vide, ou plus d'utilisateurs que le maximum configuré.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```

## GET /{app\_short}/users/{user\_id}

> Récupérer un utilisateur du vertical métier

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"WorkspaceUser":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"subscription_id":{"description":"Identifiant de la souscription rattachée à l'utilisateur. Chaîne vide lorsqu'aucune n'est rattachée.","type":"string"},"system_groups":{"description":"Identifiants des groupes système auxquels appartient l'utilisateur (1 = admin, 2 = mobile, 3 = web).","type":"array","items":{"type":"integer"}},"groups":{"description":"Identifiants des groupes auxquels appartient l'utilisateur.","type":"array","items":{"type":"integer"}},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users/{user_id}":{"get":{"tags":["users"],"summary":"Récupérer un utilisateur du vertical métier","operationId":"getWorkspaceUser","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","pattern":"[0-9]+"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"responses":{"200":{"description":"Objet utilisateur","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUser"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Aucun utilisateur avec cet identifiant dans le vertical métier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Modifier un utilisateur du vertical métier

> Seules les propriétés présentes dans le corps de la requête sont mises à jour.

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UserInput":{"description":"Corps de création ou de mise à jour d'un utilisateur. Fournissez `plainPassword`\npour une authentification Daxium, ou `ssoProvider` pour une authentification SSO.\n","required":["username","system_groups"],"properties":{"active":{"description":"Statut (actif / inactif)","type":"boolean"},"firstName":{"description":"Prénom","type":"string"},"force_login_password":{"description":"[Sociétés SSO uniquement] 0 pour désactiver, 1 pour forcer l'authentification login/mot de passe Daxium","type":"integer","enum":[0,1]},"groups":{"description":"Identifiants des groupes (voir l'API `/{app_short}/groups`)","type":"array","items":{"type":"integer"}},"lastName":{"description":"Nom","type":"string"},"locale":{"description":"Langue de l'utilisateur","type":"string","enum":["en","fr"]},"plainPassword":{"description":"Mot de passe. Les clés `first` et `second` sont obligatoires et doivent être identiques.\nRègles : au moins 1 majuscule, 1 minuscule, 1 chiffre, 8 caractères au total.\n","properties":{"first":{"type":"string","format":"password"},"second":{"type":"string","format":"password"}},"type":"object"},"ssoProvider":{"description":"[Sociétés SSO uniquement] Identifiant du fournisseur SSO à utiliser (fourni par Daxium)","type":"integer","nullable":true},"subscription_id":{"description":"UUID de l'abonnement (voir l'API `/subscriptions`)","type":"string"},"system_groups":{"description":"Groupes système : 1 = administrateur, 2 = accès mobile, 3 = accès web","type":"array","items":{"type":"integer"}},"username":{"description":"Adresse e-mail (identifiant de connexion), unique","type":"string","format":"email"}},"type":"object"},"WorkspaceUser":{"properties":{"id":{"type":"integer"},"email":{"description":"Adresse email, qui sert également d'identifiant de connexion.","type":"string"},"active":{"description":"Indique si le compte est actif et dispose d'une licence valide.","type":"boolean"},"first_name":{"type":"string"},"last_name":{"type":"string"},"subscription_id":{"description":"Identifiant de la souscription rattachée à l'utilisateur. Chaîne vide lorsqu'aucune n'est rattachée.","type":"string"},"system_groups":{"description":"Identifiants des groupes système auxquels appartient l'utilisateur (1 = admin, 2 = mobile, 3 = web).","type":"array","items":{"type":"integer"}},"groups":{"description":"Identifiants des groupes auxquels appartient l'utilisateur.","type":"array","items":{"type":"integer"}},"settings":{"description":"Réglages additionnels propres à l'utilisateur, comme la langue.","properties":{"locale":{"type":"string"}},"type":"object"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users/{user_id}":{"patch":{"tags":["users"],"summary":"Modifier un utilisateur du vertical métier","description":"Seules les propriétés présentes dans le corps de la requête sont mises à jour.","operationId":"updateWorkspaceUser","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","pattern":"[0-9]+"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInput"}}}},"responses":{"200":{"description":"Utilisateur mis à jour","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUser"}}}},"400":{"description":"Le corps de la requête est invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Aucun utilisateur avec cet identifiant dans le vertical métier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## GET /{app\_short}/users/multiple/callback/{callback\_id}

> Interroger un traitement d'utilisateurs asynchrone

```json
{"openapi":"3.0.0","info":{"title":"Daxium Air API","version":"v1.3"},"tags":[{"name":"users"}],"servers":[{"url":"https://api.daxium-air.com","description":"Production"}],"security":[{"oauth2":{}}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Envoyez l'access token sous la forme `Authorization: Bearer <token>`.","flows":{"password":{"tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}},"authorizationCode":{"authorizationUrl":"/oauth/v2/auth","tokenUrl":"/oauth/v2/token","refreshUrl":"/oauth/v2/token","scopes":{}}}}},"parameters":{"XAcceptVersion":{"name":"X-Accept-Version","in":"header","description":"Version de l'API à appliquer. Vaut `v1.0` si omise ; une valeur inconnue bascule sur la version la plus récente.","required":false,"schema":{"type":"string","default":"v1.3","enum":["v1.0","v1.1","v1.2","v1.3"]}}},"schemas":{"UsersCallbackResponse":{"properties":{"callbackDetails":{"properties":{"errors":{"description":"Erreurs par utilisateur. Format : {\"<username>\": {\"<champ>\": [\"<erreur>\"]}}","type":"array","items":{"type":"object","additionalProperties":true}},"nbErrors":{"description":"Nombre d'utilisateurs en erreur","type":"integer"},"nbRecordsDone":{"description":"Nombre d'utilisateurs déjà traités","type":"integer"},"nbRecordsTodo":{"description":"Nombre d'utilisateurs à traiter","type":"integer"},"nbSuccess":{"description":"Nombre d'utilisateurs traités avec succès","type":"integer"},"status":{"description":"Statut courant du job","type":"string","enum":["Planned","Running","Finished","Finished with errors","Failed","In timeout"]},"success":{"description":"Utilisateurs créés/mis à jour avec succès. Format : {\"<username>\": {\"id\": <user_id>}}","type":"array","items":{"type":"object","additionalProperties":true}}},"type":"object"}},"type":"object"},"ErrorResponse":{"description":"Corps d'erreur standardisé retourné par le subscriber d'exceptions REST.","properties":{"code":{"description":"Code d'erreur Daxium.","type":"string"},"message":{"type":"string"},"url":{"description":"Lien vers le code d'erreur dans la référence des erreurs.","type":"string"},"api_version":{"type":"string"},"infos":{"description":"Contexte additionnel sur l'erreur, lorsque l'exception en porte.","type":"array","items":{}},"server_time":{"type":"integer"}},"type":"object"}},"responses":{"Unauthorized":{"description":"Access token manquant ou invalide.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/{app_short}/users/multiple/callback/{callback_id}":{"get":{"tags":["users"],"summary":"Interroger un traitement d'utilisateurs asynchrone","operationId":"getMultipleUsersCallback","parameters":[{"name":"app_short","in":"path","description":"Nom court du vertical métier, tel qu'il apparaît dans l'URL du back-office.","required":true,"schema":{"type":"string"}},{"name":"callback_id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/XAcceptVersion"}],"responses":{"200":{"description":"Statut du job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersCallbackResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://www.center.daxium-air.com/api-reference/doc-api/utilisateurs.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
