@managed-api/github-core v2.1.0
Managed API for GitHub
Managed API for GitHub is an API Client for GitHub by Adaptavist primarily designed for the use in ScriptRunner Connect. You can read more about Managed APIs here.
This is a runtime agnostic version of the Managed API (with core suffix) that makes it easy to port it to any runtime you may want to use this Managed API on.
Platform specific ports
Supported API calls
- fetch
- Branch
- Commit
- Deployment
- Git
- Issue
- Organization
- Project
- Pull
- Release
- Repository
- createDispatchEvent
- createOrganizationRepository
- createRepositoryForAuthenticatedUser
- createRepositoryFromTemplate
- deleteRepository
- disableAutomatedSecurityFixes
- disableVulnerabilityAlerts
- enableAutomatedSecurityFixes
- enableVulnerabilityAlerts
- getCodeOwnersErrors
- getContributors
- getLanguages
- getOrganizationRepositories
- getPublicRepositories
- getRepositoriesForAuthenticatedUser
- getRepositoriesForUser
- getRepository
- getTags
- getTeams
- getTopics
- isVulnerabilityAlertsEnabled
- replaceTopics
- transferRepository
- updateRepository
- Collaborator
- Content
- Fork
- Search
- User
Porting to other runtimes
While the primary reason for creating Managed APIs was to use them in ScriptRunner Connect runtime, then you can easily port them to any runtime of your choosing.
You can do so by extending the *Core Managed API class where you'll be asked to provide implementation for getPlatformImplementation function. In this implementation you have to specify how to perform buffer encoding/decoding operations and how to perform HTTP calls:
{
buffer: {
encode(input: string): ArrayBuffer;
decode(input: ArrayBuffer): string;
},
performHttpCall(request: Request): Promise<Response>
}Here is an example how to create a Node port of the Managed API:
import { GitHubApiCore } from "@managed-api/github-core";
import { PlatformImplementation, Request, Response, Headers } from "@managed-api/commons-core";
import fetch from "node-fetch";
export class GitHubApi extends GitHubApiCore {
constructor(private baseUrl: string, private authToken: string) {
super();
}
protected getPlatformImplementation(): PlatformImplementation {
return {
buffer: {
encode: (input) => Buffer.from(input, 'utf-8'),
decode: (input) => Buffer.from(input).toString('utf-8')
},
performHttpCall: (request) => this.performHttpCall(request)
};
}
private async performHttpCall(request: Request): Promise<Response> {
const requestUrl = `${this.baseUrl}${request.url}`; // Substitute base URL
request.headers.set('Authorization', `Basic ${this.authToken}`); // Substitute auth token
const response = await fetch(requestUrl, {
method: request.method,
headers: request.headers as any,
body: request.method.toLowerCase() !== 'get' ? Buffer.from((await request.arrayBuffer()) ?? new ArrayBuffer(0)) : undefined
});
const apiHeaders = new Headers();
response.headers.forEach((value, key) => apiHeaders.append(key, value));
const body = await response.arrayBuffer();
return super.buildResponse(response.url, response.status, response.statusText, apiHeaders, body);
}
}Please note that the authentication handling details may not be accurate and serve as an example. If you wish to use these Managed APIs without having to concern yourself how to deal with and secure authentication details when working with APIs, then feel free to evaluate ScriptRunner Connect platform.
Contact
At this time Managed APIs are unlicensed and close sourced, but feel free to drop an email to eknoll@adaptavist.com for ideas, suggestions and improvements.
Changelog
2.1.0
- Removed non-empty body from HEAD requests.
2.0.0
Breaking change: URL and query string parameters are now URL encoded, meaning if you encoded them explicitly before you have to remove your own encoding, otherwise they will get double encoded.
0.11.0
- Updated OpenApi Specification.
- Fields
sortandorderare deprecated inSearch.searchCode.
- Fields
0.9.0
Added support for the following Organization.Member methods:
List organization members that can be used as
Organization.Member.getMembersorAll.getOrganizationMembers.Check organization membership for a user that can be used as
Organization.Member.checkMembershipForUserorAll.checkOrganizationMembershipForUser.Remove an organization member that can be used as
Organization.Member.removeMemberorAll.removeOrganizationMember.Get organization membership for a user that can be used as
Organization.Member.getMembershipForUserorAll.getOrganizationMembershipForUser.Set organization membership for a user that can be used as
Organization.Member.setMembershipForUserorAll.setOrganizationMembershipForUser.Remove organization membership for a user that can be used as
Organization.Member.removeMembershipForUserorAll.removeOrganzationMembershipForUser.List organization memberships for the authenticated user that can be used as
Organization.Member.getMembershipsForAuthenticatedUserorAll.getOrganizationMembershipsForAuthenticatedUser.Get an organization membership for the authenticated user that can be used as
Organization.Member.getMembershipForAuthenticatedUserorAll.getOrganizationMembershipForAuthenticatedUser.Update an organization membership for the authenticated user that can be used as
Organization.Member.updateMembershipForAuthenticatedUserorAll.updateOrganizationMembershipForAuthenticatedUser.
Added support for the following Organization methods:
List organizations that can be used as
Organization.getOrganizationsorAll.getOrganizations.Get an organization that can be used as
Organization.getOrganizationorAll.getOrganization.Update an organization that can be used as
Organization.updateOrganizationorAll.updateOrganization.Get the audit log for an organization that can be used as
Organization.getAuditLogorAll.getAuditLogForOrganization.List app installations for an organization that can be used as
Organization.getInstallationsorAll.getInstallationsForOrganization.List organizations for the authenticated user that can be used as
Organization.getOrganizationsForAuthenticatedUserorAll.getOrganizationsForAuthenticatedUser.List organizations for a user that can be used as
Organization.getOrganizationsForUserorAll.getOrganizationsForUser.
Added support for the following Search methods:
Search code that can be used as
Search.searchCodeorAll.searchCode.Search commits that can be used as
Search.searchCommitsorAll.searchCommits.Search issues and pull requests that can be used as
Search.searchIssuesAndPullRequestsorAll.searchIssuesAndPullRequests.Search labels that can be used as
Search.searchLabelsorAll.searchLabels.Search repositories that can be used as
Search.searchRepositoriesorAll.searchRepositories.Search topics that can be used as
Search.searchTopicsorAll.searchTopics.Search users that can be used as
Search.searchUsersorAll.searchUsers.
Added support for the following Release methods:
List releases that can be used as
Release.getReleasesorAll.getReleases.Create a release that can be used as
Release.createReleaseorAll.createRelease.Generate release notes content for a release that can be used as
Release.generateReleaseNotesorAll.generateReleaseNotes.Get the latest release that can be used as
Release.getLatestReleaseorAll.getLatestRelease.Get a release by tag name that can be used as
Release.getReleaseByTagNameorAll.getReleaseByTagName.Get a release that can be used as
Release.getReleaseorAll.getRelease.Update a release that can be used as
Release.updateReleaseorAll.updateRelease.Delete a release that can be used as
Release.deleteReleaseorAll.deleteRelease.
Added support for the following User.Block methods:
List users blocked by the authenticated user that can be used as
User.Block.getBlockedUsersByAuthenticatedUserorAll.getBlockedUsersByAuthenticatedUser.Check if a user is blocked by the authenticated user that can be used as
User.Block.checkIfUserIsBlockedByAuthenticatedUserorAll.checkIfUserIsBlockedByAuthenticatedUser.Block a user that can be used as
User.Block.blockUserorAll.blockUser.Unblock a user that can be used as
User.Block.unblockUserorAll.unblockUser.
Added support for the following User methods:
Get the authenticated user that can be used as
User.getAuthenticatedUserorAll.getAuthenticatedUser.Update the authenticated user that can be used as
User.updateAuthenticatedUserorAll.updateAuthenticatedUser.List users that can be used as
User.getUsersorAll.getUsers.Get a user that can be used as
User.getUserorAll.getUser.Get contextual information for a user that can be used as
User.getUserContextorAll.getUserContext.
Added support for the following Repository.Content methods:
Delete a file that can be used as
Repository.Content.deleteFileorAll.deleteFile.Get a repository README that can be used as
Repository.Content.getRepositoryReadmeorAll.getRepositoryReadme.Get a repository README for a directory that can be used as
Repository.Content.getRepositoryReadmeForDirectoryorAll.getRepositoryReadmeForDirectory.
Added support for the following Branch.Protection methods:
Get branch protection that can be used as
Branch.Protection.getProtectionorAll.getBranchProtection.Update branch protection that can be used as
Branch.Protection.updateProtectionorAll.updateBranchProtection.Delete branch protection that can be used as
Branch.Protection.deleteProtectionorAll.deleteBranchProtection.
Added support for the following Branch.Protection.Admin methods:
Get admin branch protection that can be used as
Branch.Protection.Admin.getProtectionorAll.getAdminBranchProtection.Set admin branch protection that can be used as
Branch.Protection.Admin.setProtectionorAll.setAdminBranchProtection.Delete admin branch protection that can be used as
Branch.Protection.Admin.deleteProtectionorAll.deleteAdminBranchProtection.
Added support for the following Branch.Protection.Pull.Review methods:
Get pull request review protection that can be used as
Branch.Protection.Pull.Review.getProtectionorAll.getBranchPullRequestReviewProtection.Update pull request review protection that can be used as
Branch.Protection.Pull.Review.updateProtectionorAll.updateBranchPullRequestReviewProtection.
Added support for the following Branch.Protection.Commit.Signature methods:
Get commit signature protection that can be used as
Branch.Protection.Commit.Signature.getProtectionorAll.getBranchCommitSignatureProtection.Create commit signature protection that can be used as
Branch.Protection.Commit.Signature.createProtectionorAll.createBranchCommitSignatureProtection.Delete commit signature protection that can be used as
Branch.Protection.Commit.Signature.deleteProtectionorAll.deleteBranchCommitSignatureProtection.
Added support for the following Branch.Protection.Status.Check methods:
Get status checks protection that can be used as
Branch.Protection.Status.Check.getProtectionorAll.getBranchStatusCheckProtection.Update status checks protection that can be used as
Branch.Protection.Status.Check.updateProtectionorAll.updateBranchStatusCheckProtection.Remove status checks protection that can be used as
Branch.Protection.Status.Check.removeProtectionorAll.removeBranchStatusCheckProtection.Get all status check contexts that can be used as
Branch.Protection.Status.Check.getContextsorAll.getBranchStatusCheckContexts.Add status check contexts that can be used as
Branch.Protection.Status.Check.addContextsorAll.addBranchStatusCheckContexts.Set status check contexts that can be used as
Branch.Protection.Status.Check.setContextsorAll.setBranchStatusCheckContexts.
Added support for the following Project methods:
List organization projects that can be used as
Project.getOrganizationProjectsorAll.getOrganizationProjects.Create an organization project that can be used as
Project.createOrganizationProjectorAll.createOrganizationProject.Get a project that can be used as
Project.getProjectorAll.getProject.Update a project that can be used as
Project.updateProjectorAll.updateProject.Delete a project that can be used as
Project.deleteProjectorAll.deleteProject.List repository projects that can be used as
Project.getRepositoryProjectsorAll.getRepositoryProjects.Create a repository project that can be used as
Project.createRepositoryProjectorAll.createRepositoryProject.List user projects that can be used as
Project.getUserProjectsorAll.getUserProjects.Create a user project that can be used as
Project.createUserProjectorAll.createUserProject.
Added support for the following Search methods:
Search code that can be used as
Search.searchCodeorAll.searchCode.Search commits that can be used as
Search.searchCommitsorAll.searchCommits.Search issues and pull requests that can be used as
Search.searchIssuesAndPullRequestsorAll.searchIssuesAndPullRequests.Search labels that can be used as
Search.searchLabelsorAll.searchLabels.Search repositories that can be used as
Search.searchRepositoriesorAll.searchRepositories.Search topics that can be used as
Search.searchTopicsorAll.searchTopics.Search users that can be used as
Search.searchUsersorAll.searchUsers.
Copyright Adaptavist 2025 (c) All rights reserved
7 months ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago