diff --git a/.gitignore b/.gitignore
index 6ef5c6d096f1f589bdd1959215d22d14de08cf2a..824d16b9f613cc48e11a8cdb23200d5f96ed2b13 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,10 @@
 .directory
 
+filelist
+phpstan-baseline.neon
+phpstan.neon
+.idea/.gitignore
+.idea/fusiondirectory-integrator.iml
+.idea/modules.xml
+.idea/php.xml
+.idea/vcs.xml
diff --git a/src/FusionDirectory/Rest/WebServiceCall.php b/src/FusionDirectory/Rest/WebServiceCall.php
index dcd6d512147bf821224cf84e2cd1ba636562e261..0ef7029695166ce3910332d0813b70eab1e7432e 100644
--- a/src/FusionDirectory/Rest/WebServiceCall.php
+++ b/src/FusionDirectory/Rest/WebServiceCall.php
@@ -10,6 +10,8 @@ class WebServiceCall
    */
   private $ch;
 
+  private $httpStatusCode; // Store the HTTP status code
+
   /**
    * @param string $URL
    * @param string $method
@@ -70,7 +72,12 @@ class WebServiceCall
           break;
         case 'post':
           curl_setopt($this->ch, CURLOPT_POST, TRUE);
-          curl_setopt($this->ch, CURLOPT_POSTFIELDS, json_encode($this->data));
+
+          // Allows a POST to be performed without DATA
+          if (!empty($this->data)) {
+            curl_setopt($this->ch, CURLOPT_POSTFIELDS, json_encode($this->data));
+          }
+
           curl_setopt($this->ch, CURLOPT_USERAGENT, $customUserAgent);
           break;
       }
@@ -198,5 +205,44 @@ class WebServiceCall
     curl_close($this->ch);
     return $response;
   }
+
+  /**
+   * @return array
+   * @throws \Exception
+   */
+  public function execute (): array
+  {
+    $response = curl_exec($this->ch);
+
+    // Capture the HTTP status code
+    $this->httpStatusCode = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
+
+    $this->handleCurlError($this->ch);
+
+    // Handle 204 No Content response
+    if ($this->httpStatusCode === 204) {
+        curl_close($this->ch);
+        return []; // Return an empty array for 204 responses
+    }
+
+    $decoded = json_decode($response, TRUE);
+    curl_close($this->ch);
+
+    if (!is_array($decoded)) {
+        throw new \Exception('Invalid JSON response: ' . $response);
+    }
+
+    return $decoded;
+  }
+
+  /**
+   * Retrieve the HTTP status code of the last request
+   * @return int
+   */
+  public function getHttpStatusCode (): int
+  {
+    return $this->httpStatusCode;
+  }
+
 }