{"id":33303,"date":"2024-05-27T17:02:10","date_gmt":"2024-05-27T15:02:10","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=33303"},"modified":"2025-01-24T10:41:56","modified_gmt":"2025-01-24T09:41:56","slug":"using-webhooks-with-gitlab-to-launch-external-tools","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/","title":{"rendered":"Using WebHooks with GitLab to launch external tools"},"content":{"rendered":"\n<p>by Alexandre Nestor<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction<\/h2>\n\n\n\n<p>WebHooks are HTTP callbacks that are triggered by events. In case of GitlLab these can be events like pushing some code, or creating an issue, or pushing some comments, create a merge request and so on.<\/p>\n\n\n\n<p>Somehow, is a way for an application to send data, trigger events, in real time to another application, even if the target application don&#8217;t ask for the data. <\/p>\n\n\n\n<p>In this post I will explain how to add a WebHook to a project and how to execute some external code when en event is triggered.<\/p>\n\n\n\n<p>I will use an <a href=\"https:\/\/flask.palletsprojects.com\/\">Flask<\/a> application, which will be triggered by GitLab WebHook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-vm-configuration\">VM configuration<\/h2>\n\n\n\n<p>The test VM is created on the OCI cloud. It is a RedHat VM but that is not very important. <\/p>\n\n\n\n<p>First I have to open the port <code>8200<\/code> (used  by Flask). RedHat use by default <code>firewalld<\/code> as firewall:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# add 8200 port using tcp to the public zone\n&#x5B;root@wb ~]# firewall-cmd --zone=public --add-port=8200\/tcp\nsuccess\n# list opened ports\n&#x5B;root@wb ~]# firewall-cmd --list-all\npublic (active)\ntarget: default\nicmp-block-inversion: no\ninterfaces: ens3\nsources:\nservices: dhcpv6-client http ssh\nports: 8200\/tcp\nprotocols:\nforward: no\nmasquerade: no\nforward-ports:\nsource-ports:\nicmp-blocks:\nrich rules:\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-flask-application\">The Flask application <\/h2>\n\n\n\n<p>For example I create a small <code>Flask<\/code> application which is waiting for an event on <code>8200<\/code> port. The easiest application is to retrieve the <code>HTTP<\/code> frame. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n#\u00a0app.py \nfrom flask import Flask, request, abort\nimport json\n\napp = Flask(__name__)\n\n@app.route(&#039;\/my_webhook&#039;, methods=&#x5B;&#039;POST&#039;])\ndef my_webhook():\n    if request.method == &#039;POST&#039;:\n        print(json.dumps(request.json, indent=2))\n        return &#039;success&#039;, 200\n    else:\n        abort(400)\n\nif __name__ == &#039;__main__&#039;:\n    app.run(host=&#039;0.0.0.0&#039;, port=8200, debug=True)\n<\/pre><\/div>\n\n\n<p>The Flask will launch a http server which is listen on all interfaces (<code>0.0.0.0<\/code>) en on port <code>8200<\/code><br>The path to be used in the HTTP POST call is <code>my_webhook<\/code><br>Also I used the debug mode to get the most traces.<br>The Flask application is waiting a POST request (line 10). And answer <code>success<\/code>.<br>Otherwise, return <code>400<\/code> HTTP code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-start-the-flask-application\">Start the Flask application <\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n(venv) &#x5B;opc@wb ~]$ python app.py\n * Serving Flask app &#039;app&#039; (lazy loading)\n * Environment: production\n   WARNING: This is a development server. Do not use it in a production deployment.\n   Use a production WSGI server instead.\n * Debug mode: on\n * Running on all addresses.\n   WARNING: This is a development server. Do not use it in a production deployment.\n * Running on http:\/\/172.168.0.40:8200\/ (Press CTRL+C to quit)\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 295-390-357\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-gitlab-configuration\">GitLab configuration <\/h2>\n\n\n\n<p>You must have the role  <code>maitainer<\/code> on your project, to have the rights to manage WebHooks.<\/p>\n\n\n\n<p>Select Settings -&gt; WebHooks from the left Menu<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png\" alt=\"\" class=\"wp-image-33305\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-300x127.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-768x326.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1536x652.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-2048x869.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once The WebHook was saved it can be tested. From <code>Test<\/code> button you can choose an event type to test. <\/p>\n\n\n\n<p>Let&#8217;s try with a <code>push<\/code> event:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-1024x583.png\" alt=\"\" class=\"wp-image-33306\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-1024x583.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-300x171.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-768x438.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-1536x875.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-46-2048x1167.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When the event is triggered in GitLab, the Flask application must dump the http frame on the screen: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n * Running on http:\/\/172.168.0.40:8200\/ (Press CTRL+C to quit)\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 295-390-357\n.....\n{\n  &quot;object_kind&quot;: &quot;push&quot;,   \n  &quot;event_name&quot;: &quot;push&quot;,\n  &quot;before&quot;: &quot;6aa30335b09*****53183fb28bb84aada5cf&quot;,\n  &quot;after&quot;: &quot;a48e187ef217a******62498378e5023d355&quot;,\n  &quot;ref&quot;: &quot;refs\/heads\/main&quot;,\n  &quot;checkout_sha&quot;: &quot;a48e187ef21********9490562498378e5023d355&quot;,\n  &quot;message&quot;: null,\n  &quot;user_id&quot;: 11774125,\n  &quot;user_name&quot;: &quot;your username &quot;,\n  &quot;user_username&quot;: &quot;your.usernam&quot;,\n  &quot;user_email&quot;: &quot;&quot;,\n  &quot;user_avatar&quot;: &quot;https:\/\/gitlab.com\/uploads\/-\/system\/user\/avatar\/11774125\/avatar.png&quot;,\n  &quot;project_id&quot;: 38878393,\n  &quot;project&quot;: {\n    &quot;id&quot;: 38878393,\n    .....\n<\/pre><\/div>\n\n\n<p>On line 7 we can see the <code>push<\/code> event from GitLab.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>The use of WebHooks from GitLab to run external code represents another facility in DevOps tools.<\/p>\n\n\n\n<p>Their implementation is easy and immediate. <\/p>\n\n\n\n<p>An example of use case is the integration with Ansible Automation Controller, to run Ansible jobs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitlLab these can be events like pushing some code, or creating an issue, or pushing some comments, create a merge request and so on. Somehow, is a way for an application to send data, trigger events, in real time [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1321,1320],"tags":[],"type_dbi":[3049,3017],"class_list":["post-33303","post","type-post","status-publish","format-standard","hentry","category-ansible","category-devops","type-development","type-devops"],"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>Using WebHooks with GitLab to launch external tools - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using WebHooks with GitLab to launch external tools\" \/>\n<meta property=\"og:description\" content=\"by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitlLab these can be events like pushing some code, or creating an issue, or pushing some comments, create a merge request and so on. Somehow, is a way for an application to send data, trigger events, in real time [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-27T15:02:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-24T09:41:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2526\" \/>\n\t<meta property=\"og:image:height\" content=\"1072\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Using WebHooks with GitLab to launch external tools\",\"datePublished\":\"2024-05-27T15:02:10+00:00\",\"dateModified\":\"2025-01-24T09:41:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\"},\"wordCount\":354,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png\",\"articleSection\":[\"Ansible\",\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\",\"name\":\"Using WebHooks with GitLab to launch external tools - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png\",\"datePublished\":\"2024-05-27T15:02:10+00:00\",\"dateModified\":\"2025-01-24T09:41:56+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png\",\"width\":2526,\"height\":1072},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using WebHooks with GitLab to launch external tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using WebHooks with GitLab to launch external tools - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/","og_locale":"en_US","og_type":"article","og_title":"Using WebHooks with GitLab to launch external tools","og_description":"by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitlLab these can be events like pushing some code, or creating an issue, or pushing some comments, create a merge request and so on. Somehow, is a way for an application to send data, trigger events, in real time [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/","og_site_name":"dbi Blog","article_published_time":"2024-05-27T15:02:10+00:00","article_modified_time":"2025-01-24T09:41:56+00:00","og_image":[{"width":2526,"height":1072,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Using WebHooks with GitLab to launch external tools","datePublished":"2024-05-27T15:02:10+00:00","dateModified":"2025-01-24T09:41:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/"},"wordCount":354,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png","articleSection":["Ansible","DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/","url":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/","name":"Using WebHooks with GitLab to launch external tools - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45-1024x435.png","datePublished":"2024-05-27T15:02:10+00:00","dateModified":"2025-01-24T09:41:56+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/05\/image-45.png","width":2526,"height":1072},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-with-gitlab-to-launch-external-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using WebHooks with GitLab to launch external tools"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/33303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=33303"}],"version-history":[{"count":6,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/33303\/revisions"}],"predecessor-version":[{"id":36863,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/33303\/revisions\/36863"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=33303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=33303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=33303"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=33303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}