{"id":6789,"date":"2022-09-30T15:00:20","date_gmt":"2022-09-30T14:00:20","guid":{"rendered":"https:\/\/www.theoaklandgroup.co.uk\/?p=6789"},"modified":"2024-04-17T10:46:37","modified_gmt":"2024-04-17T10:46:37","slug":"azure-bicep-deploy-a-data-platform-in-one-click","status":"publish","type":"post","link":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/","title":{"rendered":"Azure Bicep \u2013 Deploy a Data Platform in One Click"},"content":{"rendered":"<p>Azure Bicep is a declarative language for Azure infrastructure, it is the successor of ARM (Azure Resource Manager) templates. Bicep is one of the languages through which Azure has enabled the deployment of IaC (Infrastructure as Code).<\/p>\n<p><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6790\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image1.png\" alt=\"\" width=\"563\" height=\"350\" \/>\u00a0<\/strong><\/p>\n<h3><strong>What is Infrastructure as Code<\/strong><\/h3>\n<p>Infrastructure as Code is the declaration of compute, networking and infrastructure resources through code rather than through manual configuration and deployment. For example, the code snippet below is the declaration of a Public IP address using Bicep which is an example of IaC.<\/p>\n<p>This snippet can be used to deploy the public IP rather than manually clicking through the Azure portal to achieve the same results.<\/p>\n<h3><strong>Benefits of Infrastructure as Code<\/strong><\/h3>\n<p>IaC allows for complex data platform architectures to be defined in code and so can be deployed repeatedly in different environments with very little manual effort. This can be utilised for creating identical environments in development, UAT and production environments easily. Another benefit is in a disaster recovery scenario if the platform must be built from scratch the infrastructure can be recreated by just redeploying the IaC code, rather than manually rebuilding which is timely and carries a risk of human error.<\/p>\n<h3><strong>What is Bicep<\/strong><\/h3>\n<p>Bicep is one of the Azure languages for IaC as it supports all Azure resources and API versions. Bicep was created to solve the downfalls of ARM (Azure Resource Manager) templates which previously were the only Azure native way of deploying infrastructure via IaC. ARM templates use JSON syntax, which can be long and complex to write and understand. Bicep is much more reader and writer friendly with simpler syntax. Below is a Bicep template declaring a storage account and the equivalent storage account declared using and ARM template.<\/p>\n<p>Bicep:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6791\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image2.png\" alt=\"\" width=\"588\" height=\"255\" \/><\/p>\n<p>ARM:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6792\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image3.png\" alt=\"\" width=\"743\" height=\"494\" \/><\/p>\n<p>Bicep doesn\u2019t just allow for the creation of individual isolated resources, it can be used to declare and deploy entire connected data platforms. For example, see the Bicep snippet below which declares an Azure Monitor Private Linked Scope, an Application Insights, and the connection between the two resources.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6793\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image4.png\" alt=\"\" width=\"1082\" height=\"579\" \/><\/p>\n<p>Bicep also has other benefits over ARM templates too. With Bicep you don\u2019t have to declare the order of deployment, for example with Bicep in the same template you can declare a function app, then later on declare the app service plan used to host it without explicitly having to state that the app service plan should be created first. This was not possible with ARM templates which for large deployments can result in a complex order of operations. However, ARM templates are the building blocks of Bicep and are still very widely used. When Bicep templates are compiled, they are first converted into ARM templates by the compiler then deployed.<\/p>\n<h3><strong>Using Parameters with Bicep<\/strong><\/h3>\n<p>Parameters can be used in Bicep templates so they can be reused to deploy infrastructure in different environments. Parameters can be defined in several ways, they can be declared within the Bicep file and include a default value or have their value declared at deployment. Or parameters can be included in a separate JSON file, the name of which is declared when the template is being deployed. When parameters are defined within in the Bicep file a data type must be provided and a default value can be provided but this is optional, then the parameter can be referenced using its name. For example, below the parameters \u2018logsName\u2019 and \u2018retentionPolicyDays\u2019 are declared with their data types and given default values, they are then used in the declaration of the Diagnostic Settings resource.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6794\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image5.png\" alt=\"\" width=\"660\" height=\"367\" \/><\/p>\n<p>Secure parameters which shouldn&#8217;t be saved to the deployment history or be logged can be created using the \u2018secure\u2019 decorator, this should be used when declaring passwords as shown below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6795\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image6.png\" alt=\"\" width=\"310\" height=\"63\" \/><\/p>\n<p>Parameters can also be declared in a separate JSON file, this makes it easy to deploy a template to different environment as different environments can have different parameter files while the Bicep template remains the same. The parameters included in the parameter must also be declared in the Bicep file but don\u2019t need to include a default value as the value from the parameter file will be used, if a default value for a parameter is defined in the Bicep file and a parameter file is also used the value from the parameter file will be used. An example of a parameter file is shown below which includes two parameters \u2018storageAccountName\u2019 and \u2018resourceGroupName\u2019.<\/p>\n<p><strong> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6796\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image7.png\" alt=\"\" width=\"1114\" height=\"342\" \/><\/strong><\/p>\n<h3><strong>Bicep in VS Code<\/strong><\/h3>\n<p>VS Code includes an extension for Bicep, which makes developing templates easier. It can be installed through the extensions tab within VS Code. The Bicep extension includes intellisense features which shows if Bicep code is formatted incorrectly and provides information on how parameters should be filled in. It also includes a resource visualiser, which shows which resources will be deployed and how they are related, an example of the resource visualiser can be seen below showing two applications being hosted on an app service plan with an Application Insights resource.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6797\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image8.png\" alt=\"\" width=\"1277\" height=\"585\" \/><\/p>\n<h3><strong>Deploying Bicep Templates<\/strong><\/h3>\n<p>Bicep is a declarative language so just describes what infrastructure should be deployed, not how it should be deployed, an imperative language must be used to describe how the template should be deployed. Either Azure CLI or Azure PowerShell can be used to deploy Bicep template into Azure. A PowerShell script to deploy a Bicep file is shown below, where \u2018main.bicep\u2019 is the name of the Bicep template file which declares the resources to be deployed and \u2018azuredeploy.parameters.json\u2019 is the name of the JSON file containing the parameters for the deployment.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6798\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image9.png\" alt=\"\" width=\"1359\" height=\"195\" \/><\/p>\n<h3><strong>CICD with Bicep in Azure DevOps<\/strong><\/h3>\n<p>Bicep deployment can be done through Azure DevOps pipelines to allow for a continuous integration and continuous deployment (CICD) pipeline. This means deployments can be automatically triggered after pull requests to the Bicep repo. The code snippet below shows the YAML pipeline in Azure DevOps which can be used for CICD deployment of Bicep files.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6799\" src=\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/01\/image10.png\" alt=\"\" width=\"1401\" height=\"626\" \/><\/p>\n<p><strong>Abigail Brown is a Data Engineer at The Oakland Group<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure Bicep is a declarative language for Azure infrastructure, it is the successor of ARM (Azure Resource Manager) templates. Bicep is one of the languages through which Azure has enabled the deployment of IaC (Infrastructure as Code). \u00a0 What is Infrastructure as Code Infrastructure as Code is the declaration of compute, networking and infrastructure resources&#8230;<\/p>\n","protected":false},"author":29,"featured_media":6792,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[406,160],"tags":[346,174,339,78,347,348],"class_list":["post-6789","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-platform-data-engineering","category-tech-talk","tag-azure-bicep","tag-data-consultancy","tag-data-consulting","tag-data-engineering","tag-data-plaform","tag-infrastructure-as-code"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Azure Bicep \u2013 Deploy a Data Platform in One Click | Oakland<\/title>\n<meta name=\"description\" content=\"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Bicep \u2013 Deploy a Data Platform in One Click\" \/>\n<meta property=\"og:description\" content=\"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\" \/>\n<meta property=\"og:site_name\" content=\"Oakland\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-30T14:00:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-17T10:46:37+00:00\" \/>\n<meta name=\"author\" content=\"Abigail Brown\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dataispeople\" \/>\n<meta name=\"twitter:site\" content=\"@dataispeople\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abigail Brown\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\"},\"author\":{\"name\":\"Abigail Brown\",\"@id\":\"https:\/\/weareoakland.com\/#\/schema\/person\/3d8ea3514c51848c8c454f8c45ed25b6\"},\"headline\":\"Azure Bicep \u2013 Deploy a Data Platform in One Click\",\"datePublished\":\"2022-09-30T14:00:20+00:00\",\"dateModified\":\"2024-04-17T10:46:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\"},\"wordCount\":1002,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/weareoakland.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage\"},\"thumbnailUrl\":\"\",\"keywords\":[\"Azure Bicep\",\"data consultancy\",\"data consulting\",\"data engineering\",\"Data Plaform\",\"Infrastructure as code\"],\"articleSection\":[\"Platform &amp; Data Engineering\",\"Tech Talk\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\",\"url\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\",\"name\":\"Azure Bicep \u2013 Deploy a Data Platform in One Click | Oakland\",\"isPartOf\":{\"@id\":\"https:\/\/weareoakland.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2022-09-30T14:00:20+00:00\",\"dateModified\":\"2024-04-17T10:46:37+00:00\",\"description\":\"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.\",\"breadcrumb\":{\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/weareoakland.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Bicep \u2013 Deploy a Data Platform in One Click\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/weareoakland.com\/#website\",\"url\":\"https:\/\/weareoakland.com\/\",\"name\":\"Oakland\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/weareoakland.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/weareoakland.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/weareoakland.com\/#organization\",\"name\":\"Oakland\",\"url\":\"https:\/\/weareoakland.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/weareoakland.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/02\/Oakland-White-logo.png\",\"contentUrl\":\"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/02\/Oakland-White-logo.png\",\"width\":3372,\"height\":648,\"caption\":\"Oakland\"},\"image\":{\"@id\":\"https:\/\/weareoakland.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/dataispeople\",\"https:\/\/www.linkedin.com\/company\/oakland-group\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/weareoakland.com\/#\/schema\/person\/3d8ea3514c51848c8c454f8c45ed25b6\",\"name\":\"Abigail Brown\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g\",\"caption\":\"Abigail Brown\"},\"sameAs\":[\"http:\/\/www.weareoakland.com\"],\"url\":\"https:\/\/weareoakland.com\/blog\/author\/abigail-brown\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Azure Bicep \u2013 Deploy a Data Platform in One Click | Oakland","description":"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.","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:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/","og_locale":"en_GB","og_type":"article","og_title":"Azure Bicep \u2013 Deploy a Data Platform in One Click","og_description":"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.","og_url":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/","og_site_name":"Oakland","article_published_time":"2022-09-30T14:00:20+00:00","article_modified_time":"2024-04-17T10:46:37+00:00","author":"Abigail Brown","twitter_card":"summary_large_image","twitter_creator":"@dataispeople","twitter_site":"@dataispeople","twitter_misc":{"Written by":"Abigail Brown","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#article","isPartOf":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/"},"author":{"name":"Abigail Brown","@id":"https:\/\/weareoakland.com\/#\/schema\/person\/3d8ea3514c51848c8c454f8c45ed25b6"},"headline":"Azure Bicep \u2013 Deploy a Data Platform in One Click","datePublished":"2022-09-30T14:00:20+00:00","dateModified":"2024-04-17T10:46:37+00:00","mainEntityOfPage":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/"},"wordCount":1002,"commentCount":0,"publisher":{"@id":"https:\/\/weareoakland.com\/#organization"},"image":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage"},"thumbnailUrl":"","keywords":["Azure Bicep","data consultancy","data consulting","data engineering","Data Plaform","Infrastructure as code"],"articleSection":["Platform &amp; Data Engineering","Tech Talk"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/","url":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/","name":"Azure Bicep \u2013 Deploy a Data Platform in One Click | Oakland","isPartOf":{"@id":"https:\/\/weareoakland.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage"},"image":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage"},"thumbnailUrl":"","datePublished":"2022-09-30T14:00:20+00:00","dateModified":"2024-04-17T10:46:37+00:00","description":"Azure Bicep enables one-click deployment of a robust data platform. Learn how Oakland makes it easier for businesses to deploy and optimize Azure solutions.","breadcrumb":{"@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/weareoakland.com\/blog\/azure-bicep-deploy-a-data-platform-in-one-click\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/weareoakland.com\/"},{"@type":"ListItem","position":2,"name":"Azure Bicep \u2013 Deploy a Data Platform in One Click"}]},{"@type":"WebSite","@id":"https:\/\/weareoakland.com\/#website","url":"https:\/\/weareoakland.com\/","name":"Oakland","description":"","publisher":{"@id":"https:\/\/weareoakland.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/weareoakland.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/weareoakland.com\/#organization","name":"Oakland","url":"https:\/\/weareoakland.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/weareoakland.com\/#\/schema\/logo\/image\/","url":"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/02\/Oakland-White-logo.png","contentUrl":"https:\/\/weareoakland.com\/wp-content\/uploads\/2024\/02\/Oakland-White-logo.png","width":3372,"height":648,"caption":"Oakland"},"image":{"@id":"https:\/\/weareoakland.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/dataispeople","https:\/\/www.linkedin.com\/company\/oakland-group"]},{"@type":"Person","@id":"https:\/\/weareoakland.com\/#\/schema\/person\/3d8ea3514c51848c8c454f8c45ed25b6","name":"Abigail Brown","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebe5d629f6b361ea79f56d453c1802c5a24c4b2ec3f6ddd2b765c5b9f7c52791?s=96&d=mm&r=g","caption":"Abigail Brown"},"sameAs":["http:\/\/www.weareoakland.com"],"url":"https:\/\/weareoakland.com\/blog\/author\/abigail-brown\/"}]}},"_links":{"self":[{"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/posts\/6789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/comments?post=6789"}],"version-history":[{"count":0,"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/posts\/6789\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/weareoakland.com\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/media?parent=6789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/categories?post=6789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weareoakland.com\/wp-json\/wp\/v2\/tags?post=6789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}