{"id":43143,"date":"2026-03-05T08:06:00","date_gmt":"2026-03-05T07:06:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=43143"},"modified":"2026-02-26T18:23:29","modified_gmt":"2026-02-26T17:23:29","slug":"create-a-new-goldengate-deployment-with-the-rest-api","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/","title":{"rendered":"Create a new GoldenGate deployment with the REST API"},"content":{"rendered":"\n<p>Is it possible to <strong>create a new GoldenGate deployment with the REST API<\/strong> ? This is the question I will try to answer in this blog, based on my experience with the REST API. I will dive in what is done by the <code>oggca.sh<\/code> script when adding a new deployment and see if we can replicate this with the REST API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-deployment-creation-rest-api-endpoint\">Deployment creation REST API endpoint<\/h2>\n\n\n\n<p>When I was designing the <a href=\"https:\/\/www.dbi-services.com\/blog\/production-ready-goldengate-rest-client-in-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">GoldenGate Python client<\/a>, I realized that some endpoints are listed in the documentation but not usable in practice. This is the case of the <code>create_connection<\/code> endpoint\/method, which is read-only. But is it the case for the deployment creation ?<\/p>\n\n\n\n<p>The GoldenGate REST API provides three endpoints to manage your deployments&#8217; life cycle:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-post.html\" target=\"_blank\" rel=\"noreferrer noopener\">Create a Deployment<\/a> &#8211; <code>POST<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}<\/code><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-delete.html\" target=\"_blank\" rel=\"noreferrer noopener\">Remove a Deployment<\/a> &#8211; <code>DELETE<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}<\/code><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-patch.html\" target=\"_blank\" rel=\"noreferrer noopener\">Update a Deployment<\/a> &#8211; <code>PATCH<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}<\/code><\/li>\n<\/ul>\n\n\n\n<p>In the GoldenGate Python client I released, they are available through the <code>create_deployment<\/code>, <code>remove_deployment<\/code> and <code>update_deployment<\/code> methods.<\/p>\n\n\n\n<p>The same REST API provides three endpoints to manage the services inside your deployments:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-services-service-post.html\" id=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-services-service-post.html\" target=\"_blank\" rel=\"noreferrer noopener\">Create a Service<\/a> &#8211; <code>POST<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}\/services\/{service}<\/code><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-services-service-delete.html\" target=\"_blank\" rel=\"noreferrer noopener\">Remove a Service<\/a> &#8211; <code>DELETE<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}\/services\/{service}<\/code><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.oracle.com\/en\/database\/goldengate\/core\/26\/oggra\/op-services-version-deployments-deployment-services-service-patch.html\" target=\"_blank\" rel=\"noreferrer noopener\">Update Service Properties<\/a> &#8211; <code>PATCH<\/code> &#8211; <code>\/services\/{version}\/deployments\/{deployment}\/services\/{service}<\/code><\/li>\n<\/ul>\n\n\n\n<p>In the GoldenGate Python client, these endpoints are available through the <code>create_service<\/code>, <code>remove_service<\/code> and <code>update_service_properties<\/code> methods.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-does-oggca-sh-do-in-the-background\">What does <code>oggca.sh<\/code> do in the background ?<\/h2>\n\n\n\n<p>Before even attempting to create a new deployment with the REST API, I figured I would <strong>reverse engineer<\/strong> the configuration assistant script <code>oggca.sh<\/code>. In this section, I will use the method I described in <a href=\"https:\/\/www.dbi-services.com\/blog\/querying-goldengate-rest-api-log-efficiently\/\" target=\"_blank\" rel=\"noreferrer noopener\">this blog<\/a> to analyze the <code>restapi.log<\/code> efficiently.<\/p>\n\n\n\n<p>After creating a new deployment named <code>ogg_test_02<\/code> with <code>oggca.sh<\/code>, I looked at the logs of the service manager and the deployment to see what was done in the background.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>restapi_read.py \/u01\/app\/oracle\/product\/ogg26sm\/var\/log\/ restapi.ndjson\nrestapi_read.py \/u01\/app\/oracle\/product\/ogg_test_02\/var\/log\/ restapi_02.ndjson<\/code><\/pre>\n\n\n\n<p>Again, look at <a href=\"https:\/\/www.dbi-services.com\/blog\/querying-goldengate-rest-api-log-efficiently\/\" target=\"_blank\" rel=\"noreferrer noopener\">this blog<\/a> if you don&#8217;t understand where this <code>restapi_read.py<\/code> script comes from. To only retrieve the non-<code>GET<\/code> requests made to the API, I use the following commands. I&#8217;m also narrowing down the search with <code>START_EPOCH<\/code> and <code>END_EPOCH<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>START_EPOCH=$(date -d \"2026-02-25 18:18:01 UTC\" +%s)\nEND_EPOCH=$(date -d \"2026-02-25 18:19:02 UTC\" +%s)\njq -c --argjson s \"$START_EPOCH\" --argjson e \"$END_EPOCH\" 'select(.restapi_epoch &gt;= $s and .restapi_epoch &lt;= $e and .request.context.verb != \"GET\")' restapi.ndjson | jq -r '{verb: .request.context.verb, uri: .request.context.uri, http_code: .response.context.code, request: .request.content, date: .restapi_datetime}' -c<\/code><\/pre>\n\n\n\n<p>The commands above give me the following JSON documents for the <code>restapi.log<\/code> of the service manager.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\",\"http_code\":\"201 Created\",\"request\":{\"passwordRegex\":\".*\",\"environment\":&#091;{\"name\":\"TNS_ADMIN\",\"value\":\"\/u01\/app\/oracle\/network\/admin\"}],\"oggConfHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/etc\/conf\",\"oggVarHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/var\",\"oggHome\":\"\/u01\/app\/oracle\/product\/ogg26\",\"oggEtcHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/etc\",\"metrics\":{\"servers\":&#091;{\"protocol\":\"uds\",\"socket\":\"PMSERVER.s\",\"type\":\"pmsrvr\"}],\"enabled\":true},\"oggSslHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/etc\/ssl\",\"oggArchiveHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/var\/lib\/archive\",\"oggDataHome\":\"\/u01\/app\/oracle\/product\/ogg_test_02\/var\/lib\/data\",\"enabled\":true,\"status\":\"running\"},\"date\":\"2026-02-25 18:18:09.112+0000\"}\n{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\/services\/adminsrvr\",\"http_code\":\"201 Created\",\"request\":{\"critical\":true,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":false,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":{\"address\":\"127.0.0.1\",\"port\":7820}}},\"enabled\":true,\"status\":\"running\"},\"date\":\"2026-02-25 18:18:09.126+0000\"}\n{\"verb\":\"PATCH\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\/services\/adminsrvr\",\"http_code\":\"200 OK\",\"request\":{\"config\":{\"csrfHeaderProtectionEnabled\":false,\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"},\"inbound\":{\"authMode\":\"clientOptional_server\",\"role\":\"server\",\"crlEnabled\":false,\"sessionCacheDetails\":{\"limit\":20480,\"timeoutSecs\":1800},\"cipherSuites\":\"^((?!anon|RC4|NULL|3DES).)*$\",\"certACL\":&#091;{\"name\":\"ANY\",\"permission\":\"allow\"}],\"sessionCacheEnabled\":false},\"outbound\":{\"authMode\":\"client_server\",\"role\":\"client\",\"crlEnabled\":false,\"cipherSuites\":\"^.*$\",\"sessionCacheEnabled\":false}}},\"workerThreadCount\":5,\"csrfTokenProtectionEnabled\":true,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7820}]},\"hstsEnabled\":true,\"authorizationDetails\":{\"movingExpirationWindowSecs\":900,\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"],\"customAuthorizationEnabled\":true},\"useMovingExpirationWindow\":false,\"sessionDurationSecs\":3600},\"defaultSynchronousWait\":30,\"authorizationEnabled\":true,\"hstsDetails\":\"max-age=31536000;includeSubDomains\",\"asynchronousOperationEnabled\":true,\"taskManagerEnabled\":true,\"legacyProtocolEnabled\":false},\"status\":\"restart\"},\"date\":\"2026-02-25 18:18:12.175+0000\"}\n{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\/services\/distsrvr\",\"http_code\":\"201 Created\",\"request\":{\"critical\":true,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":true,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7821}]}},\"enabled\":true,\"status\":\"running\"},\"date\":\"2026-02-25 18:18:12.203+0000\"}\n{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\/services\/recvsrvr\",\"http_code\":\"201 Created\",\"request\":{\"critical\":true,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":true,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7822}]}},\"enabled\":true,\"status\":\"running\"},\"date\":\"2026-02-25 18:18:12.237+0000\"}\n{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/deployments\/ogg_test_02\/services\/pmsrvr\",\"http_code\":\"201 Created\",\"request\":{\"critical\":false,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":true,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7823}]}},\"enabled\":true,\"status\":\"running\"},\"date\":\"2026-02-25 18:18:12.288+0000\"}<\/code><\/pre>\n\n\n\n<p>And the same commands applied to the deployment&#8217;s log give me the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/authorizations\/security\/ogg\",\"http_code\":\"201 Created\",\"request\":{\"credential\":\"** Masked **\",\"info\":\"Oracle GoldenGate Administrator\"},\"date\":\"2026-02-25 18:18:10.147+0000\"}\n{\"verb\":\"POST\",\"uri\":\"\/services\/v2\/config\/files\/GLOBALS\",\"http_code\":\"201 Created\",\"request\":{\"lines\":&#091;\"GGSCHEMA OGGADMIN\"]},\"date\":\"2026-02-25 18:18:13.334+0000\"}<\/code><\/pre>\n\n\n\n<p>In total, six non-<code>GET<\/code> requests are passing through the API in the Service Manager, and two are passing through the administration service of the newly created deployment. Here is the detail, in the correct order.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>POST<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02<\/code> (<code>create_deployment<\/code> method in the client) : Creation of the deployment.<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02\/services\/adminsrvr<\/code> (<code>create_service<\/code> method) : Creation of the Administration Service, unsecured at this point.<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/authorizations\/security\/ogg<\/code> (<code>create_user<\/code> method) : Creation of the Security user on the new deployment.<\/li>\n\n\n\n<li><code>PATCH<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02\/services\/adminsrvr<\/code> (<code>update_service_properties<\/code>) : Update on the Administration Service.<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/config\/files\/GLOBALS<\/code> (<code>create_configuration_file<\/code> method) : Creation of the <code>GLOBALS<\/code> parameter file, based on the input from <code>oggca.sh<\/code>.<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02\/services\/distsrvr<\/code> : Creation of the Distribution Service<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02\/services\/recvsrvr<\/code> : Creation of the Receiver Service<\/li>\n\n\n\n<li><code>POST<\/code> on <code>\/services\/v2\/deployments\/ogg_test_02\/services\/pmsrvr<\/code> : Creation of the Performance Metrics Service.<\/li>\n<\/ul>\n\n\n\n<p>If we analyze the content of the request, we see that all services are created with nearly the same configuration. The administration service is created with the following configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"critical\":true,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":false,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":{\"address\":\"127.0.0.1\",\"port\":7820}}},\"enabled\":true,\"status\":\"running\"}<\/code><\/pre>\n\n\n\n<p>And the other services with the following configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"request\":{\"critical\":false,\"config\":{\"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":false,\"id\":\"OracleSSL\"}}},\"authorizationEnabled\":true,\"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7823}]}},\"enabled\":true,\"status\":\"running\"}}<\/code><\/pre>\n\n\n\n<p>Only the <code>authorizationEnabled<\/code> and <code>address<\/code> are different, but they are corrected in the <code>PATCH<\/code> request made to the administration service. The reason is that when creating the unsecured administration service first (<code>authorizationEnabled = False<\/code>), you might not want to make it available to everyone, so you limit its access (<code>address = 127.0.0.1<\/code>).<\/p>\n\n\n\n<p>Now that we know what the configuration assistant does, let&#8217;s try to replicate this with the REST API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-a-goldengate-deployment-with-the-rest-api\">Creating a GoldenGate deployment with the REST API<\/h2>\n\n\n\n<p>In this section, I will be using the Python client I presented in a previous blog, but you can do this with direct calls to the API, in Python or in any other language. Let&#8217;s start by listing the deployments in our current environment:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; from oggrestapi import OGGRestAPI\n&gt;&gt;&gt; ogg_client = OGGRestAPI(url=\"http:\/\/vmogg:7809\", username=\"ogg\", password=\"ogg\")\nConnected to OGG REST API at http:\/\/vmogg:7809\n&gt;&gt;&gt; ogg_client.list_deployments()\n&#091;{'name': 'ServiceManager', 'status': 'running'}, {'name': 'ogg_test_01', 'status': 'running'}, {'name': 'ogg_test_02', 'status': 'running'}]<\/code><\/pre>\n\n\n\n<p>Now, let&#8217;s try to add an <code>ogg_test_03<\/code> deployment, following the same order given above.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client.create_deployment(\n    deployment=\"ogg_test_03\",\n    data={\n        \"passwordRegex\":\".*\",\n        \"environment\":&#091;{\"name\":\"TNS_ADMIN\",\"value\":\"\/u01\/app\/oracle\/network\/admin\"}],\n        \"oggConfHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/etc\/conf\",\n        \"oggVarHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/var\",\n        \"oggHome\":\"\/u01\/app\/oracle\/product\/ogg26\",\n        \"oggEtcHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/etc\",\n        \"metrics\":{\"servers\":&#091;{\"protocol\":\"uds\",\"socket\":\"PMSERVER.s\",\"type\":\"pmsrvr\"}],\"enabled\":True},\n        \"oggSslHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/etc\/ssl\",\n        \"oggArchiveHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/var\/lib\/archive\",\n        \"oggDataHome\":\"\/u01\/app\/oracle\/product\/ogg_test_03\/var\/lib\/data\",\n        \"enabled\":True,\n        \"status\":\"running\"\n    }\n)<\/code><\/pre>\n\n\n\n<p>In the web UI, we can see the new deployment <code>ogg_test_03<\/code> without any service at this point.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"359\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png\" alt=\"\" class=\"wp-image-43223\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-300x105.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-768x269.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1536x538.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-2048x717.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Then, create the administration service.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client.create_service(\n    service='adminsrvr',\n    deployment='ogg_test_03',\n    data={\n        \"$schema\": \"ogg:service\",\n        \"critical\":True,\n        \"config\":{\n            \"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\n            \"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":False,\"id\":\"OracleSSL\"}}},\n            \"authorizationEnabled\":False,\n            \"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\n            \"serviceListeningPort\":{\"address\":\"127.0.0.1\",\"port\":7830}}\n        },\n        \"enabled\":True,\n        \"status\":\"running\"\n    })<\/code><\/pre>\n\n\n\n<p>We can see the new administration service in the list of services of the new deployment:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"178\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-1024x178.png\" alt=\"\" class=\"wp-image-43224\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-1024x178.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-300x52.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-768x134.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-1536x267.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_adm-2048x356.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>To secure the administration service, let&#8217;s create the <code>Security<\/code> user. To do this, you need to connect locally to the administration service with the port chosen above (<code>7830<\/code>). You can choose <code>username=None<\/code> and <code>password=None<\/code>, since the service is not yet secured. And for a way to do this remotely, read the blog until the end !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client_adm = OGGRestAPI(url=\"http:\/\/127.0.0.1:7830\", username=None, password=None)\n\nogg_client_adm.create_user(\n    user='ogg',\n    role='Security',\n    data={\n        \"credential\": \"your_password\",\n        \"info\": \"Oracle GoldenGate Administrator\"\n    })<\/code><\/pre>\n\n\n\n<p>Since we are already connected, let&#8217;s add the <code>GLOBALS<\/code> file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client_adm.create_configuration_file(\n    file='GLOBALS',\n    data={\n        \"lines\": &#091;\n            \"GGSCHEMA OGGADMIN\"\n        ]\n    })<\/code><\/pre>\n\n\n\n<p>Then, we can update the administration service properties to secure the service and make it available.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client.update_service_properties(\n    service='adminsrvr',\n    deployment='ogg_test_03',\n    data={\n        \"config\":{\n            \"csrfHeaderProtectionEnabled\":False,\n            \"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":False,\"id\":\"OracleSSL\"},\"inbound\":{\"authMode\":\"clientOptional_server\",\"role\":\"server\",\"crlEnabled\":False,\"sessionCacheDetails\":{\"limit\":20480,\"timeoutSecs\":1800},\"cipherSuites\":\"^((?!anon|RC4|NULL|3DES).)*$\",\"certACL\":&#091;{\"name\":\"ANY\",\"permission\":\"allow\"}],\"sessionCacheEnabled\":False},\"outbound\":{\"authMode\":\"client_server\",\"role\":\"client\",\"crlEnabled\":False,\"cipherSuites\":\"^.*$\",\"sessionCacheEnabled\":False}}},\n            \"workerThreadCount\":5,\n            \"csrfTokenProtectionEnabled\":True,\n            \"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\"serviceListeningPort\":&#091;{\"address\":\"0.0.0.0\",\"port\":7830}]},\n            \"hstsEnabled\":True,\n            \"authorizationDetails\":{\"movingExpirationWindowSecs\":900,\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"],\"customAuthorizationEnabled\":True},\"useMovingExpirationWindow\":False,\"sessionDurationSecs\":3600},\n            \"defaultSynchronousWait\":30,\n            \"authorizationEnabled\":True,\n            \"hstsDetails\":\"max-age=31536000;includeSubDomains\",\n            \"asynchronousOperationEnabled\":True,\n            \"taskManagerEnabled\":True,\n            \"legacyProtocolEnabled\":False\n        },\n        \"status\":\"restart\"\n    })<\/code><\/pre>\n\n\n\n<p>And finally, we can add the three remaining services:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Distribution service<\/strong>, on port <code>7831<\/code>.<\/li>\n\n\n\n<li><strong>Receiver service<\/strong>, on port <code>7832<\/code>.<\/li>\n\n\n\n<li><strong>Performance metrics service<\/strong>, on port <code>7833<\/code>.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_client.create_service(\n    service='distsrvr',\n    deployment='ogg_test_03',\n    data={\n        \"$schema\": \"ogg:service\",\n        \"critical\":True,\n        \"config\":{\n            \"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\n            \"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":False,\"id\":\"OracleSSL\"}}},\n            \"authorizationEnabled\":True,\n            \"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\n            \"serviceListeningPort\":{\"address\":\"0.0.0.0\",\"port\":7831}}\n        },\n        \"enabled\":True,\n        \"status\":\"running\"\n    })\n\nogg_client.create_service(\n    service='recvsrvr',\n    deployment='ogg_test_03',\n    data={\n        \"$schema\": \"ogg:service\",\n        \"critical\":True,\n        \"config\":{\n            \"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\n            \"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":False,\"id\":\"OracleSSL\"}}},\n            \"authorizationEnabled\":True,\n            \"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\n            \"serviceListeningPort\":{\"address\":\"0.0.0.0\",\"port\":7832}}\n        },\n        \"enabled\":True,\n        \"status\":\"running\"\n    })\n\nogg_client.create_service(\n    service='pmsrvr',\n    deployment='ogg_test_03',\n    data={\n        \"$schema\": \"ogg:service\",\n        \"critical\":True,\n        \"config\":{\n            \"authorizationDetails\":{\"common\":{\"allow\":&#091;\"Digest\",\"x-Cert\",\"Basic\",\"Bearer\"]}},\n            \"securityDetails\":{\"network\":{\"common\":{\"fipsEnabled\":False,\"id\":\"OracleSSL\"}}},\n            \"authorizationEnabled\":True,\n            \"network\":{\"ipACL\":&#091;{\"address\":\"ANY\",\"permission\":\"allow\"}],\n            \"serviceListeningPort\":{\"address\":\"0.0.0.0\",\"port\":7833}}\n        },\n        \"enabled\":True,\n        \"status\":\"running\"\n    })<\/code><\/pre>\n\n\n\n<p>And that&#8217;s it ! You just created a functional deployment with the REST API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-can-i-create-a-deployment-from-a-remote-server\">Can I create a deployment from a remote server ?<\/h2>\n\n\n\n<p>When running <code>oggca.sh<\/code> or the API method described above, you first create an unsecured administration service, only accessible locally. But if you want to do all of this remotely, you just have to create the unsecured administration service with <code>.config.network.serviceListeningPort.[0].address<\/code> set to <code>0.0.0.0<\/code> right from the start. This way, you will be able to create the <code>Security<\/code> user remotely, and add deployments to your GoldenGate setups without even connecting to the server !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Is it possible to create a new GoldenGate deployment with the REST API ? This is the question I will try to answer in this blog, based on my experience with the REST API. I will dive in what is done by the oggca.sh script when adding a new deployment and see if we can [&hellip;]<\/p>\n","protected":false},"author":152,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3787,59],"tags":[3380,3182,3827,979,1518,769,328,3730,3718,3882,1521,3767],"type_dbi":[3835,3826,3828,3801,3878,3818,3740,3881,3884,3883,3769],"class_list":["post-43143","post","type-post","status-publish","format-standard","hentry","category-goldengate","category-oracle","tag-3380","tag-3182","tag-3827","tag-api","tag-create","tag-deployment","tag-goldengate","tag-ogg","tag-oggca","tag-remotely","tag-rest","tag-restapi","type-3835","type-3826","type-3828","type-api","type-create","type-deployment","type-goldengate","type-ogg","type-oggca","type-remotely","type-restapi"],"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>Create a new GoldenGate deployment with the REST API - 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\/create-a-new-goldengate-deployment-with-the-rest-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a new GoldenGate deployment with the REST API\" \/>\n<meta property=\"og:description\" content=\"Is it possible to create a new GoldenGate deployment with the REST API ? This is the question I will try to answer in this blog, based on my experience with the REST API. I will dive in what is done by the oggca.sh script when adding a new deployment and see if we can [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-05T07:06:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2118\" \/>\n\t<meta property=\"og:image:height\" content=\"742\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Julien Delattre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Delattre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\/create-a-new-goldengate-deployment-with-the-rest-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\"},\"author\":{\"name\":\"Julien Delattre\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e\"},\"headline\":\"Create a new GoldenGate deployment with the REST API\",\"datePublished\":\"2026-03-05T07:06:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\"},\"wordCount\":837,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png\",\"keywords\":[\"19\",\"23\",\"26\",\"api\",\"create\",\"Deployment\",\"GoldenGate\",\"ogg\",\"oggca\",\"remotely\",\"rest\",\"restapi\"],\"articleSection\":[\"GoldenGate\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\",\"name\":\"Create a new GoldenGate deployment with the REST API - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png\",\"datePublished\":\"2026-03-05T07:06:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png\",\"width\":2118,\"height\":742},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a new GoldenGate deployment with the REST API\"}]},{\"@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\/764ab019cc9dec42655b4c6b9b8e474e\",\"name\":\"Julien Delattre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"caption\":\"Julien Delattre\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/juliendelattre\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Create a new GoldenGate deployment with the REST API - 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\/create-a-new-goldengate-deployment-with-the-rest-api\/","og_locale":"en_US","og_type":"article","og_title":"Create a new GoldenGate deployment with the REST API","og_description":"Is it possible to create a new GoldenGate deployment with the REST API ? This is the question I will try to answer in this blog, based on my experience with the REST API. I will dive in what is done by the oggca.sh script when adding a new deployment and see if we can [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/","og_site_name":"dbi Blog","article_published_time":"2026-03-05T07:06:00+00:00","og_image":[{"width":2118,"height":742,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png","type":"image\/png"}],"author":"Julien Delattre","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Julien Delattre","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/"},"author":{"name":"Julien Delattre","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"headline":"Create a new GoldenGate deployment with the REST API","datePublished":"2026-03-05T07:06:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/"},"wordCount":837,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png","keywords":["19","23","26","api","create","Deployment","GoldenGate","ogg","oggca","remotely","rest","restapi"],"articleSection":["GoldenGate","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/","url":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/","name":"Create a new GoldenGate deployment with the REST API - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new-1024x359.png","datePublished":"2026-03-05T07:06:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/02\/ogg_restapi_dep_create_new.png","width":2118,"height":742},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/create-a-new-goldengate-deployment-with-the-rest-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a new GoldenGate deployment with the REST API"}]},{"@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\/764ab019cc9dec42655b4c6b9b8e474e","name":"Julien Delattre","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","caption":"Julien Delattre"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/juliendelattre\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43143","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\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=43143"}],"version-history":[{"count":15,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43143\/revisions"}],"predecessor-version":[{"id":43237,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43143\/revisions\/43237"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=43143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=43143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=43143"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=43143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}