Harness · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Harness Module Registry API
36 actions
36 updates
phrasing
extends
openapi/harness-module-registry-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Harness's API. It is a proposal applied on top of the contract, not a document Harness publishes.
What the actions change
x-apievangelist-phrasing
Targets 36 · first 16 shown; the file carries all of them
$.info
$.paths['/iacm/api/modules'].get
$.paths['/iacm/api/modules'].post
$.paths['/iacm/api/modules/{id}'].get
$.paths['/iacm/api/modules/{id}'].put
$.paths['/iacm/api/modules/{id}'].delete
$.paths['/iacm/api/modules/{id}/lifecycle'].get
$.paths['/iacm/api/modules/{id}/lifecycle'].put
$.paths['/iacm/api/modules/{id}/lifecycle'].delete
$.paths['/iacm/api/modules/{id}/lifecycle/versions/{version}'].get
$.paths['/iacm/api/modules/{id}/pipeline'].post
$.paths['/iacm/api/modules/{id}/sync'].post
$.paths['/iacm/api/modules/{id}/tags'].get
$.paths['/iacm/api/modules/{id}/testing'].put
$.paths['/iacm/api/modules/{id}/testing'].post
$.paths['/iacm/api/modules/{id}/testing'].delete
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Harness Module Registry API
version: 1.0.0
extends: openapi/harness-module-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: 35
- target: $.paths['/iacm/api/modules'].get
update:
x-apievangelist-phrasing:
intent: List modules in the module registry
effect: read
questions:
- What Terraform modules are published in our Harness module registry?
- Can I search the module registry by name and narrow it to one provider?
instructions:
- text: List every module in our module registry.
- text: Search the module registry for modules matching {searchTerm} that target {provider}.
slots:
searchTerm: query.searchTerm
provider: query.provider
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules'].post
update:
x-apievangelist-phrasing:
intent: Register a new module in the registry
effect: write
questions:
- How do I add a new infrastructure module to the module registry?
- Can a new registry module point at a Git repository path and branch?
instructions:
- text: Register a new module named {name} for the {system} provider in the module registry.
slots:
name: requestBody.name
system: requestBody.system
- text: Create module {name} for {system} sourced from repository {repository} on branch {repository_branch}.
slots:
name: requestBody.name
system: requestBody.system
repository: requestBody.repository
repository_branch: requestBody.repository_branch
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one registry module by ID
effect: read
questions:
- Where can I see the full details of a single module in the registry?
- What repository and settings does a particular registry module use?
instructions:
- text: Show me the registry module with ID {id}.
slots:
id: path.id
- text: Fetch the details of module {id} from the module registry.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}'].put
update:
x-apievangelist-phrasing:
intent: Update a registry module's settings
effect: write
questions:
- Can I change the repository or description of a module that's already registered?
- How do I edit an existing module in the module registry?
instructions:
- text: Update module {id} so its name is {name} and its system is {system}.
slots:
id: path.id
name: requestBody.name
system: requestBody.system
- text: Change the description of registry module {id} to {description}, keeping name {name} and system {system}.
slots:
id: path.id
description: requestBody.description
name: requestBody.name
system: requestBody.system
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a module from the registry
effect: destructive
questions:
- Is it possible to remove a whole module from the module registry?
- What happens to a module's listing when I delete it from the registry?
instructions:
- text: Delete module {id} from the module registry entirely.
slots:
id: path.id
- text: Remove the registry module with ID {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/lifecycle'].get
update:
x-apievangelist-phrasing:
intent: Get a module's lifecycle rule
effect: read
questions:
- Which lifecycle rule controls when versions of a module become deprecated?
- How many supported and warning versions does this module's lifecycle rule allow?
instructions:
- text: Show the lifecycle rule configured for module {id}.
slots:
id: path.id
- text: Get the supported, warning and deprecated settings for module {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/lifecycle'].put
update:
x-apievangelist-phrasing:
intent: Set a module's version lifecycle rule
effect: write
questions:
- Can I define how many module versions stay supported before they are warned or deprecated?
- Does saving a lifecycle rule replace the existing overrides for that module?
instructions:
- text: Set the lifecycle rule on module {id} to keep {supported_count} versions supported and {warning_count} in warning.
slots:
id: path.id
supported_count: requestBody.supported_count
warning_count: requestBody.warning_count
- text: Make deprecated versions of module {id} trigger action {deprecated_action}.
slots:
id: path.id
deprecated_action: requestBody.deprecated_action
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/lifecycle'].delete
update:
x-apievangelist-phrasing:
intent: Remove a module's lifecycle rule
effect: destructive
questions:
- How do I drop the lifecycle rule so every version of a module counts as supported again?
- Does removing a lifecycle rule also clear its per-version overrides?
instructions:
- text: Delete the lifecycle rule and all overrides on module {id}.
slots:
id: path.id
- text: Revert every version of module {id} to supported by removing its lifecycle rule.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/lifecycle/versions/{version}'].get
update:
x-apievangelist-phrasing:
intent: Check a module version's lifecycle status
effect: read
questions:
- Is a specific version of our module still supported or already deprecated?
- What enforcement action applies if a pipeline uses an older module version?
instructions:
- text: Tell me the lifecycle tier of version {version} of module {id}.
slots:
version: path.version
id: path.id
- text: Check what enforcement action applies to module {id} at version {version}.
slots:
id: path.id
version: path.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/pipeline'].post
update:
x-apievangelist-phrasing:
intent: Create a testing pipeline for a module
effect: write
questions:
- Can Harness generate a pipeline that tests a registry module for me?
- Which org and project does a module's new testing pipeline get created in?
instructions:
- text: Create a testing pipeline for module {id} in org {pipeline_org} and project {pipeline_project}.
slots:
id: path.id
pipeline_org: requestBody.pipeline_org
pipeline_project: requestBody.pipeline_project
- text: Generate a {type} pipeline for module {id} under project {pipeline_project} in org {pipeline_org}.
slots:
type: requestBody.type
id: path.id
pipeline_project: requestBody.pipeline_project
pipeline_org: requestBody.pipeline_org
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/sync'].post
update:
x-apievangelist-phrasing:
intent: Resync a module's metadata
effect: write
questions:
- How can I refresh a module's metadata after pushing changes to its repo?
- Can I force the registry to re-read a module's source?
instructions:
- text: Sync the metadata for module {id} now.
slots:
id: path.id
- text: Refresh registry module {id} so it picks up the latest source.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/tags'].get
update:
x-apievangelist-phrasing:
intent: List a module's Git tags
effect: read
questions:
- Which Git tags has the registry picked up for a given module?
- What tags exist on this module in the registry?
instructions:
- text: List the tags recorded for module {id}.
slots:
id: path.id
- text: Show every Git tag the registry holds for module {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/testing'].put
update:
x-apievangelist-phrasing:
intent: Change a module's testing configuration
effect: write
questions:
- Can I switch the provisioner version a module's tests run with?
- How do I change which pipeline tests a module after testing is already on?
instructions:
- text: Update testing for module {id} to use provisioner {provisioner_type} version {provisioner_version}.
slots:
id: path.id
provisioner_type: requestBody.provisioner_type
provisioner_version: requestBody.provisioner_version
- text: Point module {id}'s existing tests at pipeline {pipeline_id} in org {pipeline_org} and project {pipeline_project}.
slots:
id: path.id
pipeline_id: requestBody.pipeline_id
pipeline_org: requestBody.pipeline_org
pipeline_project: requestBody.pipeline_project
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/testing'].post
update:
x-apievangelist-phrasing:
intent: Turn on testing for a module
effect: write
questions:
- How do I switch on automated testing for a module that has none yet?
- What do I need to provide to enable module testing — pipeline, provisioner, version?
instructions:
- text: Enable testing on module {id} with provisioner {provisioner_type} {provisioner_version}.
slots:
id: path.id
provisioner_type: requestBody.provisioner_type
provisioner_version: requestBody.provisioner_version
- text: Turn on module testing for {id}, running in org {pipeline_org} project {pipeline_project}.
slots:
id: path.id
pipeline_org: requestBody.pipeline_org
pipeline_project: requestBody.pipeline_project
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/testing'].delete
update:
x-apievangelist-phrasing:
intent: Turn off testing for a module
effect: destructive
questions:
- Can I stop running tests against a registry module?
- What's the way to disable module testing I set up earlier?
instructions:
- text: Disable testing for module {id}.
slots:
id: path.id
- text: Switch off the automated tests on registry module {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{id}/versions/{version}'].delete
update:
x-apievangelist-phrasing:
intent: Delete one version of a module
effect: destructive
questions:
- Can I remove just one bad version of a module without deleting the module?
- How do I unpublish a specific module version from the registry?
instructions:
- text: Delete version {version} of module {id}.
slots:
version: path.version
id: path.id
- text: Remove the {version} release from registry module {id}, keeping the rest.
slots:
version: path.version
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{module_id}/examples/file'].get
update:
x-apievangelist-phrasing:
intent: Download a file from a module's examples
effect: read
questions:
- Can I pull a single example file out of a module version?
- Does the example file path have to start with examples/?
instructions:
- text: Download example file {path} from module {module_id} version {version}.
slots:
path: query.path
module_id: path.module_id
version: query.version
- text: Get the contents of {path} in the examples of module {module_id} at {version}.
slots:
path: query.path
module_id: path.module_id
version: query.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{module_id}/examples/tree'].get
update:
x-apievangelist-phrasing:
intent: Browse a module's examples folder
effect: read
questions:
- What example directories and files ship with a module version?
- Can I list the subfolders inside a module's examples tree?
instructions:
- text: List the files and folders at {path} in the examples tree of module {module_id} version {version}.
slots:
path: query.path
module_id: path.module_id
version: query.version
- text: Browse the examples directory of module {module_id} {version} starting at {path}.
slots:
module_id: path.module_id
version: query.version
path: query.path
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{module_id}/metadata'].get
update:
x-apievangelist-phrasing:
intent: Get parsed metadata for a module version
effect: read
questions:
- What inputs, outputs and resources does a module version declare?
- Can I read metadata for a submodule rather than the root module?
instructions:
- text: Show the parsed metadata of module {module_id} at version {version}.
slots:
module_id: path.module_id
version: query.version
- text: Get metadata for submodule {submodule} of module {module_id} version {version}.
slots:
submodule: query.submodule
module_id: path.module_id
version: query.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{module_id}/readme'].get
update:
x-apievangelist-phrasing:
intent: Read a module version's README
effect: read
questions:
- Where do I read the README for a particular module version?
- Can I see the README of a submodule inside a registry module?
instructions:
- text: Show the README for module {module_id} version {version}.
slots:
module_id: path.module_id
version: query.version
- text: Fetch the README of submodule {submodule} in module {module_id} at {version}.
slots:
submodule: query.submodule
module_id: path.module_id
version: query.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{moduleId}/events'].post
update:
x-apievangelist-phrasing:
intent: Send an event from a module execution
effect: write
questions:
- Can a pipeline report an event back to the registry while a module runs?
- What event types can I post for a module execution?
instructions:
- text: Send a {eventType} event for module {moduleId} in org {org} project {project} of account {account}.
slots:
eventType: requestBody.eventType
moduleId: path.moduleId
org: requestBody.org
project: requestBody.project
account: requestBody.account
- text: Record event {eventType} against module {moduleId} for account {account}, org {org}, project {project}.
slots:
eventType: requestBody.eventType
moduleId: path.moduleId
account: requestBody.account
org: requestBody.org
project: requestBody.project
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{moduleId}/executions'].get
update:
x-apievangelist-phrasing:
intent: List executions of a module
effect: read
questions:
- Which pipeline runs have used this module, and did they succeed?
- Can I filter a module's executions by status or time window?
instructions:
- text: List recent executions of module {moduleId}.
slots:
moduleId: path.moduleId
- text: Show executions of module {moduleId} with status {status} since {start_time}.
slots:
moduleId: path.moduleId
status: query.status
start_time: query.start_time
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{moduleId}/executions'].post
update:
x-apievangelist-phrasing:
intent: Record a new module execution
effect: write
questions:
- How do I log that a pipeline stage executed a registry module?
- What pipeline details are needed to record a module execution?
instructions:
- text: Record an execution of module {moduleId} from pipeline {pipeline} run {pipelineExecutionId} stage {pipelineStageId}.
slots:
moduleId: path.moduleId
pipeline: requestBody.pipeline
pipelineExecutionId: requestBody.pipelineExecutionId
pipelineStageId: requestBody.pipelineStageId
- text: Create a module execution for {moduleId} in account {account}, pipeline org {pipeline_org}, project {pipeline_project}.
slots:
moduleId: path.moduleId
account: requestBody.account
pipeline_org: requestBody.pipeline_org
pipeline_project: requestBody.pipeline_project
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{name}/{system}/{version}/examples'].post
update:
x-apievangelist-phrasing:
intent: Upload an example to a module version
effect: write
questions:
- Can I push README and Terraform files for one example directory of a module?
- What's needed to publish usage examples alongside a module version?
instructions:
- text: Upload the example at {path} for module {name} ({system}) version {version}.
slots:
path: query.path
name: path.name
system: path.system
version: path.version
- text: Publish example directory {path} to module {name} for {system} at {version}.
slots:
path: query.path
name: path.name
system: path.system
version: path.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{name}/{system}/{version}/metadata'].post
update:
x-apievangelist-phrasing:
intent: Store parsed data for a module version
effect: write
questions:
- How are a module version's parsed metadata and download URL saved into the registry?
- Can I attach submodule paths and example paths to a module version's data?
instructions:
- text: Save parsed metadata for module {name} ({system}) version {version} from Git tag {git_tag} with download URL {download_url}.
slots:
name: path.name
system: path.system
version: path.version
git_tag: requestBody.git_tag
download_url: requestBody.download_url
- text: Store module data for {name}/{system} {version}, tagged {git_tag}.
slots:
name: path.name
system: path.system
version: path.version
git_tag: requestBody.git_tag
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{name}/{system}/{version}/readme'].post
update:
x-apievangelist-phrasing:
intent: Push the README for a module version
effect: write
questions:
- How do I upload a README for a module version I just published?
- Can I push a README for a submodule specifically?
instructions:
- text: Push the README for module {name} ({system}) version {version}.
slots:
name: path.name
system: path.system
version: path.version
- text: Upload the README of submodule {submoduleName} in {name}/{system} at {version}.
slots:
submoduleName: query.submoduleName
name: path.name
system: path.system
version: path.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{name}/{system}/{version}/upload'].post
update:
x-apievangelist-phrasing:
intent: Upload a module version's artifact
effect: write
questions:
- How do I upload the packaged files for a new module version?
- Which header names the file when uploading a module artifact?
instructions:
- text: Upload the artifact for module {name} ({system}) version {version}.
slots:
name: path.name
system: path.system
version: path.version
- text: Upload {filename} as the package for {name}/{system} at {version}.
slots:
filename: header.Content-Disposition
name: path.name
system: path.system
version: path.version
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/{name}/{system}/tags'].post
update:
x-apievangelist-phrasing:
intent: Save the tag list for a module
effect: write
questions:
- Can I push the list of Git tags found for a module into the registry?
- Is there a way to report a tag discovery error for a module?
instructions:
- text: Save tags {tags} for module {name} targeting {system}.
slots:
tags: requestBody.tags
name: path.name
system: path.system
- text: Record tag error {error} for module {name} on {system}.
slots:
error: requestBody.error
name: path.name
system: path.system
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/connectors'].get
update:
x-apievangelist-phrasing:
intent: List connectors available to the registry
effect: read
questions:
- Which Git connectors can the module registry use in my account?
- Can I see the registry's connectors for one org and project?
instructions:
- text: List the connectors the module registry can use.
- text: Show module registry connectors in org {org} and project {project}.
slots:
org: query.org
project: query.project
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/lifecycle/batch-check'].post
update:
x-apievangelist-phrasing:
intent: Check many modules for lifecycle violations
effect: read
questions:
- Can I check all the modules a terraform init resolved for deprecated versions at once?
- Does the batch lifecycle check return only the modules that violate a rule?
instructions:
- text: 'Batch-check these modules for lifecycle violations: {items}.'
slots:
items: requestBody.items
- text: Tell me which of the resolved modules {items} are deprecated or in warning.
slots:
items: requestBody.items
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/pipeline/onboarding'].post
update:
x-apievangelist-phrasing:
intent: Create the registry onboarding pipeline
effect: write
questions:
- How do I set up the pipeline that onboards new modules into the registry?
- Which project does the module onboarding pipeline get created in?
instructions:
- text: Create a module onboarding pipeline in org {org} and project {project}.
slots:
org: requestBody.org
project: requestBody.project
- text: Set up the registry onboarding pipeline under project {project} of org {org}.
slots:
project: requestBody.project
org: requestBody.org
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/api/modules/providers'].get
update:
x-apievangelist-phrasing:
intent: List providers used by registry modules
effect: read
questions:
- Which providers or systems do our registry modules target?
- What distinct module systems exist in a given org or project?
instructions:
- text: List the distinct providers our registry modules target.
- text: Show module providers in the registry for org {scope_org}.
slots:
scope_org: query.scope_org
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/registry/account/{namespace}/{name}/{system}/{version}/download'].get
update:
x-apievangelist-phrasing:
intent: Get the download location for a module version
effect: read
questions:
- What does Terraform call to find where to download a module version?
- Can I fetch a specific version of a module through the registry protocol?
instructions:
- text: Get the download link for {namespace}/{name}/{system} version {version}.
slots:
namespace: path.namespace
name: path.name
system: path.system
version: path.version
- text: Resolve where to download module {name} for {system} at {version} in namespace {namespace}.
slots:
name: path.name
system: path.system
version: path.version
namespace: path.namespace
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/registry/account/{namespace}/{name}/{system}/{version}/download/file'].get
update:
x-apievangelist-phrasing:
intent: Download a module version's tarball
effect: read
questions:
- How do I grab the actual tarball of a module version with a download token?
- Is a token required to download a module's file archive?
instructions:
- text: Download the tarball for {namespace}/{name}/{system} {version} using token {token}.
slots:
namespace: path.namespace
name: path.name
system: path.system
version: path.version
token: query.token
- text: Fetch the file archive of module {name} ({system}) version {version} from namespace {namespace} with token {token}.
slots:
name: path.name
system: path.system
version: path.version
namespace: path.namespace
token: query.token
method: generated
generated: '2026-09-26'
- target: $.paths['/iacm/registry/account/{namespace}/{name}/{system}/versions'].get
update:
x-apievangelist-phrasing:
intent: List available versions of a module
effect: read
questions:
- What versions of a module can Terraform pull from the registry?
- Which is the newest published version of our module?
instructions:
- text: List all versions of {namespace}/{name}/{system}.
slots:
namespace: path.namespace
name: path.name
system: path.system
- text: Show the published versions of module {name} for {system} in namespace {namespace}.
slots:
name: path.name
system: path.system
namespace: path.namespace
method: generated
generated: '2026-09-26'