{"id":445187,"date":"2026-10-29T16:27:37","date_gmt":"2026-10-29T15:27:37","guid":{"rendered":"https:\/\/www.kafinea.com\/documentation\/uncategorized\/api-rest-approbations\/"},"modified":"2026-10-29T23:05:03","modified_gmt":"2026-10-29T22:05:03","password":"","slug":"api-rest-approbations","status":"publish","type":"docs","link":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/","title":{"rendered":"API REST \u2013 Approbations"},"content":{"rendered":"<p>L&rsquo;API couvre tout le cycle des <a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/automatisation\/les-approbations\/\">approbations<\/a> : configurer le circuit d&rsquo;un module, demander l&rsquo;approbation d&rsquo;une fiche, r\u00e9pondre aux \u00e9tapes et suivre les demandes. Les contr\u00f4les sont ceux des \u00e9crans : ce qu&rsquo;un \u00e9cran refuse, l&rsquo;API le refuse avec le m\u00eame motif. Les m\u00eames op\u00e9rations sont propos\u00e9es \u00e0 l&rsquo;assistant IA de Kafinea et aux assistants <a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/intelligence-artificielle\/connecter-une-ia-externe-mcp\/\">connect\u00e9s \u00e0 Kafinea<\/a>.<\/p>\n<p>Toutes utilisent la session de l&rsquo;<a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-introduction\/\">API REST<\/a>. Les identifiants sont ceux de l&rsquo;API (<code>89x47808<\/code>) ; un simple num\u00e9ro est aussi accept\u00e9.<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Op\u00e9ration<\/th>\n<th>M\u00e9thode<\/th>\n<th>Qui<\/th>\n<th>Effet<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>approval_circuit_read<\/code><\/td>\n<td>GET<\/td>\n<td>administrateur<\/td>\n<td>Les circuits, ou le circuit d&rsquo;un module avec ses mod\u00e8les et le format attendu<\/td>\n<\/tr>\n<tr>\n<td><code>approval_circuit_configure<\/code><\/td>\n<td>POST<\/td>\n<td>administrateur<\/td>\n<td>V\u00e9rifier, enregistrer, activer, d\u00e9sactiver ou supprimer un circuit<\/td>\n<\/tr>\n<tr>\n<td><code>approval_circuit_simulate<\/code><\/td>\n<td>GET<\/td>\n<td>administrateur<\/td>\n<td>Ce qu&rsquo;un circuit demanderait pour 1 \u00e0 20 fiches, sans rien enregistrer<\/td>\n<\/tr>\n<tr>\n<td><code>approval_inbox<\/code><\/td>\n<td>GET<\/td>\n<td>chacun<\/td>\n<td>Ce qui attend sa r\u00e9ponse, ses demandes, les demandes des autres qu&rsquo;il peut consulter<\/td>\n<\/tr>\n<tr>\n<td><code>approval_request_read<\/code><\/td>\n<td>GET<\/td>\n<td>chacun<\/td>\n<td>L&rsquo;approbation d&rsquo;une fiche, telle que son panneau la montre<\/td>\n<\/tr>\n<tr>\n<td><code>approval_request<\/code><\/td>\n<td>POST<\/td>\n<td>chacun<\/td>\n<td>Demander l&rsquo;approbation d&rsquo;une fiche qu&rsquo;il peut modifier<\/td>\n<\/tr>\n<tr>\n<td><code>approval_answer<\/code><\/td>\n<td>POST<\/td>\n<td>l&rsquo;approbateur<\/td>\n<td>Sa propre r\u00e9ponse \u00e0 une \u00e9tape qui lui est confi\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><code>approval_cancel<\/code><\/td>\n<td>POST<\/td>\n<td>demandeur ou administrateur<\/td>\n<td>Annuler une demande en attente<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Les op\u00e9rations des demandes et des r\u00e9ponses sont disponibles quand la fonctionnalit\u00e9 <strong>Approbations<\/strong> est active.<\/p>\n<hr \/>\n<h2>1. Configurer un circuit<\/h2>\n<p><code>approval_circuit_read<\/code> sans param\u00e8tre liste les circuits et les modules qui peuvent en recevoir un. Avec <code>moduleName<\/code>, il renvoie le circuit du module (<code>circuit<\/code>, avec sa <code>revision<\/code>), les mod\u00e8les de d\u00e9part (<code>templates<\/code>) et le format d&rsquo;un circuit (<code>contract<\/code>).<\/p>\n<pre><code class=\"language-bash\">curl -G 'https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php' \\\n  --data-urlencode 'operation=approval_circuit_read' \\\n  --data-urlencode 'sessionName=YOUR_SESSION_ID' \\\n  --data-urlencode 'moduleName=Quotes'\n<\/code><\/pre>\n<p>Un circuit se d\u00e9crit en entier :<\/p>\n<pre><code class=\"language-json\">{\n  &quot;label&quot;: &quot;Devis au-del\u00e0 de 5 000 \u20ac HT&quot;,\n  &quot;active&quot;: true,\n  &quot;condition&quot;: [{&quot;fieldname&quot;: &quot;pre_tax_total&quot;, &quot;operation&quot;: &quot;greater than&quot;, &quot;value&quot;: &quot;5000&quot;, &quot;groupid&quot;: &quot;0&quot;}],\n  &quot;finalizeOnApproval&quot;: true,\n  &quot;steps&quot;: [{\n    &quot;label&quot;: &quot;Responsable commercial&quot;,\n    &quot;condition&quot;: [],\n    &quot;approver&quot;: {&quot;mode&quot;: &quot;manager&quot;, &quot;managerOf&quot;: &quot;requester&quot;},\n    &quot;dueDays&quot;: 2,\n    &quot;summaryTemplate&quot;: &quot;Devis $subject : $pre_tax_total \u20ac HT&quot;\n  }]\n}\n<\/code><\/pre>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>\u00c9l\u00e9ment<\/th>\n<th>Contenu<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>condition<\/code><\/td>\n<td>Les fiches qui doivent \u00eatre approuv\u00e9es, au format des conditions des flux de travail ; <code>[]<\/code> pour toutes. <code>groupid<\/code> <code>0<\/code> : tous ces crit\u00e8res ; <code>1<\/code> : au moins l&rsquo;un d&rsquo;eux<\/td>\n<\/tr>\n<tr>\n<td><code>steps[].approver<\/code><\/td>\n<td><code>fixed<\/code> avec <code>ownerId<\/code> (un utilisateur ou un groupe), <code>manager<\/code> avec <code>managerOf<\/code> (<code>requester<\/code> ou <code>owner<\/code>), ou <code>field<\/code> avec <code>expression<\/code> (par exemple <code>assigned_user_id<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><code>steps[].condition<\/code><\/td>\n<td>Facultative : une \u00e9tape dont la condition n&rsquo;est pas remplie est pass\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><code>steps[].stepId<\/code><\/td>\n<td>\u00c0 renvoyer tel que lu : les demandes d\u00e9j\u00e0 faites continuent de nommer leur \u00e9tape<\/td>\n<\/tr>\n<tr>\n<td><code>watchedFields<\/code><\/td>\n<td>Les champs dont la modification apr\u00e8s l&rsquo;approbation la rend caduque, en plus de ceux que lisent les conditions (toujours surveill\u00e9s) ; <code>watchedLabels<\/code> les liste tous, avec leur libell\u00e9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>approval_circuit_configure<\/code> re\u00e7oit <code>moduleName<\/code>, <code>action<\/code> et, selon l&rsquo;action, <code>definition<\/code> (le circuit en JSON) et <code>revision<\/code> :<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th><code>action<\/code><\/th>\n<th>Effet<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>validate<\/code><\/td>\n<td>V\u00e9rifie <code>definition<\/code> sans rien enregistrer et renvoie <code>valid<\/code> et la liste <code>problems<\/code> (chacun avec <code>path<\/code>, <code>code<\/code> et <code>message<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><code>save<\/code><\/td>\n<td>Enregistre <code>definition<\/code> en entier ; <code>revision<\/code> est celle lue, <code>0<\/code> pour cr\u00e9er le circuit d&rsquo;un module qui n&rsquo;en a pas<\/td>\n<\/tr>\n<tr>\n<td><code>activate<\/code>, <code>deactivate<\/code><\/td>\n<td>Active ou d\u00e9sactive le circuit de la <code>revision<\/code> lue<\/td>\n<\/tr>\n<tr>\n<td><code>delete<\/code><\/td>\n<td>Supprime le circuit ; les demandes d\u00e9j\u00e0 faites restent<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<pre><code class=\"language-bash\">curl -X POST 'https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php' \\\n  --data-urlencode 'operation=approval_circuit_configure' \\\n  --data-urlencode 'sessionName=YOUR_SESSION_ID' \\\n  --data-urlencode 'moduleName=Quotes' \\\n  --data-urlencode 'action=save' \\\n  --data-urlencode 'revision=3' \\\n  --data-urlencode 'definition={&quot;label&quot;:&quot;Devis au-del\u00e0 de 5 000 \u20ac HT&quot;,&quot;active&quot;:true,\u2026}'\n<\/code><\/pre>\n<p>Un circuit actif doit pouvoir \u00eatre approuv\u00e9 : chaque \u00e9tape a un approbateur valable. Un circuit inactif peut rester un brouillon.<\/p>\n<p>Avant d&rsquo;activer, <code>approval_circuit_simulate<\/code> montre, pour des fiches enregistr\u00e9es (<code>recordIds<\/code>, une liste JSON) et un demandeur (<code>requesterId<\/code>, l&rsquo;utilisateur connect\u00e9 par d\u00e9faut), si la condition du circuit est remplie et qui serait sollicit\u00e9 \u00e0 chaque \u00e9tape, ou pourquoi personne ne pourrait r\u00e9pondre (<code>error<\/code>). Passez <code>definition<\/code> pour tester un circuit avant de l&rsquo;enregistrer. Rien n&rsquo;est enregistr\u00e9 ni envoy\u00e9.<\/p>\n<hr \/>\n<h2>2. Demander, r\u00e9pondre, suivre<\/h2>\n<p><code>approval_inbox<\/code> renvoie, selon <code>box<\/code> : <code>toAnswer<\/code> (les \u00e9tapes qui attendent la r\u00e9ponse de l&rsquo;utilisateur, directement ou par l&rsquo;un de ses groupes), <code>requested<\/code> (ses demandes) ou <code>others<\/code> (les autres demandes en attente qu&rsquo;il peut consulter). Sans <code>box<\/code>, les trois. Chaque \u00e9tape \u00e0 traiter porte son <code>lineId<\/code>.<\/p>\n<p><code>approval_request_read<\/code> avec <code>recordId<\/code> renvoie la demande en cours de la fiche, ses \u00e9tapes (approbateur, r\u00e9ponse, motif, <code>canAnswer<\/code> pour celle \u00e0 laquelle l&rsquo;utilisateur peut r\u00e9pondre) et <code>wouldAsk<\/code> : ce qu&rsquo;une nouvelle demande solliciterait.<\/p>\n<p><code>approval_request<\/code> avec <code>recordId<\/code> demande l&rsquo;approbation au nom de l&rsquo;utilisateur connect\u00e9. Elle est refus\u00e9e quand rien ne demande d&rsquo;approbation ou qu&rsquo;une demande attend d\u00e9j\u00e0.<\/p>\n<p><code>approval_answer<\/code> re\u00e7oit <code>lineId<\/code>, <code>answer<\/code> (<code>approve<\/code>, <code>refuse<\/code> ou <code>changes<\/code>) et <code>reason<\/code>, obligatoire pour refuser ou demander des modifications :<\/p>\n<pre><code class=\"language-bash\">curl -X POST 'https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php' \\\n  --data-urlencode 'operation=approval_answer' \\\n  --data-urlencode 'sessionName=YOUR_SESSION_ID' \\\n  --data-urlencode 'lineId=194x48180' \\\n  --data-urlencode 'answer=approve'\n<\/code><\/pre>\n<p>La r\u00e9ponse est toujours celle de l&rsquo;utilisateur connect\u00e9 : aucun param\u00e8tre ne d\u00e9signe un autre utilisateur. Elle est refus\u00e9e quand l&rsquo;\u00e9tape n&rsquo;est pas confi\u00e9e \u00e0 cet utilisateur ou \u00e0 l&rsquo;un de ses groupes (administrateurs compris), quand c&rsquo;est sa propre demande, ou quand un autre membre du groupe a d\u00e9j\u00e0 r\u00e9pondu.<\/p>\n<p><code>approval_cancel<\/code> avec <code>approvalId<\/code> annule une demande en attente : son demandeur ou un administrateur.<\/p>\n<hr \/>\n<h2>3. Le statut d&rsquo;approbation des fiches<\/h2>\n<p>Chaque fiche d&rsquo;un module qui a un circuit porte le champ en lecture seule <code>mdsapprovalstatus<\/code> : vide tant qu&rsquo;aucune approbation n&rsquo;a \u00e9t\u00e9 demand\u00e9e, puis <code>APPROVAL_STATUS_PENDING<\/code>, <code>APPROVAL_STATUS_APPROVED<\/code>, <code>APPROVAL_STATUS_REFUSED<\/code>, <code>APPROVAL_STATUS_CHANGES_REQUESTED<\/code>, <code>APPROVAL_STATUS_CANCELLED<\/code> ou <code>APPROVAL_STATUS_OBSOLETE<\/code> (approbation caduque). Il se lit comme tout champ, avec <code>retrieve<\/code> ou <code>query<\/code> :<\/p>\n<pre><code class=\"language-bash\">curl -G 'https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php' \\\n  --data-urlencode 'operation=query' \\\n  --data-urlencode 'sessionName=YOUR_SESSION_ID' \\\n  --data-urlencode &quot;query=SELECT potentialname, amount FROM Potentials WHERE mdsapprovalstatus = 'APPROVAL_STATUS_APPROVED';&quot;\n<\/code><\/pre>\n<p>Seules les approbations l&rsquo;\u00e9crivent. Une approbation devient caduque quand un champ surveill\u00e9 de la fiche change ensuite ; la demande garde alors le motif dans sa description.<\/p>\n<hr \/>\n<h2>4. Refus<\/h2>\n<p>Un refus commence par son code, suivi du motif lisible :<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Code<\/th>\n<th>Signification<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>APPROVAL_CIRCUIT_INVALID<\/code><\/td>\n<td>Le circuit n&rsquo;est pas valable ; chaque probl\u00e8me suit, une ligne par probl\u00e8me, avec son chemin et son code<\/td>\n<\/tr>\n<tr>\n<td><code>APPROVAL_CIRCUIT_REVISION_CHANGED<\/code><\/td>\n<td>Le circuit a chang\u00e9 depuis sa lecture : relisez-le, puis refaites la modification<\/td>\n<\/tr>\n<tr>\n<td><code>APPROVAL_CIRCUIT_NOT_FOUND<\/code>, <code>APPROVAL_CIRCUIT_EXISTS<\/code><\/td>\n<td>Le module n&rsquo;a pas de circuit, ou en a d\u00e9j\u00e0 un<\/td>\n<\/tr>\n<tr>\n<td><code>APPROVAL_REFUSED<\/code><\/td>\n<td>La demande, la r\u00e9ponse ou l&rsquo;annulation n&rsquo;est pas permise ; le motif est celui que l&rsquo;\u00e9cran affiche<\/td>\n<\/tr>\n<tr>\n<td><code>APPROVAL_FEATURE_DISABLED<\/code><\/td>\n<td>La fonctionnalit\u00e9 <strong>Approbations<\/strong> n&rsquo;est pas active<\/td>\n<\/tr>\n<tr>\n<td><code>ACCESS_DENIED<\/code><\/td>\n<td>L&rsquo;op\u00e9ration est r\u00e9serv\u00e9e aux administrateurs<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;API couvre tout le cycle des approbations : configurer le circuit d&rsquo;un module, demander l&rsquo;approbation d&rsquo;une fiche, r\u00e9pondre aux \u00e9tapes et suivre les demandes. Les contr\u00f4les sont ceux des \u00e9crans : ce qu&rsquo;un \u00e9cran refuse, l&rsquo;API le refuse avec le m\u00eame motif. Les m\u00eames op\u00e9rations sont propos\u00e9es \u00e0 l&rsquo;assistant IA de Kafinea et aux assistants&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"doc_category":[58],"doc_tag":[],"class_list":["post-445187","docs","type-docs","status-publish","hentry","doc_category-api"],"year_month":"2026-10","word_count":1157,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"David Valminos","author_nicename":"david","author_url":"https:\/\/www.kafinea.com\/fr\/author\/david\/"},"doc_category_info":[{"term_name":"API","term_url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Documentation - API REST \u2013 Approbations &#8226; Kafinea<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentation - API REST \u2013 Approbations &#8226; Kafinea\" \/>\n<meta property=\"og:description\" content=\"L&rsquo;API couvre tout le cycle des approbations : configurer le circuit d&rsquo;un module, demander l&rsquo;approbation d&rsquo;une fiche, r\u00e9pondre aux \u00e9tapes et suivre les demandes. Les contr\u00f4les sont ceux des \u00e9crans : ce qu&rsquo;un \u00e9cran refuse, l&rsquo;API le refuse avec le m\u00eame motif. Les m\u00eames op\u00e9rations sont propos\u00e9es \u00e0 l&rsquo;assistant IA de Kafinea et aux assistants...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/\" \/>\n<meta property=\"og:site_name\" content=\"Kafinea\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T22:05:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-approbations\\\/\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-approbations\\\/\",\"name\":\"Documentation - API REST \u2013 Approbations &#8226; Kafinea\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#website\"},\"datePublished\":\"2026-10-29T15:27:37+00:00\",\"dateModified\":\"2026-10-29T22:05:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-approbations\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-approbations\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-approbations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API REST \u2013 Approbations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\",\"name\":\"Kafinea\",\"description\":\"Une solution unique pour toutes vos ambitions\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#organization\",\"name\":\"Kafinea\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Logo-Kafinea-SVG-orange-bleu.svg\",\"contentUrl\":\"https:\\\/\\\/www.kafinea.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Logo-Kafinea-SVG-orange-bleu.svg\",\"width\":296.31,\"height\":66.48,\"caption\":\"Kafinea\"},\"image\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/kafinea\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Documentation - API REST \u2013 Approbations &#8226; Kafinea","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/","og_locale":"fr_FR","og_type":"article","og_title":"Documentation - API REST \u2013 Approbations &#8226; Kafinea","og_description":"L&rsquo;API couvre tout le cycle des approbations : configurer le circuit d&rsquo;un module, demander l&rsquo;approbation d&rsquo;une fiche, r\u00e9pondre aux \u00e9tapes et suivre les demandes. Les contr\u00f4les sont ceux des \u00e9crans : ce qu&rsquo;un \u00e9cran refuse, l&rsquo;API le refuse avec le m\u00eame motif. Les m\u00eames op\u00e9rations sont propos\u00e9es \u00e0 l&rsquo;assistant IA de Kafinea et aux assistants...","og_url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/","og_site_name":"Kafinea","article_modified_time":"2026-10-29T22:05:03+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/","url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/","name":"Documentation - API REST \u2013 Approbations &#8226; Kafinea","isPartOf":{"@id":"https:\/\/www.kafinea.com\/fr\/#website"},"datePublished":"2026-10-29T15:27:37+00:00","dateModified":"2026-10-29T22:05:03+00:00","breadcrumb":{"@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-approbations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.kafinea.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API REST \u2013 Approbations"}]},{"@type":"WebSite","@id":"https:\/\/www.kafinea.com\/fr\/#website","url":"https:\/\/www.kafinea.com\/fr\/","name":"Kafinea","description":"Une solution unique pour toutes vos ambitions","publisher":{"@id":"https:\/\/www.kafinea.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kafinea.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.kafinea.com\/fr\/#organization","name":"Kafinea","url":"https:\/\/www.kafinea.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.kafinea.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.kafinea.com\/wp-content\/uploads\/2024\/10\/Logo-Kafinea-SVG-orange-bleu.svg","contentUrl":"https:\/\/www.kafinea.com\/wp-content\/uploads\/2024\/10\/Logo-Kafinea-SVG-orange-bleu.svg","width":296.31,"height":66.48,"caption":"Kafinea"},"image":{"@id":"https:\/\/www.kafinea.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/kafinea\/"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"David Valminos","author_link":"https:\/\/www.kafinea.com\/fr\/author\/david\/"},"uagb_comment_info":0,"uagb_excerpt":"L&rsquo;API couvre tout le cycle des approbations : configurer le circuit d&rsquo;un module, demander l&rsquo;approbation d&rsquo;une fiche, r\u00e9pondre aux \u00e9tapes et suivre les demandes. Les contr\u00f4les sont ceux des \u00e9crans : ce qu&rsquo;un \u00e9cran refuse, l&rsquo;API le refuse avec le m\u00eame motif. Les m\u00eames op\u00e9rations sont propos\u00e9es \u00e0 l&rsquo;assistant IA de Kafinea et aux assistants...","_links":{"self":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/445187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/comments?post=445187"}],"version-history":[{"count":2,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/445187\/revisions"}],"predecessor-version":[{"id":445194,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/445187\/revisions\/445194"}],"wp:attachment":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/media?parent=445187"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/doc_category?post=445187"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/doc_tag?post=445187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}