> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/api-reference/iacm/module-registry.md).

# Module Registry

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

## List modules

> List all modules from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules":{"get":{"tags":["module-registry"],"summary":"List modules","description":"List all modules from the module registry","operationId":"module-registry#list_modules-by-account","parameters":[{"name":"limit","in":"query","description":"Limit is the number of records to return for a page.","allowEmptyValue":true,"schema":{"type":"integer","description":"Limit is the number of records to return for a page.","default":30,"format":"int64","minimum":1,"maximum":1000}},{"name":"page","in":"query","description":"Page is the page number to return relative to the page 'limit'.","allowEmptyValue":true,"schema":{"type":"integer","description":"Page is the page number to return relative to the page 'limit'.","default":1,"format":"int64","minimum":1}},{"name":"searchTerm","in":"query","description":"Filter results by partial name or provider match","allowEmptyValue":true,"schema":{"type":"string","description":"Filter results by partial name or provider match","default":""}},{"name":"sort","in":"query","description":"Sort order for results","allowEmptyValue":true,"schema":{"type":"string","description":"Sort order for results","default":"name,ASC","enum":["name,ASC","name,DESC","updated,ASC","updated,DESC"]}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"provider","in":"query","description":"Filter modules to these providers (module_system values). Repeatable query param.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Filter modules to these providers (module_system values). Repeatable query param."}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleResourceCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ModuleResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/ModuleResource"},"description":"ModuleResourceCollection is the result type for an array of ModuleResource (default view)"},"ModuleResource":{"type":"object","properties":{"account":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"description":{"type":"string","description":"Free-form text describing the purpose and usage of the module."},"domain_prefix":{"type":"string","description":"Domain prefix for the module"},"git_tag_style":{"type":"string","description":"Pattern used to match Git tags for module versioning. Use 'module-name-*' to match tags like 'my-vpc-module-v1.0.0'."},"id":{"type":"string","description":"module id"},"module_error":{"type":"string","description":"error while retrieving the module"},"name":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128},"namespace":{"type":"string","description":"Namespace derived from account, org and project for use with the Terraform module registry"},"onboarding_pipeline":{"type":"string","description":"Identifier of the Harness pipeline used for module onboarding and metadata sync."},"onboarding_pipeline_org":{"type":"string","description":"Organization where the onboarding pipeline is defined. Defaults to scope_org if not provided."},"onboarding_pipeline_project":{"type":"string","description":"Project where the onboarding pipeline is defined. Defaults to scope_project if not provided."},"onboarding_pipeline_sync":{"type":"boolean","description":"When true, module metadata is automatically synced via the onboarding pipeline when new Git tags are pushed.","default":false},"org":{"type":"string","description":"Organization identifier where the Git connector is defined. Defaults to scope_org if not provided.","maxLength":1024},"project":{"type":"string","description":"Project identifier where the Git connector is defined. Defaults to scope_project if not provided.","maxLength":1024},"repository":{"type":"string","description":"Name of the Git repository that contains the module source code."},"repository_branch":{"type":"string","description":"Repository Branch in which the code should be accessed."},"repository_commit":{"type":"string","description":"Repository Commit/Tag in which the code should be accessed."},"repository_connector":{"type":"string","description":"Harness Git connector identifier used to access the Git repository. Must reference a valid Git connector in your account. Leave empty when using Harness Code as the repository source."},"repository_path":{"type":"string","description":"Repository Path is the path in which the infra code resides.","default":""},"repository_url":{"type":"string","description":"Repository url."},"scope_org":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024},"scope_project":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024},"storage_type":{"type":"string","description":"Defines how module versions are stored. 'git_reference' resolves versions from Git tags; 'artifact' stores uploaded archive files.","default":"git_reference","enum":["git_reference","artifact"]},"synced":{"type":"integer","description":"Synced is the unix timestamp at which the resource was synced for the last time in milliseconds.","format":"int64"},"system":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128},"tags":{"type":"string","description":"Comma-separated list of tags to categorize the module (e.g. networking,vpc,aws)."},"testing_enabled":{"type":"boolean","description":"testing enabled"},"testing_metadata":{"$ref":"#/components/schemas/ModuleTestingMetadata"},"updated":{"type":"integer","description":"Modified is the unix timestamp at which the resource was last modified in milliseconds.","format":"int64"},"version_statuses":{"type":"object","description":"Map of module version to lifecycle status (supported, warning, deprecated). Populated only when the lifecycle feature flag is enabled.","additionalProperties":{"type":"string"}},"versions":{"type":"array","items":{"type":"string"},"description":"versions"}},"description":"ModuleResource result type (default view)","required":["account","name","system","id","created","updated","synced"]},"ModuleTestingMetadata":{"type":"object","properties":{"account":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128},"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"pipelines":{"type":"array","items":{"type":"string"},"description":"pipelines where the testing is enabled"},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128},"provider_connector":{"type":"string","description":"provider connector for testing purposes"},"provisioner_type":{"type":"string","description":"provisioner type for testing purposes"},"provisioner_version":{"type":"string","description":"provisioner version for testing purposes"},"release_pipeline":{"type":"string","description":"release pipeline"}},"description":"ModuleTestingMetadata result type (default view)","required":["account","org","project","provisioner_type","provisioner_version","provider_connector","pipelines"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create module

