{"id":2848,"date":"2020-03-27T18:40:04","date_gmt":"2020-03-27T17:40:04","guid":{"rendered":"https:\/\/www.aerian.fr\/?p=2848"},"modified":"2020-04-08T15:37:55","modified_gmt":"2020-04-08T13:37:55","slug":"english-a-teams-notifying-ci-cd","status":"publish","type":"post","link":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/","title":{"rendered":"A Teams notifying CI\/CD"},"content":{"rendered":"<div id=\"pl-2848\"  class=\"panel-layout\" ><div id=\"pg-2848-0\"  class=\"panel-grid panel-has-style\" ><div style=\"padding: 100px 0; \" data-overlay=\"true\" class=\"panel-row-style panel-row-style-for-2848-0\" ><div id=\"pgc-2848-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-2848-0-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child\" data-index=\"0\" ><div style=\"text-align: left;\" data-title-color=\"#443f3f\" data-headings-color=\"#443f3f\" class=\"panel-widget-style panel-widget-style-for-2848-0-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<h1>Introduction<\/h1>\n<p>In order to inform our teams member we were currently using the native integration proposed by Gitlab<br \/>\nto send webhook to teams.<\/p>\n<p>However I was facing the following limitation:<br \/>\n* Settings too restrictive, only one webhook by project<br \/>\n* Settings not selective enough, a lot of spam was transmitted<\/p>\n<p>I thus decided to change my way of processing and directly send the webhook from<br \/>\na CI\/CD customized and executing only on release branches (vX-dev\/vX).<\/p>\n<p>The current article will describe how I send those notifications.<\/p>\n<p><strong>Summary<\/strong><\/p>\n<p>First step, semantic release push the new version and it's release;<br \/>\nSecond step, the CI trigger, get the release, modify a Teams JSON Card and send the payload to the Channel URL.<\/p>\n<h1>Teams JSON card<\/h1>\n<p>For the moment I only made one basic card template like<\/p>\n<pre><code class=\"language-json\">{\n    \"@type\": \"MessageCard\",\n    \"@context\": \"http:\/\/schema.org\/extensions\",\n    \"themeColor\": \"0076D7\",\n    \"summary\": \"__summary__\",\n    \"sections\": [\n        {\n            \"activityTitle\": \"__activityTitle__\",\n            \"activitySubtitle\": \"__activitySubtitle__\",\n            \"activityImage\": \"__activityImage__\",\n            \"facts\": [\n                {\n                    \"name\": \"Published by\",\n                    \"value\": \"__author__\"\n                }\n            ],\n            \"text\": \"__text__\",\n            \"markdown\": true\n        }\n    ]\n}\n<\/code><\/pre>\n<p>You can see all the variables you can changes as <code>__xxxx__<\/code>.<br \/>\nThe card as been created from the <a href=\"https:\/\/messagecardplayground.azurewebsites.net\/\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"broken_link\">Message card playground<\/a>.<\/p>\n<h1>Gitlab CI<\/h1>\n<h2>.notify-ci.yml<\/h2>\n<p>I add quite problems with this CI due to the replacements and Gitlab compatibility.<br \/>\nIt's the main reason I use a bash template to send my commands, it avoid some problems.<\/p>\n<pre><code class=\"language-yaml\">.teams_release: &amp;teams_release |\n  echo \"Running for $CI_COMMIT_REF_NAME with URL: $CI_API_V4_URL\/projects\/$CI_PROJECT_ID\/releases\/$CI_COMMIT_REF_NAME\"\n  curl -vvv --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" -o release.json \"$CI_API_V4_URL\/projects\/$CI_PROJECT_ID\/releases\/$CI_COMMIT_REF_NAME\"\n  cat release.json\n  export text=\"Release notes:   \\n$(cat release.json|jq .description|tr -d \\\")\"\n  export author_name=$(cat release.json|jq \".commit|.author_name\")\n  export author_email=$(cat release.json|jq \".commit|.author_email\")\n  export avatar_url=$(curl -vvv --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \"$CI_API_V4_URL\/avatar?email=${author_email\/\/\\\"}\"|jq .avatar_url)\n  export author=\"[${author_name\/\/\\\"}](mailto:${author_email\/\/\\\"})\"\n  echo \"Got author $author (author_name:$author_email) with avatar: $avatar_url\"\n  perl -pi -e 's\/__text__\/$ENV{text}\/g' $CARD_JSON\n  sed -i \"s~__activityImage__~$avatar_url~g\" $CARD_JSON\n  sed -i \"s~__activitySubtitle__~Release $CI_COMMIT_REF_NAME is available~g\" $CARD_JSON\n  sed -i \"s~__activityTitle__~[$CI_PROJECT_NAME]($CI_PROJECT_URL)~g\" $CARD_JSON\n  sed -i \"s~__author__~$author~g\" $CARD_JSON\n  sed -i 's~\"\"~\"~g' $CARD_JSON\n\n.teams: &amp;teams\n  image: alpine  \n  before_script:\n    - apk --no-cache add curl jq perl\n  script:\n    - echo \"Running for $CI_COMMIT_REF_NAME\"\n    - *teams_release\n    - cat $CARD_JSON\n    - 'curl -L -H \"Content-Type: application\/json\" -d @$CARD_JSON $HOOK_URL'\n\n## Check if version tag\n.only_version_tag: &amp;vers\n  only:\n   - \/^v([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z-]+)?$\/\n  except:\n   - branches\n   - triggers\n\n## Staging\nnotify_monitoring:\n    stage: notify\n    &lt;&lt;: *vers\n    &lt;&lt;: *teams\n    variables:\n      CARD_TYPE: \"teams_release\"\n      HOOK_URL: \"$MONITORING_HOOK\"\n    only:\n    - \/v*-dev\/\n    - \/^v\\d+\\.\\d+(\\.\\d+)?$\/\n<\/code><\/pre>\n<p>The CI\/CD will automatically install all the deps and work only on releases branches.<\/p>\n<h2>.gitlab-ci.yml<\/h2>\n<p>And then the Gitlab CI.<\/p>\n<pre><code class=\"language-yaml\">include:\n  - local: '.notify-ci.yml'\n  - local: '.release-ci.yml'\n\nstages:\n  - release \n  - notify\n<\/code><\/pre>\n<p>And here the final result for one commit.:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier.png\" alt=\"\" width=\"1069\" height=\"359\" class=\"alignnone size-full wp-image-2849\" srcset=\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier.png 1069w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-300x101.png 300w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-1024x344.png 1024w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-150x50.png 150w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-768x258.png 768w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-830x279.png 830w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-230x77.png 230w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-350x118.png 350w, https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/tems_notifier-480x161.png 480w\" sizes=\"auto, (max-width: 1069px) 100vw, 1069px\" \/><\/p>\n<\/div>\n<\/div><\/div><\/div><div id=\"panel-2848-0-0-1\" class=\"so-panel widget panel-last-child\" data-index=\"1\" ><div style=\"text-align: left;\" data-title-color=\"#443f3f\" data-headings-color=\"#443f3f\" class=\"panel-widget-style panel-widget-style-for-2848-0-0-1\" ><\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction In order to inform our teams member we were currently using the native integration proposed by Gitlab to send webhook to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2850,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[245,221],"tags":[241,240,242,256,257,255,258],"class_list":["post-2848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-system","tag-cd","tag-ci","tag-gitlab","tag-notifier","tag-notify","tag-teams","tag-webhook"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Teams notifying CI\/CD - Aerian.fr<\/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.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Teams notifying CI\/CD - Aerian.fr\" \/>\n<meta property=\"og:description\" content=\"Introduction In order to inform our teams member we were currently using the native integration proposed by Gitlab to send webhook to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/\" \/>\n<meta property=\"og:site_name\" content=\"Aerian.fr\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-27T17:40:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-08T13:37:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2031\" \/>\n\t<meta property=\"og:image:height\" content=\"881\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"42\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@LinceAerian\" \/>\n<meta name=\"twitter:site\" content=\"@LinceAerian\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"42\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/\"},\"author\":{\"name\":\"42\",\"@id\":\"https:\/\/www.aerian.fr\/#\/schema\/person\/622c3cefbea11a0be741137608b4bf8b\"},\"headline\":\"A Teams notifying CI\/CD\",\"datePublished\":\"2020-03-27T17:40:04+00:00\",\"dateModified\":\"2020-04-08T13:37:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/\"},\"wordCount\":232,\"publisher\":{\"@id\":\"https:\/\/www.aerian.fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg\",\"keywords\":[\"cd\",\"ci\",\"gitlab\",\"notifier\",\"notify\",\"teams\",\"webhook\"],\"articleSection\":[\"Programming\",\"System\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/\",\"url\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/\",\"name\":\"A Teams notifying CI\/CD - Aerian.fr\",\"isPartOf\":{\"@id\":\"https:\/\/www.aerian.fr\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg\",\"datePublished\":\"2020-03-27T17:40:04+00:00\",\"dateModified\":\"2020-04-08T13:37:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#primaryimage\",\"url\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg\",\"contentUrl\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg\",\"width\":2031,\"height\":881,\"caption\":\"teams bg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.aerian.fr\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"(English) A Teams notifying CI\/CD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aerian.fr\/en\/#website\",\"url\":\"https:\/\/www.aerian.fr\/en\/\",\"name\":\"Aerian.fr\",\"description\":\"Welcome to Aerian.fr\",\"publisher\":{\"@id\":\"https:\/\/www.aerian.fr\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aerian.fr\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.aerian.fr\/en\/#organization\",\"name\":\"Aerian.fr\",\"url\":\"https:\/\/www.aerian.fr\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aerian.fr\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2012\/01\/logo.png\",\"contentUrl\":\"https:\/\/www.aerian.fr\/wp-content\/uploads\/2012\/01\/logo.png\",\"width\":667,\"height\":522,\"caption\":\"Aerian.fr\"},\"image\":{\"@id\":\"https:\/\/www.aerian.fr\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/LinceAerian\",\"https:\/\/www.linkedin.com\/in\/marleixmathieu\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.aerian.fr\/#\/schema\/person\/622c3cefbea11a0be741137608b4bf8b\",\"name\":\"42\",\"sameAs\":[\"http:\/\/www.aerian.fr\"],\"url\":\"https:\/\/www.aerian.fr\/en\/author\/lince\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Teams notifying CI\/CD - Aerian.fr","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.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/","og_locale":"en_US","og_type":"article","og_title":"A Teams notifying CI\/CD - Aerian.fr","og_description":"Introduction In order to inform our teams member we were currently using the native integration proposed by Gitlab to send webhook to [&hellip;]","og_url":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/","og_site_name":"Aerian.fr","article_published_time":"2020-03-27T17:40:04+00:00","article_modified_time":"2020-04-08T13:37:55+00:00","og_image":[{"width":2031,"height":881,"url":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg","type":"image\/jpeg"}],"author":"42","twitter_card":"summary_large_image","twitter_creator":"@LinceAerian","twitter_site":"@LinceAerian","twitter_misc":{"Written by":"42","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#article","isPartOf":{"@id":"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/"},"author":{"name":"42","@id":"https:\/\/www.aerian.fr\/#\/schema\/person\/622c3cefbea11a0be741137608b4bf8b"},"headline":"A Teams notifying CI\/CD","datePublished":"2020-03-27T17:40:04+00:00","dateModified":"2020-04-08T13:37:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/"},"wordCount":232,"publisher":{"@id":"https:\/\/www.aerian.fr\/#organization"},"image":{"@id":"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg","keywords":["cd","ci","gitlab","notifier","notify","teams","webhook"],"articleSection":["Programming","System"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/","url":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/","name":"A Teams notifying CI\/CD - Aerian.fr","isPartOf":{"@id":"https:\/\/www.aerian.fr\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#primaryimage"},"image":{"@id":"https:\/\/www.aerian.fr\/english-a-teams-notifying-ci-cd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg","datePublished":"2020-03-27T17:40:04+00:00","dateModified":"2020-04-08T13:37:55+00:00","breadcrumb":{"@id":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/"]]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#primaryimage","url":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg","contentUrl":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2020\/03\/Solution-Microsoft-teams.jpg","width":2031,"height":881,"caption":"teams bg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.aerian.fr\/en\/english-a-teams-notifying-ci-cd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aerian.fr\/en\/"},{"@type":"ListItem","position":2,"name":"(English) A Teams notifying CI\/CD"}]},{"@type":"WebSite","@id":"https:\/\/www.aerian.fr\/en\/#website","url":"https:\/\/www.aerian.fr\/en\/","name":"Aerian.fr","description":"Welcome to Aerian.fr","publisher":{"@id":"https:\/\/www.aerian.fr\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aerian.fr\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.aerian.fr\/en\/#organization","name":"Aerian.fr","url":"https:\/\/www.aerian.fr\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aerian.fr\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2012\/01\/logo.png","contentUrl":"https:\/\/www.aerian.fr\/wp-content\/uploads\/2012\/01\/logo.png","width":667,"height":522,"caption":"Aerian.fr"},"image":{"@id":"https:\/\/www.aerian.fr\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/LinceAerian","https:\/\/www.linkedin.com\/in\/marleixmathieu"]},{"@type":"Person","@id":"https:\/\/www.aerian.fr\/#\/schema\/person\/622c3cefbea11a0be741137608b4bf8b","name":"42","sameAs":["http:\/\/www.aerian.fr"],"url":"https:\/\/www.aerian.fr\/en\/author\/lince\/"}]}},"_links":{"self":[{"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/posts\/2848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/comments?post=2848"}],"version-history":[{"count":5,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/posts\/2848\/revisions"}],"predecessor-version":[{"id":2899,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/posts\/2848\/revisions\/2899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/media\/2850"}],"wp:attachment":[{"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/media?parent=2848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/categories?post=2848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aerian.fr\/en\/wp-json\/wp\/v2\/tags?post=2848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}