# Liaison de votre logiciel à une société

## Cas d'une société déjà existante dans Mobilic

Vous pouvez communiquer votre `client_id` à un gestionnaire de cette société. Il pourra alors le rentrer dans sa console gestionnaire dans Mobilic :&#x20;

<figure><img src="/files/l9X6cjqDPLRyV4zmQLqX" alt=""><figcaption></figcaption></figure>

## Cas d'une société non existante dans Mobilic

Vous pouvez créer une société dans Mobilic et y être automatiquement lié, en faisant un appel API au endpoint [/protected](/guides/authentification/jetons-lies-a-un-rattachement.md#endpoint-protected) :

```graphql
mutation {
    company{
    softwareRegistration(
        clientId: 156432124,
        usualName: "Nom de la société",
        siren: "110068012",
        siret: "12234567005",
        nbWorkers: 10
      ){
        id
        name
    }
  }
}
```

Le paramètre `nbWorkers` est obligatoire et correspond au nombre de salariés de l'entreprise. Cette information est nécessaire pour permettre le calcul du certificat Mobilic. La valeur doit être un entier strictement supérieur à 0.

## Contraintes métier importantes

#### Restriction SIREN/SIRET

**⚠️ Contrainte métier** : Une entreprise ne peut pas être enregistrée à la fois de façon **globale** (représentant tous ses établissements) ET par **établissements spécifiques** (avec des SIRETs distincts).

**Explication**

Dans Mobilic, une entreprise peut être enregistrée selon deux modes :

1. **Mode global** : L'entreprise représente l'ensemble de ses établissements (aucun SIRET spécifique)
2. **Mode établissements** : L'entreprise est enregistrée pour des établissements spécifiques (avec SIRETs)

Ces deux modes sont **mutuellement exclusifs** pour un même SIREN.

**Cas d'erreur :**&#x20;

La mutation `softwareRegistration` échouera si :

* Une entreprise existe déjà en **mode global** pour le SIREN donné
* ET vous tentez de créer un établissement **spécifique** avec un SIRET

**Exemple complet**

**1. Création initiale en mode global (réussit)** :

```graphql
mutation {
    company {
        softwareRegistration(
            clientId: 156432124,
            usualName: "Société Globale",
            siren: "110068012",
            nbWorkers: 10
            # ← Pas de SIRET = mode global
        ) {
            id
            name
        }
    }
}
```

2. Tentative de création d'établissement spécifique (échoue) : <br>

```graphql
mutation {
      company {
          softwareRegistration(
              clientId: 156432124,
              usualName: "Établissement spécifique",
              siren: "110068012",
              siret: "11006801200123",  # ← SIRET spécifique
              nbWorkers: 10
          ) {
              id
              name
          }
      }
  }
```

Réponse d'erreur :&#x20;

```json
{
    "errors": [{
      "message": "Company already registered globally for this SIREN (representing all establishments). Cannot create 
  SIRET-specific establishments.",
      "locations": [{"line": 4, "column": 15}],
      "path": ["company", "softwareRegistration"],
      "extensions": {
        "code": "SIREN_ALREADY_SIGNED_UP"
      }
    }],
    "data": {
      "company": {
        "softwareRegistration": null
      }
   
```

### Solutions recommandées

Choisir une approche cohérente dès le départ :

Option 1 : **Approche globale**

* Créez l'entreprise sans SIRET pour représenter tous les établissements
* Idéal pour les entreprises avec gestion centralisée

Option 2 : **Approche par établissements**

* Créez directement chaque établissement avec son SIRET spécifique
* Idéal pour les entreprises avec gestion décentralisée par établissement

⚠️ Important : Une fois le mode choisi pour un SIREN, il ne peut plus être modifié. Planifiez votre stratégie d'enregistrement en fonction de vos besoins métier.


---

# 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/guides/authentification/jetons-lies-a-un-rattachement/liaison-de-votre-logiciel-a-une-societe.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.
