{"id":6387,"date":"2022-01-17T16:26:00","date_gmt":"2022-01-17T15:26:00","guid":{"rendered":"https:\/\/www.luklagroup.com\/sem-categoria\/usine-a-site-premiere-approche-en-mode-multisite\/"},"modified":"2022-01-17T16:26:00","modified_gmt":"2022-01-17T15:26:00","slug":"usine-a-site-premiere-approche-en-mode-multisite","status":"publish","type":"post","link":"https:\/\/www.luklagroup.com\/pt-pt\/apps-data-pt-pt\/usine-a-site-premiere-approche-en-mode-multisite\/","title":{"rendered":"Usine \u00e0 site : premi\u00e8re approche en mode multisite"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong><em>Apr\u00e8s notre article sur <a href=\"https:\/\/digiwin.fr\/actualites\/comment-migrer-de-drupal-8-a-drupal-9-en-6-etapes\/\" target=\"_blank\" rel=\"noreferrer noopener\">la migration vers Drupal 9<\/a>,\u00a0nous poursuivons nos articles de fond et vous partageons\u00a0aujourd&#8217;hui notre r\u00e9flexion sur\u00a0les enjeux des usines \u00e0 sites.<\/em><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Le d\u00e9veloppement logiciel a fortement \u00e9volu\u00e9 ces 20 derni\u00e8res ann\u00e9es passant d&#8217;un mode artisanal\u00a0\u00e0 un fonctionnement industrialis\u00e9. On retrouve cet aspect notamment dans les pratiques DevOps o\u00f9 l&#8217;automatisme va de pair avec le contr\u00f4le qualit\u00e9. Finalement, on cherche \u00e0 se rapprocher du monde de l&#8217;industrie traditionnelle produisant \u00e0 la cha\u00eene rapidement et efficacement.<\/em><\/strong>\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Pour aller plus loin dans ce rapprochement avec le monde industriel,&nbsp;est apparu le concept d&#8217;usine \u00e0 sites.&nbsp;Chez&nbsp;Digiwin, ce concept est mis en \u0153uvre avec succ\u00e8s<\/em><\/strong> <strong><em>en s&#8217;appuyant sur le puissant CMS Drupal. Nous allons vous pr\u00e9senter ici ce travail, cette exp\u00e9rience, depuis nos d\u00e9buts jusqu&#8217;\u00e0 notre solution actuelle d&#8217;usine \u00e0 sites.&nbsp;<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Petit rappel sur Drupal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Drupal est un CMS (Content Management System), ce que nous traduirons en fran\u00e7ais par \u00ab\u202f<strong>syst\u00e8me de gestion de contenu<\/strong>\u202f\u00bb. Pour la petite histoire, son nom vient du&nbsp;vient du n\u00e9erlandais \u00ab Druppel \u00bb&nbsp;qui signifie \u00ab\u202fgoutte\u202f\u00bb,&nbsp;d\u2019o\u00f9 son logo.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img alt=\"\" decoding=\"async\" src=\"https:\/\/digiwin.fr\/wp-content\/uploads\/2021\/09\/Drupal.png\" alt=\"\" class=\"wp-image-3477\" width=\"589\" height=\"209\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Son d\u00e9veloppeur initial le d\u00e9finit comme <strong>un assembleur rapide de site web<\/strong> utilisable tel quel sur&nbsp;un&nbsp;serveur web.&nbsp;Il peut \u00eatre utilis\u00e9&nbsp;et personnalis\u00e9&nbsp;de&nbsp;plusieurs mani\u00e8res, graduellement plus complexes,&nbsp;en fonction du niveau de connaissance\u202f:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Out of the box<\/strong>\u202f: il permet de s\u2019authentifier,&nbsp;g\u00e9rer les r\u00e9visions,&nbsp;cr\u00e9er&nbsp;ses&nbsp;propres types de contenus, menus, etc\u2026&nbsp;<\/li><li><strong>Personnalisation simple<\/strong>\u202f: il permet de modifier l\u2019emplacement des&nbsp;\u00e9l\u00e9ments&nbsp;graphiques&nbsp;par simple drag and drop et de modifier l\u2019apparence du site en utilisant un th\u00e8me diff\u00e9rent,&nbsp;directement&nbsp;\u00e0 partir du back-office.&nbsp;<\/li><li><strong>Extension des fonctionnalit\u00e9s par ajout de modules<\/strong>&nbsp;issus de la communaut\u00e9&nbsp;<\/li><li><strong>Extension des fonctionnalit\u00e9s par d\u00e9veloppement interne<\/strong>,&nbsp;ou par le&nbsp;d\u00e9veloppement de&nbsp;ses propres modules qui peuvent \u00e0 leur tour \u00eatre&nbsp;partag\u00e9s, ou pas, avec&nbsp;la communaut\u00e9.&nbsp;<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Drupal&nbsp;poss\u00e8de&nbsp;en outre&nbsp;une&nbsp;hi\u00e9rarchie de fonctions substituables qui permet aux d\u00e9veloppeurs exp\u00e9riment\u00e9s de r\u00e9\u00e9crire une partie du fonctionnement du site sans toucher au reste (syst\u00e8me de&nbsp;hook).&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toute cette modularit\u00e9&nbsp;permet une grande richesse de personnalisation, mais&nbsp;pr\u00e9sente quelques&nbsp;d\u00e9fauts, notamment son&nbsp;mod\u00e8le de base de donn\u00e9es. Plut\u00f4t&nbsp;complexe, elle&nbsp;peut&nbsp;contenir&nbsp;plusieurs centaines de tables en fonction&nbsp;des&nbsp;types de contenus cr\u00e9\u00e9s et des modules utilis\u00e9s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9finition d&#8217;un Multisite sous Drupal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Une installation multi-site permet \u00e0 une seule&nbsp;instance&nbsp;Drupal&nbsp;(codebase identique)&nbsp;de servir plusieurs sites&nbsp;ayant des&nbsp;noms de domaines&nbsp;diff\u00e9rents.<\/strong>&nbsp;Chaque site poss\u00e8de sa propre base de donn\u00e9es et donc son propre param\u00e9trage, ses propres contenus,&nbsp;ses&nbsp;propres&nbsp;modules et th\u00e8mes&nbsp;activ\u00e9s.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans&nbsp;une architecture multisite, les sites auront souvent un th\u00e8me de base commun et chaque site pourra impl\u00e9menter un sous-th\u00e8me sp\u00e9cifique pour personnaliser son look tout en conservant les grandes lignes&nbsp;graphiques&nbsp;d\u00e9finies dans le th\u00e8me de base.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/digiwin.fr\/wp-content\/uploads\/2021\/10\/multisite_drupal.png\" alt=\"Illustration d'un Multisite\" class=\"wp-image-3615\" width=\"533\" height=\"407\"\/><figcaption><meta charset=\"utf-8\">Illustration d&#8217;un Multisite<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Comme des fr\u00e8res et s\u0153urs, les sites d\u2019une architecture multisites peuvent se ressembler et se comporter de la m\u00eame mani\u00e8re ou avoir chacun son propre style. Ils partagent le m\u00eame ADN.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Malgr\u00e9 tout, la maintenance et la mise \u00e0 niveau des sites peut devenir complexe et&nbsp;chronophage&nbsp;en fonction du nombre de sites.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00eame si les mont\u00e9es de version sont moins laborieuses gr\u00e2ce \u00e0 la gestion des d\u00e9pendances avec&nbsp;<a href=\"https:\/\/www.onasus.com\/bien-demarrer-composer\/\" target=\"_blank\" rel=\"noreferrer noopener\">Composer<\/a>, <strong>la mont\u00e9e de version du c\u0153ur&nbsp;impactera&nbsp;l&#8217;ensemble des sites en m\u00eame temps<\/strong>.&nbsp;Tous les sites seront&nbsp;alors&nbsp;mis en maintenance au m\u00eame moment.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De&nbsp;plus, suite \u00e0 une mont\u00e9e de version, pour des mises \u00e0 jour majeures&nbsp;du&nbsp;Core&nbsp;de Drupal, il faut souvent ex\u00e9cuter des commandes suppl\u00e9mentaires. Elles&nbsp;permettent de <strong>mettre \u00e0 jour la structure de la base de donn\u00e9es<\/strong>, mais il&nbsp;est g\u00e9n\u00e9ralement impossible de&nbsp;les&nbsp;lancer&nbsp;sur un grand nombre de sites simultan\u00e9ment.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il faut ensuite tester le bon fonctionnement de tous les sites, et \u00e9ventuellement les corriger,&nbsp;avant de les remettre en ligne.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9finition d&#8217;une Usine \u00e0 Site<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le concept d\u2019usine \u00e0 sites est souvent confondu avec le concept de multisite.&nbsp;Comme \u00e9nonc\u00e9 pr\u00e9c\u00e9demment, le multisite permet&nbsp;de g\u00e9rer&nbsp;plusieurs sites avec une seule&nbsp;instance&nbsp;du socle CMS.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quant \u00e0 elle,&nbsp;<strong>l\u2019usine \u00e0 sites&nbsp;permet d\u2019industrialiser,&nbsp;voire&nbsp;d\u2019automatiser,&nbsp;la cr\u00e9ation&nbsp;et les d\u00e9ploiements de&nbsp;nouveaux sites.<\/strong>&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/digiwin.fr\/wp-content\/uploads\/2021\/10\/usine-a-site_drupal.jpg\" alt=\"Illustration d'une Usine \u00e0 Site\" class=\"wp-image-3616\" width=\"975\" height=\"497\"\/><figcaption>Illustration d&#8217;une Usine \u00e0 Site<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ses principaux avantages sont\u202fde&nbsp;:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Donner un cadre commun en harmonisant les pratiques&nbsp;<\/li><li>Diminuer les co\u00fbts de production de chaque site&nbsp;<\/li><li>Diminuer les co\u00fbts de maintenance&nbsp;<\/li><li>Mutualiser les moyens (maintenance, h\u00e9bergement, etc.)&nbsp;<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Notre premi\u00e8re rencontre avec une usine \u00e0 site sous Drupal<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Contexte de mise en oeuvre d&#8217;un multisite avec Drupal<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notre premi\u00e8re rencontre avec une usine \u00e0 sites Drupal a eu lieu lors d\u2019une mission&nbsp;chez SNCF&nbsp;R\u00e9seau.&nbsp;Install\u00e9 en multisite, l&#8217;usage de Drupal permettait de&nbsp;d\u00e9ployer un grand nombre de sites. La majorit\u00e9 de ces sites \u00e9tait d\u00e9di\u00e9e \u00e0 l&#8217;\u00e9v\u00e8nementiel (dur\u00e9e de vie courte, besoin de mise en \u0153uvre rapide).&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plusieurs aspects se sont&nbsp;av\u00e9r\u00e9s&nbsp;fastidieux d\u00e8s la premi\u00e8re approche.&nbsp;Si cet \u00e9cosyst\u00e8me de sites \u00e9tait&nbsp;pr\u00e9sent\u00e9 comme une usine \u00e0 sites, il n\u2019y avait en r\u00e9alit\u00e9 que peu d\u2019automatismes. La majorit\u00e9 des actions&nbsp;de cr\u00e9ation de sites \u00e9taient&nbsp;r\u00e9alis\u00e9es par copie d\u2019un&nbsp;des&nbsp;mod\u00e8les de sites existants.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De plus, nous avons fait face \u00e0 un <strong>autre niveau de complexit\u00e9 li\u00e9 \u00e0 un des inconv\u00e9nients de Drupal multisite<\/strong>.&nbsp;Comme expliqu\u00e9 pr\u00e9c\u00e9demment, la mise \u00e0 niveau du&nbsp;Core&nbsp;de Drupal n\u00e9cessite de mettre \u00e0 niveau tous les sites. Cette action entraine alors une quantit\u00e9 de travail significative avec parfois des probl\u00e8mes majeurs \u00e0 r\u00e9soudre&nbsp;li\u00e9s \u00e0 des modules non compatibles.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour s\u2019\u00e9viter ces d\u00e9sagr\u00e9ment, l\u2019usine \u00e0 sites \u00e9tait compos\u00e9e de plusieurs installations de Drupal, une par version,&nbsp;les sites \u00e9tant d\u00e9ploy\u00e9s sur l\u2019une ou l\u2019autre des versions. L\u2019upgrade consistait en fait alors \u00e0 migrer un site d\u2019une installation de Drupal \u00e0 l\u2019autre.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La solution est plut\u00f4t cens\u00e9e. Pour autant,&nbsp;elle comporte quelques inconv\u00e9nients, notamment lorsque l&#8217;on effectue une modification des&nbsp;templates&nbsp;de bases \u00e0 faire obligatoirement&nbsp;sur chaque installation.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nouveau virage : cr\u00e9ation d&#8217;un outil de commande sous Symfony Console<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour faciliter&nbsp;notre gestion et renforcer l\u2019aspect&nbsp;industriel de l\u2019usine \u00e0 sites,&nbsp;nous avons&nbsp;d\u00e9velopp\u00e9 un outil en ligne de commande bas\u00e9 sur&nbsp;Symfony&nbsp;Console. <strong>Ainsi, les diff\u00e9rentes \u00e9tapes de la cr\u00e9ation \u00e0 la mise en ligne \u00e9taient automatis\u00e9es.&nbsp;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"https:\/\/digiwin.fr\/wp-content\/uploads\/2021\/10\/OXYGEN_site-create-cut-to-cli-optimized.mp4\"><\/video><figcaption><meta charset=\"utf-8\">Cr\u00e9ation d&#8217;un nouveau site \u00e0 partir de l&#8217;outil Oxygen<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cet outil&nbsp;que nous avons appel\u00e9 OXYGEN, d\u00e9velopp\u00e9 pour Drupal 7 puis \u00e9tendu \u00e0 la gestion de sites en version Drupal 8, nous permettait\u202fde&nbsp;:&nbsp;&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Dupliquer&nbsp;un&nbsp;site (fichiers, base de donn\u00e9es, configuration)&nbsp;<\/li><li>Rajouter le nouveau site dans le fichier&nbsp;sites.php&nbsp;<\/li><li>Rajouter le&nbsp;vhost&nbsp;afin qu\u2019il soit accessible en ligne&nbsp;via son propre nom de domaine&nbsp;<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nous avons \u00e9tendu ces fonctionnalit\u00e9s<\/strong> \u00e0 d\u2019autres actions que nous faisions r\u00e9guli\u00e8rement\u202f:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Mettre en production \u00e0 partir de la version de recette&nbsp;<\/li><li>R\u00e9cup\u00e9rer la version de production d\u2019un site en local pour \u00e9volution et d\u00e9bogage&nbsp;<\/li><li>Archiver des sites&nbsp;<\/li><li>Mettre en maintenance des sites&nbsp;<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/digiwin.fr\/wp-content\/uploads\/2021\/10\/OXYGEN_site-deploy_staging-cut-to-cli-only-optimized.mp4\"><\/video><figcaption><meta charset=\"utf-8\">D\u00e9ploiement d&#8217;un site \u00e0 partir de l&#8217;outil Oxygen<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le niveau d\u2019automatisme atteint \u00e9tait plut\u00f4t satisfaisant, rendant nos interventions efficaces et productives. Mais&nbsp;c\u2019est alors&nbsp;que le client a exprim\u00e9 une nouvelle demande\u202f: \u00eatre autonome pour la cr\u00e9ation des sites les plus simples.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OXYGEN \u00e9tant un outil en ligne de commande et donc non orient\u00e9 tout public dans son utilisation, il ne constituait pas une r\u00e9ponse acceptable pour le client.&nbsp;Nous avons donc d\u00e9velopp\u00e9 un module&nbsp;sp\u00e9cifique&nbsp;d\u00e9di\u00e9 \u00e0 cette gestion.&nbsp;&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9veloppement d&#8217;un module sous Drupal 8 dans un \u00e9cosyst\u00e8me D7 et D8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notre module&nbsp;est d\u00e9velopp\u00e9&nbsp;sous&nbsp;Drupal 8&nbsp;directement.&nbsp;A cause de la&nbsp;rupture technologique&nbsp;avec&nbsp;la version&nbsp;7 et de la migration en D8 sur la quasi-totalit\u00e9 des sites,&nbsp;<strong>d\u00e9velopper un module&nbsp;sous&nbsp;Drupal 7&nbsp;avec une&nbsp;adaptation&nbsp;Drupal 8 est inutilement co\u00fbteux<\/strong>. <a href=\"https:\/\/digiwin.fr\/actualites\/comment-migrer-de-drupal-8-a-drupal-9-en-6-etapes\/\" target=\"_blank\" rel=\"noreferrer noopener\">Comme nous l&#8217;avons cit\u00e9 dans un article<\/a>, passer de D7 \u00e0 D8 est&nbsp;bien plus complexe&nbsp;que&nbsp;la migration de Drupal 8 vers Drupal 9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Install\u00e9 sur un site sp\u00e9cifique de l\u2019usine \u00e0 sites,&nbsp;ce module effectue les m\u00eames actions qu\u2019OXYGEN mais depuis une interface web.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette solution peut sembler id\u00e9ale et elle l\u2019\u00e9tait d\u2019un point de vue utilisateur. Mais en r\u00e9alit\u00e9, elle reste&nbsp;tributaire des d\u00e9fauts du multisite Drupal&nbsp;en termes de maintenance technique.&nbsp;C\u2019est pourquoi, <strong>nous avons commenc\u00e9 \u00e0 imaginer une usine \u00e0 sites sans le multisite Drupal, solution que nous utilisons d\u00e9sormais.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notre prochain article &#8220;<em>Usine \u00e0 sites Drupal : la version de la maturit\u00e9<\/em>&#8221; expliquera comment utiliser une usine \u00e0 site Drupal sans multisite.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s notre article sur la migration vers Drupal 9,\u00a0nous poursuivons nos articles de fond et vous partageons\u00a0aujourd&#8217;hui notre r\u00e9flexion sur\u00a0les enjeux des usines \u00e0 sites. Le d\u00e9veloppement logiciel a fortement \u00e9volu\u00e9 ces 20 derni\u00e8res ann\u00e9es passant d&#8217;un mode artisanal\u00a0\u00e0 un fonctionnement industrialis\u00e9. On retrouve cet aspect notamment dans les pratiques DevOps o\u00f9 l&#8217;automatisme va de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6388,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"categories":[183,184,191],"tags":[],"class_list":["post-6387","post","type-post","status-publish","format-standard","has-post-thumbnail","category-apps-data-pt-pt","category-change-adopt-pt-pt","category-cloud-cyber-pt-pt"],"_links":{"self":[{"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/posts\/6387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=6387"}],"version-history":[{"count":0,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/posts\/6387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/media\/6388"}],"wp:attachment":[{"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=6387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=6387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.luklagroup.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=6387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}