> Create a new module in the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules":{"post":{"tags":["module-registry"],"summary":"Create module","description":"Create a new module in the module registry","operationId":"module-registry#create-module","parameters":[{"name":"scope_org","in":"query","description":"Organization identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024}},{"name":"scope_project","in":"query","description":"Project identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024}},{"name":"Harness-Account","in":"header","description":"Harness account ID that owns the module.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModuleRequest"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleRegistryCreateModuleResponseBody"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateModuleRequest":{"type":"object","properties":{"description":{"type":"string","description":"Free-form text describing the purpose and usage of the module."},"git_tag_style":{"type":"string","description":"Pattern used to match Git tags for module versioning. Use 'module-name-*' to match tags like 'my-vpc-module-v1.0.0'."},"name":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128},"onboarding_pipeline":{"type":"string","description":"Identifier of the Harness pipeline used for module onboarding and metadata sync."},"onboarding_pipeline_org":{"type":"string","description":"Organization where the onboarding pipeline is defined. Defaults to scope_org if not provided."},"onboarding_pipeline_project":{"type":"string","description":"Project where the onboarding pipeline is defined. Defaults to scope_project if not provided."},"onboarding_pipeline_sync":{"type":"boolean","description":"When true, module metadata is automatically synced via the onboarding pipeline when new Git tags are pushed.","default":false},"org":{"type":"string","description":"Organization identifier where the Git connector is defined. Defaults to scope_org if not provided.","maxLength":1024},"project":{"type":"string","description":"Project identifier where the Git connector is defined. Defaults to scope_project if not provided.","maxLength":1024},"repository":{"type":"string","description":"Name of the Git repository that contains the module source code."},"repository_branch":{"type":"string","description":"Repository Branch in which the code should be accessed."},"repository_commit":{"type":"string","description":"Repository Commit/Tag in which the code should be accessed."},"repository_connector":{"type":"string","description":"Harness Git connector identifier used to access the Git repository. Must reference a valid Git connector in your account. Leave empty when using Harness Code as the repository source."},"repository_path":{"type":"string","description":"Repository Path is the path in which the infra code resides.","default":""},"storage_type":{"type":"string","description":"Defines how module versions are stored. 'git_reference' resolves versions from Git tags; 'artifact' stores uploaded archive files.","default":"git_reference","enum":["git_reference","artifact"]},"system":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128},"tags":{"type":"string","description":"Comma-separated list of tags to categorize the module (e.g. networking,vpc,aws)."}},"required":["name","system"]},"ModuleRegistryCreateModuleResponseBody":{"type":"object","properties":{"account":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"description":{"type":"string","description":"Free-form text describing the purpose and usage of the module."},"id":{"type":"string","description":"module id"},"name":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128},"org":{"type":"string","description":"Organization identifier where the Git connector is defined. Defaults to scope_org if not provided.","maxLength":1024},"project":{"type":"string","description":"Project identifier where the Git connector is defined. Defaults to scope_project if not provided.","maxLength":1024},"repository":{"type":"string","description":"Name of the Git repository that contains the module source code."},"repository_branch":{"type":"string","description":"Repository Branch in which the code should be accessed."},"repository_commit":{"type":"string","description":"Repository Commit/Tag in which the code should be accessed."},"repository_connector":{"type":"string","description":"Harness Git connector identifier used to access the Git repository. Must reference a valid Git connector in your account. Leave empty when using Harness Code as the repository source."},"repository_path":{"type":"string","description":"Repository Path is the path in which the infra code resides.","default":""},"scope_org":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024},"scope_project":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024},"storage_type":{"type":"string","description":"Defines how module versions are stored. 'git_reference' resolves versions from Git tags; 'artifact' stores uploaded archive files.","default":"git_reference","enum":["git_reference","artifact"]},"system":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128},"tags":{"type":"string","description":"Comma-separated list of tags to categorize the module (e.g. networking,vpc,aws)."},"updated":{"type":"integer","description":"Modified is the unix timestamp at which the resource was last modified in milliseconds.","format":"int64"}},"description":"Create-ModuleResponseBody result type (default view)","required":["account","name","system","id","created","updated"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module by id

> List a module from the module registry by ID

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}":{"get":{"tags":["module-registry"],"summary":"List module by id","description":"List a module from the module registry by ID","operationId":"module-registry#list-modules-by-id","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModuleByIDResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ListModuleByIDResponse":{"type":"object","properties":{"account":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"description":{"type":"string","description":"Free-form text describing the purpose and usage of the module."},"domain_prefix":{"type":"string","description":"Domain prefix for the module"},"git_tag_style":{"type":"string","description":"Pattern used to match Git tags for module versioning. Use 'module-name-*' to match tags like 'my-vpc-module-v1.0.0'."},"id":{"type":"string","description":"module id"},"module_error":{"type":"string","description":"error while retrieving the module"},"name":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128},"namespace":{"type":"string","description":"Namespace derived from account, org and project for use with the Terraform module registry"},"onboarding_pipeline":{"type":"string","description":"Identifier of the Harness pipeline used for module onboarding and metadata sync."},"onboarding_pipeline_org":{"type":"string","description":"Organization where the onboarding pipeline is defined. Defaults to scope_org if not provided."},"onboarding_pipeline_project":{"type":"string","description":"Project where the onboarding pipeline is defined. Defaults to scope_project if not provided."},"onboarding_pipeline_sync":{"type":"boolean","description":"When true, module metadata is automatically synced via the onboarding pipeline when new Git tags are pushed.","default":false},"onboarding_pipeline_wh":{"type":"string","description":"Webhook identifier used to trigger the onboarding pipeline on Git events.","default":""},"org":{"type":"string","description":"Organization identifier where the Git connector is defined. Defaults to scope_org if not provided.","maxLength":1024},"project":{"type":"string","description":"Project identifier where the Git connector is defined. Defaults to scope_project if not provided.","maxLength":1024},"repository":{"type":"string","description":"Name of the Git repository that contains the module source code."},"repository_branch":{"type":"string","description":"Repository Branch in which the code should be accessed."},"repository_commit":{"type":"string","description":"Repository Commit/Tag in which the code should be accessed."},"repository_connector":{"type":"string","description":"Harness Git connector identifier used to access the Git repository. Must reference a valid Git connector in your account. Leave empty when using Harness Code as the repository source."},"repository_path":{"type":"string","description":"Repository Path is the path in which the infra code resides.","default":""},"repository_url":{"type":"string","description":"Repository url."},"scope_org":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024},"scope_project":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024},"storage_type":{"type":"string","description":"Defines how module versions are stored. 'git_reference' resolves versions from Git tags; 'artifact' stores uploaded archive files.","default":"git_reference","enum":["git_reference","artifact"]},"synced":{"type":"integer","description":"Synced is the unix timestamp at which the resource was synced for the last time in milliseconds.","format":"int64"},"system":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128},"tags":{"type":"string","description":"Comma-separated list of tags to categorize the module (e.g. networking,vpc,aws)."},"testing_enabled":{"type":"boolean","description":"testing enabled"},"testing_metadata":{"$ref":"#/components/schemas/HarnessIacmModuleRegistryModuleTestingMetadata"},"updated":{"type":"integer","description":"Modified is the unix timestamp at which the resource was last modified in milliseconds.","format":"int64"},"version_statuses":{"type":"object","description":"Map of module version to lifecycle status (supported, warning, deprecated). Populated only when the lifecycle feature flag is enabled.","additionalProperties":{"type":"string"}},"versions":{"type":"array","items":{"type":"string"},"description":"versions"}},"required":["account","name","system","id","created","updated","synced"]},"HarnessIacmModuleRegistryModuleTestingMetadata":{"type":"object","properties":{"account":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128},"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"pipelines":{"type":"array","items":{"type":"string"},"description":"pipelines where the testing is enabled"},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128},"provider_connector":{"type":"string","description":"provider connector for testing purposes"},"provisioner_type":{"type":"string","description":"provisioner type for testing purposes"},"provisioner_version":{"type":"string","description":"provisioner version for testing purposes"},"release_pipeline":{"type":"string","description":"release pipeline"}},"required":["account","org","project","provisioner_type","provisioner_version","provider_connector","pipelines"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Update module

