# Changelog

## 23/03/2026

Évolution de la génération des exports d'activités au format Excel. La génération des fichiers applique certaines règles en fonction de la période et du nombre de salariés sélectionnés. Ces règles ont un impact direct sur le nombre de fichiers générés et la répartition des données. Pour en savoir plus, la documentation est disponible [ici](https://developers.mobilic.beta.gouv.fr/~/revisions/6xhv0OjpCY5SLhsbD8Ha/exports)

## 09/12/2025

### **Paramètre `nbWorkers` obligatoire pour `softwareRegistration`**

Le paramètre `nbWorkers` est désormais **obligatoire** lors de l'enregistrement d'une nouvelle entreprise via la mutation `softwareRegistration` utilisée par les partenaires API.

**Pourquoi ce changement ?**

Lorsqu'une entreprise est créée via l'API partenaire sans renseigner le nombre de salariés, Mobilic ne dispose pas de cette information essentielle pour **calculer le certificat de l'entreprise**. Ce paramètre est donc maintenant requis pour garantir l'éligibilité au certificat dès l'inscription.

**Impact :**

* **Nouvelles inscriptions** : Le paramètre `nbWorkers` est requis
* **Entreprises existantes** : Aucun impact immédiat. Les entreprises déjà inscrites conservent leur configuration actuelle, mais peuvent mettre à jour cette information pour bénéficier du calcul de certificat

**Exemple d'inscription d'une nouvelle entreprise :**

```graphql
  mutation {
    company {
      softwareRegistration(
        clientId: 123
        usualName: "Mon Entreprise"
        siren: "123456789"
        nbWorkers: 10
      ) {
        id
      }
    }
  }
```

Validation :

* nbWorkers doit être un entier strictement supérieur à 0
* Une erreur sera retournée si le paramètre est absent, égal à 0, ou négatif

***

Mise à jour du nombre de salariés pour une entreprise existante

Pour les entreprises déjà inscrites qui n'ont pas de nombre de salariés renseigné, utilisez la mutation updateCompanyDetails afin de permettre le calcul du certificat :

```graphql
  mutation {
    company {
      updateCompanyDetails(
        companyId: 123
        newNbWorkers: 15
      ) {
        id
        name
      }
    }
  }
```

Cette mutation nécessite d'être administrateur de l'entreprise concernée.

## 07/07/2025 <a href="#id-17032021" id="id-17032021"></a>

### Validation automatique des missions

Nouvelle fonctionnalité : Les missions sont désormais automatiquement validées selon les délais suivants :

* Validation salarié : 1 jour après la première activité ;
* Validation gestionnaire : 2 jours ouvrés après la validation salarié

**Modification des missions auto-validées gestionnaire :**

\
Les gestionnaires peuvent modifier leurs missions automatiquement validées via l'API en utilisant la mutation ValidateMission avec le paramètre justification :

```graphql
 mutation ValidateMission(
    $missionId: Int!
    $usersIds: [Int]!
    $justification: OverValidationJustificationEnum
    $activityId: Int!
    $startTime: TimeStamp
    $endTime: TimeStamp
    $removeEndTime: Boolean
    $context: GenericScalar
  ) {
    activities {
      validateMission(
        missionId: $missionId
        usersIds: $usersIds
        justification: $justification # Obligatoire après auto-validation
        activityItems: [
          {
            edit: {
              activityId: $activityId
              startTime: $startTime
              endTime: $endTime
              removeEndTime: $removeEndTime
              context: $context
            }
          }
        ]
      ) {
        id
      }
    }
  }
```

Valeurs de justification disponibles :

* "personal" : Raisons personnelles
* "professional" : Raisons professionnelles
* "time\_off" : Congé

\
**Important :** Cette possibilité de modification n'existe que pour les validations automatiques gestionnaire. Les validations manuelles restent définitives et non modifiables.

## 16/06/2025 <a href="#id-17032021" id="id-17032021"></a>

