{"id":836,"date":"2022-10-02T02:16:00","date_gmt":"2022-10-02T07:16:00","guid":{"rendered":"http:\/\/www.ciraltos.com\/?p=836"},"modified":"2023-03-23T04:50:17","modified_gmt":"2023-03-23T09:50:17","slug":"webhooks-and-azure-automation-runbooks","status":"publish","type":"post","link":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/","title":{"rendered":"Webhooks and Azure Automation Runbooks"},"content":{"rendered":"\n<figure class=\"wp-block-image alignleft is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"\/wp-content\/uploads\/2017\/11\/PowerShellDSC.png\" alt=\"Azure Automation\" class=\"wp-image-359\" width=\"150\" height=\"79\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2017\/11\/PowerShellDSC.png 600w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2017\/11\/PowerShellDSC-300x158.png 300w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/figure>\n\n\n\n<h2>Overview<\/h2>\n\n\n\n<p>Azure Automation is Microsoft&#8217;s cloud-hosted automation solution. &nbsp;It uses\nPython or PowerShell based scripts, referred to as runbooks, to launch automation jobs in Azure or on-premises.\n&nbsp;These runbooks are started in\nmultiple ways.&nbsp; The information below details\nstarting automation jobs with a webhook.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"ast-oembed-container\" style=\"height: 100%;\"><iframe loading=\"lazy\" title=\"Start Azure Automation Runbooks with Webhooks\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ZQ6J5lpBBw4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<p>Post updated with new content on 10\/2\/2022.  Original 2018 video: <a rel=\"noreferrer noopener\" aria-label=\"https:\/\/www.youtube.com\/embed\/LYTE6gqSuSA (opens in a new tab)\" href=\"https:\/\/www.youtube.com\/embed\/LYTE6gqSuSA\" target=\"_blank\">https:\/\/www.youtube.com\/embed\/LYTE6gqSuSA<\/a><\/p>\n\n\n\n<h2>Webhook vs. API<\/h2>\n\n\n\n<p>To start, let\u2019s go over the difference between a\nwebhook and an API. &nbsp;Think of a webhook as one-way communication.&nbsp; Use email as an analogy. &nbsp;An email is\nsent with an assumption it gets to the\ndestination, you may get a bounce message if it failed, but there is no way to\nknow if it was received and read by the recipient. &nbsp;The email has\ninformation attached and it may result in some action, that action could be a\nreply or some other activity by the recipient.<\/p>\n\n\n\n<p>An API, on the other hand, is interactive.\n&nbsp;Think of it as a chat service. You address the message to a user and the\nuser will respond to the message based on the information sent. &nbsp;An API\ncall is similar, information is passed to the API with the expectation of some\ntype of data returned. <\/p>\n\n\n\n<h2>Webhook Formatting<\/h2>\n\n\n\n<p>Azure Automation runbooks can start with a webhook. &nbsp;A webhook is a custom URL passed to Azure Automation along with a data payload specific to the runbook. &nbsp;A runbook starts when a properly formatted HTTP Post message is sent. &nbsp;There may or may not be a confirmation depending on the runbook.&nbsp; For example, it could send a confirmation email or log an event. &nbsp;<\/p>\n\n\n\n<p>The Azure Automation webhook is a URL that has three parts, The webhook name, the Request Header and Request Body. &nbsp;The Webhook Name is also included in the payload of the webhook.<\/p>\n\n\n\n<p><em>URL <\/em>&#8211; The address containing a security token used to call the Runbook.<br><em>Webhook Name<\/em> &#8211; The name of the webhook is passed to the runbook.<br><em>Request Header<\/em> &#8211; A hash table containing the header information for the webhook.<br><em>Request Body<\/em> &#8211; Data passed to the runbook. &nbsp;The data can be a string, JSON or XML.&nbsp; The runbook must be able to consume the data type sent in the webhook.<\/p>\n\n\n\n<p>The runbook examples below are kept simple for the sake of&nbsp;the demonstration.&nbsp; They use the Azure Automation output stream to display the data passed to the runbooks. &nbsp;We also use the data passed to the runbook in a simple loop. &nbsp;The goal of this exercise is to demonstrate what that data looks like and how it can be used once passed into the runbook from the webhook.<\/p>\n\n\n\n<h2>Create Webhook<\/h2>\n\n\n\n<p>To begin, create a PowerShell runbook in an Azure Automation account and configure the Webhook.&nbsp; Leave the runbook blank for now and publish it before the next step.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"449\" height=\"207\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Create-Azure-Automation-Runbook-2.png\" alt=\" Create Azure Automation Runbook\" class=\"wp-image-2719\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-Azure-Automation-Runbook-2.png 449w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-Azure-Automation-Runbook-2-300x138.png 300w\" sizes=\"(max-width: 449px) 100vw, 449px\" \/><figcaption class=\"wp-element-caption\">  Create Azure Automation Runbook <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"\/wp-content\/uploads\/2018\/12\/Publish.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"305\" height=\"86\" src=\"\/wp-content\/uploads\/2018\/12\/Publish.png\" alt=\"Publish Azure Automation Runbook\" class=\"wp-image-842\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2018\/12\/Publish.png 305w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2018\/12\/Publish-300x85.png 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><\/a><figcaption class=\"wp-element-caption\">Publish Azure Automation Runbook<\/figcaption><\/figure>\n\n\n\n<p>From the Runbook , select  <em>Add Webhook<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"213\" height=\"72\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Add-a-Webhook.png\" alt=\"Add a Webhook\" class=\"wp-image-2709\"\/><figcaption class=\"wp-element-caption\"> Add a Webhook <\/figcaption><\/figure>\n\n\n\n<p>Select <em>Create new webhook<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"345\" height=\"245\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Create-new-webhook.png\" alt=\"Create new webhook\" class=\"wp-image-2710\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-new-webhook.png 345w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-new-webhook-300x213.png 300w\" sizes=\"(max-width: 345px) 100vw, 345px\" \/><figcaption class=\"wp-element-caption\"> <em>Create new webhook<\/em> <\/figcaption><\/figure>\n\n\n\n<p>Create the new webhook by entering a name and set it to enabled. &nbsp;The webhook will expire in a year by default.&nbsp; Copy and save the webhook URL before finishing. &nbsp;As noted on the screen, you will not be able to view the webhook URL after clicking OK.&nbsp; <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"333\" height=\"570\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Create-the-Webhook.png\" alt=\"Create the Webhook\" class=\"wp-image-2711\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-the-Webhook.png 333w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Create-the-Webhook-175x300.png 175w\" sizes=\"(max-width: 333px) 100vw, 333px\" \/><figcaption class=\"wp-element-caption\">Create the Webhook<\/figcaption><\/figure>\n\n\n\n<p>Leave the <em>Modify run settings<\/em> as default. &nbsp;Click <em>Create<\/em> to create the webhook<\/p>\n\n\n\n<p>If <em>Create<\/em> is not active, you may need to open <em>Parameters and run settings<\/em>.  Leave the Webhook data blank and click <em>OK<\/em>.  The <em>Create<\/em> button will be active.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"294\" height=\"351\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/View-Parameters.png\" alt=\"View Parameters\" class=\"wp-image-2712\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/View-Parameters.png 294w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/View-Parameters-251x300.png 251w\" sizes=\"(max-width: 294px) 100vw, 294px\" \/><figcaption class=\"wp-element-caption\">View Parameters<\/figcaption><\/figure>\n\n\n\n<h2>Simple Test<\/h2>\n\n\n\n<p>Start the first test by updating the runbook with the following code.&nbsp; Save, and publish the runbook when finished. &nbsp;This simple code outputs the values sent by the webhook to demonstrate how it is interpreted by the runbook.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>param (\n    &#91;Parameter (Mandatory = $false)]\n    &#91;object] $WebHookData\n)\n\nif ($WebHookData){\n    # Header message passed as a hashtable \n    Write-Output \"The Webhook Header Message\"\n    Write-Output $WebHookData.RequestHeader.Message\n\n    # This is the name of the webhook when configured in Azure Automation\n    Write-Output 'The Webhook Name'\n    Write-Output $WebHookData.WebhookName\n\n    # Body of the message.\n    Write-Output 'The Request Body'\n    Write-Output $WebHookData.RequestBody\n}\nelse {\n    Write-Output 'No data received'\n}<\/code><\/pre>\n\n\n\n<p>The code below assembles the webhook and starts the runbook with the post method. &nbsp;A breakdown of each line is listed below with the complete code at the end of this section.<\/p>\n\n\n\n<p>URI &#8211; The URL of the webhook<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$uri = 'https:\/\/s1events.azure-automation.net\/webhooks?token=y%ewxa2nN14Boruw3dbBfHQy%2fmG9bT7y'<\/code><\/pre>\n\n\n\n<p>HeaderMessage &#8211; Table containing the header of the message<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$headerMessage = @{ message = \"StartedByTravis\"}<\/code><\/pre>\n\n\n\n<p>Data &#8211; This is the payload, or body data of the message.  Sent as an array of key, value pairs. &nbsp;The runbook must be written to consume the data sent. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$data = @(\n    @{ Name=\"Leia\"},\n    @{ Name=\"Luke\"},\n    @{ Name=\"Han\"}\n)<\/code><\/pre>\n\n\n\n<p>Request Body Conversion &#8211; The body is converted to JSON, a text data format passed to the runbook<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$body = ConvertTo-Json -InputObject $data<\/code><\/pre>\n\n\n\n<p>Post &#8211; The code below posts the webhook with the PowerShell Invoke-Webrequest post method and holds the response in the $response variable.  Next, it outputs the response.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$response = invoke-webrequest -method Post -uri $uri -header $headerMessage -Body $body -UseBasicParsing \n$response<\/code><\/pre>\n\n\n\n<p>The complete code looks like what is shown below. &nbsp;Update the information, including the $uri value to match your environment.&nbsp; Run to code to view the output in Azure Automation.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$uri = '&lt;Add Webhook URL&gt;'\n$headerMessage = @{ message = \"StartedByTravis\"}\n$data = @(\n    @{ Name=\"Leia\"},\n    @{ Name=\"Luke\"},\n    @{ Name=\"Han\"}\n)\n$body = ConvertTo-Json -InputObject $data\n$response = invoke-webrequest -method Post -uri $uri -header $headerMessage -Body $body -UseBasicParsing \n$response<\/code><\/pre>\n\n\n\n<p>Next, go into the job to view the Job Summary.&nbsp; This area allows you to view the details of the job, including Errors and Warnings if they exist, inputs, outputs, and Logs. &nbsp; <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"485\" height=\"405\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Webhook-Job-Summary.png\" alt=\"Webhook Job Summary\" class=\"wp-image-2713\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Webhook-Job-Summary.png 485w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Webhook-Job-Summary-300x251.png 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><figcaption class=\"wp-element-caption\">Webhook Job Summary<\/figcaption><\/figure>\n\n\n\n<p>Go to Output to see the Output of the job. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"301\" height=\"474\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/Simple-Test-Output.png\" alt=\"Simple Test Output\" class=\"wp-image-2714\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Simple-Test-Output.png 301w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/Simple-Test-Output-191x300.png 191w\" sizes=\"(max-width: 301px) 100vw, 301px\" \/><figcaption class=\"wp-element-caption\"> Simple Test Output <\/figcaption><\/figure>\n\n\n\n<p>A window similar to the one above shows if successful. &nbsp;The Output includes the Webhook Header message passed to the runbook and the name of the webhook. &nbsp;The Request Body shows the JSON payload.&nbsp; This is okay, but it would be better to convert the JSON back to a PowerShell Object for use in the PowerShell Runbook?<\/p>\n\n\n\n<h2>Accessing Webhook Data<\/h2>\n\n\n\n<p>This example will take the above a step further by adding steps to convert the body data from JSON to a PowerShell object with the ConvertFrom-JSON command.  <\/p>\n\n\n\n<p>Next, the runbook displays the converted data then uses get-member to view the data type, confirming the data was converted to a PSCustomObject<\/p>\n\n\n\n<p>Finally, a foreach loop is used to write the data passed into runbook to the screen.  This demonstrates how we can create an array in PowerShell, convert it to JSON for the runbook, then convert it back to a PSCustomObject and use the data in the runbook<\/p>\n\n\n\n<p>Update, save and publish the code below to the runbook for the next example. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>param (\n    &#91;Parameter (Mandatory = $false)]\n    &#91;object] $WebHookData\n)\n\nif ($WebHookData){\n    # Header message passed as a hashtable \n    Write-Output \"The Webhook Header\"\n    Write-Output $WebHookData.RequestHeader.Message\n\n    # This is the name of the webhook when configured in Azure Automation\n    Write-Output 'The Webhook Name'\n    Write-Output $WebHookData.WebhookName\n\n    # Body of the message.\n    Write-Output 'The Request Body'\n    Write-Output $WebHookData.RequestBody\n\n    # Convert the body data from JSON\n    $bodyData = ConvertFrom-Json -InputObject $WebHookData.RequestBody\n\n    # View the full body data\n    Write-Output 'The Full Body Data'\n    Write-Output $bodyData\n    \n    #View the data type\n    Write-Output 'Body Data Get Member'\n    Write-Output ($bodyData | Get-Member)\n\n    # Use the Body Data\n    Write-Output 'Use the Body Data'\n    foreach ($name in $bodyData.Name) {\n        Write-Output \"Hello $name\"\n    }\n}\nelse {\n    Write-Output 'No data received'\n}<\/code><\/pre>\n\n\n\n<p>Next, run the webhook code to start the runbook again.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$uri = '&lt;Add Webhook URL'\n$headerMessage = @{ message = \"StartedByTravis\"}\n$data = @(\n    @{ Name=\"Leia\"},\n    @{ Name=\"Luke\"},\n    @{ Name=\"Han\"}\n)\n$body = ConvertTo-Json -InputObject $data\n$response = invoke-webrequest -method Post -uri $uri -header $headerMessage -Body $body -UseBasicParsing \n$response<\/code><\/pre>\n\n\n\n<p>The partial output from the above command is shown below.  It shows the data after the conversation from JSON under <em>The Full Body Data<\/em>.  It displays the output from the get-member command, showing the data is now a PSCustomObject.  It also shows the output of the foreach loop.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"445\" height=\"719\" src=\"https:\/\/www.ciraltos.com\/wp-content\/uploads\/2022\/10\/PSCustomObject-and-Foreach-Output.png\" alt=\"PSCustomObject and Foreach Output\" class=\"wp-image-2716\" srcset=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/PSCustomObject-and-Foreach-Output.png 445w, http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/PSCustomObject-and-Foreach-Output-186x300.png 186w\" sizes=\"(max-width: 445px) 100vw, 445px\" \/><figcaption class=\"wp-element-caption\"> PSCustomObject and Foreach Output <\/figcaption><\/figure>\n\n\n\n<p>That is the basics of Azure Automation webhooks.\nRunbooks are not limited to starting by a schedule, but can be triggered by\nwebhooks to respond to events in your environment.&nbsp; Event driven runbooks provide flexibility and\nreliability for automation tasks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Azure Automation is Microsoft&#8217;s cloud-hosted automation solution. &nbsp;It uses Python or PowerShell based scripts, referred to as runbooks, to launch automation jobs in Azure or on-premises. &nbsp;These runbooks are started in multiple ways.&nbsp; The information below details starting automation jobs with a webhook.<\/p>\n","protected":false},"author":1,"featured_media":3740,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[2,252],"tags":[240,230,256,9,315,210,254,258,257,255,253,266,20,311,231,313,312,314],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Webhooks and Azure Automation Runbooks - ciraltos<\/title>\n<meta name=\"description\" content=\"The information below details starting Azure Automation jobs with a webhook.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Webhooks and Azure Automation Runbooks - ciraltos\" \/>\n<meta property=\"og:description\" content=\"The information below details starting Azure Automation jobs with a webhook.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\" \/>\n<meta property=\"og:site_name\" content=\"ciraltos\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-02T07:16:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-23T09:50:17+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/PowerShellDSC.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"315\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Travis Roberts\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ciraltos\" \/>\n<meta name=\"twitter:site\" content=\"@ciraltos\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Travis Roberts\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\"},\"author\":{\"name\":\"Travis Roberts\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a\"},\"headline\":\"Webhooks and Azure Automation Runbooks\",\"datePublished\":\"2022-10-02T07:16:00+00:00\",\"dateModified\":\"2023-03-23T09:50:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\"},\"wordCount\":1153,\"commentCount\":5,\"publisher\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a\"},\"keywords\":[\"api\",\"Automation\",\"Automation Runbook\",\"Azure\",\"azure API\",\"Azure Automation\",\"Azure Automation Hybrid\",\"Azure Automation Log\",\"Azure Automation step by step\",\"Azure Automation Tutorial\",\"Azure Runbook\",\"hybrid worker\",\"Powershell\",\"python\",\"Runbook\",\"webhook\",\"webhook step by step\",\"webhook tutorial\"],\"articleSection\":[\"Azure\",\"Azure Automation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\",\"url\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\",\"name\":\"Webhooks and Azure Automation Runbooks - ciraltos\",\"isPartOf\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#website\"},\"datePublished\":\"2022-10-02T07:16:00+00:00\",\"dateModified\":\"2023-03-23T09:50:17+00:00\",\"description\":\"The information below details starting Azure Automation jobs with a webhook.\",\"breadcrumb\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/www.ciraltos.com\/staging2\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks and Azure Automation Runbooks\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#website\",\"url\":\"http:\/\/www.ciraltos.com\/staging2\/\",\"name\":\"ciraltos\",\"description\":\"cloud, technology and trends\",\"publisher\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.ciraltos.com\/staging2\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a\",\"name\":\"Travis Roberts\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2023\/03\/Logo-1.png\",\"contentUrl\":\"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2023\/03\/Logo-1.png\",\"width\":5657,\"height\":3563,\"caption\":\"Travis Roberts\"},\"logo\":{\"@id\":\"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.ciraltos.com\",\"https:\/\/twitter.com\/ciraltos\"],\"url\":\"http:\/\/www.ciraltos.com\/staging2\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Webhooks and Azure Automation Runbooks - ciraltos","description":"The information below details starting Azure Automation jobs with a webhook.","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":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/","og_locale":"en_US","og_type":"article","og_title":"Webhooks and Azure Automation Runbooks - ciraltos","og_description":"The information below details starting Azure Automation jobs with a webhook.","og_url":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/","og_site_name":"ciraltos","article_published_time":"2022-10-02T07:16:00+00:00","article_modified_time":"2023-03-23T09:50:17+00:00","og_image":[{"width":600,"height":315,"url":"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2022\/10\/PowerShellDSC.png","type":"image\/png"}],"author":"Travis Roberts","twitter_card":"summary_large_image","twitter_creator":"@ciraltos","twitter_site":"@ciraltos","twitter_misc":{"Written by":"Travis Roberts","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#article","isPartOf":{"@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/"},"author":{"name":"Travis Roberts","@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a"},"headline":"Webhooks and Azure Automation Runbooks","datePublished":"2022-10-02T07:16:00+00:00","dateModified":"2023-03-23T09:50:17+00:00","mainEntityOfPage":{"@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/"},"wordCount":1153,"commentCount":5,"publisher":{"@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a"},"keywords":["api","Automation","Automation Runbook","Azure","azure API","Azure Automation","Azure Automation Hybrid","Azure Automation Log","Azure Automation step by step","Azure Automation Tutorial","Azure Runbook","hybrid worker","Powershell","python","Runbook","webhook","webhook step by step","webhook tutorial"],"articleSection":["Azure","Azure Automation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/","url":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/","name":"Webhooks and Azure Automation Runbooks - ciraltos","isPartOf":{"@id":"http:\/\/www.ciraltos.com\/staging2\/#website"},"datePublished":"2022-10-02T07:16:00+00:00","dateModified":"2023-03-23T09:50:17+00:00","description":"The information below details starting Azure Automation jobs with a webhook.","breadcrumb":{"@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.ciraltos.com\/staging2\/webhooks-and-azure-automation-runbooks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/www.ciraltos.com\/staging2\/"},{"@type":"ListItem","position":2,"name":"Webhooks and Azure Automation Runbooks"}]},{"@type":"WebSite","@id":"http:\/\/www.ciraltos.com\/staging2\/#website","url":"http:\/\/www.ciraltos.com\/staging2\/","name":"ciraltos","description":"cloud, technology and trends","publisher":{"@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.ciraltos.com\/staging2\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/25391996d6cddfecd4d257162b7e373a","name":"Travis Roberts","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/image\/","url":"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2023\/03\/Logo-1.png","contentUrl":"http:\/\/www.ciraltos.com\/staging2\/wp-content\/uploads\/2023\/03\/Logo-1.png","width":5657,"height":3563,"caption":"Travis Roberts"},"logo":{"@id":"http:\/\/www.ciraltos.com\/staging2\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.ciraltos.com","https:\/\/twitter.com\/ciraltos"],"url":"http:\/\/www.ciraltos.com\/staging2\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/posts\/836"}],"collection":[{"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/comments?post=836"}],"version-history":[{"count":19,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/posts\/836\/revisions"}],"predecessor-version":[{"id":3741,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/posts\/836\/revisions\/3741"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/media\/3740"}],"wp:attachment":[{"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/media?parent=836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/categories?post=836"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.ciraltos.com\/staging2\/wp-json\/wp\/v2\/tags?post=836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}