> Update a module in the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}":{"put":{"tags":["module-registry"],"summary":"Update module","description":"Update a module in the module registry","operationId":"module-registry#update-module","parameters":[{"name":"scope_org","in":"query","description":"Organization identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024}},{"name":"scope_project","in":"query","description":"Project identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"Harness account ID that owns the module.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateModuleRequest"}}}},"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"UpdateModuleRequest":{"type":"object","properties":{"description":{"type":"string","description":"Free-form text describing the purpose and usage of the module."},"git_tag_style":{"type":"string","description":"Pattern used to match Git tags for module versioning. Use 'module-name-*' to match tags like 'my-vpc-module-v1.0.0'."},"name":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128},"onboarding_pipeline":{"type":"string","description":"Identifier of the Harness pipeline used for module onboarding and metadata sync."},"onboarding_pipeline_org":{"type":"string","description":"Organization where the onboarding pipeline is defined. Defaults to scope_org if not provided."},"onboarding_pipeline_project":{"type":"string","description":"Project where the onboarding pipeline is defined. Defaults to scope_project if not provided."},"onboarding_pipeline_sync":{"type":"boolean","description":"When true, module metadata is automatically synced via the onboarding pipeline when new Git tags are pushed.","default":false},"org":{"type":"string","description":"Organization identifier where the Git connector is defined. Defaults to scope_org if not provided.","maxLength":1024},"project":{"type":"string","description":"Project identifier where the Git connector is defined. Defaults to scope_project if not provided.","maxLength":1024},"repository":{"type":"string","description":"Name of the Git repository that contains the module source code."},"repository_branch":{"type":"string","description":"Repository Branch in which the code should be accessed."},"repository_commit":{"type":"string","description":"Repository Commit/Tag in which the code should be accessed."},"repository_connector":{"type":"string","description":"Harness Git connector identifier used to access the Git repository. Must reference a valid Git connector in your account. Leave empty when using Harness Code as the repository source."},"repository_path":{"type":"string","description":"Repository Path is the path in which the infra code resides.","default":""},"storage_type":{"type":"string","description":"Defines how module versions are stored. 'git_reference' resolves versions from Git tags; 'artifact' stores uploaded archive files.","default":"git_reference","enum":["git_reference","artifact"]},"system":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128},"tags":{"type":"string","description":"Comma-separated list of tags to categorize the module (e.g. networking,vpc,aws)."}},"required":["name","system"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Delete module

> Delete a module from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}":{"delete":{"tags":["module-registry"],"summary":"Delete module","description":"Delete a module from the module registry","operationId":"module-registry#delete-module","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"id","required":true,"schema":{"type":"string","description":"id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get module lifecycle rule

> Get the lifecycle rule for a module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/lifecycle":{"get":{"tags":["module-registry"],"summary":"Get module lifecycle rule","description":"Get the lifecycle rule for a module","operationId":"module-registry#get-module-lifecycle","parameters":[{"name":"scope_org","in":"query","description":"Org scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Org scope of the module"}},{"name":"scope_project","in":"query","description":"Project scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Project scope of the module"}},{"name":"id","in":"path","description":"Module ID","required":true,"schema":{"type":"string","description":"Module ID"}},{"name":"Harness-Account","in":"header","description":"Account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetModuleLifecycleResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"GetModuleLifecycleResponse":{"type":"object","properties":{"deprecated_action":{"type":"string","description":"Enforcement action for deprecated-tier versions","default":"fail","enum":["no_action","warn","fail"]},"overrides":{"type":"array","items":{"$ref":"#/components/schemas/ModuleLifecycleOverride"},"description":"Manual per-version tier overrides","maxItems":1000},"supported_action":{"type":"string","description":"Enforcement action for supported-tier versions","default":"no_action","enum":["no_action","warn","fail"]},"supported_count":{"type":"integer","description":"Number of most-recent non-pre-release versions classified as supported","format":"int64","minimum":1},"warning_action":{"type":"string","description":"Enforcement action for warning-tier versions","default":"warn","enum":["no_action","warn","fail"]},"warning_count":{"type":"integer","description":"Number of versions immediately after the supported window classified as warning","format":"int64","minimum":0}},"required":["supported_count","warning_count","supported_action","warning_action","deprecated_action"]},"ModuleLifecycleOverride":{"type":"object","properties":{"reason":{"type":"string","description":"Optional reason for this override","maxLength":1000},"tier":{"type":"string","description":"Lifecycle tier to assign to this version","enum":["supported","warning","deprecated"]},"version":{"type":"string","description":"Version string to override","minLength":1}},"description":"Manual lifecycle tier override for a specific module version","required":["version","tier"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Upsert module lifecycle rule

