openapi: 3.1.0 info: title: Helios API description: API documentation for the Helios application server. contact: name: Turker Koc email: turker.koc@tum.de license: name: MIT License url: https://github.com/ls1intum/Helios/blob/main/LICENSE version: 0.0.1 servers: - url: / description: Default Server URL paths: /api/workflows/{workflowId}/label: put: tags: - workflow-controller operationId: updateWorkflowLabel parameters: - name: workflowId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: string enum: - NONE - TEST required: true responses: "200": description: OK /api/settings/{repositoryId}/settings: get: tags: - git-repo-settings-controller operationId: getGitRepoSettings parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/GitRepoSettingsDto" put: tags: - git-repo-settings-controller operationId: updateGitRepoSettings parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: $ref: "#/components/schemas/GitRepoSettingsDto" required: true responses: "200": description: OK content: application/json: schema: type: object /api/settings/{repositoryId}/groups/update: put: tags: - git-repo-settings-controller operationId: updateWorkflowGroups parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowGroupDto" required: true responses: "200": description: OK /api/environments/{id}: get: tags: - environment-controller operationId: getEnvironmentById parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/EnvironmentDto" put: tags: - environment-controller operationId: updateEnvironment parameters: - name: id in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: $ref: "#/components/schemas/EnvironmentDto" required: true responses: "200": description: OK content: application/json: schema: type: object /api/environments/{id}/unlock: put: tags: - environment-controller operationId: unlockEnvironment parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: object /api/environments/{id}/lock: put: tags: - environment-controller operationId: lockEnvironment parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: object /api/environments/{id}/extend-lock: put: tags: - environment-controller operationId: extendEnvironmentLock parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: object /api/workflows/repository/{repositoryId}/sync: post: tags: - workflow-controller operationId: syncWorkflowsByRepositoryId parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 responses: "200": description: OK /api/settings/{repositoryId}/groups/create: post: tags: - git-repo-settings-controller operationId: createWorkflowGroup parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 requestBody: content: application/json: schema: $ref: "#/components/schemas/WorkflowGroupDto" required: true responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/WorkflowGroupDto" /api/release-candidate: get: tags: - release-candidate-controller operationId: getAllReleaseCandidates responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/ReleaseCandidateInfoDto" post: tags: - release-candidate-controller operationId: createReleaseCandidate requestBody: content: application/json: schema: $ref: "#/components/schemas/ReleaseCandidateCreateDto" required: true responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ReleaseCandidateInfoDto" /api/release-candidate/{name}/evaluate/{isWorking}: post: tags: - release-candidate-controller operationId: evaluate parameters: - name: name in: path required: true schema: type: string - name: isWorking in: path required: true schema: type: boolean responses: "200": description: OK /api/pullrequests/{pr}/pin: post: tags: - pull-request-controller operationId: setPrPinnedByNumber parameters: - name: pr in: path required: true schema: type: integer format: int64 - name: isPinned in: query required: true schema: type: boolean responses: "200": description: OK /api/deployments/deploy: post: tags: - deployment-controller operationId: deployToEnvironment requestBody: content: application/json: schema: $ref: "#/components/schemas/DeployRequest" required: true responses: "200": description: OK content: application/json: schema: type: string /api/branches/repository/{repoId}/pin: post: tags: - branch-controller operationId: setBranchPinnedByRepositoryIdAndNameAndUserId parameters: - name: repoId in: path required: true schema: type: integer format: int64 - name: name in: query required: true schema: type: string - name: isPinned in: query required: true schema: type: boolean responses: "200": description: OK /status/health: get: tags: - status-controller operationId: healthCheck responses: "200": description: OK content: application/json: schema: type: string /api/workflows: get: tags: - workflow-controller operationId: getAllWorkflows responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowDto" /api/workflows/{id}: get: tags: - workflow-controller operationId: getWorkflowById parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/WorkflowDto" /api/workflows/state/{state}: get: tags: - workflow-controller operationId: getWorkflowsByState parameters: - name: state in: path required: true schema: type: string enum: - ACTIVE - DELETED - DISABLED_FORK - DISABLED_INACTIVITY - DISABLED_MANUALLY - UNKNOWN responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowDto" /api/workflows/repository/{repositoryId}: get: tags: - workflow-controller operationId: getWorkflowsByRepositoryId parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowDto" /api/workflows/pr/{pullRequestId}: get: tags: - workflow-run-controller operationId: getLatestWorkflowRunsByPullRequestIdAndHeadCommit parameters: - name: pullRequestId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowRunDto" /api/workflows/branch: get: tags: - workflow-run-controller operationId: getLatestWorkflowRunsByBranchAndHeadCommit parameters: - name: branch in: query required: true schema: type: string responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowRunDto" /api/user-permissions: get: tags: - user-permissions-controller operationId: getUserPermissions responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/GitHubRepositoryRoleDto" /api/tests/pr/{pullRequestId}: get: tags: - test-result-controller operationId: getLatestTestResultsByPullRequestId parameters: - name: pullRequestId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/TestResultsDto" /api/tests/branch: get: tags: - test-result-controller operationId: getLatestTestResultsByBranch parameters: - name: branch in: query required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/TestResultsDto" /api/settings/{repositoryId}/groups: get: tags: - git-repo-settings-controller operationId: getGroupsWithWorkflows parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/WorkflowGroupDto" /api/repository: get: tags: - repository-controller operationId: getAllRepositories responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/RepositoryInfoDto" /api/repository/{id}: get: tags: - repository-controller operationId: getRepositoryById parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/RepositoryInfoDto" /api/release-candidate/{name}: get: tags: - release-candidate-controller operationId: getReleaseCandidateByName parameters: - name: name in: path required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ReleaseCandidateDetailsDto" delete: tags: - release-candidate-controller operationId: deleteReleaseCandidateByName parameters: - name: name in: path required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ReleaseCandidateInfoDto" /api/release-candidate/newcommits: get: tags: - release-candidate-controller operationId: getCommitsSinceLastReleaseCandidate parameters: - name: branch in: query required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/CommitsSinceReleaseCandidateDto" /api/pullrequests: get: tags: - pull-request-controller operationId: getAllPullRequests responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/PullRequestBaseInfoDto" /api/pullrequests/{id}: get: tags: - pull-request-controller operationId: getPullRequestById parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PullRequestInfoDto" /api/pullrequests/repository/{repoId}/pr/{number}: get: tags: - pull-request-controller operationId: getPullRequestByRepositoryIdAndNumber parameters: - name: repoId in: path required: true schema: type: integer format: int64 - name: number in: path required: true schema: type: integer format: int32 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PullRequestInfoDto" /api/pullrequests/repository/{id}: get: tags: - pull-request-controller operationId: getPullRequestByRepositoryId parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/PullRequestInfoDto" /api/environments: get: tags: - environment-controller operationId: getAllEnvironments responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/EnvironmentDto" /api/environments/userLocking: get: tags: - environment-controller operationId: getEnvironmentsByUserLocking responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/EnvironmentLockHistoryDto" /api/environments/repository/{repositoryId}: get: tags: - environment-controller operationId: getEnvironmentsByRepositoryId parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/EnvironmentDto" /api/environments/environment/{environmentId}/lockHistory: get: tags: - environment-controller operationId: getLockHistoryByEnvironmentId parameters: - name: environmentId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/EnvironmentLockHistoryDto" /api/environments/enabled: get: tags: - environment-controller operationId: getAllEnabledEnvironments responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/EnvironmentDto" /api/deployments: get: tags: - deployment-controller operationId: getAllDeployments responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/DeploymentDto" /api/deployments/{id}: get: tags: - deployment-controller operationId: getDeploymentById parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/DeploymentDto" /api/deployments/environment/{environmentId}: get: tags: - deployment-controller operationId: getDeploymentsByEnvironmentId parameters: - name: environmentId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/DeploymentDto" /api/deployments/environment/{environmentId}/latest: get: tags: - deployment-controller operationId: getLatestDeploymentByEnvironmentId parameters: - name: environmentId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/DeploymentDto" /api/deployments/environment/{environmentId}/activity-history: get: tags: - deployment-controller operationId: getActivityHistoryByEnvironmentId parameters: - name: environmentId in: path required: true schema: type: integer format: int64 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/ActivityHistoryDto" /api/commits/repository/{repoId}/commit/{sha}: get: tags: - commit-controller operationId: getCommitByRepositoryIdAndName parameters: - name: repoId in: path required: true schema: type: integer format: int64 - name: sha in: path required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/CommitInfoDto" /api/branches: get: tags: - branch-controller operationId: getAllBranches responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/BranchInfoDto" /api/branches/repository/{repoId}/branch: get: tags: - branch-controller operationId: getBranchByRepositoryIdAndName parameters: - name: repoId in: path required: true schema: type: integer format: int64 - name: name in: query required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/BranchDetailsDto" /api/settings/{repositoryId}/groups/{groupId}: delete: tags: - git-repo-settings-controller operationId: deleteWorkflowGroup parameters: - name: repositoryId in: path required: true schema: type: integer format: int64 - name: groupId in: path required: true schema: type: integer format: int64 responses: "200": description: OK components: schemas: GitRepoSettingsDto: type: object properties: id: type: integer format: int64 lockExpirationThreshold: type: integer format: int64 lockReservationThreshold: type: integer format: int64 WorkflowGroupDto: type: object properties: id: type: integer format: int64 name: type: string orderIndex: type: integer format: int32 memberships: type: array items: $ref: "#/components/schemas/WorkflowMembershipDto" required: - id - name - orderIndex WorkflowMembershipDto: type: object properties: workflowId: type: integer format: int64 orderIndex: type: integer format: int32 required: - orderIndex - workflowId EnvironmentDeployment: type: object properties: id: type: integer format: int64 url: type: string state: type: string enum: - REQUESTED - PENDING - WAITING - SUCCESS - ERROR - FAILURE - IN_PROGRESS - QUEUED - INACTIVE - UNKNOWN statusesUrl: type: string sha: type: string ref: type: string task: type: string workflowRunHtmlUrl: type: string releaseCandidateName: type: string prName: type: string user: $ref: "#/components/schemas/UserInfoDto" pullRequestNumber: type: integer format: int32 createdAt: type: string format: date-time updatedAt: type: string format: date-time type: type: string enum: - GITHUB - HELIOS required: - id - type EnvironmentDto: type: object properties: repository: $ref: "#/components/schemas/RepositoryInfoDto" id: type: integer format: int64 name: type: string locked: type: boolean url: type: string htmlUrl: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time enabled: type: boolean installedApps: type: array items: type: string description: type: string serverUrl: type: string statusCheckType: type: string enum: - HTTP_STATUS - ARTEMIS_INFO statusUrl: type: string latestDeployment: $ref: "#/components/schemas/EnvironmentDeployment" latestStatus: $ref: "#/components/schemas/EnvironmentStatusDto" lockedBy: $ref: "#/components/schemas/UserInfoDto" lockedAt: type: string format: date-time type: type: string enum: - TEST - STAGING - PRODUCTION deploymentWorkflow: $ref: "#/components/schemas/WorkflowDto" lockExpirationThreshold: type: integer format: int64 lockReservationThreshold: type: integer format: int64 lockWillExpireAt: type: string format: date-time lockReservationWillExpireAt: type: string format: date-time required: - id - name EnvironmentStatusDto: type: object properties: id: type: integer format: int64 success: type: boolean httpStatusCode: type: integer format: int32 checkedAt: type: string format: date-time checkType: type: string enum: - HTTP_STATUS - ARTEMIS_INFO metadata: type: object additionalProperties: type: object required: - checkType - checkedAt - httpStatusCode - id - success RepositoryInfoDto: type: object properties: id: type: integer format: int64 name: type: string nameWithOwner: type: string description: type: string htmlUrl: type: string required: - htmlUrl - id - name - nameWithOwner UserInfoDto: type: object properties: id: type: integer format: int64 login: type: string avatarUrl: type: string name: type: string htmlUrl: type: string required: - avatarUrl - htmlUrl - id - login - name WorkflowDto: type: object properties: id: type: integer format: int64 repository: $ref: "#/components/schemas/RepositoryInfoDto" name: type: string path: type: string fileNameWithExtension: type: string state: type: string enum: - ACTIVE - DELETED - DISABLED_FORK - DISABLED_INACTIVITY - DISABLED_MANUALLY - UNKNOWN url: type: string htmlUrl: type: string badgeUrl: type: string label: type: string enum: - NONE - TEST createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - label - name - path - state ReleaseCandidateCreateDto: type: object properties: name: type: string commitSha: type: string branchName: type: string required: - branchName - commitSha - name ReleaseCandidateInfoDto: type: object properties: name: type: string commitSha: type: string branchName: type: string DeployRequest: type: object properties: environmentId: type: integer format: int64 branchName: type: string commitSha: type: string required: - branchName - environmentId WorkflowRunDto: type: object properties: id: type: integer format: int64 name: type: string displayTitle: type: string status: type: string enum: - QUEUED - IN_PROGRESS - COMPLETED - ACTION_REQUIRED - CANCELLED - FAILURE - NEUTRAL - SKIPPED - STALE - SUCCESS - TIMED_OUT - REQUESTED - WAITING - PENDING - UNKNOWN workflowId: type: integer format: int64 conclusion: type: string enum: - ACTION_REQUIRED - CANCELLED - FAILURE - NEUTRAL - SUCCESS - SKIPPED - STALE - TIMED_OUT - STARTUP_FAILURE - UNKNOWN htmlUrl: type: string label: type: string enum: - NONE - TEST testProcessingStatus: type: string enum: - PROCESSING - PROCESSED - FAILED required: - displayTitle - htmlUrl - id - label - name - status - workflowId GitHubRepositoryRoleDto: type: object properties: permission: type: string enum: - ADMIN - WRITE - READ - NONE roleName: type: string TestCaseDto: type: object properties: id: type: integer format: int64 name: type: string className: type: string status: type: string enum: - PASSED - FAILED - ERROR - SKIPPED previousStatus: type: string enum: - PASSED - FAILED - ERROR - SKIPPED time: type: number format: double message: type: string stackTrace: type: string errorType: type: string required: - className - id - name - status - time TestResultsDto: type: object properties: testSuites: type: array items: $ref: "#/components/schemas/TestSuiteDto" isProcessing: type: boolean required: - testSuites TestSuiteDto: type: object properties: id: type: integer format: int64 name: type: string timestamp: type: string format: date-time tests: type: integer format: int32 failures: type: integer format: int32 errors: type: integer format: int32 skipped: type: integer format: int32 time: type: number format: double testCases: type: array items: $ref: "#/components/schemas/TestCaseDto" required: - errors - failures - id - name - skipped - testCases - tests - time - timestamp BranchInfoDto: type: object properties: name: type: string commitSha: type: string aheadBy: type: integer format: int32 behindBy: type: integer format: int32 isDefault: type: boolean isProtected: type: boolean isPinned: type: boolean updatedAt: type: string format: date-time updatedBy: $ref: "#/components/schemas/UserInfoDto" repository: $ref: "#/components/schemas/RepositoryInfoDto" required: - commitSha - name CommitInfoDto: type: object properties: sha: type: string author: $ref: "#/components/schemas/UserInfoDto" message: type: string authoredAt: type: string format: date-time repository: $ref: "#/components/schemas/RepositoryInfoDto" required: - sha ReleaseCandidateDeploymentDto: type: object properties: id: type: integer format: int64 type: type: string enum: - GITHUB - HELIOS environmentId: type: integer format: int64 required: - environmentId - id - type ReleaseCandidateDetailsDto: type: object properties: name: type: string commit: $ref: "#/components/schemas/CommitInfoDto" branch: $ref: "#/components/schemas/BranchInfoDto" deployments: type: array items: $ref: "#/components/schemas/ReleaseCandidateDeploymentDto" evaluations: type: array items: $ref: "#/components/schemas/ReleaseCandidateEvaluationDto" createdBy: $ref: "#/components/schemas/UserInfoDto" createdAt: type: string format: date-time required: - branch - commit - createdAt - createdBy - deployments - evaluations - name ReleaseCandidateEvaluationDto: type: object properties: user: $ref: "#/components/schemas/UserInfoDto" isWorking: type: boolean required: - isWorking - user CommitsSinceReleaseCandidateDto: type: object properties: aheadBy: type: integer format: int32 behindBy: type: integer format: int32 commits: type: array items: $ref: "#/components/schemas/CompareCommitInfoDto" compareUrl: type: string required: - aheadBy - behindBy - commits CompareCommitInfoDto: type: object properties: sha: type: string message: type: string authorName: type: string authorEmail: type: string url: type: string required: - authorEmail - authorName - message - sha - url LabelInfoDto: type: object properties: id: type: integer format: int64 description: The unique identifier of the label name: type: string description: The name of the label example: bug color: type: string description: "The color of the label as a 6-character hex code (without\ \ #)" example: ff0000 repository: $ref: "#/components/schemas/RepositoryInfoDto" description: The repository associated with this label required: - color - id - name PullRequestBaseInfoDto: type: object properties: id: type: integer format: int64 number: type: integer format: int32 title: type: string state: type: string enum: - OPEN - CLOSED isDraft: type: boolean isMerged: type: boolean isPinned: type: boolean htmlUrl: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time author: $ref: "#/components/schemas/UserInfoDto" labels: type: array items: $ref: "#/components/schemas/LabelInfoDto" assignees: type: array items: $ref: "#/components/schemas/UserInfoDto" reviewers: type: array items: $ref: "#/components/schemas/UserInfoDto" required: - htmlUrl - id - isDraft - isMerged - number - state - title PullRequestInfoDto: type: object properties: id: type: integer format: int64 number: type: integer format: int32 title: type: string state: type: string enum: - OPEN - CLOSED isDraft: type: boolean isMerged: type: boolean commentsCount: type: integer format: int32 author: $ref: "#/components/schemas/UserInfoDto" labels: type: array items: $ref: "#/components/schemas/LabelInfoDto" assignees: type: array items: $ref: "#/components/schemas/UserInfoDto" repository: $ref: "#/components/schemas/RepositoryInfoDto" additions: type: integer format: int32 deletions: type: integer format: int32 headSha: type: string headRefName: type: string headRefRepoNameWithOwner: type: string mergedAt: type: string format: date-time closedAt: type: string format: date-time htmlUrl: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - additions - commentsCount - deletions - headRefName - headRefRepoNameWithOwner - headSha - htmlUrl - id - isDraft - isMerged - number - state - title EnvironmentLockHistoryDto: type: object properties: id: type: integer format: int64 lockedBy: $ref: "#/components/schemas/UserInfoDto" unlockedBy: $ref: "#/components/schemas/UserInfoDto" lockedAt: type: string format: date-time unlockedAt: type: string format: date-time environment: $ref: "#/components/schemas/EnvironmentDto" required: - id DeploymentDto: type: object properties: id: type: integer format: int64 repository: $ref: "#/components/schemas/RepositoryInfoDto" url: type: string state: type: string enum: - PENDING - WAITING - SUCCESS - ERROR - FAILURE - IN_PROGRESS - QUEUED - INACTIVE - UNKNOWN statusesUrl: type: string sha: type: string ref: type: string task: type: string environment: $ref: "#/components/schemas/EnvironmentDto" user: $ref: "#/components/schemas/UserInfoDto" createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - environment - id - ref - sha - statusesUrl - task - url ActivityHistoryDto: type: object properties: type: type: string id: type: integer format: int64 repository: $ref: "#/components/schemas/RepositoryInfoDto" state: type: string enum: - PENDING - WAITING - SUCCESS - ERROR - FAILURE - IN_PROGRESS - QUEUED - INACTIVE - UNKNOWN sha: type: string ref: type: string user: $ref: "#/components/schemas/UserInfoDto" user2: $ref: "#/components/schemas/UserInfoDto" timestamp: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time BranchDetailsDto: type: object properties: name: type: string commitSha: type: string aheadBy: type: integer format: int32 behindBy: type: integer format: int32 isDefault: type: boolean isProtected: type: boolean releaseCandidateName: type: string updatedAt: type: string format: date-time updatedBy: $ref: "#/components/schemas/UserInfoDto" repository: $ref: "#/components/schemas/RepositoryInfoDto" required: - commitSha - name