{"id":13880698,"url":"https://github.com/unjs/ungh","last_synced_at":"2025-06-10T22:41:53.184Z","repository":{"id":62837427,"uuid":"562899571","full_name":"unjs/ungh","owner":"unjs","description":"🐙 Unlimited access to github API","archived":false,"fork":false,"pushed_at":"2025-06-02T17:03:12.000Z","size":539,"stargazers_count":587,"open_issues_count":20,"forks_count":18,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-03T05:43:24.197Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ungh.cc","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-07T13:47:40.000Z","updated_at":"2025-06-02T16:52:01.000Z","dependencies_parsed_at":"2023-02-19T14:00:22.589Z","dependency_job_id":"87e35577-03bc-465b-9343-8f440ab3ced3","html_url":"https://github.com/unjs/ungh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unjs%2Fungh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unjs%2Fungh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unjs%2Fungh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unjs%2Fungh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unjs","download_url":"https://codeload.github.com/unjs/ungh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unjs%2Fungh/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259165987,"owners_count":22815543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T08:03:24.429Z","updated_at":"2025-06-10T22:41:53.176Z","avatar_url":"https://github.com/unjs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# 🐙 UNGH\n\n\u003e Unlimited access to GitHub API\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e `/repos/\u003cid\u003e/files/\u003cpath\u003e` endpoint redirects to original `raw.githubusercontent.com` endpoint due to service absue. ([#123](https://github.com/unjs/ungh/issues/123)).\n\n## Why UNGH?\n\nAccessing to open source GitHub repository meta-data should be fast, easy, and straightforward. GitHub API is rate limited and requires an authentication token to increase limits. Even by using an API token, we need to share or generate it for each deployment and local development of apps and also deal with (increased) rate limits and deployment caching. GitHub REST API is also complex with (unnecessary) bigger payloads because of backward compatibility.\n\nUNGH provides a simplified, cached, and anonymous layer to make GitHub API more enjoyable!\n\n## Roadmap\n\n- [x] Hosted MVP service (powered by cloudflare workers and KV)\n- [ ] Publish `ungh` js client to NPM ([#4](https://github.com/unjs/ungh/issues/4))\n- [ ] Implement token pool and open token donations ([#5](https://github.com/unjs/ungh/issues/5))\n- [ ] Mark API as stable\n\n**Note:** This project is still under development and API might change.\n\n## API\n\n### `/repos/{owner}/{name}`\n\nGitHub repository information.\n\n**Example:** https://ungh.cc/repos/unjs/h3\n\n```json\n{\n  \"repo\": {\n    \"id\": 313641207,\n    \"name\": \"h3\",\n    \"repo\": \"unjs/h3\",\n    \"description\": \"Minimal h(ttp) framework built for high performance and portability ⚡️\",\n    \"createdAt\": \"2020-11-17T14:15:44Z\",\n    \"updatedAt\": \"2022-11-05T21:38:43Z\",\n    \"pushedAt\": \"2022-11-06T06:48:23Z\",\n    \"stars\": 1168,\n    \"watchers\": 1168,\n    \"forks\": 59,\n    \"defaultBranch\": \"main\"\n  }\n}\n```\n\n### `/repos/{owner}/{name}/contributors`\n\nGet repository contributors.\n\n**Example:** https://ungh.cc/repos/unjs/h3/contributors\n\n```json\n{\n  \"contributors\": [\n    {\n      \"id\": 5158436,\n      \"username\": \"pi0\",\n      \"contributions\": 243\n    },\n    {\n      \"id\": 29139614,\n      \"username\": \"renovate[bot]\",\n      \"contributions\": 41\n    }\n  ]\n}\n```\n\n### `/repos/{owner}/{name}/files/{branch}`\n\nGet repository files tree on specific branch.\n\n**Example:** https://ungh.cc/repos/unjs/h3/files/main\n\n```json\n{\n  \"meta\": {\n    \"sha\": \"501f0c6e623ea827d47691046f3c7319f5ac4651\"\n  },\n  \"files\": [\n    {\n      \"path\": \"README.md\",\n      \"mode\": \"100644\",\n      \"sha\": \"4c2b9ce4bccd6e046cd71be1a8c5e53a62778858\",\n      \"size\": 5782\n    }\n  ]\n}\n```\n\n### `/repos/{owner}/{name}/readme`\n\nGet repository readme file on main branch (not cached)\n\n**Example:** https://ungh.cc/repos/unjs/h3/readme\n\n```json\n{\n  \"html\": \"\u003cp\u003e\u003ca href=\\\"https://npmjs.com/package/h3\\\" rel=\\\"nofollow\\\"\u003e\u003cimg...\",\n  \"markdown\": \"[![npm downloads](https://img.shields.io....\"\n}\n```\n\n### `/repos/{owner}/{name}/releases`\n\nGet repository releases.\n\n**Example:** https://ungh.cc/repos/nuxt/framework/releases\n\n```json\n{\n  \"releases\": [\n    {\n      \"id\": 82066265,\n      \"tag\": \"v3.0.0-rc.13\",\n      \"author\": \"pi0\",\n      \"name\": \"v3.0.0-rc.13\",\n      \"draft\": false,\n      \"prerelease\": false,\n      \"createdAt\": \"2022-11-04T11:37:49Z\",\n      \"publishedAt\": \"2022-11-04T11:41:59Z\",\n      \"markdown\": \"....\",\n      \"html\": \"...\"\n    }\n  ]\n}\n```\n\n### `/repos/{owner}/{name}/releases/latest`\n\nGet latest repository release.\n\n**Example:** https://ungh.cc/repos/nuxt/framework/releases/latest\n\n```json\n{\n  \"release\": {\n    \"id\": 82066265,\n    \"tag\": \"v3.0.0-rc.13\",\n    \"author\": \"pi0\",\n    \"name\": \"v3.0.0-rc.13\",\n    \"draft\": false,\n    \"prerelease\": false,\n    \"createdAt\": \"2022-11-04T11:37:49Z\",\n    \"publishedAt\": \"2022-11-04T11:41:59Z\",\n    \"markdown\": \"....\",\n    \"html\": \"...\"\n  }\n}\n```\n\n### `/repos/{owner}/{name}/branches`\n\nGet all the branches of a repository\n\n**Example:** https://ungh.cc/repos/unjs/ungh/branches\n\n```json\n{\n  \"branches\": [\n    {\n      \"name\": \"main\",\n      \"commit\": {\n        \"sha\": \"2eb6bff64caf0d18f082adde7606c4702513870b\",\n        \"url\": \"https://api.github.com/repos/unjs/ungh/commits/2eb6bff64caf0d18f082adde7606c4702513870b\"\n      },\n      \"protected\": true\n    },\n    {\n      \"name\": \"renovate/all-minor-patch\",\n      \"commit\": {\n        \"sha\": \"61140d05f66cd6b217f2475ad84e2d251ed7de05\",\n        \"url\": \"https://api.github.com/repos/unjs/ungh/commits/61140d05f66cd6b217f2475ad84e2d251ed7de05\"\n      },\n      \"protected\": false\n    },\n    {\n      \"name\": \"renovate/typescript-5.x\",\n      \"commit\": {\n        \"sha\": \"19b23fca2088722bbb41a7238bf8bd5272799718\",\n        \"url\": \"https://api.github.com/repos/unjs/ungh/commits/19b23fca2088722bbb41a7238bf8bd5272799718\"\n      },\n      \"protected\": false\n    }\n  ]\n}\n```\n\n### `/orgs/{owner}`\n\nGitHub organization information.\n\n**Example:** https://ungh.cc/orgs/unjs\n\n```json\n{\n  \"org\": {\n    \"id\": 80154025,\n    \"name\": \"unjs\",\n    \"description\": \"Unified JavaScript Tools\"\n  }\n}\n```\n\n### `/orgs/{owner}/repos`\n\nGitHub organization repositories overview.\n\n**Example:** https://ungh.cc/orgs/unjs/repos\n\n```json\n{\n  \"repos\": [\n    {\n      \"id\": 97751746,\n      \"name\": \"redirect-ssl\",\n      \"repo\": \"unjs/redirect-ssl\",\n      \"description\": \"Connect/Express middleware to enforce https using is-https\",\n      \"createdAt\": \"2017-07-19T19:04:11Z\",\n      \"updatedAt\": \"2022-09-22T09:47:25Z\",\n      \"pushedAt\": \"2022-04-08T20:29:48Z\",\n      \"stars\": 93,\n      \"watchers\": 93,\n      \"forks\": 14\n    }\n  ]\n}\n```\n\n### `/stars/{repos}`\n\nGet star information for one or more repositories or organizations.\n\nMultiple items can be separated by either `,` or `+` or ` ` (space). Each item can be either `{owner}/{org}` to specify one repository or `{owner}/*` to specify all organization repositories.\n\n**Example:** https://ungh.cc/stars/nuxt/nuxt.js+nuxt/framework\n\n```json\n{\n  \"totalStars\": 51524,\n  \"stars\": {\n    \"nuxt/nuxt.js\": 41560,\n    \"nuxt/framework\": 9964\n  }\n}\n```\n\n### `/users/{username}`\n\nFind one github user by username.\n\n**Example:** https://ungh.cc/users/pi0\n\n```json\n{\n  \"user\": {\n    \"id\": 5158436,\n    \"name\": \"Pooya Parsa\",\n    \"twitter\": null,\n    \"username\": \"pi0\"\n  }\n}\n```\n\n### `/users/{username}/repos`\n\nGet user repositories.\n\n**Example:** https://ungh.cc/users/pi0/repos\n\n```json\n{\n  \"repos\": [\n    {\n      \"id\": 674019467,\n      \"name\": \"h3-on-edge\",\n      \"description\": \"⚡️ Edge workers with straming powered by unjs/h3\",\n      \"repo\": \"pi0/h3-on-edge\",\n      \"stars\": 51,\n      \"pushedAt\": \"2024-01-07T16:54:46Z\",\n      \"createdAt\": \"2023-08-03T00:53:31Z\",\n      \"updatedAt\": \"2024-01-04T17:20:53Z\",\n      \"watchers\": 51,\n      \"forks\": 0,\n      \"defaultBranch\": \"main\"\n    }\n  ]\n}\n```\n\n### `/users/find/{query}`\n\nFind one github user by email or other query.\n\n**Example:** https://ungh.cc/users/find/pooya@pi0.io\n\n```json\n{\n  \"user\": {\n    \"id\": 5158436,\n    \"name\": \"Pooya Parsa\",\n    \"twitter\": null,\n    \"username\": \"pi0\"\n  }\n}\n```\n\n## 💻 Development\n\n- Clone this repository\n- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable` (use `npm i -g corepack` for Node.js \u003c 16.10)\n- Install dependencies using `pnpm install`\n- Run interactive tests using `pnpm dev`\n\n## License\n\nMade with 💛\n\nPublished under [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funjs%2Fungh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funjs%2Fungh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funjs%2Fungh/lists"}