API template library

GitHub REST API mock and live sandbox

A WireMock simulation of GitHub's REST API — covering repositories, issues and pull requests, Actions, webhooks, and the wider v3 surface.

Vendor
GitHub
Functionality
Repos, issues, actions, webhooks
Spec version
1.1.4
Endpoints
1222
Stubs
1275
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real GitHub API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

GitHub v3 REST API

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://1k3k3.wiremockapi.cloud

GET Get a blob

curl -s -X GET 'https://1k3k3.wiremockapi.cloud/repos/your-owner/your-repo/git/blobs/your-file_sha'

POST Create an OIDC custom property inclusion for an enterprise

curl -s -X POST 'https://1k3k3.wiremockapi.cloud/enterprises/your-enterprise/actions/oidc/customization/properties/repo' \
  -H 'Content-Type: application/json' \
  -d '{}'

DELETE Delete an OIDC custom property inclusion for an enterprise

curl -s -X DELETE 'https://1k3k3.wiremockapi.cloud/enterprises/your-enterprise/actions/oidc/customization/properties/repo/your-custom_property_name'
Method Path Summary
GET / GitHub API Root
GET /advisories List global security advisories
GET /advisories/{ghsa_id} Get a global security advisory
GET /app Get the authenticated app
POST /app-manifests/{code}/conversions Create a GitHub App from a manifest
GET /app/hook/config Get a webhook configuration for an app
PATCH /app/hook/config Update a webhook configuration for an app
GET /app/hook/deliveries List deliveries for an app webhook
GET /app/hook/deliveries/{delivery_id} Get a delivery for an app webhook
POST /app/hook/deliveries/{delivery_id}/attempts Redeliver a delivery for an app webhook
GET /app/installation-requests List installation requests for the authenticated app
GET /app/installations List installations for the authenticated app
DELETE /app/installations/{installation_id} Delete an installation for the authenticated app
GET /app/installations/{installation_id} Get an installation for the authenticated app
POST /app/installations/{installation_id}/access_tokens Create an installation access token for an app
DELETE /app/installations/{installation_id}/suspended Unsuspend an app installation
PUT /app/installations/{installation_id}/suspended Suspend an app installation
DELETE /applications/{client_id}/grant Delete an app authorization
DELETE /applications/{client_id}/token Delete an app token
GET /applications/{client_id}/token Get applications by client_id token.
PATCH /applications/{client_id}/token Reset a token
POST /applications/{client_id}/token Check a token
POST /applications/{client_id}/token/scoped Create a scoped access token
GET /apps/{app_slug} Get an app
GET /assignments/{assignment_id} Get an assignment
GET /assignments/{assignment_id}/accepted_assignments List accepted assignments for an assignment
GET /assignments/{assignment_id}/grades Get assignment grades
GET /classrooms List classrooms
GET /classrooms/{classroom_id} Get a classroom
GET /classrooms/{classroom_id}/assignments List assignments for a classroom
GET /codes_of_conduct Get all codes of conduct
GET /codes_of_conduct/{key} Get a code of conduct
DELETE /credentials/revoke Delete credentials revoke.
POST /credentials/revoke Revoke a list of credentials
GET /emojis Get emojis
GET /enterprises/{enterprise}/actions/cache/retention-limit Get GitHub Actions cache retention limit for an enterprise
POST /enterprises/{enterprise}/actions/cache/retention-limit Post enterprises by enterprise actions cache retention-limit.
PUT /enterprises/{enterprise}/actions/cache/retention-limit Set GitHub Actions cache retention limit for an enterprise
GET /enterprises/{enterprise}/actions/cache/storage-limit Get GitHub Actions cache storage limit for an enterprise
POST /enterprises/{enterprise}/actions/cache/storage-limit Post enterprises by enterprise actions cache storage-limit.
PUT /enterprises/{enterprise}/actions/cache/storage-limit Set GitHub Actions cache storage limit for an enterprise
GET /enterprises/{enterprise}/actions/oidc/customization/properties/repo List OIDC custom property inclusions for an enterprise
POST /enterprises/{enterprise}/actions/oidc/customization/properties/repo Create an OIDC custom property inclusion for an enterprise
DELETE /enterprises/{enterprise}/actions/oidc/customization/properties/repo/{custom_property_name} Delete an OIDC custom property inclusion for an enterprise
GET /enterprises/{enterprise}/actions/oidc/customization/properties/repo/{custom_property_name} Get enterprises by enterprise actions oidc customization properties repo by custom_property_name.
GET /enterprises/{enterprise}/code-security/configurations Get code security configurations for an enterprise
POST /enterprises/{enterprise}/code-security/configurations Create a code security configuration for an enterprise
DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id} Delete a code security configuration for an enterprise
GET /enterprises/{enterprise}/code-security/configurations/{configuration_id} Retrieve a code security configuration of an enterprise
PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id} Update a custom code security configuration for an enterprise
POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach Attach an enterprise configuration to repositories
POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults Post enterprises by enterprise code-security configurations by configuration_id defaults.
PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults Set a code security configuration as a default for an enterprise
GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories Get repositories associated with an enterprise code security configuration
GET /enterprises/{enterprise}/code-security/configurations/defaults Get default code security configurations for an enterprise
GET /enterprises/{enterprise}/dependabot/alerts List Dependabot alerts for an enterprise
GET /enterprises/{enterprise}/teams List enterprise teams
POST /enterprises/{enterprise}/teams Create an enterprise team
GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships List members in an enterprise team
DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username} Remove team membership

