> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.client-p.pylote.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Tracker une consultation de profil

> **Obligatoire pour les partenaires.**

Chaque fois qu'un recruteur consulte un profil freelance via votre plateforme,
vous **devez** envoyer un event à cette route. Cela permet au freelance de voir
qui consulte son profil dans son dashboard Pylote.

Le freelance voit : "{company} **via** {partenaire}" dans ses statistiques de visibilité.




## OpenAPI

````yaml /openapi.yaml post /partners/events
openapi: 3.1.0
info:
  title: Pylote Client API
  version: 1.0.4
  description: >
    API de distribution des profils freelances Pylote.


    Permet aux clients (recruteurs, integrateurs, partenaires) de recuperer

    les freelances depuis la base Pylote, gerer les whitelist recruteurs

    et tracker les consultations de profils.


    Les profils sont retournes au format [JSON
    Resume](https://jsonresume.org/schema/)

    enrichi avec les metadonnees Pylote (disponibilite, TJM, mobilites,
    competences).


    ## Engagements clients


    En utilisant cette API, vous vous engagez a :

    1. **Tracker les consultations** de profils via `POST
    /partners/{slug}/events` (contractuel)

    2. **Supprimer les profils** dont le `status` est `deleted` de votre base

    3. **Ne jamais exposer** les emails personnels des freelances (utiliser les
    emails proxy Pylote)


    ## Protection des donnees


    Les donnees sont transformees avant distribution :

    - Les emails personnels sont remplaces par des **emails proxy**
    (`@freelance.pylote.io`)

    - Le champ `personalEmail` est un **hash SHA-256** (pour dedoublonnage,
    jamais l'email en clair)

    - Les URLs LinkedIn et CV passent par `hive.pylote.io` (tracking watermarke)

    - Les identifiants (`meta.id`) sont **chiffres** (AES-256-CBC) et opaques
  contact:
    name: Pylote
    url: https://pylote.io
    email: contact@pylote.io
servers:
  - url: https://client-p.pylote.io
    description: Production
  - url: https://client-pp.pylote.io
    description: Preprod
security:
  - apiKey: []
tags:
  - name: Freelances
    description: >
      Endpoints principaux pour recuperer les profils freelances.

      Les profils sont au format JSON Resume enrichi avec les metadonnees
      Pylote.
  - name: Partners
    description: >
      Endpoints pour les partenaires de distribution (ex: Agrega).

      Gestion de la whitelist recruteurs et **tracking obligatoire** des
      consultations de profils.
  - name: Integration
    description: |
      Endpoints pour les integrateurs (ex: BoondManager).
      Gestion des sous-clients et de leurs whitelist recruteurs.
  - name: Sandbox
    description: >
      Endpoints de test avec donnees anonymisees. Aucune cle API requise.

      Utilisez la sandbox pour valider votre integration avant de passer en
      production.
  - name: Admin
    description: >-
      Endpoints d'administration (cache, debug). Requiert un flag admin sur la
      cle API.
  - name: Health
    description: Health check de l'API et de ses dependances externes
paths:
  /partners/events:
    post:
      tags:
        - Partners
      summary: Tracker une consultation de profil
      description: >
        **Obligatoire pour les partenaires.**


        Chaque fois qu'un recruteur consulte un profil freelance via votre
        plateforme,

        vous **devez** envoyer un event à cette route. Cela permet au freelance
        de voir

        qui consulte son profil dans son dashboard Pylote.


        Le freelance voit : "{company} **via** {partenaire}" dans ses
        statistiques de visibilité.
      operationId: trackPartnerEventSimple
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - recruiterEmail
                - freelanceId
                - action
              properties:
                recruiterEmail:
                  type: string
                  description: Email réel du recruteur (doit être dans la whitelist)
                  example: marie.gilles@lutessa.com
                freelanceId:
                  type: string
                  format: uuid
                  description: >
                    UUID du freelance = champ `meta.id` du JSON Resume retourné
                    par `GET /freelances`.
                  example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                action:
                  type: string
                  enum:
                    - profile_view
                    - click_cv
                    - click_linkedin
                    - click_phone
                    - click_email
                    - add_favorite
                  description: >
                    Type d'interaction :

                    - `profile_view` : le recruteur a ouvert la fiche du
                    freelance

                    - `click_cv` : le recruteur a cliqué sur le lien CV

                    - `click_linkedin` : le recruteur a cliqué sur le lien
                    LinkedIn

                    - `click_phone` : le recruteur a cliqué sur le téléphone

                    - `click_email` : le recruteur a cliqué sur l'email

                    - `add_favorite` : le recruteur a ajouté le freelance à ses
                    favoris
      responses:
        '201':
          description: Event enregistré
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
        '401':
          description: Clé API manquante
        '403':
          description: Clé API invalide ou scope partenaire incorrect
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >
        Cle API fournie par Pylote. Inclure dans le header `x-api-key` de chaque
        requete.


        Exemple : `x-api-key: votre-cle-api`

````