{"id":3887,"date":"2026-03-19T10:13:36","date_gmt":"2026-03-19T14:13:36","guid":{"rendered":"https:\/\/www.jenikgroup.com\/?page_id=3887"},"modified":"2026-06-05T10:35:07","modified_gmt":"2026-06-05T14:35:07","slug":"rep","status":"publish","type":"page","link":"https:\/\/www.jenikgroup.com\/fr\/rep\/","title":{"rendered":"Formulaire Rapport R\u00e9paration"},"content":{"rendered":"\n<!-- Racine qui prendra la hauteur r\u00e9elle apr\u00e8s mise \u00e0 l\u2019\u00e9chelle -->\n<div id=\"rapport-root\">\n  <!-- Sc\u00e8ne \u00e0 900 px (r\u00e9f\u00e9rence) qui sera \u201cscal\u00e9e\u201d -->\n  <div id=\"rapport-stage\">\n    <img decoding=\"async\" id=\"rapport-bg\"\n         src=\"https:\/\/www.jenikgroup.com\/wp-content\/uploads\/2026\/03\/Rapport-de-Reparation-scaled.png\"\n         alt=\"Rapport de R\u00e9paration\">\n\n    <!-- ===== CHAMPS (coordonn\u00e9es en PX, base 900 px) ===== -->\n    <!-- Ligne 1 -->\n    <input type=\"text\" id=\"champ-date\"        class=\"field date\">\n    <input type=\"text\" id=\"champ-unite\"       class=\"field unite\">\n    <input type=\"text\" id=\"champ-marque\"      class=\"field marque\">\n    <input type=\"text\" id=\"champ-modele\"      class=\"field modele\">\n\n    <!-- Description -->\n    <textarea id=\"champ-description\" class=\"field description\"><\/textarea>\n\n    <!-- Bas -->\n    <input type=\"text\" id=\"champ-operateur\" class=\"field operateur\">\n    <input type=\"text\" id=\"champ-signature\" class=\"field signature\">\n  <\/div>\n<\/div>\n\n<!-- ===== Section Photos (optionnel) ===== -->\n<div id=\"rapport-photos\">\n  <!-- Zone unique cliquable -->\n  <div id=\"photos-drop\" class=\"photos-drop\" role=\"button\" tabindex=\"0\"\n       aria-controls=\"photos-input-any\" aria-label=\"Ajouter des photos (Cam\u00e9ra ou Galerie)\">\n    <div class=\"photos-drop-ico\">&#x1f4f7;<\/div>\n    <div class=\"photos-drop-txt\">\n      Appuyer pour ajouter des photos<br><small>(Cam\u00e9ra ou Galerie)<\/small>\n    <\/div>\n  <\/div>\n\n  <!-- Un input \"any\" et un input \"cam\" cach\u00e9s (on d\u00e9clenche l\u2019un ou l\u2019autre) -->\n  <input type=\"file\" id=\"photos-input-any\" accept=\"image\/*\" multiple hidden>\n  <input type=\"file\" id=\"photos-input-cam\" accept=\"image\/*\" capture=\"environment\" multiple hidden>\n\n  <!-- Notre mini \"action sheet\" (cam\u00e9ra\/galerie) -->\n  <div id=\"photos-chooser\" class=\"photos-chooser\" aria-hidden=\"true\">\n    <div class=\"sheet\">\n      <button type=\"button\" id=\"choose-camera\" class=\"sheet-btn\">Prendre une photo<\/button>\n      <button type=\"button\" id=\"choose-gallery\" class=\"sheet-btn\">Choisir dans la galerie<\/button>\n      <button type=\"button\" id=\"choose-cancel\"  class=\"sheet-btn cancel\">Annuler<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Aper\u00e7us (non inclus dans le PDF) -->\n  <div id=\"photos-preview-wrap\" aria-live=\"polite\">\n    <div id=\"photos-preview\" class=\"photos-grid\"><\/div>\n    <div id=\"photos-count\" class=\"photos-count\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- ===== Bouton sous le formulaire ===== -->\n<div class=\"rapport-actions\">\n  <button id=\"btn-send-floating\">Envoyer<\/button>\n<\/div>\n\n\n\n<script>\n(function(){\n  \/\/ --------- R\u00e9f\u00e9rences \/ base 900 px ----------\n  const root  = document.getElementById('rapport-root');\n  const stage = document.getElementById('rapport-stage');\n  const bg    = document.getElementById('rapport-bg');\n  const BASE  = 900;\n  if (!stage) { console.error('[rapport] #rapport-stage introuvable'); return; }\n\n  \/\/ --------- Scale (PC\/Mobile) ----------\n  function fit(){\n    if (!root || !stage) return;\n    const avail = root.clientWidth || document.documentElement.clientWidth;\n    const scale = Math.min(avail \/ BASE, 1);\n    stage.style.transform = 'scale(' + scale + ')';\n    const unscaledH = stage.offsetHeight;\n    root.style.height = Math.round(unscaledH * scale) + 'px';\n  }\n  function whenReady(){\n    fit();\n    window.addEventListener('resize', fit);\n    window.addEventListener('orientationchange', fit);\n    bindPhotoUI();\n    bindSendButton();\n  }\n  if (bg && (!bg.complete || !bg.naturalWidth)) bg.addEventListener('load', whenReady, {once:true});\n  else whenReady();\n\n  \/\/ --------- Utilitaires ----------\n  const FIELD_IDS = {\n    date: 'champ-date',\n    unite: 'champ-unite',\n    marque: 'champ-marque',\n    modele: 'champ-modele',\n    description: 'champ-description',\n    operateur: 'champ-operateur',\n    signatureTXT: 'champ-signature'\n  };\n  function collectFields(){\n    const data = {};\n    for (const k in FIELD_IDS) {\n      const el = document.getElementById(FIELD_IDS[k]);\n      data[k] = el ? (el.value || '') : '';\n    }\n    return data;\n  }\n  function sanitize(s){\n    return (s||'').normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'')\n            .replace(\/[^A-Za-z0-9_.-]+\/g,'_').replace(\/^_+|_+$\/g,'').substring(0,80);\n  }\n  function todayISO(){\n    const d=new Date(), m=String(d.getMonth()+1).padStart(2,'0'), j=String(d.getDate()).padStart(2,'0');\n    return `${d.getFullYear()}-${m}-${j}`;\n  }\n  function getCurrentScaleX(el){\n    const t = getComputedStyle(el).transform;\n    if (!t || t === 'none') return 1;\n    const m = t.match(\/matrix\\(([^)]+)\\)\/);\n    if (!m) return 1;\n    const a = parseFloat(m[1].split(',')[0]);\n    return isFinite(a) && a > 0 ? a : 1;\n  }\n  async function loadLibs(){\n    if (!window.html2canvas){\n      await new Promise((res, rej)=>{\n        const s=document.createElement('script');\n        s.src='https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js';\n        s.crossOrigin='anonymous'; s.referrerPolicy='no-referrer';\n        s.onload=res; s.onerror=rej; document.head.appendChild(s);\n      });\n    }\n    if (!window.jspdf){\n      await new Promise((res, rej)=>{\n        const s=document.createElement('script');\n        s.src='https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js';\n        s.crossOrigin='anonymous'; s.referrerPolicy='no-referrer';\n        s.onload=res; s.onerror=rej; document.head.appendChild(s);\n      });\n    }\n  }\n\n  \/\/ --------- Couche texte print-only ----------\n  const PAD_ROW37 = 6, PAD_ROW34 = 4, PAD_DESC = 8;\n  function makePrintLayer(){\n    const old = document.getElementById('print-layer'); if (old) old.remove();\n    const layer = document.createElement('div'); layer.id = 'print-layer'; stage.appendChild(layer);\n    function addPText(el, padTop){\n      const cs = getComputedStyle(el);\n      const top  = parseFloat(cs.top)||0, left = parseFloat(cs.left)||0;\n      const w    = parseFloat(cs.width)||0, h = parseFloat(cs.height)||0;\n      const txt  = (el.value || '').toString(); if (!txt) return;\n      const p = document.createElement('div');\n      p.className = 'ptext';\n      p.style.top = top+'px'; p.style.left = left+'px';\n      p.style.width = w+'px'; p.style.height = h+'px';\n      p.style.padding = padTop+'px 6px 0 6px';\n      p.style.fontFamily = cs.fontFamily || 'Arial, Helvetica, sans-serif';\n      p.style.fontSize   = cs.fontSize   || '25px';\n      p.style.fontWeight = cs.fontWeight || '400';\n      p.style.lineHeight = 'normal';\n      p.textContent = txt;\n      layer.appendChild(p);\n    }\n    ['champ-date','champ-unite','champ-marque','champ-modele'].forEach(id=>{\n      const el = document.getElementById(id); if (el) addPText(el, PAD_ROW37);\n    });\n    ['champ-operateur','champ-signature'].forEach(id=>{\n      const el = document.getElementById(id); if (el) addPText(el, PAD_ROW34);\n    });\n    const desc = document.getElementById('champ-description'); if (desc) addPText(desc, PAD_DESC);\n    return layer;\n  }\n\n  \/\/ --------- Multi-photos (cam\u00e9ra OU galerie) ----------\n  const MAX_PHOTOS = 8;        \/\/ limite\n  const MAX_WIDTH  = 1600;     \/\/ redimensionnement\n  const JPEG_Q     = 0.90;\n\n  let photos = [];              \/\/ {name, dataURL, file}\n\n  function bindPhotoUI(){\n    const drop   = document.getElementById('photos-drop');\n    const any    = document.getElementById('photos-input-any');\n    const cam    = document.getElementById('photos-input-cam');\n    const chooser= document.getElementById('photos-chooser');\n    const btnCam = document.getElementById('choose-camera');\n    const btnGal = document.getElementById('choose-gallery');\n    const btnCan = document.getElementById('choose-cancel');\n    const wrap   = document.getElementById('photos-preview-wrap');\n    const grid   = document.getElementById('photos-preview');\n    const count  = document.getElementById('photos-count');\n\n    function render(){\n      grid.innerHTML = '';\n      photos.forEach((p, i)=>{\n        const card = document.createElement('div'); card.className='thumb';\n        const img  = document.createElement('img'); img.src = p.dataURL; img.alt = p.name||('photo_'+(i+1));\n        const rm   = document.createElement('button'); rm.className='rm'; rm.type='button'; rm.textContent='\u00d7';\n        rm.addEventListener('click', ()=>{ photos.splice(i,1); render(); });\n        card.appendChild(img); card.appendChild(rm);\n        grid.appendChild(card);\n      });\n      wrap.style.display = photos.length ? 'block' : 'none';\n      count.textContent = photos.length ? `${photos.length} photo(s) ajout\u00e9e(s)` : '';\n    }\n\n    function showChooser(show){\n      chooser.classList.toggle('show', !!show);\n      chooser.setAttribute('aria-hidden', show ? 'false' : 'true');\n    }\n\n    async function handleFiles(fileList){\n      if (!fileList || !fileList.length) return;\n      for (const file of Array.from(fileList)){\n        if (!file.type.startsWith('image\/')) continue;\n        if (photos.length >= MAX_PHOTOS) break;\n        const dataURL = await fileToDataURL(file, MAX_WIDTH, JPEG_Q);\n        photos.push({ name: sanitize(file.name || 'photo.jpg'), dataURL, file });\n      }\n      render();\n    }\n\n    \/\/ ouvrir notre mini-choix (cam\/galerie)\n    function openActionSheet(){\n      showChooser(true);\n    }\n\n    \/\/ clic zone\n    if (drop){\n      drop.addEventListener('click', openActionSheet);\n      drop.addEventListener('keydown', (e)=>{ if (e.key==='Enter'||e.key===' ') { e.preventDefault(); openActionSheet(); }});\n      \/\/ drag & drop (desktop)\n      drop.addEventListener('dragover', e=>{ e.preventDefault(); drop.style.borderColor='#6b7280'; });\n      drop.addEventListener('dragleave', ()=>{ drop.style.borderColor='#9ca3af'; });\n      drop.addEventListener('drop', async e=>{\n        e.preventDefault(); drop.style.borderColor='#9ca3af';\n        await handleFiles(e.dataTransfer && e.dataTransfer.files);\n      });\n    }\n\n    \/\/ action sheet \u2192 inputs cach\u00e9s\n    if (btnCam && cam) btnCam.addEventListener('click', ()=>{ cam.click(); showChooser(false); });\n    if (btnGal && any) btnGal.addEventListener('click', ()=>{ any.click(); showChooser(false); });\n    if (btnCan)        btnCan.addEventListener('click', ()=> showChooser(false));\n    chooser.addEventListener('click', (e)=>{ if (e.target === chooser) showChooser(false); });\n\n    \/\/ changements fichiers\n    if (any) any.addEventListener('change', async e=>{ await handleFiles(e.target.files); e.target.value=''; });\n    if (cam) cam.addEventListener('change', async e=>{ await handleFiles(e.target.files); e.target.value=''; });\n\n    \/\/ exposer pour l'envoi\n    bindPhotoUI.getPhotos = ()=> photos.slice();\n  }\n\n  \/\/ Redimensionnement JPEG (promesse)\n  function fileToDataURL(file, maxW=1600, jpegQ=0.9){\n    return new Promise((resolve, reject)=>{\n      const reader = new FileReader();\n      reader.onload = ()=>{\n        const img = new Image();\n        img.onload = ()=>{\n          const scale = img.width > maxW ? maxW \/ img.width : 1;\n          const w = Math.round(img.width * scale), h = Math.round(img.height * scale);\n          const cv = document.createElement('canvas'); cv.width=w; cv.height=h;\n          const ctx = cv.getContext('2d'); ctx.drawImage(img, 0, 0, w, h);\n          resolve(cv.toDataURL('image\/jpeg', jpegQ));\n        };\n        img.onerror = reject;\n        img.src = reader.result;\n      };\n      reader.onerror = reject;\n      reader.readAsDataURL(file);\n    });\n  }\n\n  \/\/ --------- Envoi ----------\n  async function sendMailWithAttachments(){\n    const btn = document.getElementById('btn-send-floating');\n    if (!btn) return;\n    btn.disabled = true;\n    const label = btn.textContent;\n    btn.textContent = 'G\u00e9n\u00e9ration & envoi\u2026';\n\n    try{\n      \/\/ Pr\u00e9\u2011requis\n      if (bg && !(bg.complete && bg.naturalWidth>0)) { await new Promise((r,e)=>{ bg.onload=r; bg.onerror=e; }); }\n      if (document.fonts && document.fonts.ready) await document.fonts.ready;\n      await new Promise(r=>requestAnimationFrame(()=>requestAnimationFrame(r)));\n      await loadLibs();\n\n      \/\/ Capture sans scale + couche print-only\n      const currentScale = getCurrentScaleX(stage);\n      const captureScale = Math.max(2, Math.round(currentScale*2)); \/\/ 2 ou 3\n      const sx = window.scrollX, sy = window.scrollY;\n      const layer = makePrintLayer();\n      root && root.classList.add('capture');\n      window.scrollTo(0,0);\n\n      const canvas = await html2canvas(stage, {\n        scale: captureScale,\n        useCORS: true,\n        backgroundColor:'#ffffff',\n        scrollX: 0, scrollY: 0,\n        windowWidth: document.documentElement.clientWidth\n      });\n\n      \/\/ Restaurer\n      if (layer) layer.remove();\n      root && root.classList.remove('capture');\n      window.scrollTo(sx, sy);\n      fit();\n\n      \/\/ Canvas -> PDF\n      const { jsPDF } = window.jspdf;\n      const pdf = new jsPDF('p','pt','a4');\n      const pageW = pdf.internal.pageSize.getWidth();\n      const pageH = pdf.internal.pageSize.getHeight();\n      const imgData = canvas.toDataURL('image\/jpeg', 0.98);\n      const imgW = pageW;\n      const imgH = canvas.height * (imgW \/ canvas.width);\n      if (imgH <= pageH) {\n        pdf.addImage(imgData, 'JPEG', 0, 0, imgW, imgH, undefined, 'FAST');\n      } else {\n        let y = 0;\n        while (y < imgH) {\n          pdf.addImage(imgData, 'JPEG', 0, -y, imgW, imgH, undefined, 'FAST');\n          y += pageH;\n          if (y < imgH) pdf.addPage();\n        }\n      }\n\n      \/\/ FormData\n      const fields   = collectFields();\n      const op       = sanitize(fields.operateur || 'Operateur');\n      const filename = `Rapport_${todayISO()}_${op}.pdf`;\n      \/\/ Envoi binaire pour eviter les gros POST base64\n      const pdfBlob = pdf.output('blob');\n      const bodyImgBlob = await new Promise(resolve => canvas.toBlob(resolve, 'image\/jpeg', 0.88));\n\n      const form = new FormData();\n      form.append('action', 'envoyer_rapport_pdf_img');\n      form.append('filename', filename);\n      form.append('pdf_file', pdfBlob, filename);\n      if (bodyImgBlob) form.append('png_file', bodyImgBlob, 'rapport.jpg');\n\n      \/\/ Photos multiples en PJ\n      const phs = bindPhotoUI.getPhotos ? bindPhotoUI.getPhotos() : [];\n      phs.forEach(p=>{\n        if (p.file) {\n          form.append('photos_files[]', p.file, p.name || p.file.name || 'photo.jpg');\n        } else {\n          \/\/ Fallback pour anciennes entrees\n          form.append('photos[]', p.dataURL);\n          form.append('photo_names[]', p.name || 'photo.jpg');\n        }\n      });\n\n      for (const k in fields) form.append(k, fields[k]);\n\n      \/\/ AJAX\n      const rrAjaxUrl = (typeof window.ajaxurl !== 'undefined' && window.ajaxurl)\n        ? window.ajaxurl\n        : ((window.location && window.location.origin) ? (window.location.origin + '\/wp-admin\/admin-ajax.php') : '\/wp-admin\/admin-ajax.php');\n      const res = await fetch(rrAjaxUrl, { method:'POST', body: form, credentials:'same-origin' });\n      const raw = await res.text();\n      if (raw.trim() === '0') throw new Error('AJAX action non reconnue (WordPress renvoie 0)');\n      if (!res.ok) throw new Error('Serveur: ' + res.status + ' \u2013 ' + raw);\n      let json; try { json = JSON.parse(raw); } catch(e){ throw new Error('R\u00e9ponse non JSON: ' + raw); }\n      if (!json.ok) throw new Error(json.error || 'Envoi impossible');\n\n      alert('Courriel envoy\u00e9');\n\n    }catch(e){\n      console.error('[ENVOI ERREUR]', e);\n      alert('Erreur durant la g\u00e9n\u00e9ration\/envoi : ' + (e && e.message ? e.message : 'inconnue'));\n    }finally{\n      const b = document.getElementById('btn-send-floating');\n      if (b){ b.disabled = false; b.textContent = 'Envoyer'; }\n    }\n  }\n\n  \/\/ Bind bouton (tol\u00e9rant Elementor)\n  function bindSendButton(){\n    const b = document.getElementById('btn-send-floating');\n    if (!b) return;\n    b.setAttribute('type','button');\n    if (!b.__bound){\n      b.__bound = true;\n      b.addEventListener('click', function(e){ e.preventDefault(); sendMailWithAttachments(); });\n    }\n  }\n})();\n<\/script>\n\n\n\n<script>\n(function () {\n  \/\/ Ajuste la font pour que TOUT le texte tienne dans la largeur visible\n  function attachAutoFit(el, opts) {\n    const MAX = (opts && opts.maxFont) || 25;   \/\/ px\n    const MIN = (opts && opts.minFont) || 12;   \/\/ px  \u2190 mets 12 si tes noms sont tr\u00e8s longs\n    const PAD = 2; \/\/ petite marge pour \u00e9viter les retours oscillants\n\n    \/\/ R\u00e8gles n\u00e9cessaires \u00e0 une mesure fiable\n    el.style.whiteSpace = 'nowrap';\n    el.style.overflow = 'hidden';\n    \/\/ el.style.textOverflow = 'ellipsis'; \/\/ remet-le si tu veux un plan B\n\n    function fit() {\n      \/\/ Commence au max \u00e0 chaque mesure\n      el.style.fontSize = MAX + 'px';\n\n      \/\/ Mesure\n      const cw = el.clientWidth;     \/\/ largeur visible\n      const sw = el.scrollWidth;     \/\/ largeur du contenu\n      if (!cw) return;\n\n      if (sw > cw) {\n        \/\/ Calcule directement la taille qui fait tenir le texte\n        \/\/ + petite marge PAD pour \u00e9viter de retomber \u00e0 la ligne\n        const ratio = (cw - PAD) \/ sw;\n        const target = Math.max(MIN, Math.min(MAX, Math.floor(MAX * ratio * 10) \/ 10));\n        el.style.fontSize = target + 'px';\n      } else {\n        \/\/ Rien ne d\u00e9passe : remonte si besoin jusqu'au MAX sans d\u00e9passer\n        el.style.fontSize = Math.min(MAX, parseFloat(getComputedStyle(el).fontSize) || MAX) + 'px';\n      }\n    }\n\n    \/\/ Ev\u00e9nements\n    el.addEventListener('input', fit);\n    window.addEventListener('resize', fit);\n\n    \/\/ Lancer apr\u00e8s rendu + une 2e fois si les polices arrivent tard\n    fit();\n    setTimeout(fit, 100);\n    setTimeout(fit, 400);\n  }\n\n  function init() {\n    const el = document.getElementById('champ-operateur');\n    if (!el) return false;\n    attachAutoFit(el, { maxFont: 25, minFont: 12 });\n    return true;\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function(){\n      if (init()) return;\n      let tries = 20;\n      const t = setInterval(function(){ if (init() || --tries <= 0) clearInterval(t); }, 150);\n    });\n  } else {\n    if (init()) return;\n    let tries = 20;\n    const t = setInterval(function(){ if (init() || --tries <= 0) clearInterval(t); }, 150);\n  }\n})();\n<\/script>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p style=\"text-align:center;font-size:18px;color:#999;\">\n  Document interne \u2013 r\u00e9serv\u00e9 aux employ\u00e9s Jenik Group\n<\/p>\n<\/blockquote>\n\n\n\n<script>\n(function(){\n  \/\/ Au premier affichage, remonte bien en haut, puis laisse l'utilisateur zoomer\/panner\n  function resetView() {\n    \/\/ Annule un \u00e9ventuel scroll m\u00e9moris\u00e9 par le navigateur\n    window.scrollTo(0, 0);\n    \/\/ Petit d\u00e9lai pour laisser la barre d'adresse se stabiliser\n    setTimeout(function(){ window.scrollTo(0, 0); }, 50);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', resetView);\n  } else {\n    resetView();\n  }\n\n  \/\/ Bonus : masquer le bouton quand on saisit (tu l'avais d\u00e9j\u00e0)\n  var floater = document.getElementById('btn-send-floating');\n  window.addEventListener('focusin', function(e){\n    if (e.target && (e.target.matches('input, textarea'))) floater && floater.classList.add('hide');\n  });\n  window.addEventListener('focusout', function(){\n    setTimeout(function(){ floater && floater.classList.remove('hide'); }, 80);\n  });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>&#x1f4f7; Appuyer pour ajouter des photos(Cam\u00e9ra ou Galerie) Prendre une photo Choisir dans la galerie Annuler Envoyer Document interne \u2013 r\u00e9serv\u00e9 aux employ\u00e9s Jenik Group<\/p>\n","protected":false},"author":8,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"class_list":["post-3887","page","type-page","status-publish","hentry"],"acf":[],"rankMath":{"parentDomain":"www.jenikgroup.com","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":false,"featuredImageNotice":"L\u2019image en vedette devrait \u00eatre au moins 200 par 200 pixels pour \u00eatre utilis\u00e9 par Facebook et d\u2019autres sites de m\u00e9dias sociaux.","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"rep","permalinkFormat":"https:\/\/www.jenikgroup.com\/fr\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/www.jenikgroup.com\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"","description":"","focusKeywords":"","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"nofollow":true,"noindex":true,"noimageindex":true,"nosnippet":true,"noarchive":true},"twitterAuthor":"identifiant","primaryTerm":0,"authorName":"Frederic","titleTemplate":"%title%","descriptionTemplate":"Specialist in rental of gateway and aerial bucket trucks allowing access under bridge structures, tunnels and hydro-electric dams throughout North America","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":["absolument","amazement","astonishing","authentique","beau","bien-\u00eatre","brillant","captivant","charismatique","choc","clair","compl\u00e8tement","confidentiel","confiance","cons\u00e9quent","cr\u00e9atif","d\u00e9finitivement","d\u00e9licieux","d\u00e9montrer","d\u00e9p\u00eachez-vous","d\u00e9termin\u00e9","digne","dynamique","\u00e9blouissant","\u00e9clatant","\u00e9conomique","\u00e9fficace","\u00e9l\u00e9gant","\u00e9motionnel","\u00e9nergique","\u00e9norme","\u00e9poustouflant","essentiel","\u00e9tonnant","exclusif","exp\u00e9rience","fabuleux","fantastique","formidable","fort","garanti","g\u00e9ant","g\u00e9n\u00e9reux","grandiose","gratuit","habile","harmonieux","historique","hors pair","important","incroyable","indispensable","inoubliable","inspirant","innovant","intense","invention","irr\u00e9sistible","l\u00e9gendaire","lumineux","luxe","magique","magnifique","majestueux","marquant","merveilleux","miraculeux","motivant","n\u00e9cessaire","nouvelle","officiel","parfait","passionn\u00e9","persuasif","ph\u00e9nom\u00e9nal","plaisir","populaire","pouvoir","prestigieux","prodigieux","profond","prosp\u00e8re","puissant","qualit\u00e9","radieux","rapide","r\u00e9ussi","r\u00e9volutionnaire","satisfait","s\u00e9curit\u00e9","sensationnel","serein","somptueux","splendide","sublime","surprenant","talentueux","terrifiant","unique","valeur","vibrant","victorieux","vif","vraiment","z\u00e9l\u00e9"],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":false,"hasBreadcrumb":false},"homeUrl":"https:\/\/www.jenikgroup.com\/fr\/","objectID":3887,"objectType":"post","locale":"fr","localeFull":"fr_FR","overlayImages":{"play":{"name":"Ic\u00f4ne de lecture","url":"https:\/\/www.jenikgroup.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/jenik\/domains\/jenik.ca\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"Ic\u00f4ne GIF","url":"https:\/\/www.jenikgroup.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/jenik\/domains\/jenik.ca\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/www.jenikgroup.com\/wp-content\/uploads\/2025\/07\/emploi.jpg","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fwww.jenikgroup.com%2Ffr%2F&r=https%3A%2F%2Fwww.jenikgroup.com%2Ffr%2Fwp-json%2Fwp%2Fv2%2Fpages%2F3887%3Fnonce%3D8176e899fc","maxTags":5,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"https:\/\/www.jenikgroup.com\/wp-content\/uploads\/2026\/02\/cropped-android-chrome-192x192-1-32x32.png","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"showKeywordIntent":true,"isPro":false,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"Mettre \u00e0 niveau","trendsPreviewImage":"https:\/\/www.jenikgroup.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":["absolument","amazement","astonishing","authentique","beau","bien-\u00eatre","brillant","captivant","charismatique","choc","clair","compl\u00e8tement","confidentiel","confiance","cons\u00e9quent","cr\u00e9atif","d\u00e9finitivement","d\u00e9licieux","d\u00e9montrer","d\u00e9p\u00eachez-vous","d\u00e9termin\u00e9","digne","dynamique","\u00e9blouissant","\u00e9clatant","\u00e9conomique","\u00e9fficace","\u00e9l\u00e9gant","\u00e9motionnel","\u00e9nergique","\u00e9norme","\u00e9poustouflant","essentiel","\u00e9tonnant","exclusif","exp\u00e9rience","fabuleux","fantastique","formidable","fort","garanti","g\u00e9ant","g\u00e9n\u00e9reux","grandiose","gratuit","habile","harmonieux","historique","hors pair","important","incroyable","indispensable","inoubliable","inspirant","innovant","intense","invention","irr\u00e9sistible","l\u00e9gendaire","lumineux","luxe","magique","magnifique","majestueux","marquant","merveilleux","miraculeux","motivant","n\u00e9cessaire","nouvelle","officiel","parfait","passionn\u00e9","persuasif","ph\u00e9nom\u00e9nal","plaisir","populaire","pouvoir","prestigieux","prodigieux","profond","prosp\u00e8re","puissant","qualit\u00e9","radieux","rapide","r\u00e9ussi","r\u00e9volutionnaire","satisfait","s\u00e9curit\u00e9","sensationnel","serein","somptueux","splendide","sublime","surprenant","talentueux","terrifiant","unique","valeur","vibrant","victorieux","vif","vraiment","z\u00e9l\u00e9"],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":false,"serpData":{"title":"%sitename% %page% %sep% %sitedesc%","description":"","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Accueil","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"_links":{"self":[{"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/pages\/3887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/comments?post=3887"}],"version-history":[{"count":125,"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/pages\/3887\/revisions"}],"predecessor-version":[{"id":4447,"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/pages\/3887\/revisions\/4447"}],"wp:attachment":[{"href":"https:\/\/www.jenikgroup.com\/fr\/wp-json\/wp\/v2\/media?parent=3887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}