# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Harness Provider Registry API version: 1.0.0 extends: openapi/harness-provider-registry-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 24 - target: $.paths['/iacm/api/providers'].get update: x-apievangelist-phrasing: intent: List Terraform providers in the registry effect: read questions: - Which Terraform providers have we published to the Harness IaCM provider registry? - Can I search the private provider registry by name and page through the results? instructions: - text: List all providers in our IaCM provider registry. - text: Search the provider registry for providers matching {term}. slots: term: query.searchTerm method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}'].get update: x-apievangelist-phrasing: intent: Get a registry provider by ID effect: read questions: - What details does the registry hold for a single Terraform provider I own? - Can I look up one private provider by its ID to see its type and description? instructions: - text: Show me the registry provider {id}. slots: id: path.id - text: Fetch the details of provider {id} from the IaCM registry. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a provider from the registry effect: destructive questions: - How do I remove a whole Terraform provider from our private registry? - Is there a way to delete a provider we no longer maintain, not just one version? instructions: - text: Delete provider {id} from the provider registry entirely. slots: id: path.id - text: Remove the registry provider {id} and stop offering it. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/lifecycle'].get update: x-apievangelist-phrasing: intent: Get a provider's lifecycle rule effect: read questions: - What lifecycle rule is set on a provider — how many versions stay supported before warnings? - Can I see the deprecation and warning actions configured for a registry provider? instructions: - text: Show the lifecycle rule configured for provider {id}. slots: id: path.id - text: Get the supported, warning and deprecated settings for provider {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/lifecycle'].put update: x-apievangelist-phrasing: intent: Set a provider's version lifecycle rule effect: write questions: - How do I define how many provider versions stay supported before they are flagged as warning? - Can I set what action happens when a team uses a deprecated provider version? - Does saving a lifecycle rule replace all the existing per-version overrides? instructions: - text: Set provider {id} to keep {supported} versions supported and {warning} in warning. slots: id: path.id supported: requestBody.supported_count warning: requestBody.warning_count - text: Make deprecated versions of provider {id} trigger the {action} action. slots: id: path.id action: requestBody.deprecated_action method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/lifecycle'].delete update: x-apievangelist-phrasing: intent: Remove a provider's lifecycle rule effect: destructive questions: - How do I clear the lifecycle rule on a provider so every version counts as supported again? - What happens to lifecycle overrides when I delete a provider's lifecycle rule? instructions: - text: Delete the lifecycle rule and all overrides for provider {id}. slots: id: path.id - text: Revert every version of provider {id} to supported by removing its lifecycle rule. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/lifecycle/versions/{version}'].get update: x-apievangelist-phrasing: intent: Check the lifecycle tier of a provider version effect: read questions: - Is a specific provider version still supported, in warning, or deprecated? - What enforcement action would apply if a workspace pinned this exact provider version? instructions: - text: Check the lifecycle status of version {version} of provider {id}. slots: version: path.version id: path.id - text: Tell me the enforcement action for provider {id} at version {version}. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version'].post update: x-apievangelist-phrasing: intent: Create a new provider version effect: write questions: - How do I register a new version of a Terraform provider in the Harness registry? - Which GPG key and protocol do I need when adding a provider version? instructions: - text: Create version {version} of provider {id} signed with GPG key {gpg_key}. slots: version: requestBody.version id: path.id gpg_key: requestBody.gpg_key_id - text: Add provider version {version} to {id} using protocol {protocol} and key {gpg_key}. slots: version: requestBody.version id: path.id protocol: requestBody.protocol gpg_key: requestBody.gpg_key_id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}'].get update: x-apievangelist-phrasing: intent: Get one version of a provider effect: read questions: - What signing key and protocol are recorded for one version of my provider? - Can I inspect a single provider version before publishing it? instructions: - text: Show version {version} of registry provider {id}. slots: version: path.version id: path.id - text: Get the details recorded for provider {id} release {version}. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}'].put update: x-apievangelist-phrasing: intent: Update a provider version's key or protocol effect: write questions: - Can I change the GPG key on a provider version that already exists? - How do I update the protocol listed for an existing provider version? instructions: - text: Switch provider {id} version {version} to GPG key {gpg_key}. slots: id: path.id version: path.version gpg_key: requestBody.gpg_key_id - text: Update version {version} of provider {id} to protocol {protocol} with key {gpg_key}. slots: version: path.version id: path.id protocol: requestBody.protocol gpg_key: requestBody.gpg_key_id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}'].delete update: x-apievangelist-phrasing: intent: Delete a provider version effect: destructive questions: - How do I remove one bad release of a provider without deleting the provider itself? - Can I delete a single version from the private provider registry? instructions: - text: Delete version {version} of provider {id}. slots: version: path.version id: path.id - text: Remove the {version} release of registry provider {id}. slots: version: path.version id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}/file/{filename}'].delete update: x-apievangelist-phrasing: intent: Delete a file from an unsynced provider version effect: destructive questions: - Can I remove one uploaded binary from a provider version that hasn't been synced yet? - How do I fix a wrong file I uploaded to a provider version? instructions: - text: Delete file {filename} from version {version} of provider {id}. slots: filename: path.filename version: path.version id: path.id - text: Remove the uploaded {filename} from provider {id} release {version}. slots: filename: path.filename id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}/files'].post update: x-apievangelist-phrasing: intent: Upload files to a provider version effect: write questions: - How do I upload provider binaries, checksums and signatures to a version in the registry? - What header do I need to set when uploading files to a provider version? instructions: - text: Upload the build files for provider {id} version {version}. slots: id: path.id version: path.version - text: Upload {disposition} to provider {id} version {version}. slots: disposition: header.Content-Disposition id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{id}/version/{version}/publish'].post update: x-apievangelist-phrasing: intent: Publish a provider version effect: write questions: - How do I make a provider version available to Terraform once its files are uploaded? - Can I publish a provider release so workspaces can start using it? instructions: - text: Publish version {version} of provider {id}. slots: version: path.version id: path.id - text: Release provider {id} {version} to the registry now. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/{type}'].post update: x-apievangelist-phrasing: intent: Create a provider in the registry effect: write questions: - How do I add a new custom Terraform provider to the Harness IaCM registry? - Can I give a new registry provider a description when creating it? instructions: - text: Create a new registry provider of type {type}. slots: type: path.type - text: Register provider {type} with the description {description}. slots: type: path.type description: requestBody.description method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/get-provider-domain'].get update: x-apievangelist-phrasing: intent: Get the provider registry domain effect: read questions: - What hostname should Terraform use as the source domain for our private providers? - Where is our account's provider registry domain shown? instructions: - text: Get the provider registry domain for Harness account {account}. slots: account: header.Harness-Account - text: Tell me which domain to reference in Terraform provider source addresses. method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/keys'].get update: x-apievangelist-phrasing: intent: List GPG signing keys effect: read questions: - Which GPG signing keys are uploaded for signing our providers? - Can I search our account's provider signing keys by name? instructions: - text: List every GPG signing key on the account. - text: Find provider signing keys matching {term}. slots: term: query.searchTerm method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/keys'].post update: x-apievangelist-phrasing: intent: Upload a GPG signing key effect: write questions: - How do I add a GPG public key so provider versions can be signed? - What fields does the registry need to store a new signing key? instructions: - text: Upload signing key {key_name} with key ID {key_id} for {user}. slots: key_name: requestBody.key_name key_id: requestBody.key_id user: requestBody.user - text: Add the ASCII-armored key {armor} as {key_name}, key ID {key_id}, owned by {user}. slots: armor: requestBody.ascii_armor key_name: requestBody.key_name key_id: requestBody.key_id user: requestBody.user method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/keys/{id}'].put update: x-apievangelist-phrasing: intent: Update a stored GPG signing key effect: write questions: - Can I replace the armored public key on a signing key already in the registry? - How do I rename or reassign an existing provider signing key? instructions: - text: Update signing key {id} to name {key_name} and key ID {key_id} for {user}. slots: id: path.id key_name: requestBody.key_name key_id: requestBody.key_id user: requestBody.user - text: Replace the armored key on signing key {id} with {armor}, keeping name {key_name}, ID {key_id}, user {user}. slots: id: path.id armor: requestBody.ascii_armor key_name: requestBody.key_name key_id: requestBody.key_id user: requestBody.user method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/keys/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a GPG signing key effect: destructive questions: - How do I remove a compromised GPG key from the provider registry? - Can I delete a signing key we no longer sign providers with? instructions: - text: Delete signing key {id} from the provider registry. slots: id: path.id - text: Remove the GPG key {id} so it can no longer sign providers. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/iacm/api/providers/lifecycle/batch-check'].post update: x-apievangelist-phrasing: intent: Batch-check providers for lifecycle violations effect: read questions: - Which providers resolved during terraform init are using deprecated or warning versions? - Can I check a whole list of providers at once and get only the lifecycle violations back? instructions: - text: 'Check these providers from terraform init for lifecycle violations: {items}.' slots: items: requestBody.items - text: Return only the lifecycle violations for the provider list {items}. slots: items: requestBody.items method: generated generated: '2026-09-26' - target: $.paths['/iacm/provider/account/{account}/{type}/{version}/download/{os}/{arch}'].get update: x-apievangelist-phrasing: intent: Get download info for a provider build effect: read questions: - Where does Terraform get the download URL for a provider build on my OS and CPU architecture? - What download information does the registry return for a provider version on linux amd64? instructions: - text: Get download info for provider {type} {version} on {os}/{arch} in account {account}. slots: type: path.type version: path.version os: path.os arch: path.arch account: path.account - text: Show where to download {type} version {version} for {os} {arch} from account {account}. slots: type: path.type version: path.version os: path.os arch: path.arch account: path.account method: generated generated: '2026-09-26' - target: $.paths['/iacm/provider/account/{account}/{type}/{version}/download/{os}/{arch}/{filetype}'].get update: x-apievangelist-phrasing: intent: Download a provider binary, checksum or signature effect: read questions: - How do I download the actual provider binary, SHA checksums or signature file? - Does downloading a provider file need a token? instructions: - text: Download the {filetype} file for {type} {version} on {os}/{arch} in account {account} with token {token}. slots: filetype: path.filetype type: path.type version: path.version os: path.os arch: path.arch account: path.account token: query.token - text: Fetch the checksums file for provider {type} {version} {os} {arch}, account {account}, token {token}. slots: type: path.type version: path.version os: path.os arch: path.arch account: path.account token: query.token method: generated generated: '2026-09-26' - target: $.paths['/iacm/provider/account/{account}/{type}/versions'].get update: x-apievangelist-phrasing: intent: List available versions of a provider effect: read questions: - Which versions of a provider can Terraform install from our account's registry? - What releases of a given provider type are available to download? instructions: - text: List available versions of provider {type} in account {account}. slots: type: path.type account: path.account - text: Show every downloadable release of {type} for account {account}. slots: type: path.type account: path.account method: generated generated: '2026-09-26'