{"id":15466703,"url":"https://github.com/pulpogato/pulpogato","last_synced_at":"2026-07-10T00:00:36.849Z","repository":{"id":247292082,"uuid":"825463572","full_name":"pulpogato/pulpogato","owner":"pulpogato","description":"Generated GitHub Java Client","archived":false,"fork":false,"pushed_at":"2026-07-04T04:02:41.000Z","size":10985,"stargazers_count":2,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-04T04:26:04.410Z","etag":null,"topics":["api","github","hacktoberfest","java"],"latest_commit_sha":null,"homepage":"https://pulpogato.github.io/pulpogato/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulpogato.png","metadata":{"files":{"readme":"README.adoc","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-07-07T21:03:05.000Z","updated_at":"2026-07-04T01:01:42.000Z","dependencies_parsed_at":"2024-08-24T22:38:59.666Z","dependency_job_id":"cfe463b2-4ee7-4c50-96fb-d52d8d68b2e1","html_url":"https://github.com/pulpogato/pulpogato","commit_stats":{"total_commits":82,"total_committers":3,"mean_commits":"27.333333333333332","dds":0.6463414634146342,"last_synced_commit":"7477f9397c436c47125d4950258bed79da358366"},"previous_names":["rahulsom/javacat","pulpogato/pulpogato"],"tags_count":62,"template":false,"template_full_name":null,"purl":"pkg:github/pulpogato/pulpogato","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulpogato%2Fpulpogato","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulpogato%2Fpulpogato/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulpogato%2Fpulpogato/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulpogato%2Fpulpogato/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulpogato","download_url":"https://codeload.github.com/pulpogato/pulpogato/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulpogato%2Fpulpogato/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35315894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api","github","hacktoberfest","java"],"created_at":"2024-10-02T01:08:10.566Z","updated_at":"2026-07-10T00:00:36.832Z","avatar_url":"https://github.com/pulpogato.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Pulpogato\n:package: io.github.pulpogato\n:package-path: io/github/pulpogato\n:package-path-encoded: io%2Fgithub%2Fpulpogato\n:snapshot-prefix: image:https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fcentral.sonatype.com%2Frepository%2Fmaven-snapshots%2F{package-path-encoded}%2F\n:snapshot-middle: %2Fmaven-metadata.xml\u0026style=for-the-badge\u0026label=S[alt=Maven Snapshot,height=30,link=\"https://central.sonatype.com/repository/maven-snapshots/{package-path}/\n:snapshot-suffix: /maven-metadata.xml\"]\n:central-prefix: image:https://img.shields.io/maven-central/v/{package}/\n:central-middle: ?strategy=highestVersion\u0026filter=!*-rc*\u0026style=for-the-badge\u0026label=R\u0026color=green[alt=Maven Central Version,height=30,link=\"https://central.sonatype.com/artifact/{package}/\n:central-suffix: /overview\"]\n:deprecated-middle: ?style=for-the-badge\u0026label=R\u0026color=lightgrey[alt=Maven Central Version,height=30,link=\"https://central.sonatype.com/artifact/{package}/\n\nPulpogato is a java client for GitHub.\n_Pulpogato_ is Spanish for _Octopus-Cat_.\n\nimage:images/Pulpogato.png[alt=Pulpogato logo. An octocat in the style of Pablo Picasso.,width=300]\n\n\u0026nbsp;\n\nimage:https://img.shields.io/github/commits-since/pulpogato/pulpogato/latest?style=for-the-badge[GitHub commits since latest release, link=\"https://github.com/pulpogato/pulpogato/releases/new\"]\n\u0026nbsp;\nimage:https://img.shields.io/github/actions/workflow/status/pulpogato/pulpogato/check-issues-statuses.yml?style=for-the-badge\u0026label=Issues%20Statuses[Issues Statuses, link=\"https://github.com/pulpogato/pulpogato/actions/workflows/check-issues-statuses.yml\"]\n\n== Usage\n\n// tag::installation[]\n\nFor releases, you can use https://central.sonatype.com/[Maven Central], https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#using-a-published-package[GitHub Packages], or https://jitpack.io[JitPack].\n\nThe maven group id is `io.github.pulpogato`.\nMost maven artifact ids are `pulpogato-\u003capi-type\u003e-\u003cgh-version\u003e`.\nThe `api-type` is one of `graphql` or `rest`.\nThe `gh-version` is one of `ghec`,`fpt`, or `ghes-\u003cGHES-version\u003e`.\nTo align versions across all Pulpogato modules, use the artifact `pulpogato-bom`.\n\n=== Maven Central\n\nThis would be the URL for Maven Central.\n\n[source]\n----\nhttps://repo.maven.apache.org/maven2/\n----\n\n=== GitHub Packages\n\nThis would be the URL for GitHub Packages.\n\n[source]\n----\nhttps://maven.pkg.github.com/pulpogato/pulpogato\n----\n\n=== Jitpack\n\nThis would be the URL for Jitpack.\n\n[source]\n----\nhttps://jitpack.io/\n----\n\nJitpack uses a different groupId for the artifact, though.\nInstead of `io.github.pulpogato`, you would use `com.github.pulpogato.pulpogato`.\n\n=== Sonatype Snapshots\n\nFor snapshots, use this url.\n\n[source]\n----\nhttps://central.sonatype.com/repository/maven-snapshots/\n----\n\n.Example in a Gradle kotlin build script\n[%collapsible]\n====\n[source,kotlin]\n----\n// These properties can also be set in gradle.properties\next {\n    set(\"netflixDgsVersion\", \"9.1.2\")\n    set(\"ghVersion\", \"fpt\")\n    set(\"pulpogatoVersion\", \"2.8.0\")\n}\n\nrepositories {\n    mavenCentral()\n}\n\nval ghVersion: String by project.ext\nval pulpogatoVersion: String by project.ext\nval netflixDgsVersion: String by project.ext\n\ndependencies {\n    implementation(platform(\"io.github.pulpogato:pulpogato-bom:${pulpogatoVersion}\"))\n    // Use enforcedPlatform(...) instead of platform(...) for strict version enforcement.\n\n    implementation(\"io.github.pulpogato:pulpogato-rest-${ghVersion}\")\n    implementation(\"io.github.pulpogato:pulpogato-graphql-${ghVersion}\")\n    implementation(\"io.github.pulpogato:pulpogato-github-files\")\n    implementation(\"org.springframework.boot:spring-boot-starter-webflux:4.0.2\")\n    implementation(\"com.netflix.graphql.dgs:graphql-dgs-client:11.1.0\")\n    implementation(platform(\"com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:${netflixDgsVersion}\"))\n}\n----\n====\n\n== Available versions\n\n[cols=\"1,1,1\"]\n|===\n|GitHub Version |GraphQL |REST\n\n|https://docs.github.com/en[FPT]\n|{central-prefix}pulpogato-graphql-fpt{central-middle}pulpogato-graphql-fpt{central-suffix} {snapshot-prefix}pulpogato-graphql-fpt{snapshot-middle}pulpogato-graphql-fpt{snapshot-suffix}\n|{central-prefix}pulpogato-rest-fpt{central-middle}pulpogato-rest-fpt{central-suffix} {snapshot-prefix}pulpogato-rest-fpt{snapshot-middle}pulpogato-rest-fpt{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-cloud@latest[GHEC]\n|{central-prefix}pulpogato-graphql-ghec{central-middle}pulpogato-graphql-ghec{central-suffix} {snapshot-prefix}pulpogato-graphql-ghec{snapshot-middle}pulpogato-graphql-ghec{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghec{central-middle}pulpogato-rest-ghec{central-suffix} {snapshot-prefix}pulpogato-rest-ghec{snapshot-middle}pulpogato-rest-ghec{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.21[GHES-3.21]\n|{central-prefix}pulpogato-graphql-ghes-3.21{central-middle}pulpogato-graphql-ghes-3.21{central-suffix} {snapshot-prefix}pulpogato-graphql-ghes-3.21{snapshot-middle}pulpogato-graphql-ghes-3.21{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.21{central-middle}pulpogato-rest-ghes-3.21{central-suffix} {snapshot-prefix}pulpogato-rest-ghes-3.21{snapshot-middle}pulpogato-rest-ghes-3.21{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.20[GHES-3.20]\n|{central-prefix}pulpogato-graphql-ghes-3.20{central-middle}pulpogato-graphql-ghes-3.20{central-suffix} {snapshot-prefix}pulpogato-graphql-ghes-3.20{snapshot-middle}pulpogato-graphql-ghes-3.20{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.20{central-middle}pulpogato-rest-ghes-3.20{central-suffix} {snapshot-prefix}pulpogato-rest-ghes-3.20{snapshot-middle}pulpogato-rest-ghes-3.20{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.19[GHES-3.19]\n|{central-prefix}pulpogato-graphql-ghes-3.19{central-middle}pulpogato-graphql-ghes-3.19{central-suffix} {snapshot-prefix}pulpogato-graphql-ghes-3.19{snapshot-middle}pulpogato-graphql-ghes-3.19{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.19{central-middle}pulpogato-rest-ghes-3.19{central-suffix} {snapshot-prefix}pulpogato-rest-ghes-3.19{snapshot-middle}pulpogato-rest-ghes-3.19{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.18[GHES-3.18]\n|{central-prefix}pulpogato-graphql-ghes-3.18{central-middle}pulpogato-graphql-ghes-3.18{central-suffix} {snapshot-prefix}pulpogato-graphql-ghes-3.18{snapshot-middle}pulpogato-graphql-ghes-3.18{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.18{central-middle}pulpogato-rest-ghes-3.18{central-suffix} {snapshot-prefix}pulpogato-rest-ghes-3.18{snapshot-middle}pulpogato-rest-ghes-3.18{snapshot-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.17[GHES-3.17]\n|{central-prefix}pulpogato-graphql-ghes-3.17{central-middle}pulpogato-graphql-ghes-3.17{central-suffix} {snapshot-prefix}pulpogato-graphql-ghes-3.17{snapshot-middle}pulpogato-graphql-ghes-3.17{snapshot-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.17{central-middle}pulpogato-rest-ghes-3.17{central-suffix} {snapshot-prefix}pulpogato-rest-ghes-3.17{snapshot-middle}pulpogato-rest-ghes-3.17{snapshot-suffix}\n\n|===\n\n.EOL Versions\n[%collapsible]\n====\n\n[cols=\"1,1,1\"]\n|===\n|GitHub Version |GraphQL |REST\n\n|https://docs.github.com/en/enterprise-server@3.16[GHES-3.16]\n|{central-prefix}pulpogato-graphql-ghes-3.16{deprecated-middle}pulpogato-graphql-ghes-3.16{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.16{deprecated-middle}pulpogato-rest-ghes-3.16{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.15[GHES-3.15]\n|{central-prefix}pulpogato-graphql-ghes-3.15{deprecated-middle}pulpogato-graphql-ghes-3.15{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.15{deprecated-middle}pulpogato-rest-ghes-3.15{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.14[GHES-3.14]\n|{central-prefix}pulpogato-graphql-ghes-3.14{deprecated-middle}pulpogato-graphql-ghes-3.14{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.14{deprecated-middle}pulpogato-rest-ghes-3.14{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.13[GHES-3.13]\n|{central-prefix}pulpogato-graphql-ghes-3.13{deprecated-middle}pulpogato-graphql-ghes-3.13{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.13{deprecated-middle}pulpogato-rest-ghes-3.13{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.12[GHES-3.12]\n|{central-prefix}pulpogato-graphql-ghes-3.12{deprecated-middle}pulpogato-graphql-ghes-3.12{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.12{deprecated-middle}pulpogato-rest-ghes-3.12{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.11[GHES-3.11]\n|{central-prefix}pulpogato-graphql-ghes-3.11{deprecated-middle}pulpogato-graphql-ghes-3.11{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.11{deprecated-middle}pulpogato-rest-ghes-3.11{central-suffix}\n\n|https://docs.github.com/en/enterprise-server@3.10[GHES-3.10]\n|{central-prefix}pulpogato-graphql-ghes-3.10{deprecated-middle}pulpogato-graphql-ghes-3.10{central-suffix}\n|{central-prefix}pulpogato-rest-ghes-3.10{deprecated-middle}pulpogato-rest-ghes-3.10{central-suffix}\n\n|===\n\n====\n\n=== Shared modules\n\n[cols=\"2,1\"]\n|===\n|Module |Version\n\na|*pulpogato-common*\n\nShared types used by both REST and GraphQL modules, such as common models and utilities.\n|{central-prefix}pulpogato-common{central-middle}pulpogato-common{central-suffix} {snapshot-prefix}pulpogato-common{snapshot-middle}pulpogato-common{snapshot-suffix}\n\na|*pulpogato-bom*\n\nBOM to align versions across all Pulpogato modules.\nIt is recommended to use this BOM in your build system to ensure all Pulpogato modules are on the same version.\n|{central-prefix}pulpogato-bom{central-middle}pulpogato-bom{central-suffix} {snapshot-prefix}pulpogato-bom{snapshot-middle}pulpogato-bom{snapshot-suffix}\n\na|*pulpogato-github-files*\n\nSupports parsing Actions, Workflows, and Release configuration files.\n|{central-prefix}pulpogato-github-files{central-middle}pulpogato-github-files{central-suffix} {snapshot-prefix}pulpogato-github-files{snapshot-middle}pulpogato-github-files{snapshot-suffix}\n\n|===\n\n// end::installation[]\n\n== Development\n\nInstall JDK 21 first.\n\nTo build, run `./gradlew build`.\nIf you have low memory or CPU, you can customize parallelism with `--max-workers`.\n\n=== Build performance\n\nLaptop and PR builds are tuned for speed, so two pieces of optional work are off by default.\n\n`-Pcodegen.format=true` runs Palantir Java Format over the generated sources.\nFormatting is cosmetic and only affects the readability of the published sources jar, so it is skipped by default and saves roughly 13-15 seconds per REST module.\nCI turns it on automatically when building snapshot, candidate, and final artifacts.\n\n`-Pcoverage=true` enables JaCoCo.\nCoverage collection and its report are a CI/reporting concern, so they stay off the default critical path.\n\nTests run in parallel across forked JVMs (`maxParallelForks`), which the data-driven generated tests benefit from the most.\n\n=== Automatically generated tests\n\nWhen the REST schema contains examples, they are automatically converted to tests in the generated test sources directory.\n\n=== Integration tests\n\nTo contribute a test for the REST API or GraphQL API:\n\n1. Write a test like the ones in `UserApiIntegrationTest`.\n2. Then set up the environment variable `GITHUB_TOKEN`.\n3. **If you're running a test against a GitHub Enterprise** instance, set up `GITHUB_HOST` and `GITHUB_PORT` as well.\n4. Run a command like `./gradlew :pulpogato-rest-fpt:test --tests AppsApiIntegrationTest`.\n+\n[source, bash]\n----\nGITHUB_TOKEN=$(gh auth token) \\\n    ./gradlew :pulpogato-rest-fpt:test --tests AppsApiIntegrationTest\n----\nOr if you're using GHES:\n+\n[source, bash]\n----\nGITHUB_TOKEN=$(gh auth token) GITHUB_HOST=ghes.example.com GITHUB_PORT=8443 \\\n    ./gradlew :pulpogato-rest-ghes-3.17:test --tests AppsApiIntegrationTest\n----\n5. That generates a yaml file in `src/test/resources`. If it needs cleaning up for sensitive data, do so.\n\n=== REST Webhook tests\n\nTo contribute a Webhook test:\n\n1. Capture the HTTP request from the webhook using any tool. If you're looking at public data, something like RequestBin is useful.\n2. Clean up the data and place it in `pulpogato-rest-tests/src/main/resources/webhooks/` under the right directory based on the `x-github-event` header.\n3. Verify the tests work.\n\n=== Schema additions\n\nGitHub's OpenAPI schema may sometimes be incomplete or missing properties that exist in the actual API responses.\nPulpogato supports extending OpenAPI documents through `*.schema.json` files.\n\nSchema additions are loaded from two locations:\n\n1. `pulpogato-common/src/main/resources/` - additions that apply to all REST modules\n2. `pulpogato-rest-\u003cversion\u003e/src/main/resources/` - additions specific to a single version\n\nThe files follow the OpenAPI 3.1.0 format and are merged additively with optional deletion markers:\n\n* `components.schemas` entries can add new schemas or new properties to existing schemas.\n* `paths` entries can add missing endpoint details (for example additional response media types).\n* Setting any override node to `null` deletes the corresponding node from the base schema.\n\n.Example: `user.suspendedAt.schema.json`\n[%collapsible]\n====\n[source,json]\n----\n{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"Additions Schema\",\n    \"version\": \"1.0.0\"\n  },\n  \"components\": {\n    \"schemas\": {\n      \"public-user\": {\n        \"properties\": {\n          \"suspended_at\": {\n            \"type\": [\"string\", \"null\"],\n            \"format\": \"date-time\",\n            \"description\": \"https://github.com/github/rest-api-description/issues/5667\"\n          }\n        }\n      }\n    }\n  },\n  \"paths\": {}\n}\n----\n====\n\nThis adds the `suspended_at` property to the `public-user` schema.\nThe property will be available as `suspendedAt` in the generated Java code.\n\n=== Asciidoctor docs\n\nTo run asciidoctor locally, run this command.\n\n[source, bash]\n----\n./gradlew asciidoctorDocs\n----\n\nThis task uses the Gradle Asciidoctor plugin and writes output to `pulpogato-docs/build/index.html`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulpogato%2Fpulpogato","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulpogato%2Fpulpogato","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulpogato%2Fpulpogato/lists"}