Modification du comportement de la mutation `syncEmployment` , désormais le courriel de l'utilisateur retourné en réponse ne peux plus être masqué afin de rattacher plus facilement ceux qui avaient déjà un compte Mobilic aux editeurs tiers de logiciel.

## 21/05/2025 <a href="#id-17032021" id="id-17032021"></a>

Correction de la mutation `cancelMission` qui renvoyait une erreur lorsque la dernière activité de la mission n'avait pas de date de fin.

## 01/04/2025 <a href="#id-17032021" id="id-17032021"></a>

Correction du comportement de la mutation `syncEmployment` qui renvoyait dans certains cas un email "null" (lorsque l'utilisateur existait déjà, était déjà rattaché à l'entreprise et qu'il s'agissait du premier gestionnaire).

## 10/02/2025 <a href="#id-17032021" id="id-17032021"></a>

Ajout du champ `gender` pour un `User`

## 05/12/2024 <a href="#id-17032021" id="id-17032021"></a>

Le type `String` a été remplacé par le type `Email` pour les champs suivants :

* `Mutations/auth/login` → champ `email`
* `Mutations/employments/create_employment` → champ `mail`
* `Mutations/employments/batch_create_worker_employments` → champ `mails`

Exemple de changement à effectuer pour la mutation `login` :&#x20;

```graphql
mutation login($email: String!, $password: String!) {
  auth {
    login(email: $email, password: $password) {
      accessToken
      refreshToken
    }
  }
}
```

devient&#x20;

```graphql
mutation login($email: Email!, $password: String!) {
  auth {
    login(email: $email, password: $password) {
      accessToken
      refreshToken
    }
  }
}
```

***

The type `String` was replace by the type `Email` for the following fields:

* `Mutations/auth/login` → field `email`
* `Mutations/employments/create_employment` → field `mail`
* `Mutations/employments/batch_create_worker_employments` → field `mails`

Example of change you may have to do for the `login` mutation :&#x20;

```graphql
mutation login($email: String!, $password: String!) {
  auth {
    login(email: $email, password: $password) {
      accessToken
      refreshToken
    }
  }
}
```

become&#x20;

```graphql
mutation login($email: Email!, $password: String!) {
  auth {
    login(email: $email, password: $password) {
      accessToken
      refreshToken
    }
  }
}
```

## 02/10/2024 <a href="#id-17032021" id="id-17032021"></a>

* `CompanyOutput` dispose maintenant d'un champ `CurrentUsers` qui retourne une liste de `User` qui a travaillé ou travaille pour cette entreprise

## 12/08/2024 <a href="#id-17032021" id="id-17032021"></a>

* le endpoint `/companies/download_activity_report` envoie un email (ou plusieurs s'il y a trop de données) au gestionnaire qui fait l'appel, plutôt que de télécharger le fichier.

## 08/07/2024 <a href="#id-17032021" id="id-17032021"></a>

* La mutation `updateCompanyName` est renommée `updateCompanyDetails` et permet de mettre à jour le nom, le numéro de téléphone ainsi que le type d'activité de l'entreprise. On peut préciser si l'on souhaite appliquer le type d'activité aux salariés
* Une mutation `ChangePhoneNumber` permet de mettre à jour le numéro de téléphone d'un utilisateur
* Une mutation `ChangeEmployeeBusinessType` permet de modifier le type d'activité d'un salarié rattaché
* Une nouvelle route `POST` `/controllers/download_control_c1b` permet de télécharger le fichier C1B d'un contrôle
* Les objets `User` et `Company` ont un champ `phoneNumber`
* Les objets `Company` et `Employment` possèdent un champ `Business` (`BusinessType`, `TransportType`)
*

## 03/04/2024 <a href="#id-17032021" id="id-17032021"></a>

* Dans la mutation `logLocation`, il n'est plus autorisé de renseigner `kilometerReading` pour une mission sans véhicule

## 11/03/2024 <a href="#id-17032021" id="id-17032021"></a>

* Ajout d'un `ActivityType` : `OFF` qui correspond à une absence (congé, repos, formation, etc.)
* Ajout de la mutation `logHoliday` permettant de créer une mission avec une activité de type `OFF` et de la valider directement. [Cliquer ici pour voir la documentation pour créer une absence](/guides/enregistrement-des-activites.md#creation-dune-absence)
* Amélioration des performances (à l'aide de dataloaders)

## 13/02/2024 <a href="#id-17032021" id="id-17032021"></a>

* Suppression du paramètre `missionsDeleted` sur `User` remplacé par :&#x20;
* Ajout de l'attribut `include_deleted_missions` sur `missions` de `User`
* Correction de la mutation `syncEmployment` avec un utilisateur déjà lié plusieurs fois à l'entreprise

## 15/01/2024 <a href="#id-17032021" id="id-17032021"></a>

* Ajout du paramètre `missionsDeleted` sur `Company` et `User` (même format que `missions`)
* Ajout des paramètres `deletedAt` et `deletedBy` sur `missionsDeleted`

## 18/12/2023 <a href="#id-17032021" id="id-17032021"></a>

* Correction de la mutation **`activities.validateMission`** : il était (encore) possible pour un gestionnaire d'éditer et valider la mission d'un salarié qui ne l'avait pas encore validé, ceci n'est plus possible. À noter qu'il y a [3 exceptions à cette règle documentées ici](https://faq.mobilic.beta.gouv.fr/usages-et-fonctionnement-de-mobilic-gestionnaire/suivi-et-validation-du-temps-de-travail#en-tant-que-gestionnaire-je-peux-uniquement-modifier-et-valider-les-missions-validees-par-les-salari).

## 02/10/2023 <a href="#id-17032021" id="id-17032021"></a>

**Création d'une mutation `mutations.updateCompanyName`**

Permet de modifier le nom usuel d'une entreprise en envoyant le `new_name` et le `company_id`

## 14/09/2023 <a href="#id-17032021" id="id-17032021"></a>

* Ajout du paramètre `employee_version` dans l'export C1B (`POST /companies/generate_tachograph_files`)

## 31/07/2023 <a href="#id-17032021" id="id-17032021"></a>

* Correction de la mutation `syncEmployment` lorsqu'un email renseigné correspond à un utilisateur ayant déjà un compte Mobilic
* Pour l'environnement sandbox : les emails envoyés en masse (relance et/ou alerte) ne seront plus envoyés

## &#x20;07/02/2023 <a href="#id-17032021" id="id-17032021"></a>

**Création d'une mutation `account.resetPasswordConnected`**

Cette mutation permet de modifier le mot de passe d'un utilisateur directement en envoyant le `user_id` et le nouveau `password` . La requête ne fonctionne que pour l'utilisateur connecté.

**Modification des mutations relatives aux nouveaux mot de passe** `ResetPasswordConnected,` `ResetPassword` et `UserSignUp`

Elles acceptent désormais un argument password de type Password, et non un String

## 07/12/2022 <a href="#id-17032021" id="id-17032021"></a>

**Modification de la mutation `activities.validateMission`**\
Remplacement de l'attribut d'input userId par une liste usersIds, afin de pouvoir valider les missions en équipe en une fois en fournissant une liste de salariés.\
La valeur de retour de cette mutation est maintenant de type Mission

**Modification de la mutation `activities.logActivity`**\
Une activité peut être renseignée sur une mission via cette mutation uniquement si l'utilisateur qui fait l'appel a créé la mission, ou si cette activité le concerne.

**Modification de la mutation `activities.editActivity`**\
Une activité ne peut être modifié que par son créateur, ou par l'utilisateur concerné par l'activité.\
\
Suite aux 2 modifications ci dessus, pour modifier une mission avant validation gestionnaire, il faut utiliser l'attribut *activity\_items* de la mutation **`activities.validateMission`**<br>

## 17/10/2022 <a href="#id-17032021" id="id-17032021"></a>

**Correctif**\
Possibilité de rajouter un véhicule qui aurait été supprimé dans l'interface gestionnaire

## 16/08/2022 <a href="#id-17032021" id="id-17032021"></a>

**Création d'une mutation `activities.cancelMission`**\
Permet d'annuler toutes les activités pour un salarié et une mission donnés.

## 01/08/2022 <a href="#id-17032021" id="id-17032021"></a>

**Création d'une query `BulkActivity`**\
Permet d'envoyer une liste d'ajouts/modifications/annulations d'activités et de valider leur faisabilité. Les changements potentiels ne sont pas sauvegardés en base.

**Modification de la query `ValidateMission`**\
Ajout d'un argument `activity_items` représentant une liste d'ajouts/modifications/annulations d'activités à jouer avant la validation de la mission.\
Ajout d'un argument `expenditures_cancel_ids` représentant une liste de frais à supprimer avant la validation.\
Ajout d'un argument `expenditures_inputs` représentant une liste de frais à ajouter avant la validation.

## 20/06/2022 <a href="#id-17032021" id="id-17032021"></a>

**Il est désormais impossible pour un gestionnaire de détacher son propre compte de son entreprise.**

## 23/05/2022 <a href="#id-17032021" id="id-17032021"></a>

**Modification du format de l'onglet "Détails" des exports Excel.**

**Modification cosmétique du PDF d'export mensuel**

## 10/05/2022 <a href="#id-17032021" id="id-17032021"></a>

**Possibilité d'exporter les activités au format Excel dans un ZIP avec un fichier par employé**

* Rajout de l'attribut `one_file_by_employee` dans la route `/companies/download_activity_report` (False par défaut)

**Modification du format de l'onglet "Activités" des exports Excel.**

## 05/04/2022 <a href="#id-17032021" id="id-17032021"></a>

#### Possibilité de donner / retirer les droits administrateurs d'un utilisateur <a href="#ajout-des-lieux-de-debut-et-prise-de-service" id="ajout-des-lieux-de-debut-et-prise-de-service"></a>

* Rajout de la mutation `employments.changeEmployeeRole`

## 20/03/2022 <a href="#id-17032021" id="id-17032021"></a>

#### Rajout du temps de liaison comme type d'activité <a href="#ajout-des-lieux-de-debut-et-prise-de-service" id="ajout-des-lieux-de-debut-et-prise-de-service"></a>

* Possibilité d'enregistrer une activité de type "transfer" qui correspond au temps de liaison

**Possibilité de ne récupérer les données d'une liste d'entreprises spécifiques pour un utilisateur donné.**

* ajout du champs `company_ids` sur la query `admin_companies`

## 05/10/2021 <a href="#id-17032021" id="id-17032021"></a>

#### Possibilité d'enregistrer des frais par jour sur des missions de plusieurs jours. <a href="#ajout-des-lieux-de-debut-et-prise-de-service" id="ajout-des-lieux-de-debut-et-prise-de-service"></a>

* ajout du champs `spending_date` sur l'entité `Expenditure` représentant la date du frais.

## 17/03/2021 <a href="#id-17032021" id="id-17032021"></a>

#### Ajout des lieux de début et prise de service <a href="#ajout-des-lieux-de-debut-et-prise-de-service" id="ajout-des-lieux-de-debut-et-prise-de-service"></a>

* ajout de l'entité `BaseAddress` représentant une adresse postale.
* ajout de la mutation `activities.logLocation` pour enregistrer un lieu de début ou fin de mission.
* ajout des champs `startLocation` et `endLocation` sur l'entité `Mission`.

## 02/02/2021 <a href="#id-02022021" id="id-02022021"></a>

* une mission ne peut plus être validée par un gestionnaire tant qu'elle n'est pas encore terminée par le salarié.
* le salarié est mainetnant notifié par mail lorsque le gestionnaire valide avec modifications une mission.

## 19/01/2021 <a href="#id-19012021" id="id-19012021"></a>

#### Ajout des observations <a href="#ajout-des-observations" id="ajout-des-observations"></a>

* nouvelle entité `Comment` représentant une observation faite par un utilisateur à propos d'une mission.
* ajout d'un champ `comments` sur l'entité `Mission`.

#### Autres <a href="#autres" id="autres"></a>

* ajout d'un paramètre `onlyNonValidatedMissions` du champ `Company.missions`, qui permet de ne récupérer que les missions en attente de validation par un gestionnaire.

## 04/12/2020 <a href="#id-04122020" id="id-04122020"></a>

#### Ajout de champs <a href="#ajout-de-champs" id="ajout-de-champs"></a>

* ajout d'un champ `serviceDuration` sur l'entité `WorkDay`, donnant directement l'amplitude de la journée de travail (en secondes).
* ajout d'un champ `totalWorkDuration` sur l'entité `WorkDay`, donnant directement le temps de travail de la journée (en secondes).

## 12/11/2020 <a href="#id-12112020" id="id-12112020"></a>

#### Simplification des types en sortie <a href="#simplification-des-types-en-sortie" id="simplification-des-types-en-sortie"></a>

* harmonisation des opérations qui ne retournent aucun résultat via la création d'un type `Void`.
* l'opération `logActivity` retourne maintenant uniquement l'activité créée (et non plus la liste des activités de la mission).
* l'opération `editActivity` retourne maintenant uniquement l'activité modifiée (et non plus la liste des activités de la mission).
* l'opération `cancelActivity` ne retourne plus la liste des activités de la mission.
* l'opération `logExpenditure` retourne maintenant uniquement le frais créé (et non plus la liste de tous les frais de la mission).
* l'opération `cancelExpenditure` ne retourne plus la liste des frais de la mission.

## 29/10/2020 <a href="#id-29102020" id="id-29102020"></a>

#### Ajout de champs <a href="#ajout-de-champs-1" id="ajout-de-champs-1"></a>

* ajout d'un champ `adminedCompanies` sur l'entité `User`, permettant de récupérer la liste des entreprises sur lesquelles l'utilisateur a des droits de gestion.
* ajout d'un champ `workDays` sur l'entité `Company`, pour récupérer les journées de travail des salariés de l'entreprise
* ajout d'un champ `missions` sur l'entité `Company`, pour récupérer les missions de l'entreprise.
* ajout d'un champ `endTime` sur l'entité `Activity`, indiquant la date et l'heure de fin (si renseignées).
* ajout d'un champ `lastUpdateTime` sur l'entité `Activity`, indiquant la date et l'heure de dernière modification.
* ajout d'une opération `mission (id: Int)` de type `query` pour accéder aux informations d'une mission.

#### Changement de la logique d'enregistrement <a href="#changement-de-la-logique-denregistrement" id="changement-de-la-logique-denregistrement"></a>

* distinction entre [deux modes d'enregistrement](/guides/enregistrement-des-activites.md#enregistrement-dune-activite) : le mode tachygraphe (enregistrement d'un changement d'activité) et le mode classique (enregistrement d'une période d'activité). L'opération `logActivity` prend désormais un paramètre `switch` permettant de préciser le mode.
* les identifiants (id) des activités sont maintenant "persistants".

#### Limitation du volume de sortie <a href="#limitation-du-volume-de-sortie" id="limitation-du-volume-de-sortie"></a>

* ajout de paramètres pour [restreindre la période d'historique récupérée](/guides/consultation-du-temps-de-travail.md#choix-de-la-periode-dhistorique-recuperee) (pour un utilisateur ou une entreprise).

#### Divers <a href="#divers" id="divers"></a>

* gestion des erreurs par des [codes erreurs](/guides/gestion-des-erreurs.md#codes-erreurs).
* simplification du format d'entrée pour les horodatages : passage d'un format en millisecondes à un format en secondes.
* les horodatages de début et de fin d'activité sont désormais arrondis à la minute (inférieure).
* les jetons d'accès OAuth ont été rendus permanents (jusqu'à révocation par l'utilisateur) : il n'y a plus de date d'expiration.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.mobilic.beta.gouv.fr/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
