These endpoints are only relevant to private providers. When you publish a private provider to the HCP Terraform private registry, you must upload the public key of the GPG key-pair that you used to sign the release. The HCP Terraform registry supports RSA or DSA formatted GPG keys. Refer to Preparing and adding a signing key for more details.
You need owners team or Manage Private Registry permissions to add, update, or delete GPG keys in a private registry.
GET /api/registry/:registry_name/v2/gpg-keys
:registry_name
Must be private
. Query Parameters
This endpoint supports pagination with standard URL query parameters. Remember to percent-encode [
as %5B
and ]
as %5D
if your tooling does not automatically encode URLs.
filter[namespace]
Required. A comma-separated list of one or more namespaces. The namespaces must be an authorized HCP Terraform or Terraform Enterprise organization name. page[number]
Optional. If omitted, the endpoint returns the first page. page[size]
Optional. If omitted, the endpoint returns 20 GPG keys per page.
Gets a list of GPG keys belonging to the specified namespaces.
Sample Requestcurl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request GET \
"https://app.terraform.io/api/registry/private/v2/gpg-keys?filter%5Bnamespace%5D=my-organization,my-other-organization"
Sample Response
{
"data": [
{
"type": "gpg-keys",
"id": "1",
"attributes": {
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----...",
"created-at": "2022-02-08T19:15:47Z",
"key-id": "C4E5E6C66C79C778",
"namespace": "my-other-organization",
"source": "",
"source-url": null,
"trust-signature": "",
"updated-at": "2022-02-08T19:15:47Z"
},
"links": {
"self": "/v2/gpg-keys/1"
}
},
{
"type": "gpg-keys",
"id": "140",
"attributes": {
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----...",
"created-at": "2022-04-28T21:32:11Z",
"key-id": "C4E5E6C66C79C778",
"namespace": "my-organization",
"source": "",
"source-url": null,
"trust-signature": "",
"updated-at": "2022-04-28T21:32:11Z"
},
"links": {
"self": "/v2/gpg-keys/140"
}
}
],
"links": {
"first": "/v2/gpg-keys?filter%5Bnamespace%5D=my-organization%2Cmy-other-organization&page%5Bnumber%5D=1&page%5Bsize%5D=15",
"last": "/v2/gpg-keys?filter%5Bnamespace%5D=my-organization%2Cmy-other-organization&page%5Bnumber%5D=1&page%5Bsize%5D=15",
"next": null,
"prev": null
},
"meta": {
"pagination": {
"page-size": 15,
"current-page": 1,
"next-page": null,
"prev-page": null,
"total-pages": 1,
"total-count": 2
}
}
}
POST /api/registry/:registry_name/v2/gpg-keys
:registry_name
Must be private
.
Uploads a GPG Key to a private registry scoped with a namespace. The response will provide a "key-id", which is required to Create a Provider Version.
Request BodyThis POST endpoint requires a JSON object with the following properties as a request payload.
Properties without a default value are required.
Key path Type Default Descriptiondata.type
string Must be "gpg-keys"
. data.attributes.namespace
string The namespace of the provider. Must be the same as the organization_name
for the provider. data.attributes.ascii-armor
string A valid gpg-key string. Sample Payload
{
"data": {
"type": "gpg-keys",
"attributes": {
"namespace": "hashicorp",
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n"
} }
}
Sample Request
curl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request POST \
--data @payload.json \
https://app.terraform.io/api/registry/private/v2/gpg-keys
Sample Response
{
"data": {
"type": "gpg-keys",
"id": "23",
"attributes": {
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n",
"created-at": "2022-02-11T19:16:59Z",
"key-id": "32966F3FB5AC1129",
"namespace": "hashicorp",
"source": "",
"source-url": null,
"trust-signature": "",
"updated-at": "2022-02-11T19:16:59Z"
},
"links": {
"self": "/v2/gpg-keys/23"
}
}
}
GET /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id
:registry_name
Must be private
. :namespace
The namespace of the provider scoped to the GPG key. :key_id
The id of the GPG key.
Gets the content of a GPG key.
Sample Requestcurl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request GET \
https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129
Sample Response
{
"data": {
"type": "gpg-keys",
"id": "2",
"attributes": {
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n",
"created-at": "2022-02-24T17:07:25Z",
"key-id": "32966F3FB5AC1129",
"namespace": "hashicorp",
"source": "",
"source-url": null,
"trust-signature": "",
"updated-at": "2022-02-24T17:07:25Z"
},
"links": {
"self": "/v2/gpg-keys/2"
}
}
}
PATCH /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id
:registry_name
Must be private
. :namespace
The namespace of the provider scoped to the GPG key. :key_id
The id of the GPG key.
Updates the specified GPG key. Only the namespace
attribute can be updated, and namespace
has to match an organization
the user has permission to access.
This PATCH endpoint requires a JSON object with the following properties as a request payload.
Properties without a default value are required.
Key path Type Default Descriptiondata.type
string Must be "gpg-keys"
. data.attributes.namespace
string The namespace of the provider. Must be the same as the organization_name
for the provider. Sample Payload
{
"data": {
"type": "gpg-keys",
"attributes": {
"namespace": "new-namespace",
}
}
}
Sample Request
curl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request PATCH \
--data @payload.json \
https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129
Sample Response
{
"data": {
"type": "gpg-keys",
"id": "2",
"attributes": {
"ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n",
"created-at": "2022-02-24T17:07:25Z",
"key-id": "32966F3FB5AC1129",
"namespace": "new-name",
"source": "",
"source-url": null,
"trust-signature": "",
"updated-at": "2022-02-24T17:12:10Z"
},
"links": {
"self": "/v2/gpg-keys/2"
}
}
}
DELETE /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id
:registry_name
Must be private
. :namespace
The namespace of the provider scoped to the GPG key. :key_id
The id of the GPG key. Sample Request
curl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request DELETE \
--data @payload.json \
https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4