{"id":24625149,"url":"https://github.com/johnmccabe/go-puppetforge","last_synced_at":"2026-05-05T00:34:35.928Z","repository":{"id":73912879,"uuid":"293342971","full_name":"johnmccabe/go-puppetforge","owner":"johnmccabe","description":null,"archived":false,"fork":false,"pushed_at":"2020-09-06T19:12:08.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-19T04:04:13.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnmccabe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-09-06T18:57:19.000Z","updated_at":"2020-09-06T18:59:57.000Z","dependencies_parsed_at":"2024-06-20T13:55:59.667Z","dependency_job_id":"cefdaef6-a184-438b-83b4-56e98b52f378","html_url":"https://github.com/johnmccabe/go-puppetforge","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/johnmccabe/go-puppetforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnmccabe%2Fgo-puppetforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnmccabe%2Fgo-puppetforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnmccabe%2Fgo-puppetforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnmccabe%2Fgo-puppetforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnmccabe","download_url":"https://codeload.github.com/johnmccabe/go-puppetforge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnmccabe%2Fgo-puppetforge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260684102,"owners_count":23046098,"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":"2025-01-25T04:13:10.725Z","updated_at":"2026-05-05T00:34:35.883Z","avatar_url":"https://github.com/johnmccabe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go API client for puppetforge\n\n## Introduction\nThe Puppet Forge API (hereafter referred to as the Forge API) provides quick access to all the\ndata on the Puppet Forge via a RESTful interface. Using the Forge API, you can write scripts and\ntools that interact with the Puppet Forge website.\n\nThe Forge API's current version is `v3`. It is considered regression-stable, meaning that the returned\ndata is guaranteed to include the fields described in the schemas on this page; however, additional data\nmight be added in the future and clients must ignore any properties they do not recognize.\n\n## OpenAPI Specification\nThe Puppet Forge v3 API is described by an\n[OpenAPI 3.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md) formatted\nspecification file. The most up-to-date version of this specification file can be accessed at\n[https://forgeapi.puppet.com/v3/openapi.json](/v3/openapi.json).\n\n## Features\n* The API is accessed over HTTPS via either the `forgeapi.puppet.com` (IPv4) or `forgeapi-cdn.puppet.com` (IPv4 or IPv6) domain. All data is returned in JSON\n  format.\n* Blank fields are included as `null`.\n* Nested resources may use an abbreviated representation. A link to the full representation for the\n  resource is always included.\n* All timestamps in JSON responses are returned in ISO 8601 format: `YYYY-MM-DD HH:MM:SS ±HHMM`.\n* The HTTP response headers include caching hints for conditional requests.\n\n## Concepts and Terminology\n* **Module**: Modules are self-contained bundles of code and data with a specific directory structure. Modules are identified by a combination of the author's username and the module's name, separated by a hyphen. For example: `puppetlabs-apache`\n* **Release**: A single, specific version of a module is called a Release. Releases are identified by a combination of the module identifier (see above) and the Release version, separated by a hyphen. For example: `puppetlabs-apache-4.0.0`\n\n## Errors\nThe Puppet Forge API follows [RFC 2616](https://tools.ietf.org/html/rfc2616) and\n[RFC 6585](https://tools.ietf.org/html/rfc6585).\n\nError responses are served with a `4xx` or `5xx` status code, and are sent as a JSON document with a content type\nof `application/json`. The error document contains the following top-level keys and values:\n\n  * `message`: a string value that summarizes the problem\n  * `errors`: a list (array) of strings containing additional details describing the underlying cause(s) of the\n    failure\n\nAn example error response is shown below:\n\n```json\n{\n  \\\"message\\\": \\\"400 Bad Request\\\",\n  \\\"errors\\\": [\n    \\\"Cannot parse request body as JSON\\\"\n  ]\n}\n```\n\n## User-Agent Required\nAll API requests must include a valid `User-Agent` header. Requests with no `User-Agent` header will\nbe rejected. The `User-Agent` header helps identify your application or library, so we can communicate\nwith you if necessary. If your use of the API is informal or personal, we recommend using your username\nas the value for the `User-Agent` header.\n\nUser-Agent headers are a list of one or more product descriptions, generally taking this form:\n\n```\n\u003cname-without-spaces\u003e/\u003cversion\u003e (comments)\n```\n\nFor example, the following are all useful User-Agent values:\n\n```\nMyApplication/0.0.0 Her/0.6.8 Faraday/0.8.8 Ruby/1.9.3-p194 (i386-linux)\nMy-Library-Name/1.2.4\nmyusername\n```\n\n## Hostname Configuration\nMost tools that interact with the Forge API allow specification of the hostname to use. You can configure\na few common tools to use a specified hostname as follows:  \n  \nFor **Puppet Enterprise** users, in [r10k](https://puppet.com/docs/pe/latest/r10k_customize_config.html#r10k_configuring_forge_settings)\nor [Code Manager](https://puppet.com/docs/pe/latest/code_mgr_customizing.html#config_forge_settings), specify\n`forge_settings` in Hiera:\n```\npe_r10k::forge_settings:\n  baseurl: 'https://forgeapi-cdn.puppet.com'\n```\nor\n```\npuppet_enterprise::master::code_manager::forge_settings:\n  baseurl: 'https://forgeapi-cdn.puppet.com'\n```\n\u003cbr /\u003e\n  \nIf you are an **open source Puppet** user using r10k, you'll need to [edit your r10k.yaml\ndirectly](https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd#forge):\n```\nforge:\n  baseurl: 'https://forgeapi-cdn.puppet.com'\n```\nor set the appropriate class param for the [open source r10k module](https://forge.puppet.com/puppet/r10k#forge_settings):\n```\n$forge_settings = {\n  'baseurl' =\u003e 'https://forgeapi-cdn.puppet.com',\n}\n```\n\u003cbr /\u003e\n  \nIn [**Bolt**](https://puppet.com/docs/bolt/latest/bolt_configuration_reference.html#puppetfile-configuration-options), set a `baseurl` for the Forge in `bolt.yaml`:\n```\npuppetfile:\n  forge:\n    baseurl: 'https://forgeapi-cdn.puppet.com'\n```\n\u003cbr /\u003e\n  \nUsing `puppet config`:\n```\n$ puppet config set module_repository https://forgeapi-cdn.puppet.com\n```\n\n\n## Overview\nThis API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client.\n\n- API version: 19\n- Package version: 1.0.0\n- Build package: org.openapitools.codegen.languages.GoDeprecatedClientCodegen\n\n## Installation\n\nInstall the following dependencies:\n\n```shell\ngo get github.com/stretchr/testify/assert\ngo get golang.org/x/oauth2\ngo get golang.org/x/net/context\ngo get github.com/antihax/optional\n```\n\nPut the package under your project folder and add the following in import:\n\n```golang\nimport \"./puppetforge\"\n```\n\n## Documentation for API Endpoints\n\nAll URIs are relative to *https://forgeapi.puppet.com*\n\nClass | Method | HTTP request | Description\n------------ | ------------- | ------------- | -------------\n*ModuleOperationsApi* | [**DeleteModule**](docs/ModuleOperationsApi.md#deletemodule) | **Delete** /v3/modules/{module_slug} | Delete module\n*ModuleOperationsApi* | [**DeprecateModule**](docs/ModuleOperationsApi.md#deprecatemodule) | **Patch** /v3/modules/{module_slug} | Deprecate module\n*ModuleOperationsApi* | [**GetModule**](docs/ModuleOperationsApi.md#getmodule) | **Get** /v3/modules/{module_slug} | Fetch module\n*ModuleOperationsApi* | [**GetModules**](docs/ModuleOperationsApi.md#getmodules) | **Get** /v3/modules | List modules\n*ReleaseOperationsApi* | [**AddRelease**](docs/ReleaseOperationsApi.md#addrelease) | **Post** /v3/releases | Create module release\n*ReleaseOperationsApi* | [**DeleteRelease**](docs/ReleaseOperationsApi.md#deleterelease) | **Delete** /v3/releases/{release_slug} | Delete module release\n*ReleaseOperationsApi* | [**GetFile**](docs/ReleaseOperationsApi.md#getfile) | **Get** /v3/files/{filename} | Download module release\n*ReleaseOperationsApi* | [**GetRelease**](docs/ReleaseOperationsApi.md#getrelease) | **Get** /v3/releases/{release_slug} | Fetch module release\n*ReleaseOperationsApi* | [**GetReleasePlan**](docs/ReleaseOperationsApi.md#getreleaseplan) | **Get** /v3/releases/{release_slug}/plans/{plan_name} | Fetch module release plan\n*ReleaseOperationsApi* | [**GetReleasePlans**](docs/ReleaseOperationsApi.md#getreleaseplans) | **Get** /v3/releases/{release_slug}/plans | List module release plans\n*ReleaseOperationsApi* | [**GetReleases**](docs/ReleaseOperationsApi.md#getreleases) | **Get** /v3/releases | List module releases\n*UserOperationsApi* | [**GetUser**](docs/UserOperationsApi.md#getuser) | **Get** /v3/users/{user_slug} | Fetch user\n*UserOperationsApi* | [**GetUsers**](docs/UserOperationsApi.md#getusers) | **Get** /v3/users | List users\n\n\n## Documentation For Models\n\n - [DeprecationRequest](docs/DeprecationRequest.md)\n - [DeprecationRequestParams](docs/DeprecationRequestParams.md)\n - [InlineObject](docs/InlineObject.md)\n - [InlineResponse200](docs/InlineResponse200.md)\n - [InlineResponse2001](docs/InlineResponse2001.md)\n - [InlineResponse2002](docs/InlineResponse2002.md)\n - [InlineResponse2003](docs/InlineResponse2003.md)\n - [InlineResponse400](docs/InlineResponse400.md)\n - [InlineResponse401](docs/InlineResponse401.md)\n - [InlineResponse403](docs/InlineResponse403.md)\n - [InlineResponse404](docs/InlineResponse404.md)\n - [InlineResponse409](docs/InlineResponse409.md)\n - [Module](docs/Module.md)\n - [ModuleAbbreviated](docs/ModuleAbbreviated.md)\n - [ModuleMinimal](docs/ModuleMinimal.md)\n - [Pagination](docs/Pagination.md)\n - [Release](docs/Release.md)\n - [ReleaseAbbreviated](docs/ReleaseAbbreviated.md)\n - [ReleaseMinimal](docs/ReleaseMinimal.md)\n - [ReleasePlan](docs/ReleasePlan.md)\n - [ReleasePlanAbbreviated](docs/ReleasePlanAbbreviated.md)\n - [ReleasePlanPlanMetadata](docs/ReleasePlanPlanMetadata.md)\n - [ReleasePlanPlanMetadataDocstring](docs/ReleasePlanPlanMetadataDocstring.md)\n - [ReleasePlanPlanMetadataDocstringTags](docs/ReleasePlanPlanMetadataDocstringTags.md)\n - [ReleaseTask](docs/ReleaseTask.md)\n - [User](docs/User.md)\n - [UserAbbreviated](docs/UserAbbreviated.md)\n\n\n## Documentation For Authorization\n\n\n\n## ApiKeyAuth\n\n- **Type**: API key\n\nExample\n\n```golang\nauth := context.WithValue(context.Background(), puppetforge.ContextAPIKey, puppetforge.APIKey{\n    Key: \"APIKEY\",\n    Prefix: \"Bearer\", // Omit if not necessary.\n})\nr, err := client.Service.Operation(auth, args)\n```\n\n\n\n## Author\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnmccabe%2Fgo-puppetforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnmccabe%2Fgo-puppetforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnmccabe%2Fgo-puppetforge/lists"}