diff --git a/dist/index.js b/dist/index.js
index 60b1ca0..09a23f4 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -5673,6 +5673,24 @@ var RunbookProcessRepository = /** @class */ (function () {
             });
         });
     };
+    RunbookProcessRepository.prototype.getWithGitRef = function (runbook, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.request("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbookProcesses{/id}"), {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            id: runbook.RunbookProcessId,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
     RunbookProcessRepository.prototype.update = function (runbookProcess) {
         return __awaiter(this, void 0, void 0, function () {
             var response;
@@ -5690,6 +5708,24 @@ var RunbookProcessRepository = /** @class */ (function () {
             });
         });
     };
+    RunbookProcessRepository.prototype.updateWithGitRef = function (runbookProcess, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.doUpdate("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbookProcesses{/id}"), runbookProcess, {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            id: runbookProcess.Id,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
     return RunbookProcessRepository;
 }());
 exports.RunbookProcessRepository = RunbookProcessRepository;
@@ -5717,6 +5753,42 @@ var __extends = (this && this.__extends) || (function () {
         d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
     };
 })();
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+    function verb(n) { return function (v) { return step([n, v]); }; }
+    function step(op) {
+        if (f) throw new TypeError("Generator is already executing.");
+        while (g && (g = 0, op[0] && (_ = 0)), _) try {
+            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+            if (y = 0, t) op = [op[0] & 2, t.value];
+            switch (op[0]) {
+                case 0: case 1: t = op; break;
+                case 4: _.label++; return { value: op[1], done: false };
+                case 5: _.label++; y = op[1]; op = [0]; continue;
+                case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                default:
+                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                    if (t[2]) _.ops.pop();
+                    _.trys.pop(); continue;
+            }
+            op = body.call(thisArg, _);
+        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+    }
+};
 Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.RunbookRepository = void 0;
 var spaceScopedRoutePrefix_1 = __nccwpck_require__(7218);
@@ -5724,8 +5796,81 @@ var spaceScopedBasicRepository_1 = __nccwpck_require__(3496);
 var RunbookRepository = /** @class */ (function (_super) {
     __extends(RunbookRepository, _super);
     function RunbookRepository(client, spaceName, project) {
-        return _super.call(this, client, spaceName, "".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/").concat(project.Id, "/runbooks"), "skip,take,ids,partialName") || this;
+        var _this = _super.call(this, client, spaceName, "".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/").concat(project.Id, "/runbooks"), "skip,take,ids,partialName") || this;
+        _this.projectId = project.Id;
+        return _this;
     }
+    RunbookRepository.prototype.getWithGitRef = function (slug, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.request("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbooks{/id}"), {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            id: slug,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
+    RunbookRepository.prototype.createWithGitRef = function (runbook, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.doCreate("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbooks/v2"), runbook, {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
+    RunbookRepository.prototype.modifyWithGitRef = function (runbook, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.doUpdate("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbooks{/id}"), runbook, {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            id: runbook.Id,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
+    RunbookRepository.prototype.deleteWithGitRef = function (runbook, gitRef) {
+        return __awaiter(this, void 0, void 0, function () {
+            var response;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0: return [4 /*yield*/, this.client.del("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/projects/{projectId}/{gitRef}/runbooks{/id}"), {
+                            spaceName: this.spaceName,
+                            projectId: this.projectId,
+                            id: runbook.Id,
+                            gitRef: gitRef,
+                        })];
+                    case 1:
+                        response = _a.sent();
+                        return [2 /*return*/, response];
+                }
+            });
+        });
+    };
     return RunbookRepository;
 }(spaceScopedBasicRepository_1.SpaceScopedBasicRepository));
 exports.RunbookRepository = RunbookRepository;
@@ -5739,6 +5884,12 @@ exports.RunbookRepository = RunbookRepository;
 "use strict";
 
 Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.RunbookRetentionUnit = void 0;
+var RunbookRetentionUnit;
+(function (RunbookRetentionUnit) {
+    RunbookRetentionUnit["Days"] = "Days";
+    RunbookRetentionUnit["Items"] = "Items";
+})(RunbookRetentionUnit = exports.RunbookRetentionUnit || (exports.RunbookRetentionUnit = {}));
 
 
 /***/ }),
@@ -5984,6 +6135,40 @@ var RunbookRunRepository = /** @class */ (function () {
             });
         });
     };
