GET /external/v1/all
Description Affiche tous les pays de l'API externe.
Rôles Requis : list:country
Réponse Renvoie une liste d'objets country.
GET /external/v1/:countryId
Description Affiche un pays spécifique de l'API externe par ID.
Rôles Requis : get:country
Paramètres
countryId (string) : L'ID du country.Réponse Renvoie un seul objet country.
POST /external/v1
Description Crée une campagne d'évaluation externe pouvant ensuite être liée à une ou plusieurs évaluations.
Rôles Requis : create:evaluationCampaign
Payload
const payload = {
display: 'Campagne annuelle 2026',
startDate: '2026-01-01T00:00:00.000Z',
endDate: '2026-12-31T23:59:59.999Z',
authorId: '<resourceUUID>', // propriétaire de la campagne (optionnel)
restrictedToCountryIds: ['FR', 'BE'], // liste optionnelle des pays autorisés
}
Réponse Renvoie l'objet campagne créé.
GET /external/v1/all
Description Liste les campagnes d'évaluation triées par date de création.
Rôles Requis : list:evaluationCampaign
Paramètres de requête
{
page: 0,
limit: 50, // max 200
search: '', // libellé de la campagne
closedStatus: 'all', // all | open | closed
}
Réponse
Renvoie { page, limit, campaigns }.
GET /external/v1/:campaignId
Description Retourne une campagne d'évaluation unique.
Rôles Requis : get:evaluationCampaign
Paramètres
campaignId (string) : L'identifiant de la campagne.Réponse Renvoie un objet campagne.
PUT /external/v1/:campaignId
Description Modifie une campagne d'évaluation existante. Le payload est partiel : seuls les champs fournis sont mis à jour.
Rôles Requis : update:evaluationCampaign
Paramètres
campaignId (string) : L'identifiant de la campagne à modifier.Payload
const payload = {
display: 'Campagne annuelle 2026 mise à jour',
startDate: '2026-01-01T00:00:00.000Z',
endDate: '2026-12-31T23:59:59.999Z',
authorId: '<resourceUUID>', // propriétaire de la campagne (optionnel)
restrictedToCountryIds: ['FR', 'BE'], // [] pour retirer les restrictions par pays
}
Réponse Renvoie l'objet campagne mis à jour.
PUT /external/v1/:campaignId/close
Description Clôture une campagne ouverte. Une campagne clôturée ne peut plus être liée à de nouvelles évaluations.
Rôles Requis : update:evaluationCampaign
Paramètres
campaignId (string) : L'identifiant de la campagne à clôturer.Réponse Renvoie l'objet campagne mis à jour.
POST /external/v1
Description Crée une évaluation 360°.
Rôles Requis : create:evaluation
Payload
const payload = {
officeId: '<officeUUID>', // officeId de la ressource créatrice de l'évaluation
countryId: 'FR', // countryId de la ressource créatrice de l'évaluation
display: 'Title test', // titre de l'évaluation
authorId: '<resourceUUID>', // resourceId de l'utilisateur créateur de l'évaluation
formularId: '<formularUUID>', // formularId de l'évaluation
isBeforeAfter: false, // l'évaluation est-elle before ou after (devrait être false pour vous)
resourceId: '<resourceUUID>', // resourceId de la ressource évaluée
isPeriod: true, // l'évaluation est-elle une période (devrait être true pour vous pour une évaluation 360°)
evaluationType: 0, // 0 -> Évaluation par évaluateurs, 1 --> Évaluation par évaluateur
is360: true, // est-ce une évaluation 360° (devrait être true pour vous)
startDate: '2022-01-01T00:00:00.000Z', // date de début de l'évaluation
endDate: '2022-12-31T23:59:59.009Z', // date de fin de l'évaluation
doNotSendMail: true, // do not send mail devrait être true pour vous (car évaluation 360°)
disableAbandon: false, // devrait être true si les évaluateurs ne doivent pas pouvoir abandonner l'évaluation
managedBy: ['<resourceUUID>'], // tableau de resourceId des évaluateurs
authorOnly: '<resourceUUID>', // généralement un admin. Seule cette personne et l'évaluateur peuvent voir le contenu
campaignId: '<campaignUUID>', // campagne d'évaluation ouverte liée à cette évaluation (optionnel)
trainingExecutionDate: '2023-01-01T22:59:59.009Z' // utilisé pour la logique d'affichage du training
}
campaignId est renseigné, la campagne doit exister dans votre société et être encore ouverte.POST /external/v1
Description Crée une évaluation Project Stereo.
Rôles Requis : create:evaluation
Payload
const payload = {
isPeriod: false,
startDate: '2022-07-03T22:00:00.000Z',
endDate: '2022-12-29T23:00:00.000Z',
display: 'test eval stereo',
officeId: '<officeUUID>',
countryId: 'FR',
authorId: '<resourceUUID>',
projectId: '<projectUUID>',
resourceId: '<resourceUUID>',
managedBy: ['<resourceUUID>', '<resourceUUID>'],
authorOnly: null,
formularId: '<formularUUID>',
formularIdAfter: '<formularUUID>',
signature: true,
isStereo: true,
isBeforeAfter: true,
is360: false,
campaignId: '<campaignUUID>', // campagne d'évaluation ouverte liée à cette évaluation (optionnel)
doNotSendMail: false,
disableAbandon: false,
sharedWith: [{
resourceId: '<resourceUUID>',
deadline: undefined, // peut être undefined ou timestamp
}],
}
PUT /external/v1
Description Met à jour une évaluation existante. Prend en charge un objet unique ou un tableau (bulk).
Rôles Requis : update:evaluation
Payload
// Mise à jour unique
const payload = {
_id: '<evaluationUUID>',
campaignId: '<campaignUUID>', // optionnel : rattacher l'évaluation à une campagne
// autres champs à mettre à jour
}
// Mise à jour en masse (Bulk)
const payloadBulk = [
{ _id: '<evaluationUUID>', campaignId: '<campaignUUID>', ... },
{ _id: '<evaluationUUID>', ... },
]
campaignId: null pour retirer le lien existant entre une évaluation et une campagne.GET /external/v1
Description Liste les évaluations triées par date de création.
Rôles Requis : list:evaluation
Paramètres de requête (Query Parameters)
{
page: 0,
limit: 50, // max 200
search: '', // nom d'affichage de l'évaluation
evaluationIds: [], // tableau d'ids d'évaluation
resourceIds: [] // tableau d'ids de ressource
}
GET /external/v1/:moduleId/all
Description Affiche tous les formulars de l'API externe pour un ID de module donné.
Rôles Requis : list:formular
Paramètres
moduleId: L'ID du module.Réponse Renvoie une liste d'objets formular.
GET /external/v1/:formularId
Description Affiche un formular spécifique de l'API externe par ID.
Rôles Requis : get:formular
Paramètres
formularId: L'ID du formular.Réponse Renvoie un seul objet formular.
GET /external/v1/all
Description Affiche tous les jobs de l'API externe.
Rôles Requis : list:job
Réponse Renvoie une liste d'objets job.
GET /external/v1/:jobId
Description Affiche un job spécifique de l'API externe par ID.
Rôles Requis : get:job
Paramètres
jobId: L'ID du job.Réponse Renvoie un seul objet job.
GET /external/v1
Description Obtient la liste des job categories depuis la source externe.
Rôles Requis : list:jobCategory
Paramètres de requête (Query Parameters)
page (number) : Numéro de page (défaut : 0).limit (number) : Éléments par page (défaut : 50, max : 200).search (string) : Terme de recherche pour le nom d'affichage.jobCategoryIds (array | string) : Filtrer par des IDs de job category spécifiques.Réponse
{
"page": 0,
"limit": 50,
"jobCategories": []
}
PUT /external/v1
Description Met à jour les job categories. Accepte un tableau d'objets ou un objet unique.
Rôles Requis : update:jobCategory
Payload
[
{
_id: 'string', // requis
// autres champs à mettre à jour
}
]
Réponse Renvoie les objets job category mis à jour.
GET /external/v1/all
Description Affiche tous les offices de l'API externe.
Rôles Requis : list:office
Réponse Renvoie une liste d'objets office.
GET /external/v1/:officeId
Description Affiche un office spécifique de l'API externe par ID.
Rôles Requis : get:office
Paramètres
officeId: L'ID de l'office.Réponse Renvoie un seul objet office.
POST /external/createCandidate/v1
Description Crée un nouveau candidat depuis une source externe.
Rôles Requis : create:candidate
Payload
{
email: 'string', // requis
firstname: 'string', // requis
lastname: 'string', // requis
cvFile: {
Name: 'string',
Content: 'base64 string',
ContentType: 'string'
}, // requis
coverLetterFile: {
Name: 'string',
Content: 'base64 string',
ContentType: 'string'
}, // optionnel
experiences: [], // tableau d'expériences optionnel
degrees: [], // tableau de diplômes optionnel
countryId: 'string', // optionnel
officeId: 'string', // optionnel
phoneNumber1: 'string', // optionnel
phoneNumber2: 'string', // optionnel
candidateSource: 99, // optionnel, défaut 99
birthdate: 'Date', // optionnel
linkedin: 'string', // optionnel
nationalities: [], // tableau de chaînes optionnel
message: 'string', // optionnel
documents: [], // tableau de documents optionnel
evaluationForm: 'string', // optionnel
positionId: 'string', // optionnel
recommendedBy: {} // objet optionnel
}
Réponse Renvoie l'objet recruitment process créé.
GET /external/v1/all
Description Affiche toutes les resources de l'API externe (peuplées avec l'email du userId).
Rôles Requis : list:resource-all
Réponse Renvoie une liste d'objets resource.
GET /external/v1/:resourceId
Description Affiche une resource spécifique de l'API externe par ID.
Rôles Requis : get:resource
Paramètres
resourceId: L'ID de la resource.Réponse Renvoie un seul objet resource.
PUT /external/v1
Description Met à jour une resource. Accepte un tableau d'objets ou un objet unique.
Rôles Requis : update:resource
Payload
[
{
_id: 'string', // requis
// autres champs à mettre à jour
}
]
Réponse Renvoie les objets resource mis à jour.
GET /external/v1
Description Obtient la liste des skills depuis la source externe.
Rôles Requis : list:skill
Paramètres de requête (Query Parameters)
page (number) : Numéro de page (défaut : 0).limit (number) : Éléments par page (défaut : 50, max : 200).search (string) : Terme de recherche pour le nom d'affichage.skillIds (array | string) : Filtrer par des IDs de skill spécifiques.Réponse
{
"page": 0,
"limit": 50,
"skills": []
}
PUT /external/v1
Description Met à jour les skills. Accepte un tableau d'objets ou un objet unique.
Rôles Requis : update:skill
Payload
[
{
_id: 'string', // requis
// autres champs à mettre à jour
}
]
Réponse Renvoie les objets skill mis à jour.
POST /external/v1
Description Crée un skill depuis une source externe.
Rôles Requis : create:skill
Payload
[
{
display: 'string', // requis
authorId: 'string', // requis (Resource ID)
categoryId: 'string' // requis (SkillCategory ID)
}
]
Réponse Renvoie les objets skill créés.
GET /external/v1
Description Obtient la liste des skill categories depuis la source externe.
Rôles Requis : list:skillCategory
Paramètres de requête (Query Parameters)
page (number) : Numéro de page (défaut : 0).limit (number) : Éléments par page (défaut : 50, max : 200).search (string) : Terme de recherche pour le nom d'affichage.skillCategoryIds (array | string) : Filtrer par des IDs de skill category spécifiques.Réponse
{
"page": 0,
"limit": 50,
"skillCategories": []
}
PUT /external/v1
Description Met à jour les skill categories. Accepte un tableau d'objets ou un objet unique.
Rôles Requis : update:skillCategory
Payload
[
{
_id: 'string', // requis
// autres champs à mettre à jour
}
]
Réponse Renvoie les objets skill category mis à jour.
POST /external/v1
Description Crée un ou plusieurs projets à partir de systèmes externes.
Rôles Requis : create:project
Payload
{
officeId: '<officeUUID>', // requis - Référence au Bureau
countryId: 'FR', // requis - Référence au Pays
display: 'Nom du projet', // requis - Nom du projet
authorId: '<resourceUUID>', // requis - Référence à la Ressource (créateur)
projectCode: 'PRJ-001', // optionnel - Code projet unique
clientId: '<companyUUID>', // requis - Référence à l'Entreprise (Client)
startDate: '2024-01-01T00:00:00.000Z', // requis - Date de début (utc 0)
endDate: '2024-12-31T23:59:59.000Z', // requis - Date de fin (utc 0)
directorId: '<resourceUUID>', // requis - Référence à la Ressource (directeur)
currentStatus: 0, // requis - 0: vendu, -1: abandonné, -2: perdu
staffingSetup: [{
positionId: '<jobUUID>', // requis - Référence au Job/Poste
list: [{
streamId: '<streamUUID>', // optionnel - Référence au lot
days: 2, // optionnel - Total des jours alloués
staffingPeriod: [{
days: 1, // jours dans cette période
startDate: '2024-01-01T00:00:00.000Z', // (utc 0)
endDate: '2024-01-01T23:59:59.000Z' // (utc 0)
},
{
days: 1, // jours dans cette période
startDate: '2024-01-02T00:00:00.000Z', // (utc 0)
endDate: '2024-01-02T23:59:59.000Z' // (utc 0)
}],
resourceList: [{
resourceId: '<resourceUUID>', // requis - Référence à la Ressource
status: 1 // requis - 0: candidat, 1: confirmé
}],
dailyCost: 500, // Coût journalier (défaut: 0)
dailyPrice: 800, // Prix de vente journalier (défaut: 0)
listPrice: 900, // Prix catalogue (défaut: 0)
billedDays: 0, // Jours facturés au client (défaut: 0)
realDays: 2, // Jours réels travaillés/alloués (défaut: 0)
productionPrice: 750 // Prix de production
}]
}]
}
Champs financiers importants : dailyCost, dailyPrice, listPrice, billedDays et realDays sont des champs clés utilisés pour la budgétisation, la facturation et le suivi du projet.
Réponse Renvoie le(s) objet(s) projet créé(s).
PUT /external/v1
Description Met à jour un ou plusieurs projets existants. Accepte un tableau d'objets ou un objet unique.
Rôles Requis : update:project
Payload
// Mise à jour unique
{
_id: '<projectUUID>', // requis
display: 'Nouveau nom du projet',
startDate: '2024-02-01T00:00:00.000Z',
endDate: '2024-12-31T23:59:59.000Z'
// autres champs à mettre à jour
}
// Mise à jour en masse (Bulk)
[
{ _id: '<projectUUID>', display: 'Projet 1 mis à jour', ... },
{ _id: '<projectUUID>', display: 'Projet 2 mis à jour', ... }
]
Note : Les champs _firmId et _id dans le corps de la requête sont ignorés pour des raisons de sécurité.
Réponse Renvoie les objets projet mis à jour.
GET /external/v1
Description Retourne une liste paginée de projets triés par date de création (descendante).
Rôles Requis : list:project
Paramètres de requête (Query Parameters)
{
page: 0, // Numéro de page (indexé à 0)
limit: 50, // Résultats par page (max 200)
search: '', // Recherche par nom d'affichage du projet
projectIds: [] // Filtrer par des IDs de projet spécifiques
}
Réponse
{
"page": 0,
"limit": 50,
"projects": [
{
"_id": "ObjectId",
"display": "Nom du Projet",
"clientId": "ObjectId",
"startDate": "Date",
"endDate": "Date",
"currentStatus": 0
}
]
}