Codacy Repositories API
Add, follow, unfollow, and synchronize repositories with their Git provider, and retrieve per-repository analysis state including the first-analysis progress overview.
Add, follow, unfollow, and synchronize repositories with their Git provider, and retrieve per-repository analysis state including the first-analysis progress overview.
openapi: 3.0.1
info:
title: Codacy API
description: >-
Codacy API v3 for managing organizations, repositories, issues, pull
requests, coverage, security, and quality settings on the Codacy automated
code quality and security platform. All authenticated endpoints use an
account API token passed in the api-token header.
termsOfService: https://www.codacy.com/terms
contact:
name: Codacy Support
url: https://www.codacy.com
email: support@codacy.com
version: '3.0'
servers:
- url: https://api.codacy.com/api/v3
description: Codacy Cloud API v3
security:
- api-token: []
tags:
- name: Account
description: Authenticated user account and API token operations.
- name: Organizations
description: Git provider organizations the account belongs to.
- name: Repositories
description: Repository management and analysis state.
- name: Issues
description: Static analysis issues for a repository.
- name: Pull Requests
description: Pull request analysis, files, issues, and AI review.
- name: Coverage
description: Code coverage for pull requests and files.
- name: Quality Settings
description: Quality and security gating settings for commits and pull requests.
- name: Security
description: Repository SSH key administration.
paths:
/user:
get:
operationId: getUser
tags:
- Account
summary: Get the authenticated user.
responses:
'200':
description: The authenticated user.
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
/user/organizations/{provider}:
get:
operationId: listOrganizations
tags:
- Organizations
summary: List the account's organizations for a Git provider.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/limit'
responses:
'200':
description: A paginated list of organizations.
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationListResponse'
/user/organizations/{provider}/{remoteOrganizationName}:
get:
operationId: getUserOrganization
tags:
- Organizations
summary: Get a single organization the account belongs to.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
responses:
'200':
description: The organization.
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories:
get:
operationId: listOrganizationRepositoriesWithAnalysis
tags:
- Repositories
summary: List an organization's repositories with their analysis state.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/limit'
responses:
'200':
description: A paginated list of repositories with analysis.
content:
application/json:
schema:
$ref: '#/components/schemas/RepositoryWithAnalysisListResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}:
get:
operationId: getRepositoryWithAnalysis
tags:
- Repositories
summary: Get a repository with its analysis state.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
responses:
'200':
description: The repository with analysis.
content:
application/json:
schema:
$ref: '#/components/schemas/RepositoryWithAnalysisResponse'
/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/follow:
post:
operationId: followAddedRepository
tags:
- Repositories
summary: Follow a repository already added to Codacy.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
responses:
'204':
description: The repository is now followed.
delete:
operationId: unfollowRepository
tags:
- Repositories
summary: Unfollow a repository.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
responses:
'204':
description: The repository is no longer followed.
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/issues/search:
post:
operationId: searchRepositoryIssues
tags:
- Issues
summary: Search a repository's issues.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/limit'
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRepositoryIssuesBody'
responses:
'200':
description: A paginated list of matching issues.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRepositoryIssuesListResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/issues/{issueId}:
get:
operationId: getIssue
tags:
- Issues
summary: Get a single issue.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- name: issueId
in: path
required: true
schema:
type: string
responses:
'200':
description: The issue.
content:
application/json:
schema:
$ref: '#/components/schemas/CommitIssueResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests:
get:
operationId: listRepositoryPullRequests
tags:
- Pull Requests
summary: List a repository's pull requests with analysis.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/limit'
responses:
'200':
description: A paginated list of pull requests with analysis.
content:
application/json:
schema:
$ref: '#/components/schemas/PullRequestWithAnalysisListResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests/{pullRequestNumber}:
get:
operationId: getRepositoryPullRequest
tags:
- Pull Requests
summary: Get a single pull request with analysis.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/pullRequestNumber'
responses:
'200':
description: The pull request with analysis.
content:
application/json:
schema:
$ref: '#/components/schemas/PullRequestWithAnalysisResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests/{pullRequestNumber}/issues:
get:
operationId: listPullRequestIssues
tags:
- Pull Requests
summary: List the issues introduced or fixed in a pull request.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/pullRequestNumber'
responses:
'200':
description: A list of pull request issues.
content:
application/json:
schema:
$ref: '#/components/schemas/PullRequestIssuesListResponse'
/analysis/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests/{pullRequestNumber}/ai-reviewer/trigger:
post:
operationId: triggerPullRequestAiReview
tags:
- Pull Requests
summary: Trigger the AI Reviewer on a pull request.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/pullRequestNumber'
responses:
'204':
description: The AI review was triggered.
/coverage/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests/{pullRequestNumber}:
get:
operationId: getRepositoryPullRequestCoverage
tags:
- Coverage
summary: Get coverage for a pull request.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/pullRequestNumber'
responses:
'200':
description: Pull request coverage.
content:
application/json:
schema:
$ref: '#/components/schemas/PullRequestWithCoverageResponse'
/coverage/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/pull-requests/{pullRequestNumber}/files:
get:
operationId: getRepositoryPullRequestFilesCoverage
tags:
- Coverage
summary: Get per-file coverage for a pull request.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
- $ref: '#/components/parameters/pullRequestNumber'
responses:
'200':
description: Per-file pull request coverage.
content:
application/json:
schema:
$ref: '#/components/schemas/PullRequestFilesCoverageResponse'
/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/settings/quality/pull-requests:
get:
operationId: getPullRequestQualitySettings
tags:
- Quality Settings
summary: Get the pull request quality gate settings.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
responses:
'200':
description: The pull request quality settings.
content:
application/json:
schema:
$ref: '#/components/schemas/QualitySettingsResponse'
put:
operationId: updatePullRequestQualitySettings
tags:
- Quality Settings
summary: Update the pull request quality gate settings.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QualitySettings'
responses:
'200':
description: The updated pull request quality settings.
content:
application/json:
schema:
$ref: '#/components/schemas/QualitySettingsResponse'
/organizations/{provider}/{remoteOrganizationName}/repositories/{repositoryName}/settings/stored-ssh-key:
get:
operationId: getRepositoryPublicSshKey
tags:
- Security
summary: Get the repository's stored public SSH key.
parameters:
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/remoteOrganizationName'
- $ref: '#/components/parameters/repositoryName'
responses:
'200':
description: The stored public SSH key.
content:
application/json:
schema:
$ref: '#/components/schemas/SshKeyResponse'
components:
securitySchemes:
api-token:
type: apiKey
in: header
name: api-token
description: Account API token created in your Codacy account settings.
parameters:
provider:
name: provider
in: path
required: true
description: Git provider code (gh, ghe, gl, gle, bb, bbe).
schema:
type: string
enum: [gh, ghe, gl, gle, bb, bbe]
remoteOrganizationName:
name: remoteOrganizationName
in: path
required: true
description: Organization name on the Git provider.
schema:
type: string
repositoryName:
name: repositoryName
in: path
required: true
description: Repository name on the Git provider.
schema:
type: string
pullRequestNumber:
name: pullRequestNumber
in: path
required: true
description: Pull request number on the Git provider.
schema:
type: integer
format: int64
cursor:
name: cursor
in: query
required: false
description: Cursor for the next page of results.
schema:
type: string
limit:
name: limit
in: query
required: false
description: Maximum number of items to return (max 1000).
schema:
type: integer
default: 100
maximum: 1000
schemas:
PaginationInfo:
type: object
properties:
cursor:
type: string
limit:
type: integer
total:
type: integer
User:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
email:
type: string
mainEmail:
type: string
created:
type: string
format: date-time
UserResponse:
type: object
properties:
data:
$ref: '#/components/schemas/User'
Organization:
type: object
properties:
identifier:
type: string
name:
type: string
provider:
type: string
remoteIdentifier:
type: string
joinMode:
type: string
OrganizationResponse:
type: object
properties:
data:
$ref: '#/components/schemas/Organization'
OrganizationListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Organization'
pagination:
$ref: '#/components/schemas/PaginationInfo'
Repository:
type: object
properties:
repositoryId:
type: integer
format: int64
provider:
type: string
owner:
type: string
name:
type: string
fullPath:
type: string
visibility:
type: string
defaultBranch:
type: object
properties:
name:
type: string
branchId:
type: integer
format: int64
RepositoryWithAnalysis:
type: object
properties:
repository:
$ref: '#/components/schemas/Repository'
grade:
type: integer
gradeLetter:
type: string
issuesPercentage:
type: number
coverage:
type: object
properties:
filesUncovered:
type: integer
filesWithLowCoverage:
type: integer
coveragePercentage:
type: number
lastAnalysedCommit:
type: string
RepositoryWithAnalysisResponse:
type: object
properties:
data:
$ref: '#/components/schemas/RepositoryWithAnalysis'
RepositoryWithAnalysisListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RepositoryWithAnalysis'
pagination:
$ref: '#/components/schemas/PaginationInfo'
SearchRepositoryIssuesBody:
type: object
properties:
branchName:
type: string
categories:
type: array
items:
type: string
levels:
type: array
items:
type: string
enum: [Info, Warning, Error]
languages:
type: array
items:
type: string
patterns:
type: array
items:
type: string
authorEmails:
type: array
items:
type: string
CommitIssue:
type: object
properties:
issueId:
type: string
commitIssue:
type: object
properties:
patternInfo:
type: object
properties:
id:
type: string
category:
type: string
subCategory:
type: string
level:
type: string
severityLevel:
type: string
title:
type: string
filePath:
type: string
lineNumber:
type: integer
message:
type: string
language:
type: string
toolInfo:
type: object
properties:
name:
type: string
uuid:
type: string
CommitIssueResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CommitIssue'
SearchRepositoryIssuesListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CommitIssue'
pagination:
$ref: '#/components/schemas/PaginationInfo'
PullRequest:
type: object
properties:
id:
type: integer
format: int64
number:
type: integer
updated:
type: string
format: date-time
status:
type: string
title:
type: string
owner:
$ref: '#/components/schemas/GitUser'
originBranch:
type: string
targetBranch:
type: string
GitUser:
type: object
properties:
username:
type: string
name:
type: string
email:
type: string
avatarUrl:
type: string
PullRequestWithAnalysis:
type: object
properties:
pullRequest:
$ref: '#/components/schemas/PullRequest'
isUpToStandards:
type: boolean
isAnalysing:
type: boolean
newIssues:
type: integer
fixedIssues:
type: integer
deltaCoverageWithDecimals:
type: number
coverage:
type: object
properties:
deltaCoverage:
type: number
diffCoverage:
type: number
PullRequestWithAnalysisResponse:
type: object
properties:
data:
$ref: '#/components/schemas/PullRequestWithAnalysis'
PullRequestWithAnalysisListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PullRequestWithAnalysis'
pagination:
$ref: '#/components/schemas/PaginationInfo'
PullRequestIssuesListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CommitIssue'
pagination:
$ref: '#/components/schemas/PaginationInfo'
PullRequestWithCoverageResponse:
type: object
properties:
data:
type: object
properties:
coverage:
type: object
properties:
deltaCoverage:
type: number
diffCoverage:
type: number
coverageStatus:
type: string
FileCoverage:
type: object
properties:
filePath:
type: string
totalCoverage:
type: number
diffCoverage:
type: number
coverageStatus:
type: string
PullRequestFilesCoverageResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/FileCoverage'
pagination:
$ref: '#/components/schemas/PaginationInfo'
QualitySettings:
type: object
properties:
issueThreshold:
type: object
properties:
threshold:
type: integer
minimumSeverity:
type: string
enum: [Info, Warning, Error]
securityIssueThreshold:
type: integer
coverageThresholdWithDecimals:
type: number
diffCoverageThreshold:
type: integer
duplicationThreshold:
type: integer
complexityThreshold:
type: integer
QualitySettingsResponse:
type: object
properties:
data:
$ref: '#/components/schemas/QualitySettings'
SshKeyResponse:
type: object
properties:
data:
type: object
properties:
publicKey:
type: string