> Create or replace the lifecycle rule for a module, atomically replacing all overrides

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/lifecycle":{"put":{"tags":["module-registry"],"summary":"Upsert module lifecycle rule","description":"Create or replace the lifecycle rule for a module, atomically replacing all overrides","operationId":"module-registry#put-module-lifecycle","parameters":[{"name":"scope_org","in":"query","description":"Org scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Org scope of the module"}},{"name":"scope_project","in":"query","description":"Project scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Project scope of the module"}},{"name":"id","in":"path","description":"Module ID","required":true,"schema":{"type":"string","description":"Module ID"}},{"name":"Harness-Account","in":"header","description":"Account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account name"}}],"requestBody":{"description":"Lifecycle rule with overrides","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleLifecycleRule"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutModuleLifecycleResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ModuleLifecycleRule":{"type":"object","properties":{"deprecated_action":{"type":"string","description":"Enforcement action for deprecated-tier versions","default":"fail","enum":["no_action","warn","fail"]},"overrides":{"type":"array","items":{"$ref":"#/components/schemas/ModuleLifecycleOverride"},"description":"Manual per-version tier overrides","maxItems":1000},"supported_action":{"type":"string","description":"Enforcement action for supported-tier versions","default":"no_action","enum":["no_action","warn","fail"]},"supported_count":{"type":"integer","description":"Number of most-recent non-pre-release versions classified as supported","format":"int64","minimum":1},"warning_action":{"type":"string","description":"Enforcement action for warning-tier versions","default":"warn","enum":["no_action","warn","fail"]},"warning_count":{"type":"integer","description":"Number of versions immediately after the supported window classified as warning","format":"int64","minimum":0}},"description":"Lifecycle rule configuration for a module registry module","required":["supported_count","warning_count","supported_action","warning_action","deprecated_action"]},"ModuleLifecycleOverride":{"type":"object","properties":{"reason":{"type":"string","description":"Optional reason for this override","maxLength":1000},"tier":{"type":"string","description":"Lifecycle tier to assign to this version","enum":["supported","warning","deprecated"]},"version":{"type":"string","description":"Version string to override","minLength":1}},"description":"Manual lifecycle tier override for a specific module version","required":["version","tier"]},"PutModuleLifecycleResponse":{"type":"object","properties":{"deprecated_action":{"type":"string","description":"Enforcement action for deprecated-tier versions","default":"fail","enum":["no_action","warn","fail"]},"overrides":{"type":"array","items":{"$ref":"#/components/schemas/ModuleLifecycleOverride"},"description":"Manual per-version tier overrides","maxItems":1000},"supported_action":{"type":"string","description":"Enforcement action for supported-tier versions","default":"no_action","enum":["no_action","warn","fail"]},"supported_count":{"type":"integer","description":"Number of most-recent non-pre-release versions classified as supported","format":"int64","minimum":1},"warning_action":{"type":"string","description":"Enforcement action for warning-tier versions","default":"warn","enum":["no_action","warn","fail"]},"warning_count":{"type":"integer","description":"Number of versions immediately after the supported window classified as warning","format":"int64","minimum":0}},"required":["supported_count","warning_count","supported_action","warning_action","deprecated_action"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Delete module lifecycle rule

> Delete the lifecycle rule and all overrides for a module; all versions revert to supported

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/lifecycle":{"delete":{"tags":["module-registry"],"summary":"Delete module lifecycle rule","description":"Delete the lifecycle rule and all overrides for a module; all versions revert to supported","operationId":"module-registry#delete-module-lifecycle","parameters":[{"name":"scope_org","in":"query","description":"Org scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Org scope of the module"}},{"name":"scope_project","in":"query","description":"Project scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Project scope of the module"}},{"name":"id","in":"path","description":"Module ID","required":true,"schema":{"type":"string","description":"Module ID"}},{"name":"Harness-Account","in":"header","description":"Account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account name"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get module version lifecycle status

> Compute the lifecycle tier and enforcement action for a specific module version

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/lifecycle/versions/{version}":{"get":{"tags":["module-registry"],"summary":"Get module version lifecycle status","description":"Compute the lifecycle tier and enforcement action for a specific module version","operationId":"module-registry#get-module-lifecycle-version-status","parameters":[{"name":"scope_org","in":"query","description":"Org scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Org scope of the module"}},{"name":"scope_project","in":"query","description":"Project scope of the module","allowEmptyValue":true,"schema":{"type":"string","description":"Project scope of the module"}},{"name":"id","in":"path","description":"Module ID","required":true,"schema":{"type":"string","description":"Module ID"}},{"name":"version","in":"path","description":"Version to look up","required":true,"schema":{"type":"string","description":"Version to look up"}},{"name":"Harness-Account","in":"header","description":"Account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetModuleLifecycleVersionStatusResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"GetModuleLifecycleVersionStatusResponse":{"type":"object","properties":{"action":{"type":"string","description":"Enforcement action derived from the tier's rule action","enum":["no_action","warn","fail"]},"minimum_supported_version":{"type":"string","description":"The lowest-numbered version currently in the supported tier"},"tier":{"type":"string","description":"Lifecycle tier: supported, warning, or deprecated","enum":["supported","warning","deprecated"]}},"required":["tier","action"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create testing pipeline

> Create a new testing pipeline for a given module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/pipeline":{"post":{"tags":["module-registry"],"summary":"Create testing pipeline","description":"Create a new testing pipeline for a given module","operationId":"module-registry#create-testing-pipelines","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTestingPipelineRequest"}}}},"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateTestingPipelineRequest":{"type":"object","properties":{"pipeline_org":{"type":"string","description":"pipeline org"},"pipeline_project":{"type":"string","description":"pipeline project"},"type":{"type":"string","description":"type of the pipeline to create","default":"test"}},"required":["pipeline_org","pipeline_project"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Sync module metadata

> Sync the module metadata from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/sync":{"post":{"tags":["module-registry"],"summary":"Sync module metadata","description":"Sync the module metadata from the module registry","operationId":"module-registry#sync-module-metadata","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"id","required":true,"schema":{"type":"string","description":"id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module tags

> List the module tags from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/tags":{"get":{"tags":["module-registry"],"summary":"List module tags","description":"List the module tags from the module registry","operationId":"module-registry#list-module-tags-by-id","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Enable testing

> Enable testing for a module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/testing":{"post":{"tags":["module-registry"],"summary":"Enable testing","description":"Enable testing for a module","operationId":"module-registry#enable-testing","parameters":[{"name":"scope_org","in":"query","description":"module org","allowEmptyValue":true,"schema":{"type":"string","description":"module org"}},{"name":"scope_project","in":"query","description":"module project","allowEmptyValue":true,"schema":{"type":"string","description":"module project"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnableTestingRequest"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"EnableTestingRequest":{"type":"object","properties":{"pipeline_id":{"type":"array","items":{"type":"string"},"description":"pipelines to create the webhooks to trigger the executions for testing"},"pipeline_org":{"type":"string","description":"pipeline org"},"pipeline_project":{"type":"string","description":"pipeline project"},"provider_connector":{"type":"string","description":"provider connector","default":""},"provisioner_type":{"type":"string","description":"provisioner type"},"provisioner_version":{"type":"string","description":"provisioner version"},"release_pipeline":{"type":"string","description":"pipeline to create the webhooks for releases"}},"required":["provisioner_type","provisioner_version","pipeline_org","pipeline_project"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Update module testing

