{"id":588,"date":"2022-07-14T19:05:34","date_gmt":"2022-07-14T19:05:34","guid":{"rendered":"https:\/\/terrabioappdev.wpenginepowered.com\/deciphering-a-mystery-workflow-written-in-wdl\/"},"modified":"2023-12-27T04:55:36","modified_gmt":"2023-12-27T04:55:36","slug":"deciphering-a-mystery-workflow-written-in-wdl","status":"publish","type":"post","link":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/","title":{"rendered":"Deciphering a mystery workflow written in WDL"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Have you ever had to decipher a workflow written by someone else, and wished there was a quick way to figure out what it does and how? Earlier today, I gave a talk about this very topic at the 2022 Bioinformatics Open Source Conference (as part of <\/span><a href=\"https:\/\/www.iscb.org\/ismb2022\"><span style=\"font-weight: 400;\">ISMB 2022<\/span><\/a><span style=\"font-weight: 400;\">); and in the spirit of open-source, I&#8217;ve posted the <\/span><a href=\"https:\/\/youtu.be\/13YfaNPv088\"><span style=\"font-weight: 400;\">pre-recorded version on YouTube<\/span><\/a><span style=\"font-weight: 400;\">!\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In my talk, I presented a practical methodology for elucidating the structure and function of a workflow written in the Workflow Description Language, aka WDL. This systematic approach is intended to help bioinformaticians efficiently interpret and if necessary, reverse engineer existing WDL workflows. But first, a bit of context if you&#8217;re not already familiar with WDL.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">What is WDL?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Workflow Description Language (WDL, pronounced &#8220;widdle&#8221;) is a domain-specific language for describing data processing and analysis workflows. As such, it is not a full programming language; it is designed primarily as a means to define analysis tasks, chain them together in workflows, and parallelize their execution wherever possible. The language&#8217;s syntax strives to achieve portability across execution platforms, and lends itself especially well to execution on cloud infrastructure due to advanced support for containerization of individual steps. In addition, WDL is explicitly intended to be accessible to a wide range of users without requiring advanced programming experience.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-large wp-image-883\" src=\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/scatter-hc-diagram-1024x518.png\" alt=\"\" width=\"800\" height=\"405\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Example WDL script that parallelizes variant calling across genomic intervals (see <\/span><\/i><a href=\"https:\/\/terra.bio\/deleting-intermediate-workflow-outputs\/\"><i><span style=\"font-weight: 400;\">blog post<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> for details)\u00a0<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Originally created at the Broad Institute for developing GATK Best Practices workflows, the WDL language is now stewarded by the <\/span><a href=\"https:\/\/openwdl.org\/\"><span style=\"font-weight: 400;\">OpenWDL<\/span><\/a><span style=\"font-weight: 400;\"> community, which was formed by individuals and organizations who adopted WDL in their own work.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The main sources of documentation and educational resources for learning WDL are provided by <\/span><a href=\"https:\/\/github.com\/openwdl\"><span style=\"font-weight: 400;\">the OpenWDL organization on Github<\/span><\/a><span style=\"font-weight: 400;\"> (BSD-3). Most notably, the <\/span><a href=\"https:\/\/github.com\/openwdl\/wdl\/blob\/main\/SPEC.md\"><span style=\"font-weight: 400;\">WDL specification<\/span><\/a><span style=\"font-weight: 400;\"> describes the syntax and features of the language (variable types, built-in functions etc.), and the <\/span><a href=\"https:\/\/github.com\/openwdl\/learn-wdl\"><span style=\"font-weight: 400;\">learn-wdl<\/span><\/a><span style=\"font-weight: 400;\"> repository provides introductory materials (including <\/span><a href=\"https:\/\/www.youtube.com\/playlist?list=PL4Q4HssKcxYv5syJKUKRrD8Fbd-_CnxTM\"><span style=\"font-weight: 400;\">videos<\/span><\/a><span style=\"font-weight: 400;\">) explaining basic syntax and demonstrating execution through hello-world level examples and some sample workflows.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">Reusable WDLs in the wild<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Multiple consortia within the field of human genomics publish standardized workflows written in WDL, such as the Human Cell Atlas, and its adoption is spreading to non-human organisms and to related fields of study. For example, due to <\/span><a href=\"https:\/\/terra.bio\/new-partnership-with-cdc-boosts-terra-support-for-public-health-labs-across-the-usa\/\"><span style=\"font-weight: 400;\">recent events<\/span><\/a><span style=\"font-weight: 400;\">, a growing number of public health laboratories in the US are adopting standardized WDL workflows for COVID-19 viral genomics and epidemiology.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Therefore it is increasingly likely for bioinformaticians to encounter workflows of interest written in WDL. Even if WDL is not their preferred language for developing their own workflows, bioinformaticians may need to be able to understand and apply these standard WDL workflows appropriately to their own data for continuity within a collaborative project, or they may want to reverse engineer and reimplement them in their preferred language.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">A systematic top-down approach to deciphering a random WDL<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Real-world, full-scale workflows such as the GATK Best Practices typically involve more complex patterns than what is shown in the OpenWDL hello-world tutorials. Deciphering such workflows is a very different exercise compared to writing one&#8217;s own workflow from scratch, and can benefit from employing a systematic approach, rather than attempting to read through the code linearly.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One popular form for documenting realistic and\/or advanced use of a programming language is the &#8220;cookbook&#8221; style, in which the author posits a series of usage scenarios and shows how each would be implemented. This form is particularly helpful for developers who are interested in writing their own code. However, it is less helpful for someone who is trying to interpret an existing piece of code for reasons such as those outlined above.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In my talk, I presented an alternate approach to satisfying the latter use case. First, I pretend to stumble across an existing real-world workflow that is written in WDL but is not sufficiently documented, then I proceed to deconstruct it systematically in order to understand what the workflow is meant to achieve and how it does it.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The main take-home message here is the methodology itself, which can be adapted to other scenarios. As a secondary benefit, you will also gain some familiarity with WDL syntax and with interesting functional patterns of the language.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><iframe title=\"Deciphering a WDL: A systematic approach\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/13YfaNPv088?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">If you find this method useful and would like to see more WDL-related resources like this, please fill out the Terra support team&#8217;s <a href=\"http:\/\/broad.io\/WDL-survey\">WDL survey<\/a> and let us know what you would find most helpful!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A practical methodology for elucidating the structure and function of a workflow written in the Workflow Description Language, aka WDL.<\/p>\n","protected":false},"author":4,"featured_media":589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[119,39,32],"tags":[],"class_list":["post-588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-most-recent","category-videos","category-workflows"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Deciphering a mystery workflow written in WDL - Terra<\/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:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deciphering a mystery workflow written in WDL - Terra\" \/>\n<meta property=\"og:description\" content=\"A practical methodology for elucidating the structure and function of a workflow written in the Workflow Description Language, aka WDL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\" \/>\n<meta property=\"og:site_name\" content=\"Terra\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-14T19:05:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-27T04:55:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Geraldine Van der Auwera\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geraldine Van der Auwera\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\"},\"author\":{\"name\":\"Geraldine Van der Auwera\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2\"},\"headline\":\"Deciphering a mystery workflow written in WDL\",\"datePublished\":\"2022-07-14T19:05:34+00:00\",\"dateModified\":\"2023-12-27T04:55:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\"},\"wordCount\":755,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/terra.bio\/#organization\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png\",\"articleSection\":[\"Most Recent\",\"Videos\",\"Workflows\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\",\"url\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\",\"name\":\"Deciphering a mystery workflow written in WDL - Terra\",\"isPartOf\":{\"@id\":\"https:\/\/terra.bio\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png\",\"datePublished\":\"2022-07-14T19:05:34+00:00\",\"dateModified\":\"2023-12-27T04:55:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage\",\"url\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png\",\"contentUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png\",\"width\":1200,\"height\":627,\"caption\":\"deciphering wdl_OG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/terra.bio\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deciphering a mystery workflow written in WDL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/terra.bio\/#website\",\"url\":\"https:\/\/terra.bio\/\",\"name\":\"Terra\",\"description\":\"Science at Scale\",\"publisher\":{\"@id\":\"https:\/\/terra.bio\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/terra.bio\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/terra.bio\/#organization\",\"name\":\"Terra\",\"url\":\"https:\/\/terra.bio\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp\",\"contentUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp\",\"width\":287,\"height\":318,\"caption\":\"Terra\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2\",\"name\":\"Geraldine Van der Auwera\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g\",\"caption\":\"Geraldine Van der Auwera\"},\"sameAs\":[\"https:\/\/app.terra.bio\/\"],\"url\":\"https:\/\/terra.bio\/author\/geraldinevanterra\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deciphering a mystery workflow written in WDL - Terra","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:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/","og_locale":"en_US","og_type":"article","og_title":"Deciphering a mystery workflow written in WDL - Terra","og_description":"A practical methodology for elucidating the structure and function of a workflow written in the Workflow Description Language, aka WDL.","og_url":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/","og_site_name":"Terra","article_published_time":"2022-07-14T19:05:34+00:00","article_modified_time":"2023-12-27T04:55:36+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png","type":"image\/png"}],"author":"Geraldine Van der Auwera","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Geraldine Van der Auwera","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#article","isPartOf":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/"},"author":{"name":"Geraldine Van der Auwera","@id":"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2"},"headline":"Deciphering a mystery workflow written in WDL","datePublished":"2022-07-14T19:05:34+00:00","dateModified":"2023-12-27T04:55:36+00:00","mainEntityOfPage":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/"},"wordCount":755,"commentCount":0,"publisher":{"@id":"https:\/\/terra.bio\/#organization"},"image":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage"},"thumbnailUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png","articleSection":["Most Recent","Videos","Workflows"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/","url":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/","name":"Deciphering a mystery workflow written in WDL - Terra","isPartOf":{"@id":"https:\/\/terra.bio\/#website"},"primaryImageOfPage":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage"},"image":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage"},"thumbnailUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png","datePublished":"2022-07-14T19:05:34+00:00","dateModified":"2023-12-27T04:55:36+00:00","breadcrumb":{"@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#primaryimage","url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png","contentUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/deciphering-wdl_OG.png","width":1200,"height":627,"caption":"deciphering wdl_OG"},{"@type":"BreadcrumbList","@id":"https:\/\/terra.bio\/deciphering-a-mystery-workflow-written-in-wdl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/terra.bio\/"},{"@type":"ListItem","position":2,"name":"Deciphering a mystery workflow written in WDL"}]},{"@type":"WebSite","@id":"https:\/\/terra.bio\/#website","url":"https:\/\/terra.bio\/","name":"Terra","description":"Science at Scale","publisher":{"@id":"https:\/\/terra.bio\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/terra.bio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/terra.bio\/#organization","name":"Terra","url":"https:\/\/terra.bio\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/#\/schema\/logo\/image\/","url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp","contentUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp","width":287,"height":318,"caption":"Terra"},"image":{"@id":"https:\/\/terra.bio\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2","name":"Geraldine Van der Auwera","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g","caption":"Geraldine Van der Auwera"},"sameAs":["https:\/\/app.terra.bio\/"],"url":"https:\/\/terra.bio\/author\/geraldinevanterra\/"}]}},"_links":{"self":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts\/588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/comments?post=588"}],"version-history":[{"count":0,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts\/588\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/media\/589"}],"wp:attachment":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/media?parent=588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/categories?post=588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/tags?post=588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}