# 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'