Aller au contenu

Créer un import et annoncer son périmètre

POST
/entreprise/v1/imports/signaletiques-salaries
curl --request POST \
--url https://example.com/entreprise/v1/imports/signaletiques-salaries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'X-Correlation-Id: example' \
--header 'X-Tenant-Id: example' \
--data '{ "source": { "systeme": "example", "emetteurId": "example", "referenceSalarie": "example", "version": "example", "dateObservation": "2026-04-15T12:00:00Z" }, "perimetre": { "type": "ENTREPRISE", "entrepriseId": "example", "groupeId": "example", "dateReference": "2026-04-15" }, "format": "CSV_UTF8", "modeMiseAJour": "DELTA", "nomFichier": "example", "tailleDeclaree": 1, "empreinteSha256": "example" }'
X-Tenant-Id
required
string
>= 1 characters

Le teneur de compte — injecté et signé par la passerelle, dérivé de l’identité authentifiée. Il n’est jamais fourni comme valeur libre dans l’URL ou le corps.

X-Correlation-Id
required
string
>= 1 characters

La corrélation de bout en bout — propagée jusqu’aux événements.

Idempotency-Key
required
string
>= 1 characters

La clé d’idempotence, de portée tenant + appelant + route + clé. Même clé et même corps : la réponse initiale. Même clé, corps différent : 409.

Media typeapplication/json
object
source
required
object
systeme
required

La source déclarée et autorisée — par exemple DSN, SIRH_GROUPE.

string
emetteurId
string
referenceSalarie
required

L’identifiant stable du salarié dans la source (matricule).

string
version
required

La version ou séquence comparable selon la politique de la source.

string
dateObservation
string format: date-time
perimetre
required

Un import a exactement un périmètre dans un seul tenant (RM-021). En GROUPE, chaque ligne désigne son entreprise, vérifiée membre à la date de référence ; une entreprise extérieure fait rejeter la ligne, sans jamais élargir le périmètre.

object
type
required
string
Allowed values: ENTREPRISE GROUPE
entrepriseId
string
groupeId
string
dateReference
string format: date
format
required

Des formats à lecture séquentielle seulement — CSV_UTF8 est obligatoire. Le service ne construit jamais un arbre complet en mémoire.

string
Allowed values: CSV_UTF8 NDJSON_UTF8
modeMiseAJour
required

En DELTA, un champ absent ne modifie rien et un null explicite efface si le champ l’autorise. En FULL_SNAPSHOT, le contenu est l’état complet connu de la source pour le périmètre annoncé. Dans les deux modes, une absence ne supprime jamais implicitement une personne ni un lien d’emploi.

string
Allowed values: DELTA FULL_SNAPSHOT
nomFichier
string
tailleDeclaree
integer format: int64
empreinteSha256
string

L’import est créé, en attente du fichier. Le rejeu d’une même clé de fichier et d’une même empreinte retourne l’import initial (RM-026).

Media typeapplication/json
object
importId
required
string
statut
required
string
Allowed values: EN_ATTENTE_FICHIER RECU VALIDATION PRET_A_TRAITER TRAITEMENT TERMINE TERMINE_AVEC_ANOMALIES REJETE
perimetre

Un import a exactement un périmètre dans un seul tenant (RM-021). En GROUPE, chaque ligne désigne son entreprise, vérifiée membre à la date de référence ; une entreprise extérieure fait rejeter la ligne, sans jamais élargir le périmètre.

object
type
required
string
Allowed values: ENTREPRISE GROUPE
entrepriseId
string
groupeId
string
dateReference
string format: date
empreinteSha256
string
nombreDePartitions
integer
compteurs

Les compteurs par statut de ligne, agrégés depuis les partitions — jamais obtenus en rechargeant les lignes.

object
key
additional properties
integer format: int64
Example
{
"statut": "EN_ATTENTE_FICHIER",
"perimetre": {
"type": "ENTREPRISE"
}
}

JSON invalide ou champ obligatoire absent (INVALID_REQUEST).

Media typeapplication/problem+json

Le format d’erreur du § 21.2 — application/problem+json.

object
type
string
title
string
status
required
integer
code
required
string
detail
string
instance
string
correlationId
string
errors
Array<object>
object
path
string
code
string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"code": "example",
"detail": "example",
"instance": "example",
"correlationId": "example",
"errors": [
{
"path": "example",
"code": "example"
}
]
}

Identité absente ou invalide (UNAUTHENTICATED).

Droit insuffisant (FORBIDDEN) — les 403 croisés entre familles sont prouvés par les tests d’assemblage.

Ressource absente dans le tenant courant — y compris une ressource d’un autre tenant, dont l’existence n’est jamais confirmée (404, jamais 403).

Media typeapplication/problem+json

Le format d’erreur du § 21.2 — application/problem+json.

object
type
string
title
string
status
required
integer
code
required
string
detail
string
instance
string
correlationId
string
errors
Array<object>
object
path
string
code
string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"code": "example",
"detail": "example",
"instance": "example",
"correlationId": "example",
"errors": [
{
"path": "example",
"code": "example"
}
]
}

IDEMPOTENCY_KEY_REUSED (même clé, corps différent), SOURCE_VERSION_CONFLICT (version incompatible) ou conflit d’empreinte d’import.

Media typeapplication/problem+json

Le format d’erreur du § 21.2 — application/problem+json.

object
type
string
title
string
status
required
integer
code
required
string
detail
string
instance
string
correlationId
string
errors
Array<object>
object
path
string
code
string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"code": "example",
"detail": "example",
"instance": "example",
"correlationId": "example",
"errors": [
{
"path": "example",
"code": "example"
}
]
}

Taille de fichier ou de ligne supérieure à la limite (FILE_TOO_LARGE).

Format ou encodage non pris en charge (UNSUPPORTED_FILE_FORMAT).

BUSINESS_RULE_VIOLATION ou IMPORT_SCOPE_VIOLATION — demande syntaxiquement valide mais incohérente au regard du métier ou du périmètre annoncé.

Media typeapplication/problem+json

Le format d’erreur du § 21.2 — application/problem+json.

object
type
string
title
string
status
required
integer
code
required
string
detail
string
instance
string
correlationId
string
errors
Array<object>
object
path
string
code
string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"code": "example",
"detail": "example",
"instance": "example",
"correlationId": "example",
"errors": [
{
"path": "example",
"code": "example"
}
]
}