> Update module testing metadata

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/testing":{"put":{"tags":["module-registry"],"summary":"Update module testing","description":"Update module testing metadata","operationId":"module-registry#update-module-testing","parameters":[{"name":"scope_org","in":"query","description":"module org","allowEmptyValue":true,"schema":{"type":"string","description":"module org"}},{"name":"scope_project","in":"query","description":"module project","allowEmptyValue":true,"schema":{"type":"string","description":"module project"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTestingRequest"}}}},"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"UpdateTestingRequest":{"type":"object","properties":{"pipeline_id":{"type":"array","items":{"type":"string"},"description":"pipelines to create the webhooks to trigger the executions for testing"},"pipeline_org":{"type":"string","description":"pipeline org"},"pipeline_project":{"type":"string","description":"pipeline project"},"provider_connector":{"type":"string","description":"provider connector","default":""},"provisioner_type":{"type":"string","description":"provisioner type"},"provisioner_version":{"type":"string","description":"provisioner version"},"release_pipeline":{"type":"string","description":"pipeline to create the webhooks for releases"}},"required":["provisioner_type","provisioner_version","pipeline_org","pipeline_project"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Disable testing

> Disable testing for a module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/testing":{"delete":{"tags":["module-registry"],"summary":"Disable testing","description":"Disable testing for a module","operationId":"module-registry#disable-testing","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"integer","description":"module id","format":"int64"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Delete module version

> Delete a specific version from a module in the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{id}/versions/{version}":{"delete":{"tags":["module-registry"],"summary":"Delete module version","description":"Delete a specific version from a module in the module registry","operationId":"module-registry#delete-module-versions","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"version","in":"path","description":"version to delete","required":true,"schema":{"type":"string","description":"version to delete"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get module example file

> Download a single file from a module version's examples/ tree. The path must begin with "examples/" and identify a file (not a directory).

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{module_id}/examples/file":{"get":{"tags":["module-registry"],"summary":"Get module example file","description":"Download a single file from a module version's examples/ tree. The path must begin with \"examples/\" and identify a file (not a directory).","operationId":"module-registry#get-module-example-file","parameters":[{"name":"version","in":"query","description":"version of the module","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"path","in":"query","description":"relative path under the module root; must begin with \"examples/\" and identify a file (e.g. \"examples/iam-account/main.tf\" or \"examples/iam-account/modules/foo/main.tf\")","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"relative path under the module root; must begin with \"examples/\" and identify a file (e.g. \"examples/iam-account/main.tf\" or \"examples/iam-account/modules/foo/main.tf\")","pattern":"^[a-zA-Z0-9_-][a-zA-Z0-9._/-]*$","minLength":1,"maxLength":1024}},{"name":"module_id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module example tree

