Files
opentf/internal/registry/response/module.go
Martin Atkins 4c5b866dea Move registry/ to internal/registry/
This is part of a general effort to move all of Terraform's non-library
package surface under internal in order to reinforce that these are for
internal use within Terraform only.

If you were previously importing packages under this prefix into an
external codebase, you could pin to an earlier release tag as an interim
solution until you've make a plan to achieve the same functionality some
other way.
2021-05-17 14:09:07 -07:00

94 lines
2.7 KiB
Go

package response
import (
"time"
)
// Module is the response structure with the data for a single module version.
type Module struct {
ID string `json:"id"`
//---------------------------------------------------------------
// Metadata about the overall module.
Owner string `json:"owner"`
Namespace string `json:"namespace"`
Name string `json:"name"`
Version string `json:"version"`
Provider string `json:"provider"`
Description string `json:"description"`
Source string `json:"source"`
PublishedAt time.Time `json:"published_at"`
Downloads int `json:"downloads"`
Verified bool `json:"verified"`
}
// ModuleDetail represents a module in full detail.
type ModuleDetail struct {
Module
//---------------------------------------------------------------
// Metadata about the overall module. This is only available when
// requesting the specific module (not in list responses).
// Root is the root module.
Root *ModuleSubmodule `json:"root"`
// Submodules are the other submodules that are available within
// this module.
Submodules []*ModuleSubmodule `json:"submodules"`
//---------------------------------------------------------------
// The fields below are only set when requesting this specific
// module. They are available to easily know all available versions
// and providers without multiple API calls.
Providers []string `json:"providers"` // All available providers
Versions []string `json:"versions"` // All versions
}
// ModuleSubmodule is the metadata about a specific submodule within
// a module. This includes the root module as a special case.
type ModuleSubmodule struct {
Path string `json:"path"`
Readme string `json:"readme"`
Empty bool `json:"empty"`
Inputs []*ModuleInput `json:"inputs"`
Outputs []*ModuleOutput `json:"outputs"`
Dependencies []*ModuleDep `json:"dependencies"`
Resources []*ModuleResource `json:"resources"`
}
// ModuleInput is an input for a module.
type ModuleInput struct {
Name string `json:"name"`
Description string `json:"description"`
Default string `json:"default"`
}
// ModuleOutput is an output for a module.
type ModuleOutput struct {
Name string `json:"name"`
Description string `json:"description"`
}
// ModuleDep is an output for a module.
type ModuleDep struct {
Name string `json:"name"`
Source string `json:"source"`
Version string `json:"version"`
}
// ModuleProviderDep is the output for a provider dependency
type ModuleProviderDep struct {
Name string `json:"name"`
Version string `json:"version"`
}
// ModuleResource is an output for a module.
type ModuleResource struct {
Name string `json:"name"`
Type string `json:"type"`
}