Harness Module Registry API

The module-registry service is a private registry for Terraform/Opentofu modules

Operations 35

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /iacm/api/modules List modules in the module registry · List modules #
Ask an LLM
“What Terraform modules are published in our Harness module registry?”
“Can I search the module registry by name and narrow it to one provider?”
Tell an agent
List every module in our module registry.
Search the module registry for modules matching {searchTerm} that target {provider}.
POST /iacm/api/modules Register a new module in the registry · Create module #
Ask an LLM
“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?”
Tell an agent
Register a new module named {name} for the {system} provider in the module registry.
Create module {name} for {system} sourced from repository {repository} on branch {repository_branch}.
DELETE /iacm/api/modules/{id} Delete a module from the registry · Delete module #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Delete module {id} from the module registry entirely.
Remove the registry module with ID {id}.
GET /iacm/api/modules/{id} Get one registry module by ID · List module by id #
Ask an LLM
“Where can I see the full details of a single module in the registry?”
“What repository and settings does a particular registry module use?”
Tell an agent
Show me the registry module with ID {id}.
Fetch the details of module {id} from the module registry.
PUT /iacm/api/modules/{id} Update a registry module's settings · Update module #
Ask an LLM
“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?”
Tell an agent
Update module {id} so its name is {name} and its system is {system}.
Change the description of registry module {id} to {description}, keeping name {name} and system {system}.
DELETE /iacm/api/modules/{id}/lifecycle Remove a module's lifecycle rule · Delete module lifecycle rule #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Delete the lifecycle rule and all overrides on module {id}.
Revert every version of module {id} to supported by removing its lifecycle rule.
GET /iacm/api/modules/{id}/lifecycle Get a module's lifecycle rule · Get module lifecycle rule #
Ask an LLM
“Which lifecycle rule controls when versions of a module become deprecated?”
“How many supported and warning versions does this module's lifecycle rule allow?”
Tell an agent
Show the lifecycle rule configured for module {id}.
Get the supported, warning and deprecated settings for module {id}.
PUT /iacm/api/modules/{id}/lifecycle Set a module's version lifecycle rule · Upsert module lifecycle rule #
Ask an LLM
“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?”
Tell an agent
Set the lifecycle rule on module {id} to keep {supported_count} versions supported and {warning_count} in warning.
Make deprecated versions of module {id} trigger action {deprecated_action}.
GET /iacm/api/modules/{id}/lifecycle/versions/{version} Check a module version's lifecycle status · Get module version lifecycle status #
Ask an LLM
“Is a specific version of our module still supported or already deprecated?”
“What enforcement action applies if a pipeline uses an older module version?”
Tell an agent
Tell me the lifecycle tier of version {version} of module {id}.
Check what enforcement action applies to module {id} at version {version}.
POST /iacm/api/modules/{id}/pipeline Create a testing pipeline for a module · Create testing pipeline #
Ask an LLM
“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?”
Tell an agent
Create a testing pipeline for module {id} in org {pipeline_org} and project {pipeline_project}.
Generate a {type} pipeline for module {id} under project {pipeline_project} in org {pipeline_org}.
POST /iacm/api/modules/{id}/sync Resync a module's metadata · Sync module metadata #
Ask an LLM
“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?”
Tell an agent
Sync the metadata for module {id} now.
Refresh registry module {id} so it picks up the latest source.
GET /iacm/api/modules/{id}/tags List a module's Git tags · List module tags #
Ask an LLM
“Which Git tags has the registry picked up for a given module?”
“What tags exist on this module in the registry?”
Tell an agent
List the tags recorded for module {id}.
Show every Git tag the registry holds for module {id}.
DELETE /iacm/api/modules/{id}/testing Turn off testing for a module · Disable testing #
Ask an LLM
“Can I stop running tests against a registry module?”
“What's the way to disable module testing I set up earlier?”
Tell an agent destructive · confirm first
Disable testing for module {id}.
Switch off the automated tests on registry module {id}.
POST /iacm/api/modules/{id}/testing Turn on testing for a module · Enable testing #
Ask an LLM
“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?”
Tell an agent
Enable testing on module {id} with provisioner {provisioner_type} {provisioner_version}.
Turn on module testing for {id}, running in org {pipeline_org} project {pipeline_project}.
PUT /iacm/api/modules/{id}/testing Change a module's testing configuration · Update module testing #
Ask an LLM
“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?”
Tell an agent
Update testing for module {id} to use provisioner {provisioner_type} version {provisioner_version}.
Point module {id}'s existing tests at pipeline {pipeline_id} in org {pipeline_org} and project {pipeline_project}.
DELETE /iacm/api/modules/{id}/versions/{version} Delete one version of a module · Delete module version #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Delete version {version} of module {id}.
Remove the {version} release from registry module {id}, keeping the rest.
GET /iacm/api/modules/{module_id}/examples/file Download a file from a module's examples · Get module example file #
Ask an LLM
“Can I pull a single example file out of a module version?”
“Does the example file path have to start with examples/?”
Tell an agent
Download example file {path} from module {module_id} version {version}.
Get the contents of {path} in the examples of module {module_id} at {version}.
GET /iacm/api/modules/{module_id}/examples/tree Browse a module's examples folder · List module example tree #
Ask an LLM
“What example directories and files ship with a module version?”
“Can I list the subfolders inside a module's examples tree?”
Tell an agent
List the files and folders at {path} in the examples tree of module {module_id} version {version}.
Browse the examples directory of module {module_id} {version} starting at {path}.
GET /iacm/api/modules/{module_id}/metadata Get parsed metadata for a module version · List module metadata #
Ask an LLM
“What inputs, outputs and resources does a module version declare?”
“Can I read metadata for a submodule rather than the root module?”
Tell an agent
Show the parsed metadata of module {module_id} at version {version}.
Get metadata for submodule {submodule} of module {module_id} version {version}.
GET /iacm/api/modules/{module_id}/readme Read a module version's README · List module readme #
Ask an LLM
“Where do I read the README for a particular module version?”
“Can I see the README of a submodule inside a registry module?”
Tell an agent
Show the README for module {module_id} version {version}.
Fetch the README of submodule {submodule} in module {module_id} at {version}.
POST /iacm/api/modules/{moduleId}/events Send an event from a module execution · Send an event related with a module execution #
Ask an LLM
“Can a pipeline report an event back to the registry while a module runs?”
“What event types can I post for a module execution?”
Tell an agent
Send a {eventType} event for module {moduleId} in org {org} project {project} of account {account}.
Record event {eventType} against module {moduleId} for account {account}, org {org}, project {project}.
GET /iacm/api/modules/{moduleId}/executions List executions of a module · List executions for a specific module #
Ask an LLM
“Which pipeline runs have used this module, and did they succeed?”
“Can I filter a module's executions by status or time window?”
Tell an agent
List recent executions of module {moduleId}.
Show executions of module {moduleId} with status {status} since {start_time}.
POST /iacm/api/modules/{moduleId}/executions Record a new module execution · Create a new module execution #
Ask an LLM
“How do I log that a pipeline stage executed a registry module?”
“What pipeline details are needed to record a module execution?”
Tell an agent
Record an execution of module {moduleId} from pipeline {pipeline} run {pipelineExecutionId} stage {pipelineStageId}.
Create a module execution for {moduleId} in account {account}, pipeline org {pipeline_org}, project {pipeline_project}.
POST /iacm/api/modules/{name}/{system}/{version}/examples Upload an example to a module version · Create module example #
Ask an LLM
“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?”
Tell an agent
Upload the example at {path} for module {name} ({system}) version {version}.
Publish example directory {path} to module {name} for {system} at {version}.
POST /iacm/api/modules/{name}/{system}/{version}/metadata Store parsed data for a module version · Create module data #
Ask an LLM
“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?”
Tell an agent
Save parsed metadata for module {name} ({system}) version {version} from Git tag {git_tag} with download URL {download_url}.
Store module data for {name}/{system} {version}, tagged {git_tag}.
POST /iacm/api/modules/{name}/{system}/{version}/readme Push the README for a module version · Create module readme #
Ask an LLM
“How do I upload a README for a module version I just published?”
“Can I push a README for a submodule specifically?”
Tell an agent
Push the README for module {name} ({system}) version {version}.
Upload the README of submodule {submoduleName} in {name}/{system} at {version}.
POST /iacm/api/modules/{name}/{system}/{version}/upload Upload a module version's artifact · Upload module artifact files #
Ask an LLM
“How do I upload the packaged files for a new module version?”
“Which header names the file when uploading a module artifact?”
Tell an agent
Upload the artifact for module {name} ({system}) version {version}.
Upload {filename} as the package for {name}/{system} at {version}.
POST /iacm/api/modules/{name}/{system}/tags Save the tag list for a module · Create module tags #
Ask an LLM
“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?”
Tell an agent
Save tags {tags} for module {name} targeting {system}.
Record tag error {error} for module {name} on {system}.
GET /iacm/api/modules/connectors List connectors available to the registry · List connectors #
Ask an LLM
“Which Git connectors can the module registry use in my account?”
“Can I see the registry's connectors for one org and project?”
Tell an agent
List the connectors the module registry can use.
Show module registry connectors in org {org} and project {project}.
POST /iacm/api/modules/lifecycle/batch-check Check many modules for lifecycle violations · Batch check module lifecycle status #
Ask an LLM
“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?”
Tell an agent
Batch-check these modules for lifecycle violations: {items}.
Tell me which of the resolved modules {items} are deprecated or in warning.
POST /iacm/api/modules/pipeline/onboarding Create the registry onboarding pipeline · Create onboarding pipeline #
Ask an LLM
“How do I set up the pipeline that onboards new modules into the registry?”
“Which project does the module onboarding pipeline get created in?”
Tell an agent
Create a module onboarding pipeline in org {org} and project {project}.
Set up the registry onboarding pipeline under project {project} of org {org}.
GET /iacm/api/modules/providers List providers used by registry modules · List module providers #
Ask an LLM
“Which providers or systems do our registry modules target?”
“What distinct module systems exist in a given org or project?”
Tell an agent
List the distinct providers our registry modules target.
Show module providers in the registry for org {scope_org}.
GET /iacm/registry/account/{namespace}/{name}/{system}/{version}/download Get the download location for a module version · Download module #
Ask an LLM
“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?”
Tell an agent
Get the download link for {namespace}/{name}/{system} version {version}.
Resolve where to download module {name} for {system} at {version} in namespace {namespace}.
GET /iacm/registry/account/{namespace}/{name}/{system}/{version}/download/file Download a module version's tarball · Download module file tarball #
Ask an LLM
“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?”
Tell an agent
Download the tarball for {namespace}/{name}/{system} {version} using token {token}.
Fetch the file archive of module {name} ({system}) version {version} from namespace {namespace} with token {token}.
GET /iacm/registry/account/{namespace}/{name}/{system}/versions List available versions of a module · List module versions #
Ask an LLM
“What versions of a module can Terraform pull from the registry?”
“Which is the newest published version of our module?”
Tell an agent
List all versions of {namespace}/{name}/{system}.
Show the published versions of module {name} for {system} in namespace {namespace}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/harness:harness-module-registry-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

harness-module-registry-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Harness Module Registry API
  version: '1.0'
  description: The Harness Software Delivery Platform uses OpenAPI Specification v3.0.
  contact:
    name: API Support
    email: contact@harness.io
    url: https://harness.io/
  x-logo:
    url: https://mma.prnewswire.com/media/779232/Harnes_logo_horizontal.jpg?p=facebook
    altText: Harness
  termsOfService: https://harness.io/terms-of-use/
servers:
- url: https://app.harness.io
  description: Harness host URL
- url: https://{vanity}
  description: Vanity URL
  variables:
    vanity:
      default: app.harness.io
security:
- x-api-key: []
tags:


# --- truncated at 32 KB (272 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/harness/refs/heads/main/openapi/harness-module-registry-api-openapi.yml