From a85a25efb05b8dfd24808aea990c9fc21bf925aa Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sat, 26 Oct 2024 20:05:51 -0500 Subject: [PATCH 1/8] Add cauedBy to openapi spec --- .../github-get-job-inputs/src/index.ts | 15 +++- openapi.v1.yaml | 21 +++-- packages/node-sdk/openapitools.json | 2 +- .../node-sdk/src/.openapi-generator/FILES | 1 + .../node-sdk/src/models/GetJob200Response.ts | 15 ++++ .../src/models/GetJob200ResponseCausedBy.ts | 86 +++++++++++++++++++ packages/node-sdk/src/models/index.ts | 1 + 7 files changed, 132 insertions(+), 9 deletions(-) create mode 100644 packages/node-sdk/src/models/GetJob200ResponseCausedBy.ts diff --git a/integrations/github-get-job-inputs/src/index.ts b/integrations/github-get-job-inputs/src/index.ts index 7374704fd..865eb6baf 100644 --- a/integrations/github-get-job-inputs/src/index.ts +++ b/integrations/github-get-job-inputs/src/index.ts @@ -51,8 +51,15 @@ async function run() { .then((response) => { core.info(JSON.stringify(response, null, 2)); - const { variables, target, release, environment, runbook, deployment } = - response; + const { + variables, + target, + release, + environment, + runbook, + deployment, + causedBy, + } = response; setOutputAndLog("base_url", baseUrl); @@ -75,6 +82,10 @@ async function run() { setOutputsRecursively("release_config", release?.config); setOutputsRecursively("release_metadata", release?.metadata); + setOutputAndLog("caused_by_id", causedBy.id); + setOutputAndLog("caused_by_name", causedBy.name); + setOutputAndLog("caused_by_email", causedBy.email); + setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); diff --git a/openapi.v1.yaml b/openapi.v1.yaml index 8f57beee6..aa674ff4c 100644 --- a/openapi.v1.yaml +++ b/openapi.v1.yaml @@ -310,7 +310,6 @@ paths: invalid_integration, external_run_not_found, ] - release: type: object properties: @@ -323,7 +322,6 @@ paths: config: type: object required: [id, version, metadata, config] - deployment: type: object properties: @@ -338,7 +336,6 @@ paths: jobAgentId: type: string required: [id, version, slug, systemId, jobAgentId] - runbook: type: object properties: @@ -351,7 +348,6 @@ paths: jobAgentId: type: string required: [id, name, systemId, jobAgentId] - target: type: object properties: @@ -380,7 +376,6 @@ paths: - workspaceId - config - metadata - environment: type: object properties: @@ -391,15 +386,29 @@ paths: systemId: type: string required: [id, name, systemId] - variables: type: object + causedBy: + type: object + nullable: true + properties: + id: + type: string + name: + type: string + email: + type: string + required: + - id + - name + - email required: - id - status - createdAt - updatedAt - variable + - causedBy patch: summary: Update a job operationId: updateJob diff --git a/packages/node-sdk/openapitools.json b/packages/node-sdk/openapitools.json index 8113dc7f0..4f0ad37e8 100644 --- a/packages/node-sdk/openapitools.json +++ b/packages/node-sdk/openapitools.json @@ -7,7 +7,7 @@ "v1": { "generatorName": "typescript-fetch", "output": "#{cwd}/src", - "glob": "../../openapi.yaml" + "glob": "../../openapi.v1.yaml" } } } diff --git a/packages/node-sdk/src/.openapi-generator/FILES b/packages/node-sdk/src/.openapi-generator/FILES index a032348a4..d6e7f1bdb 100644 --- a/packages/node-sdk/src/.openapi-generator/FILES +++ b/packages/node-sdk/src/.openapi-generator/FILES @@ -6,6 +6,7 @@ models/CreateRelease200Response.ts models/CreateReleaseRequest.ts models/GetAgentRunningJob200ResponseInner.ts models/GetJob200Response.ts +models/GetJob200ResponseCausedBy.ts models/GetJob200ResponseDeployment.ts models/GetJob200ResponseEnvironment.ts models/GetJob200ResponseRelease.ts diff --git a/packages/node-sdk/src/models/GetJob200Response.ts b/packages/node-sdk/src/models/GetJob200Response.ts index 7079fe022..df112024a 100644 --- a/packages/node-sdk/src/models/GetJob200Response.ts +++ b/packages/node-sdk/src/models/GetJob200Response.ts @@ -12,12 +12,18 @@ * Do not edit the class manually. */ +import type { GetJob200ResponseCausedBy } from "./GetJob200ResponseCausedBy"; import type { GetJob200ResponseDeployment } from "./GetJob200ResponseDeployment"; import type { GetJob200ResponseEnvironment } from "./GetJob200ResponseEnvironment"; import type { GetJob200ResponseRelease } from "./GetJob200ResponseRelease"; import type { GetJob200ResponseRunbook } from "./GetJob200ResponseRunbook"; import type { GetJob200ResponseTarget } from "./GetJob200ResponseTarget"; import { mapValues } from "../runtime"; +import { + GetJob200ResponseCausedByFromJSON, + GetJob200ResponseCausedByFromJSONTyped, + GetJob200ResponseCausedByToJSON, +} from "./GetJob200ResponseCausedBy"; import { GetJob200ResponseDeploymentFromJSON, GetJob200ResponseDeploymentFromJSONTyped, @@ -98,6 +104,12 @@ export interface GetJob200Response { * @memberof GetJob200Response */ variables?: object; + /** + * + * @type {GetJob200ResponseCausedBy} + * @memberof GetJob200Response + */ + causedBy: GetJob200ResponseCausedBy; } /** @@ -126,6 +138,7 @@ export function instanceOfGetJob200Response( ): value is GetJob200Response { if (!("id" in value) || value["id"] === undefined) return false; if (!("status" in value) || value["status"] === undefined) return false; + if (!("causedBy" in value) || value["causedBy"] === undefined) return false; return true; } @@ -164,6 +177,7 @@ export function GetJob200ResponseFromJSONTyped( ? undefined : GetJob200ResponseEnvironmentFromJSON(json["environment"]), variables: json["variables"] == null ? undefined : json["variables"], + causedBy: GetJob200ResponseCausedByFromJSON(json["causedBy"]), }; } @@ -180,5 +194,6 @@ export function GetJob200ResponseToJSON(value?: GetJob200Response | null): any { target: GetJob200ResponseTargetToJSON(value["target"]), environment: GetJob200ResponseEnvironmentToJSON(value["environment"]), variables: value["variables"], + causedBy: GetJob200ResponseCausedByToJSON(value["causedBy"]), }; } diff --git a/packages/node-sdk/src/models/GetJob200ResponseCausedBy.ts b/packages/node-sdk/src/models/GetJob200ResponseCausedBy.ts new file mode 100644 index 000000000..da440969c --- /dev/null +++ b/packages/node-sdk/src/models/GetJob200ResponseCausedBy.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Ctrlplane API + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; + +/** + * + * @export + * @interface GetJob200ResponseCausedBy + */ +export interface GetJob200ResponseCausedBy { + /** + * + * @type {string} + * @memberof GetJob200ResponseCausedBy + */ + id: string; + /** + * + * @type {string} + * @memberof GetJob200ResponseCausedBy + */ + name: string; + /** + * + * @type {string} + * @memberof GetJob200ResponseCausedBy + */ + email: string; +} + +/** + * Check if a given object implements the GetJob200ResponseCausedBy interface. + */ +export function instanceOfGetJob200ResponseCausedBy( + value: object, +): value is GetJob200ResponseCausedBy { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("email" in value) || value["email"] === undefined) return false; + return true; +} + +export function GetJob200ResponseCausedByFromJSON( + json: any, +): GetJob200ResponseCausedBy { + return GetJob200ResponseCausedByFromJSONTyped(json, false); +} + +export function GetJob200ResponseCausedByFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GetJob200ResponseCausedBy { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + email: json["email"], + }; +} + +export function GetJob200ResponseCausedByToJSON( + value?: GetJob200ResponseCausedBy | null, +): any { + if (value == null) { + return value; + } + return { + id: value["id"], + name: value["name"], + email: value["email"], + }; +} diff --git a/packages/node-sdk/src/models/index.ts b/packages/node-sdk/src/models/index.ts index 837448176..70865775a 100644 --- a/packages/node-sdk/src/models/index.ts +++ b/packages/node-sdk/src/models/index.ts @@ -5,6 +5,7 @@ export * from "./CreateRelease200Response"; export * from "./CreateReleaseRequest"; export * from "./GetAgentRunningJob200ResponseInner"; export * from "./GetJob200Response"; +export * from "./GetJob200ResponseCausedBy"; export * from "./GetJob200ResponseDeployment"; export * from "./GetJob200ResponseEnvironment"; export * from "./GetJob200ResponseRelease"; From 629d1a88b4b65dc20439a23baa4844f0e9f4d019 Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sat, 26 Oct 2024 20:44:56 -0500 Subject: [PATCH 2/8] Add approval and approval approver to openapi spec and get-job-inputs --- github/get-job-inputs/index.js | 117 +++++++++++++++++- .../github-get-job-inputs/src/index.ts | 9 ++ openapi.v1.yaml | 30 ++++- packages/api/src/router/job.ts | 32 ++++- .../node-sdk/src/.openapi-generator/FILES | 2 + .../node-sdk/src/models/GetJob200Response.ts | 20 ++- .../src/models/GetJob200ResponseApproval.ts | 105 ++++++++++++++++ .../GetJob200ResponseApprovalApprover.ts | 86 +++++++++++++ packages/node-sdk/src/models/index.ts | 2 + 9 files changed, 394 insertions(+), 9 deletions(-) create mode 100644 packages/node-sdk/src/models/GetJob200ResponseApproval.ts create mode 100644 packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts diff --git a/github/get-job-inputs/index.js b/github/get-job-inputs/index.js index 221c50e61..592843605 100644 --- a/github/get-job-inputs/index.js +++ b/github/get-job-inputs/index.js @@ -27853,6 +27853,103 @@ function GetAgentRunningJob200ResponseInnerToJSON(value) { }; } +// src/models/GetJob200ResponseApprovalApprover.ts +function instanceOfGetJob200ResponseApprovalApprover(value) { + if (!("id" in value) || value["id"] === void 0) return false; + if (!("name" in value) || value["name"] === void 0) return false; + if (!("email" in value) || value["email"] === void 0) return false; + return true; +} +function GetJob200ResponseApprovalApproverFromJSON(json) { + return GetJob200ResponseApprovalApproverFromJSONTyped(json, false); +} +function GetJob200ResponseApprovalApproverFromJSONTyped(json, ignoreDiscriminator) { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + email: json["email"] + }; +} +function GetJob200ResponseApprovalApproverToJSON(value) { + if (value == null) { + return value; + } + return { + id: value["id"], + name: value["name"], + email: value["email"] + }; +} + +// src/models/GetJob200ResponseApproval.ts +var GetJob200ResponseApprovalStatusEnum = { + Pending: "pending", + Approved: "approved", + Rejected: "rejected" +}; +function instanceOfGetJob200ResponseApproval(value) { + if (!("id" in value) || value["id"] === void 0) return false; + if (!("status" in value) || value["status"] === void 0) return false; + return true; +} +function GetJob200ResponseApprovalFromJSON(json) { + return GetJob200ResponseApprovalFromJSONTyped(json, false); +} +function GetJob200ResponseApprovalFromJSONTyped(json, ignoreDiscriminator) { + if (json == null) { + return json; + } + return { + id: json["id"], + status: json["status"], + approver: json["approver"] == null ? void 0 : GetJob200ResponseApprovalApproverFromJSON(json["approver"]) + }; +} +function GetJob200ResponseApprovalToJSON(value) { + if (value == null) { + return value; + } + return { + id: value["id"], + status: value["status"], + approver: GetJob200ResponseApprovalApproverToJSON(value["approver"]) + }; +} + +// src/models/GetJob200ResponseCausedBy.ts +function instanceOfGetJob200ResponseCausedBy(value) { + if (!("id" in value) || value["id"] === void 0) return false; + if (!("name" in value) || value["name"] === void 0) return false; + if (!("email" in value) || value["email"] === void 0) return false; + return true; +} +function GetJob200ResponseCausedByFromJSON(json) { + return GetJob200ResponseCausedByFromJSONTyped(json, false); +} +function GetJob200ResponseCausedByFromJSONTyped(json, ignoreDiscriminator) { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + email: json["email"] + }; +} +function GetJob200ResponseCausedByToJSON(value) { + if (value == null) { + return value; + } + return { + id: value["id"], + name: value["name"], + email: value["email"] + }; +} + // src/models/GetJob200ResponseDeployment.ts function instanceOfGetJob200ResponseDeployment(value) { if (!("id" in value) || value["id"] === void 0) return false; @@ -28054,6 +28151,9 @@ var GetJob200ResponseStatusEnum = { function instanceOfGetJob200Response(value) { if (!("id" in value) || value["id"] === void 0) return false; if (!("status" in value) || value["status"] === void 0) return false; + if (!("variables" in value) || value["variables"] === void 0) return false; + if (!("causedBy" in value) || value["causedBy"] === void 0) return false; + if (!("approval" in value) || value["approval"] === void 0) return false; return true; } function GetJob200ResponseFromJSON(json) { @@ -28071,7 +28171,9 @@ function GetJob200ResponseFromJSONTyped(json, ignoreDiscriminator) { runbook: json["runbook"] == null ? void 0 : GetJob200ResponseRunbookFromJSON(json["runbook"]), target: json["target"] == null ? void 0 : GetJob200ResponseTargetFromJSON(json["target"]), environment: json["environment"] == null ? void 0 : GetJob200ResponseEnvironmentFromJSON(json["environment"]), - variables: json["variables"] == null ? void 0 : json["variables"] + variables: json["variables"], + causedBy: GetJob200ResponseCausedByFromJSON(json["causedBy"]), + approval: GetJob200ResponseApprovalFromJSON(json["approval"]) }; } function GetJob200ResponseToJSON(value) { @@ -28086,7 +28188,9 @@ function GetJob200ResponseToJSON(value) { runbook: GetJob200ResponseRunbookToJSON(value["runbook"]), target: GetJob200ResponseTargetToJSON(value["target"]), environment: GetJob200ResponseEnvironmentToJSON(value["environment"]), - variables: value["variables"] + variables: value["variables"], + causedBy: GetJob200ResponseCausedByToJSON(value["causedBy"]), + approval: GetJob200ResponseApprovalToJSON(value["approval"]) }; } @@ -28838,7 +28942,7 @@ async function run() { .getJob({ jobId }) .then((response) => { core.info(JSON.stringify(response, null, 2)); - const { variables, target, release, environment, runbook, deployment } = response; + const { variables, target, release, environment, runbook, deployment, causedBy, approval, } = response; setOutputAndLog("base_url", baseUrl); setOutputAndLog("target", target); setOutputAndLog("target_id", target?.id); @@ -28855,6 +28959,13 @@ async function run() { setOutputAndLog("release_version", release?.version); setOutputsRecursively("release_config", release?.config); setOutputsRecursively("release_metadata", release?.metadata); + setOutputAndLog("caused_by_id", causedBy.id); + setOutputAndLog("caused_by_name", causedBy.name); + setOutputAndLog("caused_by_email", causedBy.email); + setOutputAndLog("approval_status", approval.status); + setOutputAndLog("approval_approver_id", approval.approver?.id); + setOutputAndLog("approval_approver_name", approval.approver?.name); + setOutputAndLog("approval_approver_email", approval.approver?.email); setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); diff --git a/integrations/github-get-job-inputs/src/index.ts b/integrations/github-get-job-inputs/src/index.ts index 865eb6baf..304543344 100644 --- a/integrations/github-get-job-inputs/src/index.ts +++ b/integrations/github-get-job-inputs/src/index.ts @@ -59,6 +59,7 @@ async function run() { runbook, deployment, causedBy, + approval, } = response; setOutputAndLog("base_url", baseUrl); @@ -86,6 +87,14 @@ async function run() { setOutputAndLog("caused_by_name", causedBy.name); setOutputAndLog("caused_by_email", causedBy.email); + setOutputAndLog("approval_status", approval.status); + setOutputAndLog("approval_approver_id", approval.approver?.id ?? ""); + setOutputAndLog("approval_approver_name", approval.approver?.name ?? ""); + setOutputAndLog( + "approval_approver_email", + approval.approver?.email ?? "", + ); + setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); diff --git a/openapi.v1.yaml b/openapi.v1.yaml index aa674ff4c..e45694cdb 100644 --- a/openapi.v1.yaml +++ b/openapi.v1.yaml @@ -402,13 +402,41 @@ paths: - id - name - email + approval: + type: object + nullable: true + properties: + id: + type: string + status: + type: string + enum: [pending, approved, rejected] + approver: + type: object + nullable: true + description: Null when status is pending, contains approver details when approved or rejected + properties: + id: + type: string + name: + type: string + email: + type: string + required: + - id + - name + - email + required: + - id + - status required: - id - status - createdAt - updatedAt - - variable + - variables - causedBy + - approval patch: summary: Update a job operationId: updateJob diff --git a/packages/api/src/router/job.ts b/packages/api/src/router/job.ts index 972c4fa68..088e8ac10 100644 --- a/packages/api/src/router/job.ts +++ b/packages/api/src/router/job.ts @@ -3,6 +3,7 @@ import type { Deployment, Environment, EnvironmentPolicy, + EnvironmentPolicyApproval, EnvironmentPolicyReleaseWindow, Job, JobAgent, @@ -19,11 +20,13 @@ import { isPresent } from "ts-is-present"; import { z } from "zod"; import { + alias, and, asc, desc, eq, inArray, + isNotNull, isNull, notInArray, sql, @@ -34,6 +37,7 @@ import { deployment, environment, environmentPolicy, + environmentPolicyApproval, environmentPolicyReleaseWindow, job, jobAgent, @@ -60,8 +64,10 @@ import { JobStatus } from "@ctrlplane/validators/jobs"; import { createTRPCRouter, protectedProcedure } from "../trpc"; -const releaseJobTriggerQuery = (tx: Tx) => - tx +const releaseJobTriggerQuery = (tx: Tx) => { + const approver = alias(user, "approver"); + + return tx .select() .from(releaseJobTrigger) .innerJoin(job, eq(releaseJobTrigger.jobId, job.id)) @@ -69,7 +75,19 @@ const releaseJobTriggerQuery = (tx: Tx) => .innerJoin(release, eq(releaseJobTrigger.releaseId, release.id)) .innerJoin(deployment, eq(release.deploymentId, deployment.id)) .innerJoin(environment, eq(releaseJobTrigger.environmentId, environment.id)) - .innerJoin(jobAgent, eq(jobAgent.id, deployment.jobAgentId)); + .innerJoin(jobAgent, eq(jobAgent.id, deployment.jobAgentId)) + .leftJoin( + environmentPolicyApproval, + eq(environmentPolicyApproval.releaseId, release.id), + ) + .leftJoin( + approver, + and( + isNotNull(environmentPolicyApproval.userId), + eq(environmentPolicyApproval.userId, approver.id), + ), + ); +}; const processReleaseJobTriggerWithAdditionalDataRows = ( rows: Array<{ @@ -87,6 +105,8 @@ const processReleaseJobTriggerWithAdditionalDataRows = ( release_dependency?: ReleaseDependency | null; deployment_name?: { deploymentName: string; deploymentId: string } | null; job_variable?: JobVariable | null; + environment_policy_approval: EnvironmentPolicyApproval | null; + approver?: User | null; }>, ) => _.chain(rows) @@ -127,6 +147,12 @@ const processReleaseJobTriggerWithAdditionalDataRows = ( .filter(isPresent), ) : null, + approval: v[0]!.environment_policy_approval + ? { + ...v[0]!.environment_policy_approval, + approver: v[0]!.approver, + } + : null, })) .value(); diff --git a/packages/node-sdk/src/.openapi-generator/FILES b/packages/node-sdk/src/.openapi-generator/FILES index d6e7f1bdb..1126220ce 100644 --- a/packages/node-sdk/src/.openapi-generator/FILES +++ b/packages/node-sdk/src/.openapi-generator/FILES @@ -6,6 +6,8 @@ models/CreateRelease200Response.ts models/CreateReleaseRequest.ts models/GetAgentRunningJob200ResponseInner.ts models/GetJob200Response.ts +models/GetJob200ResponseApproval.ts +models/GetJob200ResponseApprovalApprover.ts models/GetJob200ResponseCausedBy.ts models/GetJob200ResponseDeployment.ts models/GetJob200ResponseEnvironment.ts diff --git a/packages/node-sdk/src/models/GetJob200Response.ts b/packages/node-sdk/src/models/GetJob200Response.ts index df112024a..94870ba5a 100644 --- a/packages/node-sdk/src/models/GetJob200Response.ts +++ b/packages/node-sdk/src/models/GetJob200Response.ts @@ -12,6 +12,7 @@ * Do not edit the class manually. */ +import type { GetJob200ResponseApproval } from "./GetJob200ResponseApproval"; import type { GetJob200ResponseCausedBy } from "./GetJob200ResponseCausedBy"; import type { GetJob200ResponseDeployment } from "./GetJob200ResponseDeployment"; import type { GetJob200ResponseEnvironment } from "./GetJob200ResponseEnvironment"; @@ -19,6 +20,11 @@ import type { GetJob200ResponseRelease } from "./GetJob200ResponseRelease"; import type { GetJob200ResponseRunbook } from "./GetJob200ResponseRunbook"; import type { GetJob200ResponseTarget } from "./GetJob200ResponseTarget"; import { mapValues } from "../runtime"; +import { + GetJob200ResponseApprovalFromJSON, + GetJob200ResponseApprovalFromJSONTyped, + GetJob200ResponseApprovalToJSON, +} from "./GetJob200ResponseApproval"; import { GetJob200ResponseCausedByFromJSON, GetJob200ResponseCausedByFromJSONTyped, @@ -103,13 +109,19 @@ export interface GetJob200Response { * @type {object} * @memberof GetJob200Response */ - variables?: object; + variables: object; /** * * @type {GetJob200ResponseCausedBy} * @memberof GetJob200Response */ causedBy: GetJob200ResponseCausedBy; + /** + * + * @type {GetJob200ResponseApproval} + * @memberof GetJob200Response + */ + approval: GetJob200ResponseApproval; } /** @@ -138,7 +150,9 @@ export function instanceOfGetJob200Response( ): value is GetJob200Response { if (!("id" in value) || value["id"] === undefined) return false; if (!("status" in value) || value["status"] === undefined) return false; + if (!("variables" in value) || value["variables"] === undefined) return false; if (!("causedBy" in value) || value["causedBy"] === undefined) return false; + if (!("approval" in value) || value["approval"] === undefined) return false; return true; } @@ -176,8 +190,9 @@ export function GetJob200ResponseFromJSONTyped( json["environment"] == null ? undefined : GetJob200ResponseEnvironmentFromJSON(json["environment"]), - variables: json["variables"] == null ? undefined : json["variables"], + variables: json["variables"], causedBy: GetJob200ResponseCausedByFromJSON(json["causedBy"]), + approval: GetJob200ResponseApprovalFromJSON(json["approval"]), }; } @@ -195,5 +210,6 @@ export function GetJob200ResponseToJSON(value?: GetJob200Response | null): any { environment: GetJob200ResponseEnvironmentToJSON(value["environment"]), variables: value["variables"], causedBy: GetJob200ResponseCausedByToJSON(value["causedBy"]), + approval: GetJob200ResponseApprovalToJSON(value["approval"]), }; } diff --git a/packages/node-sdk/src/models/GetJob200ResponseApproval.ts b/packages/node-sdk/src/models/GetJob200ResponseApproval.ts new file mode 100644 index 000000000..5b93d73fa --- /dev/null +++ b/packages/node-sdk/src/models/GetJob200ResponseApproval.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Ctrlplane API + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GetJob200ResponseApprovalApprover } from "./GetJob200ResponseApprovalApprover"; +import { mapValues } from "../runtime"; +import { + GetJob200ResponseApprovalApproverFromJSON, + GetJob200ResponseApprovalApproverFromJSONTyped, + GetJob200ResponseApprovalApproverToJSON, +} from "./GetJob200ResponseApprovalApprover"; + +/** + * + * @export + * @interface GetJob200ResponseApproval + */ +export interface GetJob200ResponseApproval { + /** + * + * @type {string} + * @memberof GetJob200ResponseApproval + */ + id: string; + /** + * + * @type {string} + * @memberof GetJob200ResponseApproval + */ + status: GetJob200ResponseApprovalStatusEnum; + /** + * + * @type {GetJob200ResponseApprovalApprover} + * @memberof GetJob200ResponseApproval + */ + approver?: GetJob200ResponseApprovalApprover; +} + +/** + * @export + */ +export const GetJob200ResponseApprovalStatusEnum = { + Pending: "pending", + Approved: "approved", + Rejected: "rejected", +} as const; +export type GetJob200ResponseApprovalStatusEnum = + (typeof GetJob200ResponseApprovalStatusEnum)[keyof typeof GetJob200ResponseApprovalStatusEnum]; + +/** + * Check if a given object implements the GetJob200ResponseApproval interface. + */ +export function instanceOfGetJob200ResponseApproval( + value: object, +): value is GetJob200ResponseApproval { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("status" in value) || value["status"] === undefined) return false; + return true; +} + +export function GetJob200ResponseApprovalFromJSON( + json: any, +): GetJob200ResponseApproval { + return GetJob200ResponseApprovalFromJSONTyped(json, false); +} + +export function GetJob200ResponseApprovalFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GetJob200ResponseApproval { + if (json == null) { + return json; + } + return { + id: json["id"], + status: json["status"], + approver: + json["approver"] == null + ? undefined + : GetJob200ResponseApprovalApproverFromJSON(json["approver"]), + }; +} + +export function GetJob200ResponseApprovalToJSON( + value?: GetJob200ResponseApproval | null, +): any { + if (value == null) { + return value; + } + return { + id: value["id"], + status: value["status"], + approver: GetJob200ResponseApprovalApproverToJSON(value["approver"]), + }; +} diff --git a/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts b/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts new file mode 100644 index 000000000..54f03a134 --- /dev/null +++ b/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Ctrlplane API + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; + +/** + * Null when status is pending, contains approver details when approved or rejected + * @export + * @interface GetJob200ResponseApprovalApprover + */ +export interface GetJob200ResponseApprovalApprover { + /** + * + * @type {string} + * @memberof GetJob200ResponseApprovalApprover + */ + id: string; + /** + * + * @type {string} + * @memberof GetJob200ResponseApprovalApprover + */ + name: string; + /** + * + * @type {string} + * @memberof GetJob200ResponseApprovalApprover + */ + email: string; +} + +/** + * Check if a given object implements the GetJob200ResponseApprovalApprover interface. + */ +export function instanceOfGetJob200ResponseApprovalApprover( + value: object, +): value is GetJob200ResponseApprovalApprover { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("email" in value) || value["email"] === undefined) return false; + return true; +} + +export function GetJob200ResponseApprovalApproverFromJSON( + json: any, +): GetJob200ResponseApprovalApprover { + return GetJob200ResponseApprovalApproverFromJSONTyped(json, false); +} + +export function GetJob200ResponseApprovalApproverFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GetJob200ResponseApprovalApprover { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + email: json["email"], + }; +} + +export function GetJob200ResponseApprovalApproverToJSON( + value?: GetJob200ResponseApprovalApprover | null, +): any { + if (value == null) { + return value; + } + return { + id: value["id"], + name: value["name"], + email: value["email"], + }; +} diff --git a/packages/node-sdk/src/models/index.ts b/packages/node-sdk/src/models/index.ts index 70865775a..916920cfe 100644 --- a/packages/node-sdk/src/models/index.ts +++ b/packages/node-sdk/src/models/index.ts @@ -5,6 +5,8 @@ export * from "./CreateRelease200Response"; export * from "./CreateReleaseRequest"; export * from "./GetAgentRunningJob200ResponseInner"; export * from "./GetJob200Response"; +export * from "./GetJob200ResponseApproval"; +export * from "./GetJob200ResponseApprovalApprover"; export * from "./GetJob200ResponseCausedBy"; export * from "./GetJob200ResponseDeployment"; export * from "./GetJob200ResponseEnvironment"; From cb166f1ae2a8b41d4b82cfe05d3e9923f9ae0d95 Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sat, 26 Oct 2024 20:51:47 -0500 Subject: [PATCH 3/8] fix --- integrations/github-get-job-inputs/src/index.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/integrations/github-get-job-inputs/src/index.ts b/integrations/github-get-job-inputs/src/index.ts index 304543344..25a4e439e 100644 --- a/integrations/github-get-job-inputs/src/index.ts +++ b/integrations/github-get-job-inputs/src/index.ts @@ -88,12 +88,9 @@ async function run() { setOutputAndLog("caused_by_email", causedBy.email); setOutputAndLog("approval_status", approval.status); - setOutputAndLog("approval_approver_id", approval.approver?.id ?? ""); - setOutputAndLog("approval_approver_name", approval.approver?.name ?? ""); - setOutputAndLog( - "approval_approver_email", - approval.approver?.email ?? "", - ); + setOutputAndLog("approval_approver_id", approval.approver?.id); + setOutputAndLog("approval_approver_name", approval.approver?.name); + setOutputAndLog("approval_approver_email", approval.approver?.email); setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); From 1c75f06a24b5ac13b48b801eebafc8ef27cefa2b Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sat, 26 Oct 2024 20:57:19 -0500 Subject: [PATCH 4/8] fix --- integrations/github-get-job-inputs/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/github-get-job-inputs/src/index.ts b/integrations/github-get-job-inputs/src/index.ts index 25a4e439e..257700f6e 100644 --- a/integrations/github-get-job-inputs/src/index.ts +++ b/integrations/github-get-job-inputs/src/index.ts @@ -96,7 +96,7 @@ async function run() { setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); - for (const [key, value] of Object.entries(variables ?? {})) { + for (const [key, value] of Object.entries(variables)) { const sanitizedKey = key.replace(/[.\-/\s\t]+/g, "_"); setOutputAndLog(`variable_${sanitizedKey}`, value); } From b5c9751bb48c2519e3bcb2f065935955e1ef2274 Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sat, 26 Oct 2024 21:15:26 -0500 Subject: [PATCH 5/8] build --force --- github/get-job-inputs/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/get-job-inputs/index.js b/github/get-job-inputs/index.js index 592843605..3cdb16684 100644 --- a/github/get-job-inputs/index.js +++ b/github/get-job-inputs/index.js @@ -28969,7 +28969,7 @@ async function run() { setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); - for (const [key, value] of Object.entries(variables ?? {})) { + for (const [key, value] of Object.entries(variables)) { const sanitizedKey = key.replace(/[.\-/\s\t]+/g, "_"); setOutputAndLog(`variable_${sanitizedKey}`, value); } From 3cf34e611c86f3605c109933b051088a4153449f Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Sun, 27 Oct 2024 14:02:13 -0500 Subject: [PATCH 6/8] add approval section --- .../src/app/api/v1/jobs/[jobId]/route.ts | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts b/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts index 7c6cdba07..9edce327c 100644 --- a/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts +++ b/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts @@ -6,6 +6,7 @@ import { db } from "@ctrlplane/db/client"; import { deployment, environment, + environmentPolicyApproval, job, jobVariable, release, @@ -15,6 +16,7 @@ import { target, targetMetadata, updateJob, + user, } from "@ctrlplane/db/schema"; import { onJobCompletion } from "@ctrlplane/job-dispatch"; import { variablesAES256 } from "@ctrlplane/secrets"; @@ -26,8 +28,8 @@ export const GET = async ( req: NextRequest, { params }: { params: { jobId: string } }, ) => { - const user = await getUser(req); - if (!user) + const caller = await getUser(req); + if (!caller) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); const je = await db @@ -40,6 +42,7 @@ export const GET = async ( .leftJoin(target, eq(target.id, releaseJobTrigger.targetId)) .leftJoin(release, eq(release.id, releaseJobTrigger.releaseId)) .leftJoin(deployment, eq(deployment.id, release.deploymentId)) + .leftJoin(user, eq(releaseJobTrigger.causedById, user.id)) .where(and(eq(job.id, params.jobId), isNull(environment.deletedAt))) .then(takeFirst) .then((row) => ({ @@ -49,8 +52,48 @@ export const GET = async ( target: row.target, deployment: row.deployment, release: row.release, + causedBy: row.user + ? { + id: row.user.id, + name: row.user.name, + email: row.user.email, + } + : null, })); + const policyId = je.environment?.policyId; + const approval = + je.release?.id && policyId + ? await db + .select() + .from(environmentPolicyApproval) + .leftJoin(user, eq(environmentPolicyApproval.userId, user.id)) + .where( + and( + eq(environmentPolicyApproval.releaseId, je.release.id), + eq(environmentPolicyApproval.policyId, policyId), + ), + ) + .then(takeFirstOrNull) + .then((row) => + row + ? { + id: row.environment_policy_approval.id, + status: row.environment_policy_approval.status, + approver: + row.user && + row.environment_policy_approval.status !== "pending" + ? { + id: row.user.id, + name: row.user.name, + email: row.user.email, + } + : null, + } + : null, + ) + : null; + const jobVariableRows = await db .select() .from(jobVariable) @@ -80,6 +123,7 @@ export const GET = async ( ...je, variables, target: targetWithMetadata, + approval, }); }; From ee92450fcb66ccaf8fd0d5a23d169f7892381e42 Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Mon, 28 Oct 2024 21:53:57 -0500 Subject: [PATCH 7/8] reverting some changes --- .../src/app/api/v1/jobs/[jobId]/route.ts | 72 +++++++++---------- .../github-get-job-inputs/src/index.ts | 6 -- openapi.v1.yaml | 18 ----- packages/api/src/router/job.ts | 32 +-------- 4 files changed, 39 insertions(+), 89 deletions(-) diff --git a/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts b/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts index 9edce327c..570301641 100644 --- a/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts +++ b/apps/webservice/src/app/api/v1/jobs/[jobId]/route.ts @@ -24,6 +24,40 @@ import { JobStatus } from "@ctrlplane/validators/jobs"; import { getUser } from "~/app/api/v1/auth"; +type ApprovalJoinResult = { + environment_policy_approval: typeof environmentPolicyApproval.$inferSelect; + user: typeof user.$inferSelect | null; +}; + +const getApprovalDetails = async (releaseId: string, policyId: string) => + db + .select() + .from(environmentPolicyApproval) + .leftJoin(user, eq(environmentPolicyApproval.userId, user.id)) + .where( + and( + eq(environmentPolicyApproval.releaseId, releaseId), + eq(environmentPolicyApproval.policyId, policyId), + ), + ) + .then(takeFirstOrNull) + .then(mapApprovalResponse); + +const mapApprovalResponse = (row: ApprovalJoinResult | null) => + !row + ? null + : { + id: row.environment_policy_approval.id, + status: row.environment_policy_approval.status, + approver: + row.user && row.environment_policy_approval.status !== "pending" + ? { + id: row.user.id, + name: row.user.name, + } + : null, + }; + export const GET = async ( req: NextRequest, { params }: { params: { jobId: string } }, @@ -42,7 +76,6 @@ export const GET = async ( .leftJoin(target, eq(target.id, releaseJobTrigger.targetId)) .leftJoin(release, eq(release.id, releaseJobTrigger.releaseId)) .leftJoin(deployment, eq(deployment.id, release.deploymentId)) - .leftJoin(user, eq(releaseJobTrigger.causedById, user.id)) .where(and(eq(job.id, params.jobId), isNull(environment.deletedAt))) .then(takeFirst) .then((row) => ({ @@ -52,46 +85,13 @@ export const GET = async ( target: row.target, deployment: row.deployment, release: row.release, - causedBy: row.user - ? { - id: row.user.id, - name: row.user.name, - email: row.user.email, - } - : null, })); const policyId = je.environment?.policyId; + const approval = je.release?.id && policyId - ? await db - .select() - .from(environmentPolicyApproval) - .leftJoin(user, eq(environmentPolicyApproval.userId, user.id)) - .where( - and( - eq(environmentPolicyApproval.releaseId, je.release.id), - eq(environmentPolicyApproval.policyId, policyId), - ), - ) - .then(takeFirstOrNull) - .then((row) => - row - ? { - id: row.environment_policy_approval.id, - status: row.environment_policy_approval.status, - approver: - row.user && - row.environment_policy_approval.status !== "pending" - ? { - id: row.user.id, - name: row.user.name, - email: row.user.email, - } - : null, - } - : null, - ) + ? await getApprovalDetails(je.release.id, policyId) : null; const jobVariableRows = await db diff --git a/integrations/github-get-job-inputs/src/index.ts b/integrations/github-get-job-inputs/src/index.ts index 257700f6e..fc7c42e08 100644 --- a/integrations/github-get-job-inputs/src/index.ts +++ b/integrations/github-get-job-inputs/src/index.ts @@ -58,7 +58,6 @@ async function run() { environment, runbook, deployment, - causedBy, approval, } = response; @@ -83,14 +82,9 @@ async function run() { setOutputsRecursively("release_config", release?.config); setOutputsRecursively("release_metadata", release?.metadata); - setOutputAndLog("caused_by_id", causedBy.id); - setOutputAndLog("caused_by_name", causedBy.name); - setOutputAndLog("caused_by_email", causedBy.email); - setOutputAndLog("approval_status", approval.status); setOutputAndLog("approval_approver_id", approval.approver?.id); setOutputAndLog("approval_approver_name", approval.approver?.name); - setOutputAndLog("approval_approver_email", approval.approver?.email); setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); diff --git a/openapi.v1.yaml b/openapi.v1.yaml index e45694cdb..c9893dc25 100644 --- a/openapi.v1.yaml +++ b/openapi.v1.yaml @@ -388,20 +388,6 @@ paths: required: [id, name, systemId] variables: type: object - causedBy: - type: object - nullable: true - properties: - id: - type: string - name: - type: string - email: - type: string - required: - - id - - name - - email approval: type: object nullable: true @@ -420,12 +406,9 @@ paths: type: string name: type: string - email: - type: string required: - id - name - - email required: - id - status @@ -435,7 +418,6 @@ paths: - createdAt - updatedAt - variables - - causedBy - approval patch: summary: Update a job diff --git a/packages/api/src/router/job.ts b/packages/api/src/router/job.ts index e31b14db8..097f80241 100644 --- a/packages/api/src/router/job.ts +++ b/packages/api/src/router/job.ts @@ -3,7 +3,6 @@ import type { Deployment, Environment, EnvironmentPolicy, - EnvironmentPolicyApproval, EnvironmentPolicyReleaseWindow, Job, JobAgent, @@ -20,14 +19,12 @@ import { isPresent } from "ts-is-present"; import { z } from "zod"; import { - alias, and, asc, countDistinct, desc, eq, inArray, - isNotNull, isNull, notInArray, sql, @@ -38,7 +35,6 @@ import { deployment, environment, environmentPolicy, - environmentPolicyApproval, environmentPolicyReleaseWindow, job, jobAgent, @@ -66,10 +62,8 @@ import { jobCondition, JobStatus } from "@ctrlplane/validators/jobs"; import { createTRPCRouter, protectedProcedure } from "../trpc"; -const releaseJobTriggerQuery = (tx: Tx) => { - const approver = alias(user, "approver"); - - return tx +const releaseJobTriggerQuery = (tx: Tx) => + tx .select() .from(releaseJobTrigger) .innerJoin(job, eq(releaseJobTrigger.jobId, job.id)) @@ -77,19 +71,7 @@ const releaseJobTriggerQuery = (tx: Tx) => { .innerJoin(release, eq(releaseJobTrigger.releaseId, release.id)) .innerJoin(deployment, eq(release.deploymentId, deployment.id)) .innerJoin(environment, eq(releaseJobTrigger.environmentId, environment.id)) - .innerJoin(jobAgent, eq(jobAgent.id, deployment.jobAgentId)) - .leftJoin( - environmentPolicyApproval, - eq(environmentPolicyApproval.releaseId, release.id), - ) - .leftJoin( - approver, - and( - isNotNull(environmentPolicyApproval.userId), - eq(environmentPolicyApproval.userId, approver.id), - ), - ); -}; + .innerJoin(jobAgent, eq(jobAgent.id, deployment.jobAgentId)); const processReleaseJobTriggerWithAdditionalDataRows = ( rows: Array<{ @@ -107,8 +89,6 @@ const processReleaseJobTriggerWithAdditionalDataRows = ( release_dependency?: ReleaseDependency | null; deployment_name?: { deploymentName: string; deploymentId: string } | null; job_variable?: JobVariable | null; - environment_policy_approval: EnvironmentPolicyApproval | null; - approver?: User | null; }>, ) => _.chain(rows) @@ -157,12 +137,6 @@ const processReleaseJobTriggerWithAdditionalDataRows = ( .filter(isPresent), ) : null, - approval: v[0]!.environment_policy_approval - ? { - ...v[0]!.environment_policy_approval, - approver: v[0]!.approver, - } - : null, })) .value(); From 23cde10b42d6eeec6a6d7a341ab58b51774abf5c Mon Sep 17 00:00:00 2001 From: Zachary Blasczyk Date: Mon, 28 Oct 2024 22:01:37 -0500 Subject: [PATCH 8/8] fix --- github/get-job-inputs/index.js | 48 ++----------------- .../node-sdk/src/.openapi-generator/FILES | 1 - .../node-sdk/src/models/GetJob200Response.ts | 15 ------ .../GetJob200ResponseApprovalApprover.ts | 9 ---- packages/node-sdk/src/models/index.ts | 1 - 5 files changed, 4 insertions(+), 70 deletions(-) diff --git a/github/get-job-inputs/index.js b/github/get-job-inputs/index.js index 3cdb16684..44b14342e 100644 --- a/github/get-job-inputs/index.js +++ b/github/get-job-inputs/index.js @@ -485,6 +485,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ +const crypto = __importStar(__nccwpck_require__(6982)); const fs = __importStar(__nccwpck_require__(9896)); const os = __importStar(__nccwpck_require__(857)); const utils_1 = __nccwpck_require__(274); @@ -27857,7 +27858,6 @@ function GetAgentRunningJob200ResponseInnerToJSON(value) { function instanceOfGetJob200ResponseApprovalApprover(value) { if (!("id" in value) || value["id"] === void 0) return false; if (!("name" in value) || value["name"] === void 0) return false; - if (!("email" in value) || value["email"] === void 0) return false; return true; } function GetJob200ResponseApprovalApproverFromJSON(json) { @@ -27869,8 +27869,7 @@ function GetJob200ResponseApprovalApproverFromJSONTyped(json, ignoreDiscriminato } return { id: json["id"], - name: json["name"], - email: json["email"] + name: json["name"] }; } function GetJob200ResponseApprovalApproverToJSON(value) { @@ -27879,8 +27878,7 @@ function GetJob200ResponseApprovalApproverToJSON(value) { } return { id: value["id"], - name: value["name"], - email: value["email"] + name: value["name"] }; } @@ -27919,37 +27917,6 @@ function GetJob200ResponseApprovalToJSON(value) { }; } -// src/models/GetJob200ResponseCausedBy.ts -function instanceOfGetJob200ResponseCausedBy(value) { - if (!("id" in value) || value["id"] === void 0) return false; - if (!("name" in value) || value["name"] === void 0) return false; - if (!("email" in value) || value["email"] === void 0) return false; - return true; -} -function GetJob200ResponseCausedByFromJSON(json) { - return GetJob200ResponseCausedByFromJSONTyped(json, false); -} -function GetJob200ResponseCausedByFromJSONTyped(json, ignoreDiscriminator) { - if (json == null) { - return json; - } - return { - id: json["id"], - name: json["name"], - email: json["email"] - }; -} -function GetJob200ResponseCausedByToJSON(value) { - if (value == null) { - return value; - } - return { - id: value["id"], - name: value["name"], - email: value["email"] - }; -} - // src/models/GetJob200ResponseDeployment.ts function instanceOfGetJob200ResponseDeployment(value) { if (!("id" in value) || value["id"] === void 0) return false; @@ -28152,7 +28119,6 @@ function instanceOfGetJob200Response(value) { if (!("id" in value) || value["id"] === void 0) return false; if (!("status" in value) || value["status"] === void 0) return false; if (!("variables" in value) || value["variables"] === void 0) return false; - if (!("causedBy" in value) || value["causedBy"] === void 0) return false; if (!("approval" in value) || value["approval"] === void 0) return false; return true; } @@ -28172,7 +28138,6 @@ function GetJob200ResponseFromJSONTyped(json, ignoreDiscriminator) { target: json["target"] == null ? void 0 : GetJob200ResponseTargetFromJSON(json["target"]), environment: json["environment"] == null ? void 0 : GetJob200ResponseEnvironmentFromJSON(json["environment"]), variables: json["variables"], - causedBy: GetJob200ResponseCausedByFromJSON(json["causedBy"]), approval: GetJob200ResponseApprovalFromJSON(json["approval"]) }; } @@ -28189,7 +28154,6 @@ function GetJob200ResponseToJSON(value) { target: GetJob200ResponseTargetToJSON(value["target"]), environment: GetJob200ResponseEnvironmentToJSON(value["environment"]), variables: value["variables"], - causedBy: GetJob200ResponseCausedByToJSON(value["causedBy"]), approval: GetJob200ResponseApprovalToJSON(value["approval"]) }; } @@ -28942,7 +28906,7 @@ async function run() { .getJob({ jobId }) .then((response) => { core.info(JSON.stringify(response, null, 2)); - const { variables, target, release, environment, runbook, deployment, causedBy, approval, } = response; + const { variables, target, release, environment, runbook, deployment, approval, } = response; setOutputAndLog("base_url", baseUrl); setOutputAndLog("target", target); setOutputAndLog("target_id", target?.id); @@ -28959,13 +28923,9 @@ async function run() { setOutputAndLog("release_version", release?.version); setOutputsRecursively("release_config", release?.config); setOutputsRecursively("release_metadata", release?.metadata); - setOutputAndLog("caused_by_id", causedBy.id); - setOutputAndLog("caused_by_name", causedBy.name); - setOutputAndLog("caused_by_email", causedBy.email); setOutputAndLog("approval_status", approval.status); setOutputAndLog("approval_approver_id", approval.approver?.id); setOutputAndLog("approval_approver_name", approval.approver?.name); - setOutputAndLog("approval_approver_email", approval.approver?.email); setOutputAndLog("deployment_id", deployment?.id); setOutputAndLog("deployment_name", deployment?.name); setOutputAndLog("deployment_slug", deployment?.slug); diff --git a/packages/node-sdk/src/.openapi-generator/FILES b/packages/node-sdk/src/.openapi-generator/FILES index 1126220ce..91a871bd7 100644 --- a/packages/node-sdk/src/.openapi-generator/FILES +++ b/packages/node-sdk/src/.openapi-generator/FILES @@ -8,7 +8,6 @@ models/GetAgentRunningJob200ResponseInner.ts models/GetJob200Response.ts models/GetJob200ResponseApproval.ts models/GetJob200ResponseApprovalApprover.ts -models/GetJob200ResponseCausedBy.ts models/GetJob200ResponseDeployment.ts models/GetJob200ResponseEnvironment.ts models/GetJob200ResponseRelease.ts diff --git a/packages/node-sdk/src/models/GetJob200Response.ts b/packages/node-sdk/src/models/GetJob200Response.ts index 94870ba5a..ac754531f 100644 --- a/packages/node-sdk/src/models/GetJob200Response.ts +++ b/packages/node-sdk/src/models/GetJob200Response.ts @@ -13,7 +13,6 @@ */ import type { GetJob200ResponseApproval } from "./GetJob200ResponseApproval"; -import type { GetJob200ResponseCausedBy } from "./GetJob200ResponseCausedBy"; import type { GetJob200ResponseDeployment } from "./GetJob200ResponseDeployment"; import type { GetJob200ResponseEnvironment } from "./GetJob200ResponseEnvironment"; import type { GetJob200ResponseRelease } from "./GetJob200ResponseRelease"; @@ -25,11 +24,6 @@ import { GetJob200ResponseApprovalFromJSONTyped, GetJob200ResponseApprovalToJSON, } from "./GetJob200ResponseApproval"; -import { - GetJob200ResponseCausedByFromJSON, - GetJob200ResponseCausedByFromJSONTyped, - GetJob200ResponseCausedByToJSON, -} from "./GetJob200ResponseCausedBy"; import { GetJob200ResponseDeploymentFromJSON, GetJob200ResponseDeploymentFromJSONTyped, @@ -110,12 +104,6 @@ export interface GetJob200Response { * @memberof GetJob200Response */ variables: object; - /** - * - * @type {GetJob200ResponseCausedBy} - * @memberof GetJob200Response - */ - causedBy: GetJob200ResponseCausedBy; /** * * @type {GetJob200ResponseApproval} @@ -151,7 +139,6 @@ export function instanceOfGetJob200Response( if (!("id" in value) || value["id"] === undefined) return false; if (!("status" in value) || value["status"] === undefined) return false; if (!("variables" in value) || value["variables"] === undefined) return false; - if (!("causedBy" in value) || value["causedBy"] === undefined) return false; if (!("approval" in value) || value["approval"] === undefined) return false; return true; } @@ -191,7 +178,6 @@ export function GetJob200ResponseFromJSONTyped( ? undefined : GetJob200ResponseEnvironmentFromJSON(json["environment"]), variables: json["variables"], - causedBy: GetJob200ResponseCausedByFromJSON(json["causedBy"]), approval: GetJob200ResponseApprovalFromJSON(json["approval"]), }; } @@ -209,7 +195,6 @@ export function GetJob200ResponseToJSON(value?: GetJob200Response | null): any { target: GetJob200ResponseTargetToJSON(value["target"]), environment: GetJob200ResponseEnvironmentToJSON(value["environment"]), variables: value["variables"], - causedBy: GetJob200ResponseCausedByToJSON(value["causedBy"]), approval: GetJob200ResponseApprovalToJSON(value["approval"]), }; } diff --git a/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts b/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts index 54f03a134..4978dfdc3 100644 --- a/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts +++ b/packages/node-sdk/src/models/GetJob200ResponseApprovalApprover.ts @@ -32,12 +32,6 @@ export interface GetJob200ResponseApprovalApprover { * @memberof GetJob200ResponseApprovalApprover */ name: string; - /** - * - * @type {string} - * @memberof GetJob200ResponseApprovalApprover - */ - email: string; } /** @@ -48,7 +42,6 @@ export function instanceOfGetJob200ResponseApprovalApprover( ): value is GetJob200ResponseApprovalApprover { if (!("id" in value) || value["id"] === undefined) return false; if (!("name" in value) || value["name"] === undefined) return false; - if (!("email" in value) || value["email"] === undefined) return false; return true; } @@ -68,7 +61,6 @@ export function GetJob200ResponseApprovalApproverFromJSONTyped( return { id: json["id"], name: json["name"], - email: json["email"], }; } @@ -81,6 +73,5 @@ export function GetJob200ResponseApprovalApproverToJSON( return { id: value["id"], name: value["name"], - email: value["email"], }; } diff --git a/packages/node-sdk/src/models/index.ts b/packages/node-sdk/src/models/index.ts index 916920cfe..fc8ae4bc3 100644 --- a/packages/node-sdk/src/models/index.ts +++ b/packages/node-sdk/src/models/index.ts @@ -7,7 +7,6 @@ export * from "./GetAgentRunningJob200ResponseInner"; export * from "./GetJob200Response"; export * from "./GetJob200ResponseApproval"; export * from "./GetJob200ResponseApprovalApprover"; -export * from "./GetJob200ResponseCausedBy"; export * from "./GetJob200ResponseDeployment"; export * from "./GetJob200ResponseEnvironment"; export * from "./GetJob200ResponseRelease";