> List the immediate children (files and subdirectories) at the given path within a module version's examples/ tree. The path must be exactly "examples" (root listing) or begin with "examples/". Returns one level of entries, each tagged as a file or directory.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{module_id}/examples/tree":{"get":{"tags":["module-registry"],"summary":"List module example tree","description":"List the immediate children (files and subdirectories) at the given path within a module version's examples/ tree. The path must be exactly \"examples\" (root listing) or begin with \"examples/\". Returns one level of entries, each tagged as a file or directory.","operationId":"module-registry#list-module-example-tree","parameters":[{"name":"version","in":"query","description":"version of the module","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"path","in":"query","description":"relative path under the module root; must be \"examples\" or begin with \"examples/\"","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"relative path under the module root; must be \"examples\" or begin with \"examples/\"","pattern":"^[a-zA-Z0-9_-][a-zA-Z0-9._/-]*$","minLength":1,"maxLength":1024}},{"name":"module_id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModuleExampleTreeResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ListModuleExampleTreeResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ExampleTreeItem"},"description":"immediate children at the requested path"}},"required":["items"]},"ExampleTreeItem":{"type":"object","properties":{"content_type":{"type":"string","description":"kind of entry","enum":["file","directory"]},"name":{"type":"string","description":"leaf name of the entry (no path separators)"},"path":{"type":"string","description":"full relative path from the module root, forward-slash separated"}},"required":["name","path","content_type"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module metadata

> List the module metadata from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{module_id}/metadata":{"get":{"tags":["module-registry"],"summary":"List module metadata","description":"List the module metadata from the module registry","operationId":"module-registry#list-metadata-by-module","parameters":[{"name":"version","in":"query","description":"version of the module","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"submodule","in":"query","description":"submodule name","allowEmptyValue":true,"schema":{"type":"string","description":"submodule name"}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"module_id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModuleMetadataResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ListModuleMetadataResponse":{"type":"object","properties":{"account":{"type":"string","description":"account name"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/DependenciesMetadata"},"description":"Dependencies of the module"},"examples_paths":{"type":"array","items":{"type":"string"},"description":"Example directories discovered for this module version"},"metadata_error":{"type":"string","description":"error while retrieving the module"},"module_version":{"type":"string","description":"module version"},"name":{"type":"string","description":"module name"},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/OutputMetadata"},"description":"Outputs of the module"},"providers":{"type":"array","items":{"$ref":"#/components/schemas/ProviderMetadata"},"description":"Providers of the module"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceMetadata"},"description":"Resources of the module"},"scope_org":{"type":"string","description":"org name"},"scope_project":{"type":"string","description":"project name"},"submodule":{"type":"array","items":{"type":"string"},"description":"Submodules of the module"},"system":{"type":"string","description":"system name"},"variables":{"type":"array","items":{"$ref":"#/components/schemas/VariableMetadata"},"description":"Variables of the module"}},"required":["account","name","system","module_version","outputs","providers","resources","variables"]},"DependenciesMetadata":{"type":"object","properties":{"dependency_name":{"type":"string","description":"Dependency name"},"dependency_source":{"type":"string","description":"Dependency source"},"dependency_version":{"type":"string","description":"Dependency version"}}},"OutputMetadata":{"type":"object","properties":{"output_description":{"type":"string","description":"Output description"},"output_name":{"type":"string","description":"Output name"},"output_sensitive":{"type":"boolean","description":"Output sensitivity"}}},"ProviderMetadata":{"type":"object","properties":{"provider_name":{"type":"string","description":"Provider name"},"provider_source":{"type":"string","description":"Provider source"},"provider_version":{"type":"string","description":"Provider version"}}},"ResourceMetadata":{"type":"object","properties":{"resource_name":{"type":"string","description":"Resource name"},"resource_type":{"type":"string","description":"Resource type"}}},"VariableMetadata":{"type":"object","properties":{"variable_default":{"type":"string","description":"Variable default value"},"variable_description":{"type":"string","description":"Variable description"},"variable_name":{"type":"string","description":"Variable name"},"variable_required":{"type":"boolean","description":"Is variable required"},"variable_sensitive":{"type":"boolean","description":"Is variable sensitive"},"variable_type":{"type":"string","description":"Variable type"}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module readme

> List the module readme from the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{module_id}/readme":{"get":{"tags":["module-registry"],"summary":"List module readme","description":"List the module readme from the module registry","operationId":"module-registry#list-readme-by-id","parameters":[{"name":"version","in":"query","description":"version of the module","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"submodule","in":"query","description":"submodule name","allowEmptyValue":true,"schema":{"type":"string","description":"submodule name"}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"module_id","in":"path","description":"module id","required":true,"schema":{"type":"string","description":"module id"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Send an event related with a module execution

> Send an event related with a module execution

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{moduleId}/events":{"post":{"tags":["module-registry"],"summary":"Send an event related with a module execution","description":"Send an event related with a module execution","operationId":"module-registry#send-module-event","parameters":[{"name":"moduleId","in":"path","description":"module id associated with this event","required":true,"schema":{"type":"string","description":"module id associated with this event","minLength":1,"maxLength":1024}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendModuleEventRequest"}}}},"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"SendModuleEventRequest":{"type":"object","properties":{"account":{"type":"string","description":"account name"},"eventType":{"type":"string","description":"The type of event that occurred"},"metadata":{"$ref":"#/components/schemas/ModuleExecutionMetadata"},"org":{"type":"string","description":"pipeline org"},"project":{"type":"string","description":"pipeline project"}},"required":["eventType","account","org","project"]},"ModuleExecutionMetadata":{"type":"object","properties":{"pipeline":{"type":"string","description":"The unique identifier of any associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for any associated pipeline execution"},"pipeline_execution_number":{"type":"string","description":"The unique number for any associated pipeline execution"},"pipeline_name":{"type":"string","description":"The name of any associated pipeline"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"trigger":{"type":"object","description":"Trigger info for any associated pipeline execution","additionalProperties":true}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List executions for a specific module

> List all module executions for a module.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{moduleId}/executions":{"get":{"tags":["module-registry"],"summary":"List executions for a specific module","description":"List all module executions for a module.","operationId":"module-registry#list-module-executions-id","parameters":[{"name":"limit","in":"query","description":"Limit is the number of records to return for a page.","allowEmptyValue":true,"schema":{"type":"integer","description":"Limit is the number of records to return for a page.","default":30,"format":"int64","minimum":1,"maximum":1000}},{"name":"page","in":"query","description":"Page is the page number to return relative to the page 'limit'.","allowEmptyValue":true,"schema":{"type":"integer","description":"Page is the page number to return relative to the page 'limit'.","default":1,"format":"int64","minimum":1}},{"name":"pipeline_execution_id","in":"query","description":"Pipeline identifier","allowEmptyValue":true,"schema":{"type":"string","description":"Pipeline identifier"}},{"name":"status","in":"query","description":"Status of the execution","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Status of the execution"}},{"name":"start_time","in":"query","description":"Specify the start time for the query","allowEmptyValue":true,"schema":{"type":"integer","description":"Specify the start time for the query","format":"int64"}},{"name":"end_time","in":"query","description":"Specify the end time limit for the query","allowEmptyValue":true,"schema":{"type":"integer","description":"Specify the end time limit for the query","format":"int64"}},{"name":"module_onboarding","in":"query","description":"Is module onboarding execution","allowEmptyValue":true,"schema":{"type":"boolean","description":"Is module onboarding execution","default":false}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"moduleId","in":"path","description":"Module identifier","required":true,"schema":{"type":"string","description":"Module identifier"}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleExecutionResourceCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ModuleExecutionResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmModuleexecutionresource"}},"HarnessIacmModuleexecutionresource":{"type":"object","properties":{"account":{"type":"string","description":"account name"},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"metadata":{"$ref":"#/components/schemas/ModuleExecutionMetadata"},"module_onboarding":{"type":"boolean","description":"Is module onboarding execution","default":false},"moduleId":{"type":"string","description":"The unique identifier for the associated module"},"org":{"type":"string"},"project":{"type":"string"},"status":{"type":"string","description":"The overall status of the execution"}},"description":"ModuleExecutionResource is the representation for a single module execution.","required":["org","project","status","created","account","pipeline_org","pipeline_project","pipelineExecutionId","pipelineStageId","moduleId","pipeline"]},"ModuleExecutionMetadata":{"type":"object","properties":{"pipeline":{"type":"string","description":"The unique identifier of any associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for any associated pipeline execution"},"pipeline_execution_number":{"type":"string","description":"The unique number for any associated pipeline execution"},"pipeline_name":{"type":"string","description":"The name of any associated pipeline"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"trigger":{"type":"object","description":"Trigger info for any associated pipeline execution","additionalProperties":true}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create a new module execution

> Create a new module execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{moduleId}/executions":{"post":{"tags":["module-registry"],"summary":"Create a new module execution","description":"Create a new module execution.","operationId":"module-registry#create-module-execution","parameters":[{"name":"moduleId","in":"path","description":"The unique identifier for the associated module","required":true,"schema":{"type":"string","description":"The unique identifier for the associated module"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModuleExecutionRequest"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModuleExecutionResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateModuleExecutionRequest":{"type":"object","properties":{"account":{"type":"string","description":"account name"},"module_onboarding":{"type":"boolean","description":"Is module onboarding execution","default":false},"pipeline":{"type":"string","description":"The unique identifier for the associated pipeline"},"pipeline_org":{"type":"string","description":"pipeline org"},"pipeline_project":{"type":"string","description":"pipeline project"},"pipelineExecutionId":{"type":"string","description":"The unique identifier for the associated pipeline execution"},"pipelineStageId":{"type":"string","description":"The unique identifier for the associated pipeline stage"}},"required":["account","pipeline_org","pipeline_project","pipelineExecutionId","pipelineStageId","pipeline"]},"CreateModuleExecutionResponse":{"type":"object","properties":{"account":{"type":"string","description":"account name"},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"metadata":{"$ref":"#/components/schemas/ModuleExecutionMetadata"},"module_onboarding":{"type":"boolean","description":"Is module onboarding execution","default":false},"moduleId":{"type":"string","description":"The unique identifier for the associated module"},"org":{"type":"string"},"project":{"type":"string"},"status":{"type":"string","description":"The overall status of the execution"}},"required":["org","project","status","created","account","pipeline_org","pipeline_project","pipelineExecutionId","pipelineStageId","moduleId","pipeline"]},"ModuleExecutionMetadata":{"type":"object","properties":{"pipeline":{"type":"string","description":"The unique identifier of any associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for any associated pipeline execution"},"pipeline_execution_number":{"type":"string","description":"The unique number for any associated pipeline execution"},"pipeline_name":{"type":"string","description":"The name of any associated pipeline"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"trigger":{"type":"object","description":"Trigger info for any associated pipeline execution","additionalProperties":true}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create module example

> Endpoint to upload README and Terraform source files for a single example directory of a module version

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{name}/{system}/{version}/examples":{"post":{"tags":["module-registry"],"summary":"Create module example","description":"Endpoint to upload README and Terraform source files for a single example directory of a module version","operationId":"module-registry#post-module-example","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"path","in":"query","description":"relative path under the module root; must be \"examples\" or begin with \"examples/\" (e.g. \"examples/eks-auto-mode\")","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"relative path under the module root; must be \"examples\" or begin with \"examples/\" (e.g. \"examples/eks-auto-mode\")","pattern":"^[a-zA-Z0-9_-][a-zA-Z0-9._/-]*$","minLength":1,"maxLength":1024}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}},{"name":"Content-Type","in":"header","description":"Content-Type header (multipart/form-data with boundary)","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Content-Type header (multipart/form-data with boundary)"}},{"name":"Content-Length","in":"header","description":"Size in bytes of the multipart body","allowEmptyValue":true,"schema":{"type":"integer","description":"Size in bytes of the multipart body","format":"int64"}}],"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create module data

> Create a new module in the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{name}/{system}/{version}/metadata":{"post":{"tags":["module-registry"],"summary":"Create module data","description":"Create a new module in the module registry","operationId":"module-registry#module-parsed-data","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModuleDataRequest"}}}},"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateModuleDataRequest":{"type":"object","properties":{"download_url":{"type":"string","description":"download url of the module"},"error":{"type":"object","description":"error from the tag operation","additionalProperties":{"type":"string"}},"examples_paths":{"type":"array","items":{"type":"string"},"description":"path of the examples relative to the module"},"git_tag":{"type":"string","description":"git tag of the module"},"metadata":{"type":"string","description":"metadata to be parsed"},"repo_url":{"type":"string","description":"url pointing to the repo"},"submodule_name":{"type":"string","description":"name of the submodule been processed"},"submodule_paths":{"type":"array","items":{"type":"string"},"description":"path of the submodules relative to the module"}},"required":["metadata","download_url","git_tag"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create module readme

> Endpoint to push the Readme for a given module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{name}/{system}/{version}/readme":{"post":{"tags":["module-registry"],"summary":"Create module readme","description":"Endpoint to push the Readme for a given module","operationId":"module-registry#post-module-readme","parameters":[{"name":"submoduleName","in":"query","description":"submodule name","allowEmptyValue":true,"schema":{"type":"string","description":"submodule name"}},{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}},{"name":"Content-Length","in":"header","description":"Size in bytes of the readme","allowEmptyValue":true,"schema":{"type":"integer","description":"Size in bytes of the readme","format":"int64"}}],"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Upload module artifact files

> Upload module artifact to the module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{name}/{system}/{version}/upload":{"post":{"tags":["module-registry"],"summary":"Upload module artifact files","description":"Upload module artifact to the module registry","operationId":"module-registry#post-module-artifact","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"name","in":"path","description":"Module artifact name","required":true,"schema":{"type":"string","description":"Module artifact name"}},{"name":"system","in":"path","description":"Module artifact system","required":true,"schema":{"type":"string","description":"Module artifact system"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}},{"name":"Harness-Account","in":"header","description":"Account ID","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account ID"}},{"name":"Content-Disposition","in":"header","description":"Content-Disposition header","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Content-Disposition header"}}],"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create module tags

> List all tags for a given module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/{name}/{system}/tags":{"post":{"tags":["module-registry"],"summary":"Create module tags","description":"List all tags for a given module","operationId":"module-registry#post-module-tags","parameters":[{"name":"scope_org","in":"query","description":"Organization identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Organization identifier where the module is scoped.","maxLength":1024}},{"name":"scope_project","in":"query","description":"Project identifier where the module is scoped.","allowEmptyValue":true,"schema":{"type":"string","description":"Project identifier where the module is scoped.","maxLength":1024}},{"name":"name","in":"path","description":"Human-readable name of the module. Must be unique within the same scope and system.","required":true,"schema":{"type":"string","description":"Human-readable name of the module. Must be unique within the same scope and system.","minLength":1,"maxLength":128}},{"name":"system","in":"path","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","required":true,"schema":{"type":"string","description":"Provider or system the module targets. Lowercase letters only (e.g. aws, gcp, azure, kubernetes).","pattern":"^[a-z]+$","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Harness account ID that owns the module.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Harness account ID that owns the module.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModuleTagsRequest"}}}},"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateModuleTagsRequest":{"type":"object","properties":{"error":{"type":"object","description":"error from the tag operation","additionalProperties":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"},"description":"tags defining the module"}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List connectors

> List all connectors from the module registry for a specific account

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/connectors":{"get":{"tags":["module-registry"],"summary":"List connectors","description":"List all connectors from the module registry for a specific account","operationId":"module-registry#list-connectors","parameters":[{"name":"org","in":"query","description":"organization name","allowEmptyValue":true,"schema":{"type":"string","description":"organization name"}},{"name":"project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Batch check module lifecycle status

> Batch-check lifecycle status for a list of modules resolved during terraform init; only violations are returned

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/lifecycle/batch-check":{"post":{"tags":["module-registry"],"summary":"Batch check module lifecycle status","description":"Batch-check lifecycle status for a list of modules resolved during terraform init; only violations are returned","operationId":"module-registry#batch-check-module-lifecycle","parameters":[{"name":"Harness-Account","in":"header","description":"Harness account ID","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Harness account ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCheckModuleLifecycleRequest"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCheckModuleLifecycleResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"BatchCheckModuleLifecycleRequest":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ModuleLifecycleBatchCheckItem"},"description":"List of modules to check","maxItems":1000}},"required":["items"]},"ModuleLifecycleBatchCheckItem":{"type":"object","properties":{"name":{"type":"string","description":"Module name","minLength":1},"namespace":{"type":"string","description":"Encoded namespace identifying the module scope","minLength":1},"system":{"type":"string","description":"Module system (provider)","minLength":1},"version":{"type":"string","description":"Module version to check","minLength":1}},"description":"A single module item to check lifecycle status for","required":["namespace","name","system","version"]},"BatchCheckModuleLifecycleResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ModuleLifecycleBatchCheckResult"},"description":"Lifecycle violations found; items with no rule or supported tier are omitted"}},"required":["results"]},"ModuleLifecycleBatchCheckResult":{"type":"object","properties":{"action":{"type":"string","description":"Enforcement action for the tier","enum":["no_action","warn","fail"]},"minimum_supported_version":{"type":"string","description":"The lowest-numbered version currently in the supported tier"},"name":{"type":"string","description":"Module name"},"namespace":{"type":"string","description":"Encoded namespace identifying the module scope"},"system":{"type":"string","description":"Module system (provider)"},"tier":{"type":"string","description":"Lifecycle tier: warning or deprecated","enum":["warning","deprecated"]},"version":{"type":"string","description":"Module version"}},"description":"Lifecycle check result for a single module item","required":["namespace","name","system","version","tier","action"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create onboarding pipeline

> Create a new onboarding pipeline for module registry

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/pipeline/onboarding":{"post":{"tags":["module-registry"],"summary":"Create onboarding pipeline","description":"Create a new onboarding pipeline for module registry","operationId":"module-registry#create-onboarding-pipeline","parameters":[{"name":"scope_org","in":"query","description":"module org name","allowEmptyValue":true,"schema":{"type":"string","description":"module org name"}},{"name":"scope_project","in":"query","description":"module project name","allowEmptyValue":true,"schema":{"type":"string","description":"module project name"}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOnboardingPipelineRequest"}}}},"responses":{"201":{"description":"Created response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"CreateOnboardingPipelineRequest":{"type":"object","properties":{"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},"required":["org","project"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module providers

> List the distinct providers (module\_system values) in the module registry for a scope

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/modules/providers":{"get":{"tags":["module-registry"],"summary":"List module providers","description":"List the distinct providers (module_system values) in the module registry for a scope","operationId":"module-registry#list-module-providers","parameters":[{"name":"scope_org","in":"query","description":"org name","allowEmptyValue":true,"schema":{"type":"string","description":"org name"}},{"name":"scope_project","in":"query","description":"project name","allowEmptyValue":true,"schema":{"type":"string","description":"project name"}},{"name":"Harness-Account","in":"header","description":"account name","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"account name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Download module

> Download a module given a specific version

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/registry/account/{namespace}/{name}/{system}/{version}/download":{"get":{"tags":["module-registry"],"summary":"Download module","description":"Download a module given a specific version","operationId":"module-registry#download","parameters":[{"name":"namespace","in":"path","description":"namespace of the module","required":true,"schema":{"type":"string","description":"namespace of the module"}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}}],"responses":{"200":{"description":"OK response.","headers":{"X-Terraform-Get":{"description":"url of the module for a given version","schema":{"type":"string","description":"url of the module for a given version"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownloadModuleResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"DownloadModuleResponse":{"type":"object","properties":{"location":{"type":"string","description":"location of the artifact"}}},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Download module file tarball

> Download a module given a specific version

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/registry/account/{namespace}/{name}/{system}/{version}/download/file":{"get":{"tags":["module-registry"],"summary":"Download module file tarball","description":"Download a module given a specific version","operationId":"module-registry#getModule","parameters":[{"name":"token","in":"query","description":"token for authentication","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"token for authentication"}},{"name":"namespace","in":"path","description":"namespace of the module","required":true,"schema":{"type":"string","description":"namespace of the module"}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}},{"name":"version","in":"path","description":"version of the module","required":true,"schema":{"type":"string","description":"version of the module"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List module versions

> list-module-versions returns an array of versions for a given module

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"module-registry","description":"The module-registry service is a private registry for Terraform/Opentofu modules"}],"servers":[{"url":"http://localhost:80"}],"paths":{"/registry/account/{namespace}/{name}/{system}/versions":{"get":{"tags":["module-registry"],"summary":"List module versions","description":"list-module-versions returns an array of versions for a given module","operationId":"module-registry#list-versions","parameters":[{"name":"namespace","in":"path","description":"namespace of the module","required":true,"schema":{"type":"string","description":"namespace of the module"}},{"name":"name","in":"path","description":"module name","required":true,"schema":{"type":"string","description":"module name"}},{"name":"system","in":"path","description":"system name","required":true,"schema":{"type":"string","description":"system name"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModuleVersionsResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/RegistryError"}}}}}}}},"components":{"schemas":{"ListModuleVersionsResponse":{"type":"object","properties":{"modules":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmModuleRegistryVersions"},"description":"list of versions for a given module"}},"required":["modules"]},"HarnessIacmModuleRegistryVersions":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmModuleRegistryVersionTypes"},"description":"list of versions for a given module"}},"description":"Versions returns the list of versions for a given module","required":["versions"]},"HarnessIacmModuleRegistryVersionTypes":{"type":"object","properties":{"git_version":{"type":"string","description":"git version"},"module_version":{"type":"string","description":"module version"}},"description":"Returns the module_version and git_version for a specific module","required":["module_version","git_version"]},"RegistryError":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```
