{
  "openapi": "3.1.0",
  "info": {
    "version": "1.0.0",
    "title": "Coalesce API",
    "description": "REST API for performing operations with the Coalesce backend."
  },
  "servers": [
    {
      "url": "https://app.coalescesoftware.io",
      "description": "Region: us-central1"
    },
    {
      "url": "https://app.australia-southeast1.gcp.coalescesoftware.io",
      "description": "Region: australia-southeast1 (Sydney)"
    },
    {
      "url": "https://app.northamerica-northeast1.gcp.coalescesoftware.io",
      "description": "Region: northamerica-northeast1 (Montreal)"
    },
    {
      "url": "https://app.eu-west-2.aws.coalescesoftware.io",
      "description": "Region: eu-west-2 (London)"
    },
    {
      "url": "https://app.eu.coalescesoftware.io",
      "description": "Region: europe-west-3 (Frankfurt)"
    },
    {
      "url": "https://app.europe-west1.gcp.coalescesoftware.io",
      "description": "Region: europe-west-1 (Belgium)"
    },
    {
      "url": "https://app.us-east-1.aws.coalescesoftware.io",
      "description": "Region: us-east-1 (Virginia)"
    },
    {
      "url": "https://app.us-east-2.aws.coalescesoftware.io",
      "description": "Region: us-east-2 (Ohio)"
    },
    {
      "url": "https://app.us-west-2.aws.coalescesoftware.io",
      "description": "Region: us-west-2 (Oregon)"
    },
    {
      "url": "https://app.centralus.azure.coalescesoftware.io",
      "description": "Region: centralus (Iowa)"
    },
    {
      "url": "https://app.eastus2.azure.coalescesoftware.io",
      "description": "Region: eastus2 (Virginia)"
    },
    {
      "url": "https://app.westus2.azure.coalescesoftware.io",
      "description": "Region: westus2 (Washington)"
    },
    {
      "url": "https://app.southcentralus.azure.coalescesoftware.io",
      "description": "Region: southcentral (San Antonio)"
    },
    {
      "url": "https://app.us-east4.gcp.coalescesoftware.io",
      "description": "Region: us-east4 (Virginia)"
    },
    {
      "url": "https://app.eu-central-1.aws.coalescesoftware.io",
      "description": "Region: eu-central-1 (Frankfurt)"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "components": {
    "schemas": {
      "UserOrgRolesV2": {
        "description": "The roles assigned to a user.",
        "type": "object",
        "required": [
          "userID"
        ],
        "properties": {
          "userID": {
            "type": "string",
            "description": "The user ID."
          },
          "organizationRole": {
            "type": "string",
            "description": "User's organization role. Excluded when requesting specific environments/projects if the role lacks project permissions."
          },
          "projectRoles": {
            "type": "object",
            "description": "Returns a dictionary mapping project IDs to user roles.\n\n**Example:**\n```\n\"45a4f214-8a3e-48c7-8c6b-ff284798de4c\": \"admin\"\n```\n\n**Format:** `projectID: userRole`\n\n**Note:** Only includes projects where the user has a role. Environment-only roles are excluded.",
            "additionalProperties": {
              "type": "string"
            }
          },
          "environmentRoles": {
            "type": "object",
            "description": "Returns a dictionary mapping environment IDs to user roles.\n\n**Example:**\n```\n\"33\": \"admin\"\n```\n\n**Format:** `environmentID: userRole`\n\n**Note:** Only includes environments where the user has a role.",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "SingleUserRoleResponseV2": {
        "$ref": "#/components/schemas/UserOrgRolesV2"
      },
      "UserRoleResponseV2": {
        "type": "object",
        "properties": {
          "userRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserOrgRolesV2"
            }
          }
        },
        "required": [
          "userRoles"
        ],
        "additionalProperties": false
      },
      "ProjectGitAccountSetRequest": {
        "type": "object",
        "required": [
          "gitAccountID"
        ],
        "properties": {
          "gitAccountID": {
            "type": "string",
            "example": "8734df52-b88e-444a-9595-9884cd214028",
            "description": "The Git Account ID assigned by Coalesce."
          }
        }
      },
      "BaseGitAccount": {
        "type": "object",
        "description": "The core fields for a git account",
        "required": [
          "gitAccountName",
          "gitAuthorEmail",
          "gitAuthorName",
          "gitUsername"
        ],
        "properties": {
          "gitAccountName": {
            "type": "string",
            "description": "The account name is usually your Coalesce Org name."
          },
          "gitAuthorEmail": {
            "type": "string",
            "example": "hello@coalesce.io",
            "description": "The email of the user making the commits using the version control account. This doesn't have to match the version control provider."
          },
          "gitAuthorName": {
            "type": "string",
            "example": "Coalesce Support",
            "description": "The name of the user making the commits using the version control account. This doesn't have to match the version control provider."
          },
          "gitUsername": {
            "type": "string",
            "example": "coalescecio",
            "description": "The username from your version control provider."
          }
        }
      },
      "GitAccountRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseGitAccount"
          },
          {
            "type": "object",
            "required": [
              "gitToken"
            ],
            "properties": {
              "gitToken": {
                "type": "string",
                "description": "The [personal access token](https://docs.coalesce.io/docs/git-integration/set-up-your-git-integration#get-a-personal-access-token-pat) from your version control provider."
              }
            }
          }
        ]
      },
      "PlatformKind": {
        "type": "string",
        "enum": [
          "snowflake",
          "databricks"
        ]
      },
      "ProjectGitAccountResponseData": {
        "type": "object",
        "required": [
          "gitAccountID",
          "userID"
        ],
        "properties": {
          "gitAccountID": {
            "type": "string",
            "description": "The Git account ID assigned by Coalesce."
          },
          "userID": {
            "type": "string",
            "description": "The user ID assigned by Coalesce."
          }
        }
      },
      "ProjectGitAccountResponse": {
        "$ref": "#/components/schemas/ProjectGitAccountResponseData"
      },
      "ProjectGitAccountsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A colleciton of project git accounts",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectGitAccountResponseData"
            }
          }
        }
      },
      "ProjectPatchRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "platformKind": {
            "$ref": "#/components/schemas/PlatformKind"
          },
          "description": {
            "type": "string",
            "example": "Regulatory reporting: SOX audits, customer due diligence (KYC), and anti-money laundering (AML) monitoring. The solution must provide complete audit trails, automated exception detection, and regulatory reporting capabilities.",
            "description": "The Project description."
          },
          "gitRepoURL": {
            "type": "string",
            "description": "The URL of the version control for the Project.",
            "example": "https://github.com/coalesceio"
          },
          "name": {
            "type": "string",
            "example": "Regulatory Compliance",
            "description": "The Project name."
          }
        }
      },
      "GitAccountCreateRequest": {
        "description": "All the fields needed to create a git account",
        "allOf": [
          {
            "$ref": "#/components/schemas/GitAccountRequest"
          }
        ],
        "required": [
          "gitAccountName",
          "gitAuthorEmail",
          "gitAuthorName",
          "gitUsername",
          "gitToken"
        ]
      },
      "GitAccountUpdateRequest": {
        "description": "All the fields needed to update a git account",
        "$ref": "#/components/schemas/GitAccountRequest"
      },
      "GitAccountResponse": {
        "description": "All the fields needed to create a git account",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseGitAccount"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "8734df52-b88e-444a-9595-9884cd214028",
                "description": "The Git account ID assigned by Coalesce."
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-02-04T20:52:37.312Z",
                "description": "The time in ISO 8601."
              },
              "createdBy": {
                "$ref": "#/components/schemas/UserSummary"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "description": "The time in ISO 8601.",
                "example": "2025-02-04T20:52:37.312Z"
              },
              "updatedBy": {
                "$ref": "#/components/schemas/UserSummary"
              },
              "accountOwner": {
                "$ref": "#/components/schemas/UserSummary"
              }
            }
          }
        ]
      },
      "ProjectsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Project"
            }
          }
        },
        "description": "List of Projects"
      },
      "ProjectResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "Information about a project.",
            "$ref": "#/components/schemas/Project"
          }
        }
      },
      "EnvironmentSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "createdAt",
          "id",
          "name",
          "project",
          "status"
        ],
        "properties": {
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The time in ISO 8601."
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserSummary"
          },
          "id": {
            "type": "string",
            "description": "The Environment ID.",
            "example": "boC3UgRYtaMjxEqv2bxPugrNCJx1"
          },
          "name": {
            "type": "string",
            "description": "Name of the Environment.",
            "example": "Coalesce"
          },
          "project": {
            "type": "string",
            "description": "The Project ID.",
            "example": "7e854ee0-4b7f-46ae-b79c-ace867941f11"
          },
          "status": {
            "$ref": "#/components/schemas/EnvironmentHealth"
          }
        }
      },
      "ErrorResponse": {
        "description": "Error detail in addition to the HTTP status code and text.",
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/Error"
          }
        }
      },
      "EnvironmentsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A collection of environment information.",
            "anyOf": [
              {
                "type": "array",
                "title": "Environment response with details",
                "items": {
                  "$ref": "#/components/schemas/Environment"
                }
              },
              {
                "type": "array",
                "title": "Environment response summary",
                "items": {
                  "$ref": "#/components/schemas/EnvironmentSummary"
                }
              }
            ]
          },
          "total": {
            "type": "integer",
            "description": "Number of records returned."
          },
          "startingFrom": {
            "type": "string",
            "description": "A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter."
          },
          "limit": {
            "type": "integer",
            "description": "Limit of the records returned. Some endpoints have `limit` as a query parameter. Default is 100."
          },
          "next": {
            "type": [
              "number",
              "null"
            ],
            "description": "The field value representing the start of the next page of results."
          }
        }
      },
      "NodesResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A collection of nodes for an environment.",
            "anyOf": [
              {
                "type": "array",
                "title": "Node summary response",
                "items": {
                  "$ref": "#/components/schemas/NodeSummary"
                }
              },
              {
                "type": "array",
                "title": "Node response",
                "items": {
                  "$ref": "#/components/schemas/Node"
                }
              }
            ]
          },
          "total": {
            "type": "integer",
            "x-stoplight": {
              "id": "g9ch12nsuhzvs"
            },
            "description": "Number of records returned."
          },
          "startingFrom": {
            "type": "string",
            "x-stoplight": {
              "id": "zzlkwdiv5tlgl"
            },
            "description": "A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter."
          },
          "limit": {
            "type": "integer",
            "x-stoplight": {
              "id": "1zrtqw9z80x6p"
            },
            "description": "Limit of the records returned. Some endpoints have `limit` as a query parameter. Default is 100."
          },
          "next": {
            "type": "string",
            "x-stoplight": {
              "id": "te95a3cv4p4t9"
            },
            "description": "The field value representing the start of the next page of results.",
            "nullable": true
          },
          "orderBy": {
            "type": "string",
            "x-stoplight": {
              "id": "sze8bda9de3ax"
            },
            "description": "The field to order the results by. Only `id` allowed."
          }
        },
        "description": ""
      },
      "NodeSummary": {
        "type": "object",
        "properties": {
          "database": {
            "type": "string",
            "description": "The database name."
          },
          "id": {
            "type": "string",
            "description": "The Coalesce Node ID."
          },
          "locationName": {
            "type": "string",
            "description": "The Storage Mapping location."
          },
          "name": {
            "type": "string",
            "description": "The Node name."
          },
          "nodeType": {
            "$ref": "#/components/schemas/NodeType"
          },
          "schema": {
            "type": "string",
            "description": "The database schema name."
          }
        },
        "required": [
          "database",
          "id",
          "locationName",
          "name",
          "nodeType",
          "schema"
        ]
      },
      "OrderByDirection": {
        "description": "The sort order for query results.",
        "type": "string",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "RunsResponse": {
        "description": "A collection of runs.",
        "type": "object",
        "x-examples": {},
        "required": [
          "limit",
          "orderByDirection",
          "orderBy",
          "data",
          "next"
        ],
        "properties": {
          "limit": {
            "type": "integer",
            "x-stoplight": {
              "id": "pbkburmhwwx2z"
            },
            "description": "Limit of the records returned. Some endpoints have `limit` as a query parameter."
          },
          "orderByDirection": {
            "$ref": "#/components/schemas/OrderByDirection"
          },
          "orderBy": {
            "type": "string",
            "x-stoplight": {
              "id": "qc30xyssa28bx"
            },
            "description": "The field to order the results by. Only `id` allowed."
          },
          "data": {
            "description": "A collection of runs.",
            "anyOf": [
              {
                "type": "array",
                "title": "Run summary response",
                "items": {
                  "$ref": "#/components/schemas/RunSummary"
                }
              },
              {
                "type": "array",
                "title": "Run info response",
                "items": {
                  "$ref": "#/components/schemas/RunInfo"
                }
              }
            ]
          },
          "next": {
            "type": [
              "string",
              "integer",
              "null"
            ],
            "x-stoplight": {
              "id": "2a4at6wmdfyzt"
            }
          }
        }
      },
      "RunsOrderBy": {
        "description": "The field used to sort query results.",
        "type": "string",
        "enum": [
          "id",
          "runStartTime",
          "runEndTime"
        ],
        "default": "id"
      },
      "RunResultsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A collection of run results.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunResult"
            }
          }
        }
      },
      "RunSummary": {
        "type": "object",
        "required": [
          "id",
          "runType",
          "runStatus"
        ],
        "properties": {
          "id": {
            "description": "The run ID.",
            "type": "integer"
          },
          "reRunID": {
            "description": "If this is a re-run, the ID of the original operation.",
            "type": "string"
          },
          "runStartTime": {
            "description": "The datetime the run started.",
            "type": "string",
            "format": "date-time"
          },
          "runEndTime": {
            "description": "The datetime the run ended.",
            "type": "string",
            "format": "date-time"
          },
          "runType": {
            "$ref": "#/components/schemas/RunType"
          },
          "runStatus": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "environmentID": {
            "description": "The environment in which the run operation was applied.",
            "type": "string"
          },
          "runFailureReason": {
            "description": "Information about the cause of a run failure.",
            "type": "string"
          },
          "hasTestFailures": {
            "type": "boolean",
            "x-stoplight": {
              "id": "dfkakolcegg1l"
            },
            "description": "If a refresh Node or column test has failed, this field will return in the response with a `true`. If there are no failures, then this isn't present in the response."
          }
        }
      },
      "DatabaseInfoResponse": {
        "type": "object",
        "required": [
          "apiKey",
          "authDomain",
          "projectId",
          "storageBucket",
          "messagingSenderId",
          "appId",
          "measurementId"
        ],
        "properties": {
          "apiKey": {
            "type": "string"
          },
          "authDomain": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "storageBucket": {
            "type": "string"
          },
          "messagingSenderId": {
            "type": "string"
          },
          "appId": {
            "type": "string"
          },
          "measurementId": {
            "type": "string"
          },
          "emulatorInfo": {
            "type": "object",
            "required": [
              "auth",
              "firestore",
              "storage"
            ],
            "properties": {
              "auth": {
                "type": "string"
              },
              "firestore": {
                "type": "string"
              },
              "storage": {
                "type": "string"
              }
            }
          }
        }
      },
      "UserEnvironmentRolesResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/UserEnvironmentRoles"
        },
        "additionalProperties": false
      },
      "UserProjectRolesResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/UserProjectRoles"
        },
        "additionalProperties": false
      },
      "UserRolesResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/UserOrgRoles"
        },
        "additionalProperties": false
      },
      "FivetranProjectsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A collection of project information.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FivetranProject"
            }
          }
        }
      },
      "FivetranProjectResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "Fivetran project data.",
            "$ref": "#/components/schemas/FivetranProject"
          }
        }
      },
      "FivetranJobsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A collection of job information.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FivetranJob"
            }
          }
        }
      },
      "FivetranJobHistoryResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "Fivetran job history data.",
            "$ref": "#/components/schemas/FivetranJobHistory"
          }
        }
      },
      "FivetranRefreshJobResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "description": "A fivetran job",
            "$ref": "#/components/schemas/FivetranJobHistory"
          }
        }
      },
      "MetricsItem": {
        "type": "object",
        "required": [
          "name",
          "tags",
          "count"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "count": {
            "type": "integer"
          }
        }
      },
      "MetricsRequest": {
        "type": "object",
        "required": [
          "metrics"
        ],
        "properties": {
          "metrics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetricsItem"
            }
          }
        }
      },
      "BaseEnvironment": {
        "type": "object",
        "description": "Environments are used for deploying your data pipelines to production, test, QA, and other environments.",
        "additionalProperties": true,
        "properties": {
          "connectionAccount": {
            "type": "string",
            "description": "Snowflake only. The Snowflake account identifier for this environment (for example `xy12345.us-east-1`). Omit for Databricks projects."
          },
          "accessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Databricks only. The workspace URL for this environment (for example `https://adb-1234567890123456.7.azuredatabricks.net`). Omit for Snowflake projects."
          },
          "defaultStorageMapping": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The Environment description."
          },
          "name": {
            "type": "string",
            "description": "The Environment name."
          },
          "oauthEnabled": {
            "type": "boolean",
            "description": "If OAuth is enabled."
          },
          "runTimeParameters": {
            "type": "object",
            "additionalProperties": true,
            "description": "The default Environment parameters. Parameters changed during deploy will not show here."
          },
          "tagColors": {
            "$ref": "#/components/schemas/TagColor"
          },
          "project": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "oauthEnabled",
          "project"
        ]
      },
      "Environment": {
        "description": "Environments are used for deploying your data pipelines to production, test, QA, and other environments.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWorkspaceEnv"
          },
          {
            "type": "object",
            "properties": {
              "runTimeParameters": {
                "type": "object",
                "description": "Parameters changed during deploy will not show here."
              },
              "currentMappings": {
                "$ref": "#/components/schemas/EnvironmentStorageLocationMappings"
              }
            }
          },
          {
            "type": "object",
            "x-stoplight": {
              "id": "b58je7yplahtr"
            }
          }
        ],
        "x-examples": {},
        "title": ""
      },
      "EnvironmentHealth": {
        "type": "string",
        "enum": [
          "Deleting",
          "Deploying",
          "Failed Deploy",
          "Failed Dev Run",
          "Failed Refresh",
          "Initializing",
          "Refreshing",
          "Running Dev Run",
          "Waiting"
        ]
      },
      "EnvironmentStorageLocationMappings": {
        "type": "object",
        "description": "The Storage Mapping name.",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "database": {
              "type": "string",
              "description": "The database name."
            },
            "schema": {
              "type": "string",
              "description": "The database schema."
            }
          }
        }
      },
      "EnvironmentCreateRequest": {
        "type": "object",
        "description": "Initial values to set on a newly created Environment. Required fields are project, name, and oauthEnabled. For Snowflake Environments, include connectionAccount. For Databricks Environments, include accessUrl. Do not pass warehouse passwords or OAuth refresh tokens in this request. Add credentials in the Coalesce app under Build Settings > Environments > User Credentials after creation.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseEnvironment"
          },
          {
            "type": "object",
            "properties": {
              "mappings": {
                "description": "Optional storage location mappings for the new Environment. Storage mappings are normally established or updated when you deploy from a Workspace. Setting mappings only through this API may not match behavior you get from deploy.",
                "$ref": "#/components/schemas/EnvironmentStorageLocationMappings"
              }
            },
            "additionalProperties": true
          }
        ]
      },
      "EnvironmentPatchRequest": {
        "type": "object",
        "description": "Partial update for an existing Environment. Omitted fields are unchanged. Set a field to null to clear nullable values such as accessUrl. Writable fields: name, description, connectionAccount, accessUrl, oauthEnabled, defaultStorageMapping, runTimeParameters, tagColors, mappings. Do not pass warehouse passwords or OAuth refresh tokens. Add credentials in the Coalesce app under Build Settings > Environments > User Credentials.",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The Environment name."
          },
          "description": {
            "type": "string",
            "description": "The Environment description."
          },
          "connectionAccount": {
            "type": "string",
            "description": "Snowflake only. The Snowflake account identifier for this environment."
          },
          "accessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Databricks only. The workspace URL for this environment. Pass null to clear."
          },
          "oauthEnabled": {
            "type": "boolean",
            "description": "If OAuth is enabled."
          },
          "defaultStorageMapping": {
            "type": "string",
            "nullable": true
          },
          "runTimeParameters": {
            "type": "object",
            "additionalProperties": true,
            "description": "The default Environment parameters. Parameters changed during deploy will not show here."
          },
          "tagColors": {
            "$ref": "#/components/schemas/TagColor"
          },
          "mappings": {
            "description": "Optional storage location mappings. Storage mappings are normally established or updated when you deploy from a Workspace. Setting mappings only through this API may not match behavior you get from deploy.",
            "$ref": "#/components/schemas/EnvironmentStorageLocationMappings"
          }
        }
      },
      "BaseProject": {
        "type": "object",
        "description": "",
        "required": [
          "name"
        ],
        "properties": {
          "description": {
            "type": "string",
            "description": "The Project description.",
            "example": "QA for accounting"
          },
          "gitRepoURL": {
            "type": "string",
            "example": "https://github.com/coalesceio",
            "description": "The Project version control URL."
          },
          "name": {
            "type": "string",
            "example": "Coalesce",
            "description": "The name of the Project."
          }
        }
      },
      "Project": {
        "description": "",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProject"
          },
          {
            "type": "object",
            "required": [
              "createdAt",
              "updatedAt",
              "id",
              "status"
            ],
            "properties": {
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-05-28T15:03:10.457Z",
                "description": "The time in ISO 8601 format."
              },
              "createdBy": {
                "$ref": "#/components/schemas/UserSummary"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "description": "The time in ISO 8601 format.",
                "example": "2024-04-11T15:36:15.181Z"
              },
              "updatedBy": {
                "$ref": "#/components/schemas/UserSummary"
              },
              "id": {
                "type": "string",
                "description": "The Project ID.",
                "example": "boC3UgRYtaMjxEqv2bxPugrNCJx1"
              },
              "status": {
                "$ref": "#/components/schemas/ProjectStatus"
              },
              "workspaces": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WorkspaceSummary"
                }
              },
              "jobs": {
                "x-stoplight": {
                  "id": "z26towufu6bwi"
                },
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          }
        ],
        "title": ""
      },
      "ProjectCreateRequest": {
        "type": "object",
        "description": "A project groups environments and workspaces for easier management and access control.",
        "additionalProperties": false,
        "required": [
          "platformKind",
          "name"
        ],
        "properties": {
          "platformKind": {
            "$ref": "#/components/schemas/PlatformKind"
          },
          "description": {
            "type": "string",
            "description": "The Project description.",
            "example": "QA for accounting"
          },
          "gitRepoURL": {
            "type": "string",
            "description": "The Project version control URL.",
            "example": "https://github.com/coalesceio"
          },
          "name": {
            "type": "string",
            "description": "The name of the Project.",
            "example": "Coalesce"
          }
        }
      },
      "ProjectStatus": {
        "type": "string",
        "enum": [
          "active",
          "deleted"
        ]
      },
      "UserSummary": {
        "type": "object",
        "description": "",
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The user ID.",
            "example": "BGx8EQ1NlLXxMFwFfV5brGgLj813"
          },
          "firstName": {
            "type": "string",
            "description": "User first name.",
            "example": "Coalesce"
          },
          "lastName": {
            "type": "string",
            "description": "User last name.",
            "example": "Support"
          }
        }
      },
      "FirestoreWebTimestamp": {
        "type": "object",
        "description": "Timestamp from the web Firestore SDK.",
        "additionalProperties": false,
        "properties": {
          "seconds": {
            "type": "number"
          },
          "nanoseconds": {
            "type": "number"
          }
        },
        "required": [
          "seconds",
          "nanoseconds"
        ]
      },
      "FirestoreAdminTimestamp": {
        "type": "object",
        "description": "Timestamp from the admin Firestore SDK.",
        "additionalProperties": false,
        "properties": {
          "_seconds": {
            "type": "number"
          },
          "_nanoseconds": {
            "type": "number"
          }
        },
        "required": [
          "_seconds",
          "_nanoseconds"
        ]
      },
      "FirestoreTimestamp": {
        "type": "object",
        "description": "Timestamp from either the web admin Firestore SDKs.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FirestoreWebTimestamp"
          },
          {
            "$ref": "#/components/schemas/FirestoreAdminTimestamp"
          }
        ]
      },
      "Error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "errorString": {
            "description": "The error message.",
            "type": "string"
          },
          "errorDetail": {
            "description": "Additional detail about the error.",
            "type": "string"
          }
        },
        "required": [
          "errorString"
        ]
      },
      "Node": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SourceNode"
          },
          {
            "$ref": "#/components/schemas/SQLNode"
          }
        ]
      },
      "AliasToStepIDMapping": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        }
      },
      "AppliedColumnTests": {
        "type": "object",
        "description": "Will return `hasNull` or `isDistinct` as true or false if testing is enabled.",
        "additionalProperties": {
          "type": "boolean"
        }
      },
      "BaseNode": {
        "type": "object",
        "required": [
          "description",
          "id",
          "locationName",
          "name",
          "nodeType"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "The Node database name"
          },
          "description": {
            "type": "string",
            "description": "The Node description."
          },
          "id": {
            "type": "string",
            "description": "The Node ID."
          },
          "locationName": {
            "type": "string",
            "description": "The Storage Mapping location."
          },
          "name": {
            "type": "string",
            "description": "The Node name."
          },
          "nodeType": {
            "$ref": "#/components/schemas/NodeType"
          },
          "schema": {
            "type": "string",
            "description": "The Node schema name."
          }
        }
      },
      "ColumnMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "appliedColumnTests": {
            "$ref": "#/components/schemas/AppliedColumnTests"
          },
          "columnID": {
            "type": "string",
            "description": "The column ID."
          },
          "columnReferences": {
            "items": {
              "$ref": "#/components/schemas/IntermediateColumnRefResult"
            },
            "type": "array"
          },
          "config": {
            "type": "object",
            "description": "Returns any configuration options from the Node Config Tab.",
            "additionalProperties": true
          },
          "dataType": {
            "type": "string",
            "description": "Column data type."
          },
          "defaultValue": {
            "type": "string",
            "description": "The default column value."
          },
          "description": {
            "type": "string",
            "description": "The column description."
          },
          "hashDetails": {
            "$ref": "#/components/schemas/HashMetadata"
          },
          "hashedColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ColumnReference"
            }
          },
          "isBusinessKey": {
            "type": "boolean",
            "description": "Tags the column as a business key."
          },
          "isChangeTracking": {
            "type": "boolean",
            "description": "Tags the column as a change tracking column in type 2 dimensions."
          },
          "isSurrogateKey": {
            "type": "boolean",
            "description": "Tags the column as a surrogate key, e.g. DIM_CUSTOMER_KEY."
          },
          "keyColumnType": {
            "type": "string",
            "enum": [
              "None",
              "primaryBusinessKey",
              "surrogateKey"
            ]
          },
          "name": {
            "type": "string",
            "description": "The column name."
          },
          "nullable": {
            "type": "boolean",
            "description": "If the column can contain null values."
          },
          "primaryKey": {
            "description": "Tags the column as a primary key.",
            "type": "boolean"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/SourceColumnReference"
            },
            "type": "array"
          },
          "systemColumnType": {
            "type": "string",
            "enum": [
              "None",
              "sysCreateDate",
              "sysCurrentFlag",
              "sysEndDate",
              "sysStartDate",
              "sysUpdateDate",
              "sysVersion"
            ]
          },
          "transform": {
            "type": "string"
          },
          "uniqueKey": {
            "type": "boolean"
          },
          "isSystemCreateDate": {
            "type": "boolean"
          },
          "isSystemUpdateDate": {
            "type": "boolean"
          },
          "isSystemStartDate": {
            "type": "boolean"
          },
          "isSystemEndDate": {
            "type": "boolean"
          },
          "isSystemVersion": {
            "type": "boolean"
          },
          "isSystemCurrentFlag": {
            "type": "boolean"
          }
        },
        "required": [
          "columnID",
          "dataType",
          "description",
          "name",
          "nullable"
        ]
      },
      "ColumnReference": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "columnID": {
            "type": "string",
            "description": "Column ID of the source column."
          },
          "nodeID": {
            "type": "string",
            "description": "Node ID of the source columm."
          }
        },
        "required": [
          "columnID",
          "nodeID"
        ]
      },
      "CustomSQL": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customSQL": {
            "type": "string"
          }
        },
        "required": [
          "customSQL"
        ]
      },
      "HashAlgorithm": {
        "type": "string",
        "enum": [
          "MD5",
          "SHA1",
          "SHA256"
        ]
      },
      "HashMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hashAlgorithm": {
            "$ref": "#/components/schemas/HashAlgorithm"
          },
          "hashType": {
            "enum": [
              "ChangeHash",
              "Hash",
              "HubHash",
              "LinkHash",
              "None"
            ],
            "type": "string"
          },
          "hubHashes": {
            "items": {
              "$ref": "#/components/schemas/ColumnReference"
            },
            "type": "array"
          }
        },
        "required": [
          "hashAlgorithm"
        ]
      },
      "IntermediateColumnRefResult": {
        "additionalProperties": false,
        "properties": {
          "columnName": {
            "type": "string"
          },
          "tableName": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "columnName",
          "tableName"
        ],
        "type": "object"
      },
      "JoinCondition": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "joinCondition": {
            "type": "string"
          }
        },
        "required": [
          "joinCondition"
        ]
      },
      "NodeType": {
        "anyOf": [
          {
            "enum": [
              "Dimension",
              "Fact",
              "Hub",
              "Link",
              "Satellite",
              "Source",
              "Stage",
              "View",
              "persistentStage"
            ],
            "description": "Out of the box Node Types."
          },
          {
            "description": "Custom or Package Node ID.",
            "example": "externalDataPackage:::372"
          }
        ],
        "description": "Either an out of the box Node or a custom Node Type ID or Package Node Type ID",
        "type": "string"
      },
      "RefLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "locationName": {
            "type": "string"
          },
          "nodeName": {
            "type": "string"
          }
        },
        "required": [
          "locationName",
          "nodeName"
        ]
      },
      "SourceColumnReference": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SourceColumnReferenceV1"
          },
          {
            "$ref": "#/components/schemas/SourceColumnReferenceV2"
          }
        ]
      },
      "SourceColumnReferenceV1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "columnReferences": {
            "items": {
              "$ref": "#/components/schemas/ColumnReference"
            },
            "type": "array"
          },
          "transform": {
            "type": "string",
            "description": "Returns the SQL of any column transformations."
          }
        },
        "required": [
          "columnReferences",
          "transform"
        ]
      },
      "SourceColumnReferenceV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "transform": {
            "type": "string",
            "description": "Returns the SQL of any column transformations."
          }
        },
        "required": [
          "transform"
        ]
      },
      "SourceMap": {
        "additionalProperties": false,
        "properties": {
          "aliases": {
            "$ref": "#/components/schemas/AliasToStepIDMapping"
          },
          "customSQL": {
            "$ref": "#/components/schemas/CustomSQL"
          },
          "dependencies": {
            "items": {
              "$ref": "#/components/schemas/RefLink"
            },
            "type": "array"
          },
          "join": {
            "$ref": "#/components/schemas/JoinCondition"
          },
          "name": {
            "type": "string"
          },
          "noLinkRefs": {
            "items": {
              "$ref": "#/components/schemas/RefLink"
            },
            "type": "array"
          }
        },
        "required": [
          "dependencies",
          "join",
          "name",
          "noLinkRefs"
        ],
        "type": "object"
      },
      "RunStatus": {
        "enum": [
          "canceled",
          "completed",
          "failed",
          "initializing",
          "rendering",
          "running",
          "waitingToRun"
        ],
        "type": "string"
      },
      "RunType": {
        "enum": [
          "deploy",
          "refresh"
        ],
        "type": "string"
      },
      "UserConnectionType": {
        "type": "string",
        "enum": [
          "Basic",
          "Cloud",
          "KeyPair",
          "OAuth"
        ]
      },
      "DeployRunDetails": {
        "type": "object",
        "additionalProperties": false,
        "description": "Deployment run details.",
        "properties": {
          "canceled": {
            "type": "boolean",
            "description": "If the run was canceled."
          },
          "deployCommit": {
            "type": "string",
            "description": "The full commit hash."
          },
          "deployCommitMessage": {
            "type": "string",
            "description": "The commit message."
          },
          "environmentID": {
            "type": "string",
            "description": "The Environment ID for this run."
          },
          "parallelism": {
            "type": "integer",
            "description": "The parallelism parameter determines how many nodes are processed simultaneously (in parallel) by the Snowflake compute warehouse."
          },
          "nodesInRun": {
            "type": "integer",
            "description": "The number of Nodes deployed."
          }
        },
        "required": [
          "deployCommit",
          "environmentID"
        ]
      },
      "RefreshRunDetails": {
        "type": "object",
        "additionalProperties": false,
        "description": "Refresh run details.",
        "properties": {
          "canceled": {
            "type": "boolean",
            "description": "If the run was canceled."
          },
          "environmentID": {
            "type": "string",
            "description": "The Environment ID for this run."
          },
          "excludeNodesSelector": {
            "type": "string",
            "description": "A selector string of nodes to exclude."
          },
          "forceIgnoreEnvironmentStatus": {
            "type": "boolean"
          },
          "includeNodesSelector": {
            "type": "string",
            "description": "A selector string of nodes to include."
          },
          "jobID": {
            "type": "integer",
            "description": "The Job ID."
          },
          "parallelism": {
            "type": "integer",
            "description": "The parallelism parameter determines how many nodes are processed simultaneously (in parallel) by the Snowflake compute warehouse."
          },
          "refreshDescription": {
            "type": "string",
            "description": "The Job name."
          },
          "nodesInRun": {
            "type": "integer",
            "description": "The number of Nodes deployed."
          },
          "executor": {
            "type": "string"
          }
        },
        "required": [
          "environmentID"
        ]
      },
      "RunDetails": {
        "description": "Detailed information about a run.",
        "anyOf": [
          {
            "$ref": "#/components/schemas/DeployRunDetails"
          },
          {
            "$ref": "#/components/schemas/RefreshRunDetails"
          }
        ]
      },
      "RunInfo": {
        "description": "The full details of a run, without the run results.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "runDetails",
          "runStatus",
          "runTimeParameters",
          "runType"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "reRunID": {
            "type": "string",
            "description": "If this is a re-run, the ID of the original operation."
          },
          "runDetails": {
            "$ref": "#/components/schemas/RunDetails"
          },
          "runEndTime": {
            "format": "date-time",
            "type": "string",
            "description": "The datetime when the run ended."
          },
          "runHistory": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "runStartTime": {
            "format": "date-time",
            "type": "string",
            "description": "The datetime the run started."
          },
          "runStatus": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "runTimeParameters": {
            "type": "object",
            "description": "The Job parameters. Parameters changed during deploy will not show here."
          },
          "runType": {
            "$ref": "#/components/schemas/RunType"
          },
          "userCredentials": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SnowflakeUserCredentials",
                "x-stoplight": {
                  "id": "pa71hghwa05uw"
                }
              },
              {
                "$ref": "#/components/schemas/DatabricksUserCredentials",
                "x-stoplight": {
                  "id": "uslefxelcfngk"
                }
              }
            ]
          },
          "userID": {
            "type": "string"
          },
          "hasTestFailures": {
            "type": "boolean",
            "x-stoplight": {
              "id": "jjkw1cc309kyj"
            },
            "description": "If a refresh Node or column test has failed, this field will return in the response with a `true`. If there are no failures, then this isn't present in the response."
          },
          "version": {
            "type": "integer",
            "x-stoplight": {
              "id": "4aoprp4iayto3"
            }
          }
        }
      },
      "SnowflakeUserCredentials": {
        "description": "Information about the Snowflake account used to perform a run.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "snowflakeAccount": {
            "type": "string"
          },
          "snowflakeAuthType": {
            "$ref": "#/components/schemas/SnowflakeUserConnectionType"
          },
          "snowflakeRole": {
            "type": "string"
          },
          "snowflakeUsername": {
            "type": "string"
          },
          "snowflakeWarehouse": {
            "type": "string"
          }
        },
        "required": [
          "snowflakeAccount",
          "snowflakeAuthType",
          "snowflakeUsername"
        ]
      },
      "QueryResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "isRunning",
          "name",
          "sql",
          "status",
          "success"
        ],
        "properties": {
          "endTime": {
            "type": "string",
            "format": "date-time"
          },
          "error": {
            "$ref": "#/components/schemas/Error"
          },
          "isRunning": {
            "type": "boolean",
            "description": "If the queried run is still running."
          },
          "name": {
            "type": "string",
            "description": "The name of the Stage the query ran on."
          },
          "queryID": {
            "type": "string"
          },
          "rowsDeleted": {
            "type": "integer"
          },
          "rowsInserted": {
            "type": "integer"
          },
          "rowsUpdated": {
            "type": "integer"
          },
          "sql": {
            "type": "string",
            "description": "The SQL query run during the stage."
          },
          "startTime": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "description": "The query status."
          },
          "success": {
            "type": "boolean",
            "description": "If the query results were run successfully."
          },
          "warehouse": {
            "type": "string",
            "description": "Name of the warehouse."
          },
          "type": {
            "type": "string",
            "x-stoplight": {
              "id": "xr3wlbk4jdyq9"
            },
            "example": "sql",
            "description": "Returns either `sql` or `sqlTest` to indicate the query result type. `sql` is the stage. `sqlTest` indicates that a Node or Column test was run."
          }
        }
      },
      "RunResult": {
        "type": "object",
        "additionalProperties": false,
        "description": "The result output describing each query processed during a run.",
        "required": [
          "isRunning",
          "name",
          "nodeID",
          "queryResults"
        ],
        "properties": {
          "isRunning": {
            "type": "boolean",
            "description": "If the queried run is still running."
          },
          "name": {
            "type": "string"
          },
          "nodeID": {
            "type": "string"
          },
          "hasTestFailures": {
            "type": "boolean",
            "x-stoplight": {
              "id": "2n2h892s8io4n"
            },
            "description": "If a refresh Node or column test has failed, this field will return in the response with a `true`. If there are no failures, then this isn't present in the response."
          },
          "runState": {
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/RunOrigins"
          },
          "queryResults": {
            "description": "The query result returns the status of different stages such as Delete Table or Rename Table. See the queryResults name for the stage.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QueryResult"
            }
          },
          "renderQueryResult": {
            "$ref": "#/components/schemas/QueryResult",
            "x-stoplight": {
              "id": "zyoqkazpavev0"
            }
          }
        }
      },
      "RunOrigins": {
        "enum": [
          "API",
          "CLI",
          "UI",
          "fivetranAPI"
        ]
      },
      "OrgRoles": {
        "type": "object",
        "description": "Specifies role assignments.",
        "required": [
          "organizationRoles",
          "projects"
        ],
        "properties": {
          "organizationRoles": {
            "description": "The organization roles assigned to the user.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "projects": {
            "description": "A dictionary of project role assignments keyed by project ID.",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ProjectRoles"
            }
          }
        },
        "additionalProperties": true
      },
      "ProjectRoles": {
        "type": "object",
        "description": "Specifies project role assignments.",
        "required": [
          "projectRoles",
          "environments"
        ],
        "properties": {
          "projectRoles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "environments": {
            "description": "A dictionary of environment role assignments keyed by environment ID.",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/EnvironmentRoles"
            }
          }
        },
        "additionalProperties": true
      },
      "EnvironmentRoles": {
        "type": "object",
        "description": "Specifies environment role assignments.",
        "required": [
          "environmentRoles"
        ],
        "properties": {
          "environmentRoles": {
            "description": "The environment roles assigned to the user.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": true
      },
      "UserOrgRoles": {
        "description": "The roles assigned to a user.",
        "allOf": [
          {
            "$ref": "#/components/schemas/OrgRoles"
          },
          {
            "type": "object",
            "required": [
              "user",
              "organizationRoles",
              "projects"
            ],
            "properties": {
              "user": {
                "$ref": "#/components/schemas/UserSummary"
              }
            },
            "additionalProperties": true
          }
        ]
      },
      "UserProjectRoles": {
        "description": "The project roles assigned to the user.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectRoles"
          },
          {
            "type": "object",
            "required": [
              "user",
              "projectRoles",
              "environments"
            ],
            "properties": {
              "user": {
                "$ref": "#/components/schemas/UserSummary"
              }
            },
            "additionalProperties": true
          }
        ]
      },
      "UserEnvironmentRoles": {
        "description": "The environment roles assigned to the user.",
        "allOf": [
          {
            "$ref": "#/components/schemas/EnvironmentRoles"
          },
          {
            "type": "object",
            "required": [
              "user"
            ],
            "properties": {
              "user": {
                "$ref": "#/components/schemas/UserSummary"
              }
            },
            "additionalProperties": true
          }
        ]
      },
      "FivetranProject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createdAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "extras": {
            "type": "object",
            "description": "Additional data, if applicable"
          }
        },
        "required": [
          "id",
          "name",
          "createdAtUtc",
          "updatedAtUtc"
        ]
      },
      "FivetranJob": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createdAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "extras": {
            "type": "object",
            "description": "Additional data, if applicable"
          }
        }
      },
      "FivetranJobHistory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/FivetranJobStatus"
          },
          "startedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "logs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "extras": {
            "type": "object",
            "description": "Additional data, if applicable"
          }
        }
      },
      "FivetranJobStatus": {
        "type": "string",
        "description": "Possible statuses of jobs",
        "enum": [
          "SCHEDULING",
          "RUNNING",
          "SUCCEEDED",
          "TERMINATING",
          "FAILED"
        ]
      },
      "FivetranJobRunCause": {
        "type": "string",
        "description": "Possible run cause",
        "enum": [
          "Triggered by Fivetran"
        ]
      },
      "Job": {
        "type": "object",
        "description": "",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "The Job ID."
          },
          "name": {
            "type": "string",
            "description": "The Job name."
          },
          "includeSelector": {
            "type": "string",
            "description": "A selector string of nodes to include."
          },
          "excludeSelector": {
            "type": "string",
            "description": "A selector string of nodes to exclude."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "includeSelector",
          "excludeSelector",
          "createdAt",
          "updatedAt"
        ]
      },
      "RegistryPackageReleaseResult": {
        "description": "A single release of a package in the registry.",
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "string"
          },
          "changeLog": {
            "type": "string"
          },
          "releaseID": {
            "type": "string"
          },
          "storagePath": {
            "type": "string"
          },
          "privacy": {
            "type": "string",
            "enum": [
              "public",
              "private",
              "unlisted"
            ]
          }
        },
        "required": [
          "createdBy",
          "createdAt",
          "version",
          "changeLog",
          "releaseID",
          "storagePath",
          "privacy"
        ]
      },
      "RegistryPackageResult": {
        "description": "A single package in the registry.",
        "type": "object",
        "properties": {
          "updatedBy": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "publisherID": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "org": {
            "type": "string"
          },
          "latestRelease": {
            "type": "string"
          },
          "overview": {
            "type": "string"
          },
          "featured": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "minItems": 0,
            "items": {
              "type": "string"
            }
          },
          "certified": {
            "type": "boolean"
          },
          "packageID": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "org",
          "latestRelease",
          "overview",
          "tags",
          "featured",
          "certified",
          "publisherID",
          "packageID"
        ]
      },
      "WriteInfo": {
        "type": "object",
        "required": [
          "entityType",
          "writeType",
          "data"
        ],
        "properties": {
          "entityType": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "node",
                  "workspace",
                  "run",
                  "subgraph",
                  "job",
                  "macro",
                  "nodeType",
                  "packageOld",
                  "installedPackage"
                ]
              }
            ]
          },
          "writeType": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "save",
                  "delete",
                  "merge"
                ]
              }
            ]
          },
          "data": {
            "type": "object",
            "required": [
              "id",
              "version"
            ],
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "version": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            }
          }
        }
      },
      "BaseWorkspaceEnv": {
        "type": "object",
        "description": "A workspace is a collection of resources that are used to develop, test, and deploy code.",
        "additionalProperties": true,
        "properties": {
          "connectionAccount": {
            "type": "string",
            "description": "Snowflake only. The Snowflake account identifier for this environment (for example `xy12345.us-east-1`). Omit for Databricks projects."
          },
          "accessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Databricks only. The workspace URL for this environment (for example `https://adb-1234567890123456.7.azuredatabricks.net`). Omit for Snowflake projects."
          },
          "defaultStorageMapping": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The Workspace description."
          },
          "name": {
            "type": "string",
            "description": "The Workspace name."
          },
          "oauthEnabled": {
            "type": "boolean",
            "description": "If OAuth is enabled."
          },
          "tagColors": {
            "$ref": "#/components/schemas/TagColor"
          },
          "project": {
            "type": "string",
            "description": "The Project ID."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserSummary"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "currentGitBranch": {
            "type": "string",
            "description": "The branch most recently run on this environment."
          },
          "currentGitCommit": {
            "type": "string"
          },
          "currentGitURL": {
            "type": "string"
          },
          "currentlyRunningJobs": {
            "description": "An array of any running Jobs. If there are not Jobs running, this will return empty.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "id": {
            "type": "string"
          },
          "deployedCommit": {
            "type": "string",
            "description": "The most recently deployed commit ID."
          },
          "status": {
            "$ref": "#/components/schemas/WorkspaceEnvHealth"
          }
        },
        "required": [
          "createdAt",
          "updatedAt",
          "id",
          "name",
          "oauthEnabled",
          "project",
          "status"
        ]
      },
      "Workspace": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWorkspaceEnv"
          },
          {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "mappingsV1": {
                "type": "string"
              },
              "runTimeParameters": {
                "type": "string"
              },
              "jobs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          }
        ]
      },
      "WorkspaceSummary": {
        "type": "object",
        "description": "",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string",
            "description": "The Project ID."
          },
          "status": {
            "$ref": "#/components/schemas/WorkspaceEnvHealth"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Job"
            }
          }
        },
        "required": [
          "createdAt",
          "createdBy",
          "updatedAt",
          "id",
          "name",
          "status",
          "project"
        ],
        "title": ""
      },
      "WorkspaceEnvHealth": {
        "type": "string",
        "enum": [
          "Deleting",
          "Deploying",
          "Failed Deploy",
          "Failed Refresh",
          "Initializing",
          "Refreshing",
          "Waiting"
        ]
      },
      "TagColor": {
        "type": "object",
        "description": "The tag color from the Environment settings.",
        "additionalProperties": false,
        "properties": {
          "backgroundColor": {
            "type": "string"
          },
          "textColor": {
            "type": "string"
          }
        }
      },
      "SourceColumnMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "columns": {
            "items": {
              "$ref": "#/components/schemas/ColumnMetadata"
            },
            "type": "array"
          },
          "join": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "joinCondition": {
                "type": "string",
                "description": "Returns SQL from the Join tab."
              }
            },
            "required": [
              "joinCondition"
            ]
          },
          "sourceMapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceMap"
            }
          }
        },
        "required": [
          "columns"
        ]
      },
      "SourceNode": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseNode"
          }
        ],
        "additionalProperties": true,
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/SourceColumnMetadata"
          },
          "table": {
            "type": "string"
          }
        },
        "required": [
          "description",
          "locationName",
          "metadata",
          "name",
          "nodeType",
          "table"
        ]
      },
      "MaterializationType": {
        "type": "string",
        "enum": [
          "table",
          "view"
        ]
      },
      "NodeTest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "continueOnFailure": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "runOrder": {
            "$ref": "#/components/schemas/TestRunOrder"
          },
          "templateString": {
            "type": "string"
          }
        },
        "required": [
          "continueOnFailure",
          "description",
          "name",
          "runOrder",
          "templateString"
        ]
      },
      "SQLNode": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseNode"
          }
        ],
        "additionalProperties": true,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/UserConfig"
          },
          "isMultisource": {
            "type": "boolean"
          },
          "materializationType": {
            "$ref": "#/components/schemas/MaterializationType"
          },
          "metadata": {
            "$ref": "#/components/schemas/SQLNodeMetadata"
          },
          "overrideSQL": {
            "type": "boolean"
          }
        },
        "required": [
          "config",
          "description",
          "isMultisource",
          "locationName",
          "materializationType",
          "metadata",
          "name",
          "nodeType",
          "overrideSQL"
        ]
      },
      "SQLNodeMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "appliedNodeTests": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/NodeTest"
            },
            "type": "array"
          },
          "columns": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ColumnMetadata"
            },
            "type": "array"
          },
          "cteString": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "destinationName": {
            "type": "string"
          },
          "enabledColumnTestIDs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mapping": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "object"
                },
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          },
          "materializationOption": {
            "type": "string"
          },
          "sourceMapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceMap"
            }
          }
        },
        "required": [
          "appliedNodeTests",
          "columns",
          "enabledColumnTestIDs",
          "sourceMapping"
        ]
      },
      "TestRunOrder": {
        "type": "string",
        "enum": [
          "After",
          "Before"
        ]
      },
      "UserConfig": {
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "object"
            },
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "NodeCreateRequest": {
        "title": "NodeCreateRequest",
        "x-stoplight": {
          "id": "9yshq5r4fwnsv"
        },
        "x-examples": {},
        "type": "object",
        "description": "You can either create a Coalesce out of the box Node Type or use the nodeTypeID of a package or custom Node in the nodeType field.",
        "required": [
          "nodeType",
          "predecessorNodeIDs"
        ],
        "properties": {
          "nodeType": {
            "enum": [
              "Dimension",
              "Fact",
              "Hub",
              "Link",
              "Satellite",
              "Source",
              "Stage",
              "View",
              "persistentStage",
              "string"
            ],
            "description": "Accepts any of the Coalesce out of the box Node Types, or you can enter a nodeTypeID for custom and package Nodes."
          },
          "predecessorNodeIDs": {
            "type": "array",
            "x-stoplight": {
              "id": "iw859pow0hipx"
            },
            "description": "Enter an array of Node IDs if they should be the predecessor to the newly created Node. Leave array empty if there is no predecessor.",
            "items": {
              "x-stoplight": {
                "id": "0nh687wa83933"
              },
              "type": "string"
            }
          }
        }
      },
      "DatabricksUserCredentials": {
        "title": "DatabricksUserCredentials",
        "x-stoplight": {
          "id": "o8t7toju0ls63"
        },
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "x-stoplight": {
              "id": "btr2hctlfjkea"
            }
          }
        }
      },
      "SnowflakeUserConnectionType": {
        "title": "SnowflakeUserConnectionType",
        "x-stoplight": {
          "id": "ntsijybn4mk4r"
        },
        "enum": [
          "Basic",
          "Cloud",
          "KeyPair",
          "OAuth"
        ]
      },
      "DatabricksUserConnectionType": {
        "title": "DatabricksUserConnectionType",
        "x-stoplight": {
          "id": "0a1gpcy2uqgst"
        },
        "enum": [
          "Token",
          "Cloud",
          "OAuthU2M",
          "OAuthM2M"
        ]
      },
      "SetNodeRequest": {
        "title": "SetNodeRequest",
        "type": "object",
        "oneOf": [
          {
            "type": "object",
            "title": "Source Node Set Request",
            "additionalProperties": true,
            "properties": {
              "description": {
                "type": "string",
                "description": "The Node description."
              },
              "id": {
                "type": "string",
                "description": "The Node ID."
              },
              "locationName": {
                "type": "string",
                "description": "The Storage Mapping location."
              },
              "name": {
                "type": "string",
                "description": "The Node name."
              },
              "nodeType": {
                "$ref": "#/components/schemas/NodeType"
              },
              "metadata": {
                "$ref": "#/components/schemas/SourceColumnMetadata"
              },
              "table": {
                "type": "string"
              }
            },
            "required": [
              "description",
              "id",
              "locationName",
              "metadata",
              "name",
              "nodeType",
              "table"
            ]
          },
          {
            "type": "object",
            "title": "SQL Node Set Request",
            "additionalProperties": true,
            "properties": {
              "description": {
                "type": "string",
                "description": "The Node description."
              },
              "id": {
                "type": "string",
                "description": "The Node ID."
              },
              "locationName": {
                "type": "string",
                "description": "The Storage Mapping location."
              },
              "name": {
                "type": "string",
                "description": "The Node name."
              },
              "nodeType": {
                "$ref": "#/components/schemas/NodeType"
              },
              "config": {
                "$ref": "#/components/schemas/UserConfig"
              },
              "isMultisource": {
                "type": "boolean"
              },
              "materializationType": {
                "$ref": "#/components/schemas/MaterializationType"
              },
              "metadata": {
                "$ref": "#/components/schemas/SQLNodeMetadata"
              },
              "overrideSQL": {
                "type": "boolean"
              }
            },
            "required": [
              "config",
              "description",
              "id",
              "isMultisource",
              "locationName",
              "materializationType",
              "metadata",
              "name",
              "nodeType",
              "overrideSQL"
            ]
          }
        ]
      }
    },
    "responses": {
      "SingleUserRoleResponseV2": {
        "description": "A single user's role information",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SingleUserRoleResponseV2"
            },
            "examples": {
              "Example 1": {
                "$ref": "#/components/examples/SingleUsersRole"
              }
            }
          }
        }
      },
      "UserRoleResponseV2": {
        "description": "Returns user role information for all users in an org.\n\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UserRoleResponseV2"
            },
            "examples": {
              "Example 1": {
                "$ref": "#/components/examples/UserRolesResponse"
              }
            }
          }
        }
      },
      "AllUsersResult": {
        "description": "The list of users",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "total": {
                  "type": "integer",
                  "description": "Number of records returned."
                },
                "startingFrom": {
                  "type": "string",
                  "description": "A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter."
                },
                "limit": {
                  "type": "integer",
                  "description": "The requested page size."
                },
                "next": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The field value representing the start of the next page of results."
                },
                "data": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "id": {
                        "type": "string"
                      },
                      "authDisabled": {
                        "type": "boolean"
                      },
                      "deleted": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "required": [
                "total",
                "limit",
                "next",
                "data"
              ]
            }
          }
        }
      },
      "GitAccountsListResponse": {
        "description": "A list of git accounts for an org.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "data"
              ],
              "properties": {
                "data": {
                  "type": "array",
                  "description": "Array of git accounts",
                  "items": {
                    "$ref": "#/components/schemas/GitAccountResponse"
                  }
                }
              }
            }
          }
        }
      },
      "GitAccountResponse": {
        "description": "The Git account.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "data"
              ],
              "properties": {
                "data": {
                  "$ref": "#/components/schemas/GitAccountResponse"
                }
              }
            }
          }
        }
      },
      "EnvironmentResponse": {
        "description": "Information about an environment.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Environment"
            },
            "examples": {
              "Environment Response": {
                "value": {
                  "accessUrl": "string",
                  "connectionAccount": "string",
                  "defaultStorageMapping": "string",
                  "description": "string",
                  "name": "string",
                  "oauthEnabled": true,
                  "tagColors": {
                    "backgroundColor": "string",
                    "textColor": "string"
                  },
                  "project": "string",
                  "createdAt": "2019-08-24T14:15:22Z",
                  "createdBy": {
                    "id": "string",
                    "firstName": "string",
                    "lastName": "string"
                  },
                  "updatedAt": "2019-08-24T14:15:22Z",
                  "currentGitBranch": "string",
                  "currentGitCommit": "string",
                  "currentGitURL": "string",
                  "currentlyRunningJobs": [
                    0
                  ],
                  "id": "string",
                  "deployedCommit": "string",
                  "status": "Deleting",
                  "runTimeParameters": {},
                  "currentMappings": {
                    "property1": {
                      "database": "string",
                      "schema": "string"
                    },
                    "property2": {
                      "database": "string",
                      "schema": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "EnvironmentsResponse": {
        "description": "A collection of environment information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/EnvironmentsResponse"
            },
            "examples": {
              "Environments Response": {
                "$ref": "#/components/examples/EnvironmentsResponse"
              }
            }
          }
        }
      },
      "JobSummaryResponse": {
        "description": "Information about a job.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Job"
            },
            "examples": {
              "Job Summary Response": {
                "value": {
                  "id": "string",
                  "name": "string",
                  "includeSelector": "string",
                  "excludeSelector": "string",
                  "createdAt": "2019-08-24T14:15:22Z",
                  "updatedAt": "2019-08-24T14:15:22Z"
                }
              }
            }
          }
        }
      },
      "ProjectsResponse": {
        "description": "",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "data": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      },
      "FivetranProjectsResponse": {
        "description": "A collection of project information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FivetranProjectsResponse"
            }
          }
        }
      },
      "FivetranJobsResponse": {
        "description": "A collection of Fivetran job information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FivetranJobsResponse"
            }
          }
        }
      },
      "FivetranJobHistoryResponse": {
        "description": "Fivetran job history data.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FivetranJobHistoryResponse"
            }
          }
        }
      },
      "FivetranRefreshJobResponse": {
        "description": "The Fivetran start job refresh response.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "data"
              ],
              "properties": {
                "data": {
                  "description": "Fivetran job history for the new run.",
                  "$ref": "#/components/schemas/FivetranJobHistory"
                }
              }
            }
          }
        }
      },
      "NodeResponse": {
        "description": "",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Node"
            },
            "examples": {
              "Node Response": {
                "value": {
                  "metadata": {
                    "columns": [
                      {
                        "appliedColumnTests": {
                          "property1": true,
                          "property2": true
                        },
                        "columnID": "string",
                        "columnReferences": [
                          {
                            "columnName": "string",
                            "tableName": "string"
                          }
                        ],
                        "config": {},
                        "dataType": "string",
                        "defaultValue": "string",
                        "description": "string",
                        "hashDetails": {
                          "hashAlgorithm": "MD5",
                          "hashType": "ChangeHash",
                          "hubHashes": [
                            {
                              "columnID": "string",
                              "nodeID": "string"
                            }
                          ]
                        },
                        "hashedColumns": [
                          {
                            "columnID": "string",
                            "nodeID": "string"
                          }
                        ],
                        "isBusinessKey": true,
                        "isChangeTracking": true,
                        "isSurrogateKey": true,
                        "keyColumnType": "None",
                        "name": "string",
                        "nullable": true,
                        "primaryKey": true,
                        "sources": [
                          {
                            "columnReferences": [
                              {
                                "columnID": "string",
                                "nodeID": "string"
                              }
                            ],
                            "transform": "string"
                          }
                        ],
                        "systemColumnType": "None",
                        "transform": "string",
                        "uniqueKey": true
                      }
                    ],
                    "join": {
                      "joinCondition": "string"
                    },
                    "sourceMapping": [
                      {
                        "aliases": {
                          "property1": "string",
                          "property2": "string"
                        },
                        "customSQL": {
                          "customSQL": "string"
                        },
                        "dependencies": [
                          {
                            "locationName": "string",
                            "nodeName": "string"
                          }
                        ],
                        "join": {
                          "joinCondition": "string"
                        },
                        "name": "string",
                        "noLinkRefs": [
                          {
                            "locationName": "string",
                            "nodeName": "string"
                          }
                        ]
                      }
                    ]
                  },
                  "table": "string",
                  "database": "string",
                  "description": "string",
                  "id": "string",
                  "locationName": "string",
                  "name": "string",
                  "nodeType": "Dimension",
                  "schema": "string"
                }
              }
            }
          }
        }
      },
      "NodesResponse": {
        "description": "",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/NodesResponse"
            },
            "examples": {
              "Nodes Response": {
                "value": {
                  "data": [
                    {
                      "database": "string",
                      "id": "string",
                      "locationName": "string",
                      "name": "string",
                      "nodeType": "Dimension",
                      "schema": "string"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "AllRegistryPackagesResult": {
        "description": "A list of all packages in the registry.",
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 0,
              "items": {
                "$ref": "#/components/schemas/RegistryPackageResult"
              }
            },
            "examples": {
              "All Registry Packages Result": {
                "value": [
                  {
                    "updatedBy": "string",
                    "updatedAt": "2019-08-24T14:15:22Z",
                    "name": "string",
                    "publisherID": "string",
                    "description": "string",
                    "org": "string",
                    "latestRelease": "string",
                    "overview": "string",
                    "featured": true,
                    "tags": [
                      "string"
                    ],
                    "certified": true,
                    "packageID": "string"
                  }
                ]
              }
            }
          }
        }
      },
      "AllRegistryPackageReleasesResult": {
        "description": "A list of all releases for a single package in the registry.",
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/RegistryPackageReleaseResult"
              }
            },
            "examples": {
              "All Registry Packages Release Result": {
                "value": [
                  {
                    "createdBy": "string",
                    "createdAt": "2019-08-24T14:15:22Z",
                    "updatedBy": "string",
                    "updatedAt": "2019-08-24T14:15:22Z",
                    "version": "string",
                    "changeLog": "string",
                    "releaseID": "string",
                    "storagePath": "string",
                    "privacy": "public"
                  }
                ]
              }
            }
          }
        }
      },
      "RegistryPackageResult": {
        "description": "A single package in the registry.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RegistryPackageResult"
            }
          }
        }
      },
      "RegistryPackageReleaseResult": {
        "description": "A single release for a single package in the registry.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RegistryPackageReleaseResult"
            }
          }
        }
      },
      "ProjectResponse": {
        "description": "Information about a project.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Project"
            }
          }
        }
      },
      "RunResultsResponse": {
        "description": "A collection of results for a deploy or refresh run.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RunResultsResponse"
            },
            "examples": {
              "Run Results Response": {
                "value": {
                  "data": [
                    {
                      "isRunning": true,
                      "name": "string",
                      "nodeID": "string",
                      "runState": "string",
                      "origin": "API",
                      "queryResults": [
                        {
                          "endTime": "2019-08-24T14:15:22Z",
                          "error": {
                            "errorString": "string",
                            "errorDetail": "string"
                          },
                          "isRunning": true,
                          "name": "string",
                          "queryID": "string",
                          "rowsDeleted": 0,
                          "rowsInserted": 0,
                          "rowsUpdated": 0,
                          "sql": "string",
                          "startTime": "2019-08-24T14:15:22Z",
                          "status": "string",
                          "success": true,
                          "warehouse": "string"
                        }
                      ],
                      "renderQueryResult": {
                        "endTime": "2019-08-24T14:15:22Z",
                        "error": {
                          "errorString": "string",
                          "errorDetail": "string"
                        },
                        "isRunning": true,
                        "name": "string",
                        "queryID": "string",
                        "rowsDeleted": 0,
                        "rowsInserted": 0,
                        "rowsUpdated": 0,
                        "sql": "string",
                        "startTime": "2019-08-24T14:15:22Z",
                        "status": "string",
                        "success": true,
                        "warehouse": "string"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "RunResponse": {
        "description": "A single run.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RunInfo"
            },
            "examples": {}
          }
        }
      },
      "RunsResponse": {
        "description": "A collection of runs.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RunsResponse"
            },
            "examples": {}
          }
        }
      },
      "DatabaseInfoResponse": {
        "description": "Information required to connect to the Coalesce database.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DatabaseInfoResponse"
            },
            "examples": {
              "Database Info Response": {
                "value": {
                  "apiKey": "string",
                  "authDomain": "string",
                  "projectId": "string",
                  "storageBucket": "string",
                  "messagingSenderId": "string",
                  "appId": "string",
                  "measurementId": "string",
                  "emulatorInfo": {
                    "auth": "string",
                    "firestore": "string",
                    "storage": "string"
                  }
                }
              }
            }
          }
        }
      },
      "UserEnvironmentRoleResponse": {
        "description": "A user's environment role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/EnvironmentRoles"
            },
            "examples": {
              "User Environment Role Response": {
                "value": {
                  "environmentRoles": [
                    "string"
                  ]
                }
              }
            }
          }
        }
      },
      "UserEnvironmentRolesResponse": {
        "description": "A collection of user environment role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UserEnvironmentRolesResponse"
            },
            "examples": {
              "User Environment Roles Response": {
                "value": [
                  {
                    "environmentRoles": [
                      "string"
                    ],
                    "user": {
                      "id": "string",
                      "firstName": "string",
                      "lastName": "string"
                    }
                  }
                ]
              }
            }
          }
        }
      },
      "UserProjectRoleResponse": {
        "description": "A user's project role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ProjectRoles"
            },
            "examples": {
              "User Project Role Response": {
                "value": {
                  "projectRoles": [
                    "string"
                  ],
                  "environments": {
                    "property1": {
                      "environmentRoles": [
                        "string"
                      ]
                    },
                    "property2": {
                      "environmentRoles": [
                        "string"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      },
      "UserProjectRolesResponse": {
        "description": "A collection of user project role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UserProjectRolesResponse"
            },
            "examples": {
              "User Project Roles Response": {
                "value": [
                  {
                    "projectRoles": [
                      "string"
                    ],
                    "environments": {
                      "property1": {
                        "environmentRoles": [
                          "string"
                        ]
                      },
                      "property2": {
                        "environmentRoles": [
                          "string"
                        ]
                      }
                    },
                    "user": {
                      "id": "string",
                      "firstName": "string",
                      "lastName": "string"
                    }
                  }
                ]
              }
            }
          }
        }
      },
      "UserRoleResponse": {
        "description": "A user's role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OrgRoles"
            },
            "examples": {
              "User Role Response": {
                "value": {
                  "organizationRoles": [
                    "string"
                  ],
                  "projects": {
                    "property1": {
                      "projectRoles": [
                        "string"
                      ],
                      "environments": {
                        "property1": {
                          "environmentRoles": [
                            "string"
                          ]
                        },
                        "property2": {
                          "environmentRoles": [
                            "string"
                          ]
                        }
                      }
                    },
                    "property2": {
                      "projectRoles": [
                        "string"
                      ],
                      "environments": {
                        "property1": {
                          "environmentRoles": [
                            "string"
                          ]
                        },
                        "property2": {
                          "environmentRoles": [
                            "string"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "UserRolesResponse": {
        "description": "A collection of user role information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UserRolesResponse"
            },
            "examples": {
              "User Roles Response": {
                "value": [
                  {
                    "organizationRoles": [
                      "string"
                    ],
                    "projects": {
                      "property1": {
                        "projectRoles": [
                          "string"
                        ],
                        "environments": {
                          "property1": {
                            "environmentRoles": [
                              "string"
                            ]
                          },
                          "property2": {
                            "environmentRoles": [
                              "string"
                            ]
                          }
                        }
                      },
                      "property2": {
                        "projectRoles": [
                          "string"
                        ],
                        "environments": {
                          "property1": {
                            "environmentRoles": [
                              "string"
                            ]
                          },
                          "property2": {
                            "environmentRoles": [
                              "string"
                            ]
                          }
                        }
                      }
                    },
                    "user": {
                      "id": "string",
                      "firstName": "string",
                      "lastName": "string"
                    }
                  }
                ]
              }
            }
          }
        }
      },
      "AlreadyExistsError": {
        "description": "The requested resource already exists.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Example 1": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "BadGatewayError": {
        "description": "The server received an error from an upstream system.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Bad Gateway Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "ForbiddenError": {
        "description": "The client is not permitted to perform the requested operation.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Forbidden Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "GatewayTimeoutError": {
        "description": "The server did not receive a response in time from an upstream system.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Gateway Timeout Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "InternalServerError": {
        "description": "The server encountered an unexpected condition that prevented it from fulfilling the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Internal Server Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "InvalidRequestError": {
        "description": "The request was invalid.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Invalid Request Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "NotFoundError": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Not Found Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "ServiceUnavailableError": {
        "description": "The service is currently unavailable.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Service Unavailable Error": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "User lacks authorization to perform this action.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Unauthorized": {
                "$ref": "#/components/examples/ErrorResponse"
              }
            }
          }
        }
      }
    },
    "parameters": {
      "orderByDirection": {
        "name": "orderByDirection",
        "description": "The sort order for query results.",
        "in": "query",
        "schema": {
          "description": "The sort order for query results.",
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ],
          "default": "desc"
        },
        "required": false
      },
      "context": {
        "description": "Contextual information required to identify a particular secret.",
        "name": "context",
        "in": "path",
        "schema": {
          "type": "string"
        },
        "required": true
      },
      "limit": {
        "name": "limit",
        "in": "query",
        "schema": {
          "type": "integer",
          "default": 100,
          "minimum": 1,
          "maximum": 500
        },
        "description": "The maximum number of items to return. Between 1 and 500."
      },
      "startingFrom": {
        "name": "startingFrom",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter.",
        "allowReserved": true
      },
      "orderBy": {
        "name": "orderBy",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string",
          "default": "id",
          "example": "id"
        },
        "description": "The field to order the results by. Only `id` allowed."
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "examples": {
      "EnvironmentsResponse": {
        "value": {
          "data": [
            {
              "accessUrl": "string",
              "connectionAccount": "string",
              "defaultStorageMapping": "string",
              "description": "string",
              "name": "string",
              "oauthEnabled": true,
              "tagColors": {
                "backgroundColor": "string",
                "textColor": "string"
              },
              "project": "string",
              "createdAt": "2019-08-24T14:15:22Z",
              "createdBy": {
                "id": "string",
                "firstName": "string",
                "lastName": "string"
              },
              "updatedAt": "2019-08-24T14:15:22Z",
              "currentGitBranch": "string",
              "currentGitCommit": "string",
              "currentGitURL": "string",
              "currentlyRunningJobs": [
                0
              ],
              "id": "string",
              "deployedCommit": "string",
              "status": "Deleting",
              "runTimeParameters": {},
              "currentMappings": {
                "property1": {
                  "database": "string",
                  "schema": "string"
                },
                "property2": {
                  "database": "string",
                  "schema": "string"
                }
              }
            }
          ]
        }
      },
      "ErrorResponse": {
        "value": {
          "error": {
            "errorString": "string",
            "errorDetail": "string"
          }
        }
      },
      "UserRolesResponse": {
        "value": {
          "userRoles": [
            {
              "userID": "XV801jcwjFeKCvfqwFLOhVk2NEF2",
              "organizationRole": "contributor",
              "projectRoles": {
                "7e854ee0-4b7f-46ae-b79c-ace867941f11": "member"
              },
              "environmentRoles": {
                "34": "reader"
              }
            },
            {
              "userID": "boC3UgRYtaMjxEqv2bxPugrNCJx1",
              "organizationRole": "admin",
              "projectRoles": {
                "45a4f214-8a3e-48c7-8c6b-ff284798de4c": "admin",
                "7e854ee0-4b7f-46ae-b79c-ace867941f11": "admin",
                "0d42aaab-895d-446a-9014-f4256b575ce2": "admin",
                "0a57c272-d602-4f5d-af23-8be96aa4aa5d": "admin",
                "77b53b16-baa6-49a0-9d97-a515cae50b28": "admin",
                "76f1cc6f-e1de-4380-8004-1c3b2e5191fd": "admin",
                "02c1274e-05a3-4039-a787-dd25b71950d9": "admin",
                "46b15547-25c3-4890-9b9e-772bbc780d0e": "admin",
                "6e948d90-2ef9-4680-9ed1-0600a3601c84": "admin"
              },
              "environmentRoles": {
                "3": "admin",
                "33": "admin",
                "34": "admin",
                "39": "admin",
                "40": "admin",
                "41": "admin",
                "42": "admin",
                "48": "admin",
                "52": "admin",
                "53": "admin",
                "54": "admin",
                "56": "admin",
                "67": "admin"
              }
            },
            {
              "userID": "hBaH2n5qnAWqsUvHvsoBbChqsPf1",
              "organizationRole": "member"
            }
          ]
        }
      },
      "SingleUsersRole": {
        "value": {
          "userID": "boC3UgRYtaMjxEqv2bxPugrNCJx1",
          "organizationRole": "admin",
          "projectRoles": {
            "45a4f214-8a3e-48c7-8c6b-ff284798de4c": "admin",
            "7e854ee0-4b7f-46ae-b79c-ace867941f11": "admin",
            "0d42aaab-895d-446a-9014-f4256b575ce2": "admin",
            "0a57c272-d602-4f5d-af23-8be96aa4aa5d": "admin",
            "77b53b16-baa6-49a0-9d97-a515cae50b28": "admin",
            "76f1cc6f-e1de-4380-8004-1c3b2e5191fd": "admin",
            "02c1274e-05a3-4039-a787-dd25b71950d9": "admin",
            "46b15547-25c3-4890-9b9e-772bbc780d0e": "admin",
            "6e948d90-2ef9-4680-9ed1-0600a3601c84": "admin"
          },
          "environmentRoles": {
            "3": "admin",
            "33": "admin",
            "34": "admin",
            "39": "admin",
            "40": "admin",
            "41": "admin",
            "42": "admin",
            "48": "admin",
            "52": "admin",
            "53": "admin",
            "54": "admin",
            "56": "admin",
            "67": "admin"
          }
        }
      }
    }
  },
  "paths": {
    "/api/v1/environments": {
      "summary": "Environments",
      "parameters": [],
      "get": {
        "summary": "List Environments",
        "description": "Retrieve a list of Environments you can access. Use the optional project query parameter to return only Environments in one Project. When project is set, paging totals and next cursors reflect the filtered set.\n\n",
        "operationId": "GetEnvironments",
        "parameters": [
          {
            "name": "detail",
            "description": "Include the full detail of the environments.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "project",
            "description": "Filter results to Environments in this Project ID. Omit or pass an empty value to return Environments across all Projects the caller can access.",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/startingFrom"
          },
          {
            "$ref": "#/components/parameters/orderBy"
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/EnvironmentsResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Environments"
        ]
      },
      "post": {
        "summary": "Create Environment",
        "description": "Create a new Environment in a Project. Include project, name, and oauthEnabled in the request body, plus platform connection settings for Snowflake or Databricks. This operation configures connection settings only. Add warehouse passwords or OAuth refresh tokens in the Coalesce App under Build Settings > Environments > User Credentials after creation.",
        "operationId": "CreateEnvironment",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Environments"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnvironmentCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/EnvironmentResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/environments/{environmentID}": {
      "summary": "Environment",
      "parameters": [
        {
          "name": "environmentID",
          "description": "The environment ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "Get Environment",
        "description": "Retrieve details for a specific Environment by ID.\n",
        "operationId": "GetEnvironment",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/EnvironmentResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Environments"
        ]
      },
      "patch": {
        "summary": "Update Environment",
        "description": "Partially update an Environment by ID. Omitted fields are unchanged; null clears nullable fields. This operation configures connection metadata only. Add warehouse passwords or OAuth refresh tokens in the Coalesce App under Build Settings > Environments > User Credentials.",
        "operationId": "UpdateEnvironment",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Environments"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnvironmentPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/EnvironmentResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "delete": {
        "summary": "Delete Environment",
        "description": "Delete an Environment by ID. This operation is destructive. Ensure the Environment has no active runs or dependent Job Schedules before you delete it. The caller needs permission to delete the target Environment.",
        "operationId": "DeleteEnvironment",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Environments"
        ],
        "responses": {
          "204": {
            "description": "The Environment was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/environments/{environmentID}/nodes": {
      "summary": "Nodes",
      "parameters": [
        {
          "name": "environmentID",
          "description": "The environment ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "List Environment Nodes",
        "description": "Retrieve a list of all available Environment Nodes.",
        "operationId": "GetNodes",
        "parameters": [
          {
            "name": "detail",
            "description": "Include the full detail of the nodes.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "skipParsing",
            "description": "Set to `true` to skip parsing Node transforms for a faster response. Use `skipParsing=true` on its own or together with `detail=true`. Both combinations are supported. With `detail=true`, responses include full node detail but omit parsed transform data.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/startingFrom"
          },
          {
            "$ref": "#/components/parameters/orderBy"
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/NodesResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Nodes"
        ]
      }
    },
    "/api/v1/environments/{environmentID}/nodes/{nodeID}": {
      "summary": "Node",
      "parameters": [
        {
          "name": "environmentID",
          "description": "The environment ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "nodeID",
          "description": "The node ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "Get Environment Node",
        "description": "Retrieve details for a specific Node by ID.",
        "operationId": "GetNode",
        "parameters": [
          {
            "name": "detail",
            "description": "Include the full detail of the node.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "skipParsing",
            "description": "Set to `true` to skip parsing Node transforms for a faster response. Use `skipParsing=true` on its own or together with `detail=true`. Both combinations are supported. With `detail=true`, responses include full node detail but omit parsed transform data.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/NodeResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Environments"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceID}/nodes": {
      "summary": "Nodes",
      "parameters": [
        {
          "name": "workspaceID",
          "description": "The workspace ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "List Workspace Nodes",
        "description": "Retrieve a list of all available Workspace Nodes.\n",
        "operationId": "GetWorkspaceNodes",
        "parameters": [
          {
            "name": "detail",
            "description": "Include the full detail of the nodes.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "skipParsing",
            "description": "Set to `true` to skip parsing Node transforms for a faster response. Use `skipParsing=true` on its own or together with `detail=true`. Both combinations are supported. With `detail=true`, responses include full node detail but omit parsed transform data.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/startingFrom"
          },
          {
            "$ref": "#/components/parameters/orderBy"
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "description": "A collection of nodes for an environment.",
                      "anyOf": [
                        {
                          "type": "array",
                          "title": "Node summary response",
                          "items": {
                            "type": "object",
                            "required": [
                              "database",
                              "id",
                              "locationName",
                              "name",
                              "nodeType",
                              "schema"
                            ],
                            "properties": {
                              "database": {
                                "type": "string",
                                "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                              },
                              "id": {
                                "type": "string",
                                "description": "The Coalesce Node ID."
                              },
                              "locationName": {
                                "type": "string",
                                "description": "The Storage Mapping location."
                              },
                              "name": {
                                "type": "string",
                                "description": "The Node name."
                              },
                              "nodeType": {
                                "$ref": "#/components/schemas/NodeType"
                              },
                              "schema": {
                                "type": "string",
                                "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                              }
                            }
                          }
                        },
                        {
                          "type": "array",
                          "title": "Node response",
                          "items": {
                            "type": "object",
                            "oneOf": [
                              {
                                "type": "object",
                                "title": "Source Node",
                                "additionalProperties": true,
                                "required": [
                                  "database",
                                  "description",
                                  "locationName",
                                  "metadata",
                                  "name",
                                  "nodeType",
                                  "schema",
                                  "table"
                                ],
                                "properties": {
                                  "metadata": {
                                    "$ref": "#/components/schemas/SourceColumnMetadata"
                                  },
                                  "table": {
                                    "type": "string"
                                  },
                                  "database": {
                                    "type": "string",
                                    "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "The Node description."
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "The Node ID."
                                  },
                                  "locationName": {
                                    "type": "string",
                                    "description": "The Storage Mapping location."
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The Node name."
                                  },
                                  "nodeType": {
                                    "$ref": "#/components/schemas/NodeType"
                                  },
                                  "schema": {
                                    "type": "string",
                                    "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "SQL Node",
                                "additionalProperties": true,
                                "required": [
                                  "config",
                                  "database",
                                  "description",
                                  "isMultisource",
                                  "locationName",
                                  "materializationType",
                                  "metadata",
                                  "name",
                                  "nodeType",
                                  "overrideSQL",
                                  "schema"
                                ],
                                "properties": {
                                  "config": {
                                    "$ref": "#/components/schemas/UserConfig"
                                  },
                                  "isMultisource": {
                                    "type": "boolean"
                                  },
                                  "materializationType": {
                                    "$ref": "#/components/schemas/MaterializationType"
                                  },
                                  "metadata": {
                                    "$ref": "#/components/schemas/SQLNodeMetadata"
                                  },
                                  "overrideSQL": {
                                    "type": "boolean"
                                  },
                                  "database": {
                                    "type": "string",
                                    "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "The Node description."
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "The Node ID."
                                  },
                                  "locationName": {
                                    "type": "string",
                                    "description": "The Storage Mapping location."
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The Node name."
                                  },
                                  "nodeType": {
                                    "$ref": "#/components/schemas/NodeType"
                                  },
                                  "schema": {
                                    "type": "string",
                                    "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                                  }
                                }
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "total": {
                      "type": "integer",
                      "description": "Number of records returned."
                    },
                    "startingFrom": {
                      "type": "string",
                      "description": "A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter."
                    },
                    "limit": {
                      "type": "integer",
                      "description": "Limit of the records returned. Some endpoints have `limit` as a query parameter. Default is 100."
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "The field value representing the start of the next page of results."
                    },
                    "orderBy": {
                      "type": "string",
                      "description": "The field to order the results by. Only `id` allowed."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Nodes"
        ]
      },
      "post": {
        "operationId": "CreateNode",
        "summary": "Create Workspace Node",
        "description": "Create a new Workspace Node with the specified configuration.\n\nTo update or change the Node data use the [Set Node](/docs/api/coalesce/set-workspace-node) endpoint.\n\n## Get the Node Type\n\nYou can get the `nodeType` in two ways:\n\n- Look up the `nodeType` in the Coalesce App. Go to **Build Settings > Node Types**, then click **View**. At the top you'll see the `nodeTypeID`. This is your `nodeType`. If the is this: `nodeTypeID: externalDataPackage:::372`, you'll use: `nodeType: externalDataPackage:::372`.\n\n<img src=\"/img/docs-images/nodetype_in_app.png\" alt=\"\" className=\"mdImages\" width=\"50%\"/>\n\n- You can use the List Environment Nodes or List Workspace Nodes to get a list of existing Nodes. This endpoint only returns in use Nodes and Node types. For example, if you have Node type ML Forecast and ML Anomaly Detection installed, but you are only using ML Forecast, ML Anomaly Node type won't return in the API results.\n\n## Using `predecessorNodeIDs`\n\nYou can leave it blank, enter a single Node ID or multiple Node IDs.\n\n**Blank**:\n<img src=\"/img/docs-images/blank_predecessor.png\" alt=\"\" className=\"mdImages\"/>\n\n**Single Node**\n<img src=\"/img/docs-images/single_predecessor.png\" alt=\"\" className=\"mdImages\"/>\n\n**Multiple Nodes**\n`Region` and `DT_WRK_PART` Node IDs were used.\n<img src=\"/img/docs-images/multiple_predecessor.png\" alt=\"\" className=\"mdImages\"/>\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NodeCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/NodeResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Nodes"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/api/v1/workspaces/{workspaceID}/nodes/{nodeID}": {
      "summary": "Node",
      "parameters": [
        {
          "name": "workspaceID",
          "description": "The Workspace ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "nodeID",
          "description": "The Node ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "Get Workspace Node",
        "description": "Retrieve details for a specific Workspace Node by ID.",
        "operationId": "GetWorkspaceNode",
        "parameters": [
          {
            "name": "detail",
            "description": "Include the full detail of the node.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "skipParsing",
            "description": "Set to `true` to skip parsing Node transforms for a faster response. Use `skipParsing=true` on its own or together with `detail=true`. Both combinations are supported. With `detail=true`, responses include full node detail but omit parsed transform data.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "oneOf": [
                    {
                      "type": "object",
                      "title": "Source Node",
                      "additionalProperties": true,
                      "required": [
                        "database",
                        "description",
                        "locationName",
                        "metadata",
                        "name",
                        "nodeType",
                        "schema",
                        "table"
                      ],
                      "properties": {
                        "metadata": {
                          "$ref": "#/components/schemas/SourceColumnMetadata"
                        },
                        "table": {
                          "type": "string"
                        },
                        "database": {
                          "type": "string",
                          "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                        },
                        "description": {
                          "type": "string",
                          "description": "The Node description."
                        },
                        "id": {
                          "type": "string",
                          "description": "The Node ID."
                        },
                        "locationName": {
                          "type": "string",
                          "description": "The Storage Mapping location."
                        },
                        "name": {
                          "type": "string",
                          "description": "The Node name."
                        },
                        "nodeType": {
                          "$ref": "#/components/schemas/NodeType"
                        },
                        "schema": {
                          "type": "string",
                          "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "title": "SQL Node",
                      "additionalProperties": true,
                      "required": [
                        "config",
                        "database",
                        "description",
                        "isMultisource",
                        "locationName",
                        "materializationType",
                        "metadata",
                        "name",
                        "nodeType",
                        "overrideSQL",
                        "schema"
                      ],
                      "properties": {
                        "config": {
                          "$ref": "#/components/schemas/UserConfig"
                        },
                        "isMultisource": {
                          "type": "boolean"
                        },
                        "materializationType": {
                          "$ref": "#/components/schemas/MaterializationType"
                        },
                        "metadata": {
                          "$ref": "#/components/schemas/SQLNodeMetadata"
                        },
                        "overrideSQL": {
                          "type": "boolean"
                        },
                        "database": {
                          "type": "string",
                          "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                        },
                        "description": {
                          "type": "string",
                          "description": "The Node description."
                        },
                        "id": {
                          "type": "string",
                          "description": "The Node ID."
                        },
                        "locationName": {
                          "type": "string",
                          "description": "The Storage Mapping location."
                        },
                        "name": {
                          "type": "string",
                          "description": "The Node name."
                        },
                        "nodeType": {
                          "$ref": "#/components/schemas/NodeType"
                        },
                        "schema": {
                          "type": "string",
                          "description": "The database and schema fields in the response will reflect the values mapped to the storage location for the node in your workspace. If the storage mappings are not configured or are invalid, these fields will be returned as empty strings."
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Nodes"
        ]
      },
      "put": {
        "summary": "Set Node",
        "description": "Replace all fields of a Workspace Node.",
        "operationId": "SetWorkspaceNode",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetNodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/NodeResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Nodes"
        ]
      },
      "delete": {
        "summary": "Delete Workspace Node",
        "description": "Delete a Workspace Node.",
        "operationId": "DeleteWorkspaceNode",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Nodes"
        ],
        "responses": {
          "204": {
            "description": "The Node was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/runs": {
      "summary": "Runs",
      "parameters": [],
      "get": {
        "summary": "List Runs",
        "description": "Retrieve a list of all available Runs.\n",
        "operationId": "GetRuns",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "description": "The maximum number of runs to return.",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000,
              "default": 25
            },
            "required": false
          },
          {
            "name": "startingFrom",
            "description": "The starting run ID, runStartTime, or runEndTime (exclusive) for paging the query results. A cursor that tells the API where to begin returning results. Use it to continue pagination from a specific point in the dataset. This value must come from the `next` field in the previous response. If you define a query cursor using `startingFrom`, you must also include the `orderBy` parameter. ",
            "in": "query",
            "allowReserved": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "string",
                  "format": "date-time"
                }
              ]
            },
            "required": false
          },
          {
            "name": "orderBy",
            "description": "The field used to order results.",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/RunsOrderBy"
            },
            "required": false
          },
          {
            "$ref": "#/components/parameters/orderByDirection"
          },
          {
            "name": "projectID",
            "description": "One or more project IDs to filter the query results.",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "style": "form",
            "explode": true,
            "required": false
          },
          {
            "name": "runType",
            "description": "One or more run types to filter the query results. Pass a single value or multiple values (repeated query parameters or an array). When passing multiple values, up to 10 per request.",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RunType"
                },
                {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "$ref": "#/components/schemas/RunType"
                  }
                }
              ]
            },
            "style": "form",
            "explode": true,
            "required": false
          },
          {
            "name": "runStatus",
            "description": "One or more status values to filter the query results. Pass a single value or multiple values (repeated query parameters or an array). When passing multiple values, up to 10 per request.",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RunStatus"
                },
                {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "$ref": "#/components/schemas/RunStatus"
                  }
                }
              ]
            },
            "style": "form",
            "explode": true,
            "required": false
          },
          {
            "name": "environmentID",
            "description": "One or more environment IDs to filter the query results. Pass a single value or multiple values (repeated query parameters or an array). When passing multiple values, up to 10 per request.",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "style": "form",
            "explode": true,
            "required": false
          },
          {
            "name": "detail",
            "description": "Include the full detail of the run.",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/RunsResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Runs"
        ]
      }
    },
    "/api/v1/runs/{runID}": {
      "summary": "Run",
      "parameters": [],
      "get": {
        "summary": "Get Run",
        "description": "Retrieve details for a specific Run by ID.",
        "operationId": "GetRun",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runID",
            "description": "The run ID.",
            "in": "path",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/RunResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Runs"
        ]
      }
    },
    "/api/v1/runs/{runID}/results": {
      "summary": "Run Results",
      "parameters": [],
      "get": {
        "summary": "List Run Results",
        "description": "Get a collection of the results of a deploy or refresh run",
        "operationId": "GetRunResults",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runID",
            "description": "The run ID.",
            "in": "path",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/RunResultsResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Runs"
        ]
      }
    },
    "/api/v1/gitAccounts": {
      "summary": "Git account management",
      "parameters": [
        {
          "name": "accountOwner",
          "description": "- A requester can run all Git operations against their own account. GET, POST, GET by ID, PATCH, DELETE </br>  `accountOwner` provided:</br> - Org admins: Returns the requested Git account. </br> - Other users: Only able to request their own Git account.  </br></br>  `accountOwner` not provided: </br> - If no `accountOwner` is provided, will fallback to the requester's account. </br> - Org admins: Returns all users' Git accounts. </br> - Other users: Returns only the requester's Git.",
          "in": "query",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "List Org Git Accounts",
        "description": "Returns a list of all the Git accounts in an organization.",
        "operationId": "ListGitAccounts",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A list of Git accounts for an org.\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Array of git accounts",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "gitAccountName",
                          "gitAuthorEmail",
                          "gitAuthorName",
                          "gitUsername",
                          "accountOwner",
                          "createdBy",
                          "updatedBy",
                          "createdAt",
                          "updatedAt"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "8734df52-b88e-444a-9595-9884cd214028",
                            "description": "The Git account ID assigned by Coalesce."
                          },
                          "gitAccountName": {
                            "type": "string",
                            "example": "My Organization",
                            "description": "The account name is usually your Coalesce Org name."
                          },
                          "gitAuthorEmail": {
                            "type": "string",
                            "example": "hello@coalesce.io",
                            "description": "The email of the user making the commits using the version control account."
                          },
                          "gitAuthorName": {
                            "type": "string",
                            "example": "Coalesce Support",
                            "description": "The name of the user making the commits using the version control account."
                          },
                          "gitUsername": {
                            "type": "string",
                            "example": "coalescecio",
                            "description": "The username from your version control provider."
                          },
                          "accountOwner": {
                            "type": "object",
                            "required": [
                              "id",
                              "firstName",
                              "lastName",
                              "email"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "BGx8EQ1NlLXxMFwFfV5brGgLj813",
                                "description": "The user ID of the account owner"
                              },
                              "firstName": {
                                "type": "string",
                                "example": "Coalesce",
                                "description": "First name of the account owner"
                              },
                              "lastName": {
                                "type": "string",
                                "example": "Support",
                                "description": "Last name of the account owner"
                              },
                              "email": {
                                "type": "string",
                                "format": "email",
                                "example": "hello@coalesce.io",
                                "description": "Email of the account owner"
                              }
                            }
                          },
                          "createdBy": {
                            "type": "object",
                            "required": [
                              "id",
                              "firstName",
                              "lastName",
                              "email"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "BGx8EQ1NlLXxMFwFfV5brGgLj813",
                                "description": "The user ID who created this account"
                              },
                              "firstName": {
                                "type": "string",
                                "example": "Coalesce",
                                "description": "First name of the user who created this account"
                              },
                              "lastName": {
                                "type": "string",
                                "example": "Support",
                                "description": "Last name of the user who created this account"
                              },
                              "email": {
                                "type": "string",
                                "format": "email",
                                "example": "hello@coalesce.io",
                                "description": "Email of the user who created this account"
                              }
                            }
                          },
                          "updatedBy": {
                            "type": "object",
                            "required": [
                              "id",
                              "firstName",
                              "lastName",
                              "email"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "BGx8EQ1NlLXxMFwFfV5brGgLj813",
                                "description": "The user ID who last updated this account"
                              },
                              "firstName": {
                                "type": "string",
                                "example": "Coalesce",
                                "description": "First name of the user who last updated this account"
                              },
                              "lastName": {
                                "type": "string",
                                "example": "Support",
                                "description": "Last name of the user who last updated this account"
                              },
                              "email": {
                                "type": "string",
                                "format": "email",
                                "example": "hello@coalesce.io",
                                "description": "Email of the user who last updated this account"
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2025-02-04T20:52:37.312Z",
                            "description": "When the Git account was created"
                          },
                          "updatedAt": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2025-02-04T20:52:37.312Z",
                            "description": "When the Git account was last updated"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Git Accounts"
        ]
      },
      "post": {
        "summary": "Create Git Account",
        "description": "Create a new Git account.",
        "operationId": "CreateGitAccount",
        "tags": [
          "Git Accounts"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GitAccountCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/GitAccountResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/gitAccounts/{gitAccountID}": {
      "summary": "Git account management",
      "parameters": [
        {
          "name": "gitAccountID",
          "description": "The Git account ID. A requester can run all Git operations against their own account. Org admins can access all Git accounts.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "accountOwner",
          "in": "query",
          "schema": {
            "type": "string"
          },
          "required": false,
          "description": "- A requester can run all Git operations against their own account. GET, POST, GET by ID, PATCH, DELETE </br>  `accountOwner` provided:</br> - Org admins: Returns the requested Git account. </br> - Other users: Only able to request their own Git account.  </br></br>  `accountOwner` not provided: </br> - If no `accountOwner` is provided, will fallback to the requester's account. </br> - Org admins: Returns all users' Git accounts. </br> - Other users: Returns only the requester's Git."
        }
      ],
      "get": {
        "summary": "Get a Git Account",
        "description": "Return information for a single Git account.",
        "operationId": "GetGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GitAccountResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Git Accounts"
        ]
      },
      "patch": {
        "summary": "Update a Git Account",
        "description": "Update an existing Git Account.\n",
        "operationId": "UpdateGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GitAccountUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/GitAccountResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Git Accounts"
        ]
      },
      "delete": {
        "summary": "Delete Git Account",
        "description": "Delete an existing Git account.\n",
        "operationId": "DeleteGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "The Git account was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Git Accounts"
        ]
      }
    },
    "/api/v1/projects": {
      "summary": "Projects",
      "get": {
        "summary": "List Projects",
        "description": "Returns a list of Projects in an Org.\n",
        "operationId": "GetProjectsInOrg",
        "parameters": [
          {
            "name": "includeWorkspaces",
            "description": "Whether or not to include nested workspace data for all projects.",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false
          },
          {
            "name": "includeJobs",
            "description": "Whether or not to include nested job data for all workspaces in the projects.",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ProjectsResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "post": {
        "summary": "Create Project",
        "description": "Create a new Project.",
        "operationId": "CreateProject",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/ProjectResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/projects/{projectID}": {
      "summary": "Projects",
      "parameters": [
        {
          "name": "projectID",
          "description": "The project ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "includeWorkspaces",
          "description": "Whether or not to include nested workspace data for all projects.",
          "in": "query",
          "schema": {
            "type": "boolean"
          },
          "required": false
        },
        {
          "name": "includeJobs",
          "description": "Whether or not to include nested job data for all workspaces in the projects.",
          "in": "query",
          "schema": {
            "type": "boolean"
          },
          "required": false
        }
      ],
      "get": {
        "summary": "Get Project",
        "description": "Return information for a single Project.",
        "operationId": "GetProjectInOrg",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "patch": {
        "summary": "Update a project",
        "description": "Update a existing Project.\n",
        "operationId": "UpdateProject",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The project was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "delete": {
        "summary": "Delete Project",
        "description": "Delete a Project.",
        "operationId": "DeleteProject",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects"
        ],
        "responses": {
          "204": {
            "description": "The project was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/projects/{projectID}/gitAccounts": {
      "summary": "Projects Git Accounts",
      "parameters": [
        {
          "name": "projectID",
          "description": "The project ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "List Project Git Accounts",
        "description": "Return a list of all Git accounts for a Project.",
        "operationId": "ListProjectGitAccounts",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects",
          "Git Accounts"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectGitAccountsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/projects/{projectID}/gitAccounts/{userID}": {
      "summary": "Projects Git Accounts",
      "parameters": [
        {
          "name": "projectID",
          "description": "The project ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "userID",
          "description": "The user ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "summary": "Get Project Git Account",
        "description": "Returns a user's Git account in a Project.",
        "operationId": "GetProjectGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects",
          "Git Accounts"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectGitAccountResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "put": {
        "summary": "Set Project Git Account",
        "description": "Add a users Git account to a Project.",
        "operationId": "SetProjectGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects",
          "Git Accounts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectGitAccountSetRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The user's git account for the project was set successfully."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      },
      "delete": {
        "summary": "Remove Project Git Account",
        "description": "Remove a user's Git account from a Project.",
        "operationId": "DeleteProjectGitAccount",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Projects",
          "Git Accounts"
        ],
        "responses": {
          "204": {
            "description": "The user's git account for the project was deleted successfully."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        }
      }
    },
    "/api/v1/users": {
      "summary": "All users in the current org",
      "get": {
        "description": "Returns a list of all users in an Org.",
        "operationId": "ListOrgUsers",
        "parameters": [
          {
            "name": "limit",
            "description": "The maximum number of users to return.",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 50
            },
            "required": false
          },
          {
            "name": "startingFrom",
            "description": "The cursor point for paging the query results.",
            "in": "query",
            "allowReserved": true,
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderBy",
            "description": "The field to order the results by.",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "id"
              ],
              "default": "id"
            },
            "required": false
          }
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AllUsersResult"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "summary": "List All Organization Users",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v2/userRoles": {
      "summary": "User Roles",
      "get": {
        "summary": "List All User Roles In Organization",
        "description": "Get all user roles in the organization.",
        "operationId": "ListAllUserRoleInOrg",
        "parameters": [
          {
            "name": "projectID",
            "description": "Return only user roles pertaining to the specified project.",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "environmentID",
            "description": "Return only user roles pertaining to the specified environment.",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/UserRoleResponseV2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v2/userRoles/{userID}": {
      "summary": "Single User roles",
      "parameters": [
        {
          "name": "userID",
          "description": "The user ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "projectID",
          "description": "The project ID.",
          "in": "query",
          "schema": {
            "type": "string"
          },
          "required": false
        },
        {
          "name": "environmentID",
          "description": "The environment ID.",
          "in": "query",
          "schema": {
            "type": "string"
          },
          "required": false
        }
      ],
      "get": {
        "summary": "Get a Single User's Role",
        "description": "Retrieve a specific user's role.",
        "operationId": "GetSingleUserRoles",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SingleUserRoleResponseV2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v2/userRoles/{userID}/organizationRole": {
      "summary": "Organization User Roles",
      "parameters": [
        {
          "name": "userID",
          "description": "The user ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "put": {
        "summary": "Set User's Organization Role",
        "description": "Creates or updates a user's organization role. \n\n:::info\n\nAvailable for organization admins only.\n\n:::",
        "operationId": "SetUsersOrgRole",
        "requestBody": {
          "description": "The user's organization role.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "organizationRole"
                ],
                "properties": {
                  "organizationRole": {
                    "enum": [
                      "admin",
                      "contributor",
                      "member"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/SingleUserRoleResponseV2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v2/userRoles/{userID}/projects/{projectID}": {
      "summary": "Project User Roles",
      "parameters": [
        {
          "name": "userID",
          "description": "The user ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "projectID",
          "description": "The project ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "delete": {
        "summary": "Delete User's Project Roles",
        "description": "Deletes all project roles for a user.\n\n:::info\n\nAvailable for organization admins only.\n\n:::",
        "operationId": "DeleteUserProjectRole",
        "responses": {
          "204": {
            "description": "The user's project roles were successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      },
      "put": {
        "summary": "Set User's Project Role",
        "description": "Creates or updates a user's project role.\n\n:::info\n\nAvailable for organization admins only.\n\n:::",
        "operationId": "SetUsersProjectRole",
        "requestBody": {
          "description": "The user project role",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "projectRole"
                ],
                "properties": {
                  "projectRole": {
                    "enum": [
                      "member",
                      "admin",
                      "contributor",
                      "architect"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/SingleUserRoleResponseV2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v2/userRoles/{userID}/environments/{environmentID}": {
      "summary": "Environment User Roles",
      "parameters": [
        {
          "name": "userID",
          "description": "The user ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        },
        {
          "name": "environmentID",
          "description": "The environment ID.",
          "in": "path",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "delete": {
        "summary": "Delete Environment User Roles",
        "description": "Deletes all environment roles for a user.",
        "operationId": "DeleteUserEnvironmentRole",
        "responses": {
          "204": {
            "description": "The user's environment role was successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      },
      "put": {
        "summary": "Set User's Environment Role",
        "description": "Creates or updates a user's environment role.",
        "operationId": "SetUsersEnvironmentRole",
        "requestBody": {
          "description": "The user environment role.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "environmentRole": {
                    "description": "The environment role to set",
                    "enum": [
                      "reader",
                      "admin"
                    ]
                  },
                  "setDefaultProjectRole": {
                    "description": "If the user doesn't have a role for the environment's project, they will be assigned the role specified in setDefaultProjectRole. If setDefaultProjectRole is not specified and the user lacks a project role, attempting to assign an environment role will result in an HTTP 403 error.",
                    "enum": [
                      "member",
                      "admin",
                      "architect",
                      "contributor"
                    ]
                  }
                },
                "required": [
                  "environmentRole"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/SingleUserRoleResponseV2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenError"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundError"
          },
          "409": {
            "$ref": "#/components/responses/AlreadyExistsError"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "502": {
            "$ref": "#/components/responses/BadGatewayError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeoutError"
          }
        },
        "tags": [
          "Users"
        ]
      }
    }
  },
  "tags": [
    {
      "name": "Environments"
    },
    {
      "name": "Nodes"
    },
    {
      "name": "Runs"
    },
    {
      "name": "Git Accounts"
    },
    {
      "name": "Users"
    },
    {
      "name": "Projects"
    }
  ]
}