+1162 more endpoints in the full spec.

Unauthenticated WireMock Cloud demo sandbox for GitHub — not an official GitHub sandbox, and it returns simulated example data only.

What's inside the GitHub template

This is the whole of GitHub's v3 REST API in mock form — the template is generated from GitHub's own OpenAPI description, version 1.1.4, and stubs more than twelve hundred endpoints. Ask it for a repository and the response is the complete repo object: the nested owner account, node ids, and the dozens of *_url reference fields client libraries navigate by, shaped as the spec's canonical examples define them.

  • Repositories & git data — repos, branches, commits, blobs, refs, and file contents
  • Issues & pull requests — issues, comments, labels, milestones, and pull-request reviews
  • Actions — workflows, runs, artifacts, and cache administration up to enterprise scope
  • Apps & OAuth — app installations, access tokens, and token-scoping operations
  • Organizations & teams — org membership, enterprise teams, and permissions
  • Security — global advisories, Dependabot alerts, and code-security configurations
  • Search & users — code, commit, and user search alongside user profiles

Example implementation using Octokit

Octokit, GitHub's official JavaScript client, accepts a baseUrl option — hand it the sandbox and every request method the library exposes now lands on stubs:

In GitHub Actions and tools built on the actions toolkit, the GITHUB_API_URL environment variable performs the same redirect declaratively — set it and workflow steps talk to the mock instead of api.github.com.

That removes the two classic pains of testing against real GitHub: rate limits (60 unauthenticated requests an hour evaporate fast in CI) and the need to provision and protect a personal access token just to run a test suite.

import { Octokit } from "octokit";

// auth is required by the constructor,
// ignored by the mock
const octokit = new Octokit({
  baseUrl: "https://1k3k3.wiremockapi.cloud",
  auth: "any-value",
});

const { data: repo } = await octokit.rest.repos.get({
  owner: "octocat",
  repo: "hello-world",
});
console.log(repo.full_name);

Frequently asked questions

No token — and no Authorization header at all — is required; whatever you send is waved through. By the same logic, never paste an actual PAT into sandbox requests: it's a shared public mock, and credentials sent there gain nothing while risking exposure.

The mock doesn't reproduce GitHub's per-hour quotas, so bulk test traffic won't slam into 403 rate-limit walls (only the sandbox's own fair-use throttling applies). To rehearse limit handling deliberately, stub a 403 with x-ratelimit-remaining set to 0 in a private copy.

List endpoints return a fixed example page. Iterating client code sees a consistent single page of results, which suits parsing tests; multi-page traversal is better exercised against stateful stubs you shape yourself in a WireMock Cloud copy.

Webhook configuration endpoints are stubbed — creation, config updates, delivery listings — but a mock replays recorded HTTP responses; it won't push events outward. Fire synthetic webhook payloads at your handler directly, and use the request log in a WireMock Cloud copy to assert on what your app sends.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.