Odoo 19.0 Community · Persistant

hr.applicant : champs, relations et API

Le modèle hr.applicant (« Candidat ») est un modèle persistant déclaré par le module Recrutement, puis enrichi par 4 autres modules. Il expose 109 champs, dont 69 déclarés directement sur le modèle ; 11 champs d'autres modèles pointent vers lui. Retrouvez ci-dessous chaque champ avec son nom technique, son type, son libellé français et ses relations, puis un exemple d'appel à l'API JSON-2 d'Odoo 19.

Fiche d'identité

Nom technique
hr.applicant
Libellé
Candidat
Type
Persistant (models.Model)
Table SQL
hr_applicant
Module d'origine
Recrutement (hr_recruitment)
Étendu par
hr_recruitment_skills, hr_recruitment_sms, hr_recruitment_survey, website_hr_recruitment
Tri par défaut (_order)
priority desc, sequence, id desc
Champ d'affichage (_rec_name)
partner_name
Hérite de (mixins)
mail.thread.ccmail.thread.main.attachmentmail.thread.blacklistmail.thread.phonemail.activity.mixinutm.mixinmail.tracking.duration.mixin

Champs du modèle

69 champs propres, 35 hérités des mixins et 5 champs automatiques de l'ORM. Cliquez sur un nom pour obtenir le lien direct vers le champ.

109 champs affichés sur 109

Nom techniqueLibelléTypeDétails
activeActif

Si le champ actif n'est pas coché, cela vous permettra de masquer le cas sans le supprimer.

boolean
applicant_notesNotes candidathtml
applicant_propertiesPropriétésproperties
applicant_skill_idsCompétencesone2many

inverse : applicant_id

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

application_countNombre de candidatures

Candidatures avec le même e-mail, téléphone ou portable

integer
calculé
application_statusStatut de la candidatureselection
calculé

Valeurs : ongoing (En cours), hired (Engagé), refused (Refusée), archived (Archivé)

attachment_idsPièces jointesone2many

inverse : res_id

attachment_numberNombre de pièces jointesinteger
calculé
availabilityDisponibilité

La date à laquelle le candidat sera disponible pour commencer à travailler

date
campaign_idCampagnemany2one
categ_idsÉtiquettesmany2many
colorCouleurinteger
company_idSociétémany2one
calculé, stocké
create_datePostulé ledatetime
lecture seule
current_applicant_skill_idsCompétence actuelle du candidatone2many
calculé

inverse : applicant_id

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

date_closedDate d'embauchedatetime
calculé, stocké
date_last_stage_updateDernière mise à jour de l'étapedatetime
date_openAssignédatetime
lecture seule
day_closeJours pour clôturerfloat
calculé
day_openJours pour ouvrirfloat
calculé
delay_closeDélai pour fermer

Nombre de jours pour clôturer

float
lecture seulecalculé, stocké
department_idDépartementmany2one
calculé, stocké
email_fromE-mailchar
calculé, stocké
email_normalizedEmail Normalizedchar
emp_is_activeEmployé actifboolean

related : employee_id.active

employee_idEmployé

L'employé associé au candidat.

many2one
employee_nameNom de l'employéchar

related : employee_id.name

interviewer_idsInterviewersmany2many
is_applicant_in_poolLe candidat est dans le vivierboolean
calculé
is_pool_applicantEst un candidat du vivierboolean
calculé
job_idPostemany2one
→ hr.job
kanban_stateStatut kanbanselection
requis

Valeurs : normal (En cours), done (Prêt pour l'étape suivante), waiting (En attente), blocked (Bloqué)

last_stage_idDernière étape

Etape précédente du stage actuel du candidat. Utilisé pour l'analyse des cas perdus.

many2one
legend_blockedKanban bloquéchar

related : stage_id.legend_blocked

legend_doneKanban prêt pour la prochaine étapechar

related : stage_id.legend_done

legend_normalKanban en courschar

related : stage_id.legend_normal

legend_waitingEn attente Kanbanchar

related : stage_id.legend_waiting

linkedin_profileProfil Linkedinchar
matching_scoreScore de correspondanceinteger
calculé

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

matching_skill_idsCompétences correspondantesmany2many
calculé

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

medium_idMédium

Ceci indique comment le candidat a été contacté, par exemple via e-mail, LinkedIn, site web, etc.

many2one
meeting_display_dateDate d'affichage de la réuniondate
calculé
meeting_display_textTexte de présentation de la réunionchar
calculé
meeting_idsRéunionsone2many

inverse : applicant_id

missing_skill_idsCompétences manquantesmany2many
calculé

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

partner_idContactmany2one
partner_nameNom du candidatchar
partner_phoneTéléphonechar
calculé, stocké
partner_phone_sanitizedNuméro de téléphone nettoyéchar
calculé, stocké
pool_applicant_idCandidat du viviermany2one
priorityÉvaluationselection

Valeurs : 0 (Normal), 1 (Bon), 2 (Très bien), 3 (Excellent)

probabilityProbabilitéfloat
refuse_dateDate de refusdatetime
refuse_reason_idRaison de refusmany2one
response_idsRéponsesone2many

inverse : applicant_id

ajouté par RH Formulaires d'entretiens de recrutement (hr_recruitment_survey)

salary_expectedPrévu

Salaire espéré par le candidat

float
salary_expected_extraBonus prévu

Salaire espéré par le candidat, avantages supplémentaires

char
salary_proposedProposé

Salaire proposé par l'organisation

float
salary_proposed_extraBonus proposé

Salaire proposé par l'organisation, avantages supplémentaires

char
sequenceSéquenceinteger
skill_idsCompétencemany2many
calculé, stocké

ajouté par Recrutement - Gestion des compétences (hr_recruitment_skills)

source_idSourcemany2one
stage_idÉtapemany2one
calculé, stocké
survey_idSondagemany2one
lecture seule

related : job_id.survey_id

ajouté par RH Formulaires d'entretiens de recrutement (hr_recruitment_survey)

talent_pool_countNombre de talents dans le vivierinteger
calculé
talent_pool_idsViviers de talentsmany2many
type_idDiplômemany2one
user_emailE-mail de l'utilisateurchar
lecture seule

related : user_id.email

user_idRecruteurmany2one
calculé, stocké
activity_calendar_event_idActivité suivante de l'événement du calendriermany2one
calculé

hérité de mail.activity.mixin

activity_date_deadlineDate limite de l'activité à venirdate
lecture seulecalculé

hérité de mail.activity.mixin

activity_exception_decorationIndicateur d’exception d’activité

Type d'activité d'exception enregistrée.

selection
calculé

Valeurs : warning (Alerte), danger (Erreur)

hérité de mail.activity.mixin

activity_exception_iconIcône

Icône pour indiquer une activité d'exception.

char
calculé

hérité de mail.activity.mixin

activity_idsActivitésone2many

inverse : res_id

hérité de mail.activity.mixin

activity_stateStatut de l'activité

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
calculé

Valeurs : overdue (En retard), today (Aujourd'hui), planned (Planifié)

hérité de mail.activity.mixin

activity_summaryRésumé de l'activité suivantechar

related : activity_ids.summary

hérité de mail.activity.mixin

activity_type_iconIcône de type d'activitéchar

related : activity_ids.icon

hérité de mail.activity.mixin

activity_type_idType d'activités à venirmany2one

related : activity_ids.activity_type_id

hérité de mail.activity.mixin

activity_user_idUtilisateur responsablemany2one
lecture seulecalculé

hérité de mail.activity.mixin

duration_trackingDurée du statut

JSON qui associe les identifiants d'un champ many2one aux secondes passées

json
calculé

hérité de mail.tracking.duration.mixin

email_ccE-mail ccchar

hérité de mail.thread.cc

has_messageA un messageboolean
calculé

hérité de mail.thread

is_blacklistedListe noire

Si l'adresse e-mail est sur liste noire, le contact ne recevra plus d'e-mail marketing d'aucune liste.

boolean
calculé

hérité de mail.thread.blacklist

is_rottingInactivitéboolean
calculé

hérité de mail.tracking.duration.mixin

message_attachment_countNombre de pièces jointesinteger
calculé

hérité de mail.thread

message_bounceRebond

Le compteur du nombre de mails rebondis pour ce contact

integer

hérité de mail.thread.blacklist

message_follower_idsAbonnésone2many

inverse : res_id

hérité de mail.thread

message_has_errorErreur d'envoi du message

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_has_error_counterNombre d'erreurs

Nombre de messages avec des erreurs d'envoi

integer
calculé

hérité de mail.thread

message_has_sms_errorErreur d'envoi SMS

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_idsMessagesone2many

inverse : res_id

hérité de mail.thread

message_is_followerEst un abonnéboolean
calculé

hérité de mail.thread

message_main_attachment_idPièce jointe principalemany2one

hérité de mail.thread.main.attachment

message_needactionNécessite une action

Si coché, de nouveaux messages demandent votre attention.

boolean
calculé

hérité de mail.thread

message_needaction_counterNombre d'actions

Nombre de messages nécessitant une action

integer
calculé

hérité de mail.thread

message_partner_idsAbonnés (Partenaires)many2many
calculé

hérité de mail.thread

my_activity_date_deadlineÉchéance de mon activitédate
lecture seulecalculé

hérité de mail.activity.mixin

phone_blacklistedLe téléphone sur liste noire est fixe

Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.

boolean
calculé

hérité de mail.thread.phone

phone_sanitizedNuméro nettoyé

Champ utilisé pour stocker le numéro de téléphone nettoyé. Aide à accélérer les recherches et comparaisons.

char
calculé, stocké

hérité de mail.thread.phone

phone_sanitized_blacklistedTéléphone sur liste noire

Si le numéro de téléphone nettoyé est sur liste noire, le contact ne recevra plus de campagnes de mail, d'aucunes listes.

boolean
calculé

hérité de mail.thread.phone

rating_idsÉvaluationsone2many

inverse : res_id

hérité de mail.thread

rotting_daysJours d’inactivité

Nombre de jours depuis la dernière mise à jour de cette ressource

integer
calculé

hérité de mail.tracking.duration.mixin

website_message_idsMessages du site web

Historique de communication du site web

one2many

inverse : res_id

hérité de mail.thread

create_uidCréé parmany2one
lecture seuleautomatique
display_nameNom affichéchar
lecture seulecalculéautomatique
idIDinteger
lecture seuleautomatique
write_dateDernière mise à jour ledatetime
lecture seuleautomatique
write_uidDernière mise à jour parmany2one
lecture seuleautomatique

Relations

Modèles liés depuis ce modèle

Champs d'autres modèles qui pointent ici

Lire ce modèle par l'API

Exemple d'appel à l'API JSON-2 d'Odoo 19 : lecture des cinq premiers enregistrements avec des champs réels du modèle. Remplacez l'instance, la base et la clé API par les vôtres.

curl
curl -X POST "https://votre-instance.odoo.com/json/2/hr.applicant/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: votre-base" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["partner_name","kanban_state","campaign_id","company_id","department_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://votre-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "votre-base"}

res = requests.post(
    f"{BASE_URL}/hr.applicant/search_read",
    headers=headers,
    json={"domain": [], "fields": ["partner_name","kanban_state","campaign_id","company_id","department_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • L'accès à l'API externe est réservé à la formule Custom d'Odoo.
  • XML-RPC et JSON-RPC seront retirés dans Odoo 22 (automne 2028) : préférez JSON-2.
  • Les droits d'accès et règles d'enregistrement de l'utilisateur de la clé s'appliquent.

Citer cet outil

Vous rédigez un tutoriel, une documentation interne ou une réponse sur un forum ? Copiez ce lien pour renvoyer vos lecteurs vers la fiche à jour.

<a href="https://aidoo.ai/fr/outils/explorateur-modeles-odoo/hr-applicant">hr.applicant (Odoo 19.0)</a>

Sources

Données vérifiées le 23 septembre 2026 · Odoo 19.0 Community

Vous avez un projet Odoo ou souhaitez exploiter votre ERP avec l'IA ? Échangeons

Intégration, développement de modules, connexion de Claude ou ChatGPT à vos données : décrivez-nous votre contexte, nous vous répondons sous 24 heures ouvrées.