+    RunbookRunRepository.prototype.createGit = function (command, gitRef) {
+        var _a, _b;
+        return __awaiter(this, void 0, void 0, function () {
+            var serverInformation, response, mappedTasks;
+            return __generator(this, function (_c) {
+                switch (_c.label) {
+                    case 0: return [4 /*yield*/, this.client.getServerInformation()];
+                    case 1:
+                        serverInformation = _c.sent();
+                        if ((0, semver_1.lt)(serverInformation.version, "2022.3.5512")) {
+                            (_b = (_a = this.client).error) === null || _b === void 0 ? void 0 : _b.call(_a, "The Octopus instance doesn't support running runbooks using the Executions API, it will need to be upgraded to at least 2022.3.5512 in order to access this API.");
+                            throw new Error("The Octopus instance doesn't support running runbooks using the Executions API, it will need to be upgraded to at least 2022.3.5512 in order to access this API.");
+                        }
+                        this.client.debug("Running a runbook...");
+                        return [4 /*yield*/, this.client.doCreate("".concat(spaceScopedRoutePrefix_1.spaceScopedRoutePrefix, "/runbook-runs/git/create/v1"), __assign({ spaceIdOrName: command.spaceName, gitRef: gitRef }, command))];
+                    case 2:
+                        response = _c.sent();
+                        if (response.RunbookRunServerTasks.length == 0) {
+                            throw new Error("No server task details returned");
+                        }
+                        mappedTasks = response.RunbookRunServerTasks.map(function (x) {
+                            return {
+                                RunbookRunId: x.RunbookRunId || x.runbookRunId,
+                                ServerTaskId: x.ServerTaskId || x.serverTaskId,
+                            };
+                        });
+                        this.client.debug("Runbook executed successfully. [".concat(mappedTasks.map(function (t) { return t.ServerTaskId; }).join(", "), "]"));
+                        return [2 /*return*/, {
+                                RunbookRunServerTasks: mappedTasks,
+                            }];
+                }
+            });
+        });
+    };
     return RunbookRunRepository;
 }());
 exports.RunbookRunRepository = RunbookRunRepository;
diff --git a/package-lock.json b/package-lock.json
index 7a2e2c1..ce4d9ff 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
       "license": "Apache-2.0",
       "dependencies": {
         "@actions/core": "1.10.1",
-        "@octopusdeploy/api-client": "3.4.1",
+        "@octopusdeploy/api-client": "3.5.1",
         "tmp": "0.2.3"
       },
       "devDependencies": {
@@ -1359,9 +1359,9 @@
       }
     },
     "node_modules/@octopusdeploy/api-client": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/@octopusdeploy/api-client/-/api-client-3.4.1.tgz",
-      "integrity": "sha512-j6FRgDNzc6AQoT3CAguYLWxoMR4W5TKCT1BCPpqjEN9mknmdMSKfYORs3djn/Yj/BhqtITTydDpBoREbzKY5+g==",
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/@octopusdeploy/api-client/-/api-client-3.5.1.tgz",
+      "integrity": "sha512-JKPx+L1QNjtX1txpj+0+JJR3Q5D/IwKdocih8WTGXGYNYC8jdEDgaTkPb701gD/Jzu14foNn67W4CDDBvyPZeA==",
       "dependencies": {
         "adm-zip": "^0.5.9",
         "axios": "^1.2.1",
@@ -7808,9 +7808,9 @@
       }
     },
     "@octopusdeploy/api-client": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/@octopusdeploy/api-client/-/api-client-3.4.1.tgz",
-      "integrity": "sha512-j6FRgDNzc6AQoT3CAguYLWxoMR4W5TKCT1BCPpqjEN9mknmdMSKfYORs3djn/Yj/BhqtITTydDpBoREbzKY5+g==",
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/@octopusdeploy/api-client/-/api-client-3.5.1.tgz",
+      "integrity": "sha512-JKPx+L1QNjtX1txpj+0+JJR3Q5D/IwKdocih8WTGXGYNYC8jdEDgaTkPb701gD/Jzu14foNn67W4CDDBvyPZeA==",
       "requires": {
         "adm-zip": "^0.5.9",
         "axios": "^1.2.1",
diff --git a/package.json b/package.json
index 393f952..fa43902 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
   },
   "dependencies": {
     "@actions/core": "1.10.1",
-    "@octopusdeploy/api-client": "3.4.1",
+    "@octopusdeploy/api-client": "3.5.1",
     "tmp": "0.2.3"
   },
   "description": "GitHub Action to Create a Release in Octopus Deploy",